car-runtime 0.53.0 → 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
@@ -113,6 +113,12 @@ export interface CoderStartOptions {
113
113
  * hypothesis, the other buys a retry.
114
114
  */
115
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;
116
122
  /**
117
123
  * Farm a **foreman** session's subtasks across every reachable CAR instance
118
124
  * that can serve this repository, instead of this machine alone. The
@@ -176,6 +182,854 @@ export class CarRuntime {
176
182
  handler: (paramsJson: string) => void,
177
183
  ): void;
178
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
+
179
1033
  // --- Memory persistence ---
180
1034
 
181
1035
  /**
@@ -979,6 +1833,10 @@ export class CarRuntime {
979
1833
  * with reasoning suppressed to produce a direct answer, or
980
1834
  * `"thinking_truncated"` when even that retry was empty (car-releases#60).
981
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
+ *
982
1840
  * `auth_fallback_from` is present ONLY when a candidate earlier in the
983
1841
  * fallback chain was skipped because its credential was **rejected**
984
1842
  * (not merely absent) and a later model then answered. It names that
@@ -1201,7 +2059,8 @@ export class CarRuntime {
1201
2059
  * context_length, available, is_local, operator_managed_external_runtime,
1202
2060
  * weights_ready, downloads_weights,
1203
2061
  * max_output_tokens, public_benchmarks, cost, car_enabled, can_remove,
1204
- * 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
1205
2064
  * can use the model
1206
2065
  * here — for a local MLX entry with a declared `hf_repo` it is `true`
1207
2066
  * before a byte is fetched, because it lazy-downloads on first use —
@@ -1237,9 +2096,20 @@ export class CarRuntime {
1237
2096
  * cost. The managed `parslee/…` alias rows carry the same prices as the
1238
2097
  * upstream row they front, and this response carries no upstream
1239
2098
  * identifier for them. That holds for this catalog view; `models.search`
1240
- * additionally exposes a `family` field which does name the upstream
1241
- * 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
1242
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.
1243
2113
  */
1244
2114
  listModelsUnified(): string;
1245
2115
 
@@ -1379,7 +2249,9 @@ export class CarRuntime {
1379
2249
  * `"auto" | "native" | "external[:agent_id]"` (default auto). Returns
1380
2250
  * `{session_id, state, engine, worktree, contract, model}` JSON, where
1381
2251
  * `model` is the effective native-loop pin (per-session `model`, else
1382
- * `~/.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.
1383
2255
  */
1384
2256
  coderStart(
1385
2257
  repo: string,
@@ -1410,7 +2282,8 @@ export class CarRuntime {
1410
2282
 
1411
2283
  /**
1412
2284
  * Approve (publish the `car/coder/<id>` branch in the repo) or deny
1413
- * (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.
1414
2287
  */
1415
2288
  coderApproveMerge(sessionId: string, approve: boolean): Promise<string>;
1416
2289
 
@@ -1437,8 +2310,8 @@ export class CarRuntime {
1437
2310
  * error}` plus `needs_you` (`"contract" | "question" | "approval" | "auth" |
1438
2311
  * null`), `needs_you_label` (the daemon-owned wording, so every client says
1439
2312
  * the same thing), `question_prompt`, `auth_message`, `auth_wait_secs`,
1440
- * `failure_kind` (`"budget_exhausted" | "auth_required" | "infrastructure" |
1441
- * "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),
1442
2315
  * `project`, `result_branch`, `model`, `discussion_id`, and `next_seq` (live
1443
2316
  * only — the `coder.subscribe` cursor).
1444
2317
  *
@@ -1528,7 +2401,7 @@ export class CarRuntime {
1528
2401
 
1529
2402
  /** List registered in-daemon declarative agents. */
1530
2403
  declagentList(): Promise<string>;
1531
- /** One declarative agent's spec by id. */
2404
+ /** One declarative agent's spec by id, plus daemon-derived `registry_path`. */
1532
2405
  declagentGet(id: string): Promise<string>;
1533
2406
  /** Unregister a declarative agent. */
1534
2407
  declagentRemove(id: string): Promise<string>;
@@ -1629,6 +2502,8 @@ export class CarRuntime {
1629
2502
  * (`{ model_id, reliability, score, selected, in_band }`) so callers can see
1630
2503
  * why a model won and what the alternatives cost in reliability terms. Empty
1631
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.
1632
2507
  */
1633
2508
  routeModel(prompt: string, intentJson?: string | null): Promise<string>;
1634
2509
 
@@ -2046,6 +2921,14 @@ export class CarRuntime {
2046
2921
  /** Returns JSON array of recent Messages.app chats. */
2047
2922
  messagesChats(limit?: number | null): string;
2048
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
+
2049
2932
  /**
2050
2933
  * Send a message through Messages.app. `sendRequestJson` is
2051
2934
  * `{recipient, body, service_id?}`.
@@ -2093,6 +2976,153 @@ export class CarRuntime {
2093
2976
  healthActivity(startYmd: string, endYmd: string): string;
2094
2977
  }
2095
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
+
2096
3126
  // ---------------------------------------------------------------------------
2097
3127
  // Standalone functions
2098
3128
  // ---------------------------------------------------------------------------
@@ -2118,7 +3148,9 @@ export class CarRuntime {
2118
3148
  * `tools.cancel` notification repeats so the host can abort the right
2119
3149
  * in-flight call. `timeout_ms` is the action's declared budget in
2120
3150
  * milliseconds when the action declared one (`null` otherwise); the
2121
- * 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.
2122
3154
  *
2123
3155
  * `sessionId`, when provided, scopes per-action policy validation to
2124
3156
  * the named session opened via `CarRuntime.openSession()`. Global
@@ -2133,6 +3165,11 @@ export class CarRuntime {
2133
3165
  * tenant-scoped view so distinct tenants can't observe each other's
2134
3166
  * keys (Parslee-ai/car#187 phase 3). Single-tenant in-process callers
2135
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.
2136
3173
  */
2137
3174
  export function executeProposal(
2138
3175
  rt: CarRuntime,
@@ -2373,8 +3410,11 @@ export function unregisterChatHandler(): void;
2373
3410
  * `action_id`, which is client-authored and not unique across concurrent or
2374
3411
  * retried attempts.
2375
3412
  * as a JSON string and MUST return a Promise resolving to the tool's
2376
- * JSON-encoded result. Throwing rejects the daemon-side action
2377
- * 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.
2378
3418
  *
2379
3419
  * `request_id` is the daemon's callback-routing id, repeated by the
2380
3420
  * `tools.cancel` notification so the host can abort the right
@@ -2400,6 +3440,11 @@ export function registerToolHandler(
2400
3440
  handlerFn: (callJson: string) => Promise<string>,
2401
3441
  ): void;
2402
3442
 
3443
+ /** Distinguished fail-stop error for tool callbacks. */
3444
+ export class TerminalToolError extends Error {
3445
+ constructor(message: string);
3446
+ }
3447
+
2403
3448
  /**
2404
3449
  * Clear the registered `tools.execute` handler. `submitProposal`
2405
3450
  * calls after this will fail if the proposal carries any
@@ -3924,7 +4969,11 @@ export function analyzeSchedule(graphJson: string): string;
3924
4969
  /**
3925
4970
  * Install a durable OS-level schedule (launchd on macOS, crontab on Linux) so
3926
4971
  * the task fires even when the CAR daemon is down. Idempotent. Returns the
3927
- * 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.
3928
4977
  */
3929
4978
  export function installOsSchedule(taskJson: string, program: string, argsJson: string): string;
3930
4979
 
@@ -4101,8 +5150,9 @@ export function a2ADispatch(rt: CarRuntime, method: string, paramsJson: string):
4101
5150
  // --- Lifecycle-managed agents (car_registry::supervisor) ---
4102
5151
 
4103
5152
  /**
4104
- * List every managed agent in `~/.car/agents.json` along with its
4105
- * 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]`.
4106
5156
  *
4107
5157
  * Wire shape matches the daemon's `agents.list` JSON-RPC method
4108
5158
  * exactly so a host can swap between in-process and WS transports
@@ -4142,7 +5192,9 @@ export function agentsHealth(): Promise<string>;
4142
5192
  * "restart": "on_failure", // never | on_failure | always
4143
5193
  * "max_restarts": 10,
4144
5194
  * "backoff_secs": 5,
4145
- * "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
4146
5198
  * }
4147
5199
  * ```
4148
5200
  *
@@ -4251,7 +5303,7 @@ export function agentsTailLog(id: string, n?: number | null, stream?: string | n
4251
5303
  // alongside `agents.invoke_external`. Wire shape:
4252
5304
  //
4253
5305
  // {
4254
- // "id": "claude-code" | "codex" | "gemini",
5306
+ // "id": "claude-code" | "codex" | "gemini" | "mini-swe-agent",
4255
5307
  // "displayName": "Claude Code" | ...,
4256
5308
  // "binaryPath": "/usr/local/bin/claude",
4257
5309
  // "version": "1.0.51" | null,
@@ -4322,7 +5374,7 @@ export function agentsDetectExternal(
4322
5374
  * `ExternalAgentHealth` (when `id` supplied), where:
4323
5375
  *
4324
5376
  * {
4325
- * "id": "claude-code" | "codex" | "gemini",
5377
+ * "id": "claude-code" | "codex" | "gemini" | "mini-swe-agent",
4326
5378
  * "status": "ready" | "not_configured" | "expired" |
4327
5379
  * "network_error" | "not_executable" | "unknown",
4328
5380
  * "details": <tool-specific JSON object>,
@@ -4342,8 +5394,13 @@ export function agentsHealthExternal(
4342
5394
 
4343
5395
  /**
4344
5396
  * Per-task invocation of an external CLI agent (Phase 2 stage 3).
4345
- * `id` selects the adapter (`"claude-code"` today; `codex` and
4346
- * `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`
4347
5404
  * is a JSON-encoded `InvokeOptions` — pass `"{}"` or `null` to accept
4348
5405
  * defaults.
4349
5406
  *