@rho-workspace/rho 0.5.6 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/agent-connect.d.ts +36 -2
  2. package/dist/agent-connect.js +64 -11
  3. package/dist/answer-board.js +3 -3
  4. package/dist/bridge.js +6 -1
  5. package/dist/browser-access.d.ts +1 -0
  6. package/dist/browser-access.js +5 -3
  7. package/dist/capabilities.d.ts +21 -5
  8. package/dist/capabilities.js +6 -4
  9. package/dist/cli.js +76 -11
  10. package/dist/composition.d.ts +1 -1
  11. package/dist/composition.js +13 -3
  12. package/dist/connect-cli.d.ts +50 -0
  13. package/dist/connect-cli.js +128 -0
  14. package/dist/contract.generated.d.ts +1191 -278
  15. package/dist/contract.generated.js +1 -1
  16. package/dist/contracts/owners.generated.js +845 -47
  17. package/dist/conversation-presentation.d.ts +9 -2
  18. package/dist/conversation-presentation.js +3 -1
  19. package/dist/conversations.d.ts +154 -8
  20. package/dist/conversations.js +147 -24
  21. package/dist/discovery.js +2 -2
  22. package/dist/extension-contract.d.ts +19 -0
  23. package/dist/extension-contract.js +15 -6
  24. package/dist/extension-markets.d.ts +74 -0
  25. package/dist/extension-markets.js +166 -0
  26. package/dist/extensions.d.ts +29 -1
  27. package/dist/extensions.js +13 -4
  28. package/dist/external-work.d.ts +22 -0
  29. package/dist/external-work.js +91 -0
  30. package/dist/plugin-cli.js +75 -3
  31. package/dist/plugin-inventory.d.ts +56 -0
  32. package/dist/plugin-inventory.js +41 -0
  33. package/dist/plugin-inventory.json +1581 -102
  34. package/dist/plugin-presentation.d.ts +105 -2
  35. package/dist/plugin-presentation.js +59 -5
  36. package/dist/plugins.d.ts +14 -3
  37. package/dist/plugins.js +12 -6
  38. package/dist/project-notes.js +1 -1
  39. package/dist/protocol.d.ts +6 -0
  40. package/dist/protocol.js +30 -12
  41. package/dist/replay.js +4 -0
  42. package/dist/response-contracts.js +26 -11
  43. package/dist/running.d.ts +10 -0
  44. package/dist/running.js +45 -0
  45. package/dist/server.d.ts +2 -0
  46. package/dist/server.js +71 -8
  47. package/dist/state.d.ts +8 -0
  48. package/dist/state.js +8 -0
  49. package/dist/studio-layout.js +3 -3
  50. package/dist/task-frame.d.ts +1 -1
  51. package/dist/timeline-events.d.ts +1 -0
  52. package/dist/timeline-events.js +8 -1
  53. package/dist/ui-context.d.ts +73 -0
  54. package/dist/ui-context.js +98 -0
  55. package/dist/ui-contract.d.ts +23 -0
  56. package/dist/web/.vite/manifest.json +133 -74
  57. package/dist/web/assets/answer-board-CeYS8k8y.js +1 -0
  58. package/dist/web/assets/choices-D8vGwsl2.js +1 -0
  59. package/dist/web/assets/{console-Trqc0swD.js → console-Dyuo1q4N.js} +4 -4
  60. package/dist/web/assets/{dist-pF902jHA.js → dist-CSiCyBml.js} +1 -1
  61. package/dist/web/assets/{dist-DpIHRk3B.js → dist-D9FLb9Hm.js} +1 -1
  62. package/dist/web/assets/{dist-eMx6b8N1.js → dist-FXbTBwML.js} +1 -1
  63. package/dist/web/assets/{dist-DZmszrjG.js → dist-l3DUhbw5.js} +1 -1
  64. package/dist/web/assets/{explore-in-BCHqjJ7B.js → explore-in-BfSFGRh2.js} +1 -1
  65. package/dist/web/assets/graph-BU2_o5uA.js +2 -0
  66. package/dist/web/assets/index-C16mXVvk.css +1 -0
  67. package/dist/web/assets/index-CWg9XYXx.js +952 -0
  68. package/dist/web/assets/markdown.reader-Ct2-e2Zt.png +0 -0
  69. package/dist/web/assets/{notes-meaning-DcVGUBBY.js → notes-meaning-T2m5zQfv.js} +1 -1
  70. package/dist/web/assets/overview-PzfLJCo-.js +6 -0
  71. package/dist/web/assets/preview-BguEdsza.js +1 -0
  72. package/dist/web/assets/previews-pWNik-2g.js +3 -0
  73. package/dist/web/assets/{review-DYP0aCXb.js → review-Dy_85lcH.js} +1 -1
  74. package/dist/web/assets/rho.editor-CCJeyHma.png +0 -0
  75. package/dist/web/assets/rho.flow-WkMj6fRS.png +0 -0
  76. package/dist/web/assets/rho.media-Cc6amodO.png +0 -0
  77. package/dist/web/assets/rho.notebook-6vsZKGDq.png +0 -0
  78. package/dist/web/assets/rho.object-BGoeXjte.png +0 -0
  79. package/dist/web/assets/rho.plots-yIiISCkb.png +0 -0
  80. package/dist/web/assets/rho.scatter-DwHxesCs.png +0 -0
  81. package/dist/web/assets/rho.servers-DKf_mnNq.png +0 -0
  82. package/dist/web/assets/rho.table-DWOGaWDa.png +0 -0
  83. package/dist/web/assets/rho.variables-CKcWczhQ.png +0 -0
  84. package/dist/web/assets/{skills-1ec0Z-jx.js → skills-Dyz7mBlc.js} +1 -1
  85. package/dist/web/assets/{skills-work-DNexV4OJ.js → skills-work-BEGqlCkx.js} +1 -1
  86. package/dist/web/assets/studio-process-D-ykbC4D.js +2 -0
  87. package/dist/web/assets/timeline-events-DKTho9fU.js +1 -0
  88. package/dist/web/assets/work-turns-DSabCogR.js +1 -0
  89. package/dist/web/assets/{workspace-COmCbGV3.js → workspace-DfjBL--r.js} +2 -2
  90. package/dist/web/composition.json +138 -83
  91. package/dist/web/index.html +3 -3
  92. package/dist/web/renderer.json +1 -1
  93. package/dist/web-assets.js +2 -2
  94. package/dist/work-graph.d.ts +11 -1
  95. package/dist/work-graph.js +16 -5
  96. package/dist/workspace.d.ts +2 -2
  97. package/dist/workspace.js +8 -7
  98. package/docs/FRONTEND.md +53 -11
  99. package/docs/HEADLESS.md +104 -11
  100. package/docs/THIRD-PARTY-PLUGINS.md +75 -3
  101. package/node_modules/@rho-workspace/plugin-agent/README.md +5 -0
  102. package/node_modules/@rho-workspace/plugin-agent/dist/acp-command.d.ts +31 -0
  103. package/node_modules/@rho-workspace/plugin-agent/dist/acp-command.js +45 -10
  104. package/node_modules/@rho-workspace/plugin-agent/dist/acp-conversation.js +19 -3
  105. package/node_modules/@rho-workspace/plugin-agent/dist/external-session-contract.js +3 -2
  106. package/node_modules/@rho-workspace/plugin-agent/dist/external-session.d.ts +1 -1
  107. package/node_modules/@rho-workspace/plugin-agent/dist/index.d.ts +8 -0
  108. package/node_modules/@rho-workspace/plugin-agent/dist/index.js +3 -2
  109. package/node_modules/@rho-workspace/plugin-agent/dist/mcp-entry.d.ts +13 -0
  110. package/node_modules/@rho-workspace/plugin-agent/dist/mcp-entry.js +13 -0
  111. package/node_modules/@rho-workspace/plugin-agent/dist/mcp.js +16 -8
  112. package/node_modules/@rho-workspace/plugin-agent/dist/native-sessions.d.ts +1 -1
  113. package/node_modules/@rho-workspace/plugin-agent/package.json +1 -1
  114. package/node_modules/@rho-workspace/plugin-figures/LICENSE +661 -0
  115. package/node_modules/@rho-workspace/plugin-figures/README.md +191 -0
  116. package/node_modules/@rho-workspace/plugin-figures/dist/index.d.ts +236 -0
  117. package/node_modules/@rho-workspace/plugin-figures/dist/index.js +165 -0
  118. package/node_modules/@rho-workspace/plugin-figures/dist/operations.d.ts +44 -0
  119. package/node_modules/@rho-workspace/plugin-figures/dist/operations.js +39 -0
  120. package/node_modules/@rho-workspace/plugin-figures/dist/presentation.d.ts +19 -0
  121. package/node_modules/@rho-workspace/plugin-figures/dist/presentation.js +26 -0
  122. package/node_modules/@rho-workspace/plugin-figures/dist/record.d.ts +188 -0
  123. package/node_modules/@rho-workspace/plugin-figures/dist/record.js +143 -0
  124. package/node_modules/@rho-workspace/plugin-figures/dist/ui-styles.d.ts +1 -0
  125. package/node_modules/@rho-workspace/plugin-figures/dist/ui-styles.js +68 -0
  126. package/node_modules/@rho-workspace/plugin-figures/dist/ui.d.ts +56 -0
  127. package/node_modules/@rho-workspace/plugin-figures/dist/ui.js +363 -0
  128. package/node_modules/@rho-workspace/plugin-figures/package.json +41 -0
  129. package/node_modules/@rho-workspace/plugin-figures/py/figures.py +856 -0
  130. package/node_modules/@rho-workspace/plugin-figures/r/figures.R +775 -0
  131. package/node_modules/@rho-workspace/plugin-kernel/README.md +27 -3
  132. package/node_modules/@rho-workspace/plugin-kernel/dist/contract.d.ts +12 -0
  133. package/node_modules/@rho-workspace/plugin-kernel/dist/contract.js +8 -1
  134. package/node_modules/@rho-workspace/plugin-kernel/dist/index.d.ts +61 -0
  135. package/node_modules/@rho-workspace/plugin-kernel/dist/index.js +125 -9
  136. package/node_modules/@rho-workspace/plugin-kernel/dist/session-scope.d.ts +14 -0
  137. package/node_modules/@rho-workspace/plugin-kernel/dist/session-scope.js +9 -0
  138. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-base.d.ts +23 -5
  139. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook-work.js +1 -1
  140. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.d.ts +6 -4
  141. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-notebook.js +44 -17
  142. package/node_modules/@rho-workspace/plugin-kernel/dist/ui-styles.js +6 -0
  143. package/node_modules/@rho-workspace/plugin-kernel/package.json +1 -1
  144. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.R +144 -4
  145. package/node_modules/@rho-workspace/plugin-kernel/runners/runner.py +106 -1
  146. package/node_modules/@rho-workspace/plugin-tables/README.md +5 -0
  147. package/node_modules/@rho-workspace/plugin-tables/dist/index.d.ts +1 -0
  148. package/node_modules/@rho-workspace/plugin-tables/dist/index.js +19 -3
  149. package/node_modules/@rho-workspace/plugin-tables/dist/ui.js +1 -1
  150. package/node_modules/@rho-workspace/plugin-tables/package.json +1 -1
  151. package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +3 -2
  152. package/node_modules/jose/dist/webapi/jwks/remote.js +1 -1
  153. package/node_modules/jose/dist/webapi/jws/general/verify.js +2 -8
  154. package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +11 -8
  155. package/node_modules/jose/dist/webapi/lib/key_management.js +0 -1
  156. package/node_modules/jose/package.json +1 -1
  157. package/package.json +6 -4
  158. package/protocol/index.json +91 -55
  159. package/protocol/operations/agent.sessions.list.json +13 -5
  160. package/protocol/operations/agent.sessions.read.json +13 -5
  161. package/protocol/operations/capability.list.json +382 -6
  162. package/protocol/operations/composition.apply.json +10 -2
  163. package/protocol/operations/composition.delete.json +845 -0
  164. package/protocol/operations/composition.read.json +10 -2
  165. package/protocol/operations/composition.undo.json +10 -2
  166. package/protocol/operations/conversation.agents.add.json +346 -0
  167. package/protocol/operations/conversation.agents.remove.json +340 -0
  168. package/protocol/operations/conversation.decide.json +196 -0
  169. package/protocol/operations/conversation.permission.json +196 -0
  170. package/protocol/operations/conversation.read.json +196 -0
  171. package/protocol/operations/conversation.send.json +265 -0
  172. package/protocol/operations/conversation.settings.check.json +213 -495
  173. package/protocol/operations/conversation.settings.read.json +211 -490
  174. package/protocol/operations/conversation.settings.update.json +235 -554
  175. package/protocol/operations/conversation.start.json +267 -5
  176. package/protocol/operations/conversation.stop.json +196 -0
  177. package/protocol/operations/extension.describe.json +39 -0
  178. package/protocol/operations/extension.install.json +62 -0
  179. package/protocol/operations/extension.list.json +164 -1
  180. package/protocol/operations/extension.market.change.json +210 -0
  181. package/protocol/operations/figure.read.json +265 -0
  182. package/protocol/operations/figure.select.json +157 -0
  183. package/protocol/operations/kernel.interrupt.json +119 -0
  184. package/protocol/operations/kernel.read.json +119 -0
  185. package/protocol/operations/kernel.run.json +119 -0
  186. package/protocol/operations/observation.snapshot.json +416 -8
  187. package/protocol/operations/project.openFile.json +10 -2
  188. package/protocol/operations/session.grant.json +4 -0
  189. package/protocol/operations/shared.json +1 -0
  190. package/protocol/operations/view.close.json +10 -2
  191. package/protocol/operations/view.protection.set.json +10 -2
  192. package/vendor/composition.json +177 -112
  193. package/vendor/rho-workspace-plugin-agent-0.4.33.tgz +0 -0
  194. package/vendor/rho-workspace-plugin-figures-0.5.1.tgz +0 -0
  195. package/vendor/rho-workspace-plugin-kernel-0.5.13.tgz +0 -0
  196. package/vendor/rho-workspace-plugin-tables-0.5.2.tgz +0 -0
  197. package/web/theme.css +5 -0
  198. package/dist/web/assets/answer-board-CBkGbSLD.js +0 -1
  199. package/dist/web/assets/canvas-D8rDdfDz.js +0 -1
  200. package/dist/web/assets/choices-D-YfnFP6.js +0 -1
  201. package/dist/web/assets/graph-lENgfQNH.js +0 -2
  202. package/dist/web/assets/index-B3_OVy91.css +0 -1
  203. package/dist/web/assets/index-BpL_Kl_s.js +0 -892
  204. package/dist/web/assets/overview-CDnVKlOt.js +0 -6
  205. package/dist/web/assets/preview-BEC1E9MK.js +0 -1
  206. package/dist/web/assets/studio-process-EYQgikxq.js +0 -2
  207. package/dist/web/assets/timeline-events-Chj2Gbx7.js +0 -1
  208. package/dist/web/assets/work-turns-CT9RVcWY.js +0 -1
  209. package/vendor/rho-workspace-plugin-agent-0.4.30.tgz +0 -0
  210. package/vendor/rho-workspace-plugin-kernel-0.5.5.tgz +0 -0
  211. package/vendor/rho-workspace-plugin-tables-0.5.0.tgz +0 -0
@@ -9,8 +9,14 @@ export declare function agentTurnLimit(turn: {
9
9
  } | null;
10
10
  }): boolean;
11
11
  export type ConversationRead = RhoOutput<'conversation.read'>;
12
- export type ConversationTurn = ConversationRead['turns'][number];
13
- export type ConversationStep = ConversationTurn['steps'][number];
12
+ type WireTurn = ConversationRead['turns'][number];
13
+ export type ConversationStep = WireTurn['steps'][number] & {
14
+ failed?: boolean;
15
+ outcomeAt?: string;
16
+ };
17
+ export type ConversationTurn = Omit<WireTurn, 'steps'> & {
18
+ steps: ConversationStep[];
19
+ };
14
20
  export type SessionObservation = NonNullable<ConversationRead['observation']>;
15
21
  export type ActivityOutcome = NonNullable<ConversationStep['outcome']> | 'failed';
16
22
  export type AgentAction = 'read' | 'edit' | 'write' | 'delete' | 'move' | 'search' | 'execute' | 'fetch' | 'project' | 'agents' | 'plan' | 'other';
@@ -60,3 +66,4 @@ export declare function currentPlanEntry(observation?: SessionObservation | null
60
66
  priority: "high" | "medium" | "low";
61
67
  status: "pending" | "in_progress" | "completed";
62
68
  } | null;
69
+ export {};
@@ -142,6 +142,8 @@ export function commandEnd(step) {
142
142
  return null;
143
143
  if (step.exitCode !== undefined)
144
144
  return step.exitCode === 0 ? 'Exit 0' : 'Exit ' + step.exitCode;
145
+ if (step.failed)
146
+ return 'Failed';
145
147
  return outcome === 'returned' ? 'Finished' : outcome === 'rejected' ? (step.output && !refusedBeforeRunning(step) ? 'Failed' : 'Refused') : 'Outcome unknown';
146
148
  }
147
149
  function rhoTool(tool, step) {
@@ -161,7 +163,7 @@ export function toolActivity(step, location, root, key) {
161
163
  // Some Agents repeat the command as the title; do not show it twice.
162
164
  const title = rawTitle && rawTitle !== detail ? rawTitle : null;
163
165
  const ran = step.exitCode !== undefined || step.output !== undefined && !refusedBeforeRunning(step);
164
- const outcome = step.exitCode !== undefined && step.exitCode !== 0 || step.outcome === 'rejected' && ran ? 'failed' : step.outcome ?? 'requested';
166
+ const outcome = step.failed || step.exitCode !== undefined && step.exitCode !== 0 || step.outcome === 'rejected' && ran ? 'failed' : step.outcome ?? 'requested';
165
167
  const special = rhoTool(tool, step);
166
168
  if (special)
167
169
  return { key: key ?? step.id ?? tool, step, title, location, outcome, ...special };
@@ -1,8 +1,11 @@
1
+ import { type UiContext, type UiLocation } from './ui-context.js';
1
2
  import { type Cost, type FileDescription, type Spend, type Strategy } from './file-describer.js';
2
3
  import { type CapturePort, type TurnEvidence } from './evidence-capture.js';
3
4
  import type { AgentPermission, ConversationStep, ClaudeAcpOptions, CodexAcpOptions, SessionObservation, ConfigOption } from '@rho-workspace/plugin-agent/conversation';
4
5
  import type { Project } from './state.js';
5
6
  export declare const conversationLimits: {
7
+ maxUiContextBytes: number;
8
+ maxUiContextViews: number;
6
9
  maxConversations: number;
7
10
  maxDeleted: number;
8
11
  maxTurns: number;
@@ -24,6 +27,7 @@ export declare const conversationLimits: {
24
27
  stopGraceMs: number;
25
28
  maxChoices: number;
26
29
  maxChoiceChars: number;
30
+ maxAddedAgents: number;
27
31
  maxComparedFiles: number;
28
32
  maxChangedFiles: number;
29
33
  maxCaptureFiles: number;
@@ -100,6 +104,7 @@ interface Turn {
100
104
  descriptionsOmitted?: number;
101
105
  descriptionSpend?: Spend;
102
106
  contexts?: string[];
107
+ uiContext?: UiContext;
103
108
  decisions?: Decision[];
104
109
  continued?: {
105
110
  at: string;
@@ -129,7 +134,7 @@ interface FileChange {
129
134
  modifiedAt: string | null;
130
135
  bytes: number | null;
131
136
  }
132
- type Backend = 'claude-acp' | 'codex-acp' | 'acp';
137
+ type Backend = 'claude-acp' | 'codex-acp' | 'acp' | `acp:${string}`;
133
138
  type Choices = Record<string, string | boolean>;
134
139
  interface Offered {
135
140
  at: string;
@@ -155,6 +160,7 @@ export interface ConversationPorts {
155
160
  claudePlugins?(project: Project): Promise<string[]>;
156
161
  capture?: CapturePort;
157
162
  context?(project: Project, contextId: string): Promise<unknown>;
163
+ uiContext?(project: Project, location: UiLocation, limits: typeof conversationLimits): Promise<UiContext>;
158
164
  describe?(project: Project, request: DescribeRequest): Promise<{
159
165
  text: string;
160
166
  model: string | null;
@@ -180,7 +186,7 @@ export interface ContinueSession {
180
186
  title: string;
181
187
  where: string;
182
188
  copy: boolean;
183
- backend: 'claude-acp' | 'codex-acp' | 'acp';
189
+ backend: Backend;
184
190
  }
185
191
  export interface DescribeRequest {
186
192
  path: string;
@@ -210,6 +216,7 @@ export declare class Conversations {
210
216
  private drivers;
211
217
  private permissions;
212
218
  private checks;
219
+ private adding;
213
220
  private writing;
214
221
  describing: {
215
222
  everyMs: number;
@@ -446,7 +453,7 @@ export declare class Conversations {
446
453
  private sessionObservation;
447
454
  work(project: Project, limit?: number): Promise<{
448
455
  sessions: {
449
- backend: "claude-acp" | "codex-acp" | "acp" | "claude-cli";
456
+ backend: "claude-cli" | Backend;
450
457
  sessionId: string | null;
451
458
  observation: SessionObservation | null;
452
459
  state: string;
@@ -490,6 +497,7 @@ export declare class Conversations {
490
497
  changeId: string;
491
498
  text: string;
492
499
  contexts?: string[];
500
+ uiContext?: UiLocation;
493
501
  backend?: Backend;
494
502
  config?: Choices;
495
503
  continue?: ContinueSession;
@@ -543,6 +551,7 @@ export declare class Conversations {
543
551
  changeId: string;
544
552
  text: string;
545
553
  contexts?: string[];
554
+ uiContext?: UiLocation;
546
555
  continuationOf?: string;
547
556
  }): Promise<{
548
557
  conversation: {
@@ -635,7 +644,9 @@ export declare class Conversations {
635
644
  private offers;
636
645
  private readSettings;
637
646
  private settingsView;
647
+ private commandOf;
638
648
  private agents;
649
+ harness(): Promise<Backend | null>;
639
650
  settings(): Promise<{
640
651
  version: number;
641
652
  updatedAt: string | null;
@@ -664,7 +675,7 @@ export declare class Conversations {
664
675
  };
665
676
  acp: {
666
677
  found: boolean;
667
- name: string | null;
678
+ name: string;
668
679
  problem?: undefined;
669
680
  } | {
670
681
  found: boolean;
@@ -672,11 +683,22 @@ export declare class Conversations {
672
683
  name?: undefined;
673
684
  };
674
685
  };
686
+ added: {
687
+ backend: `acp:${string}`;
688
+ name: string;
689
+ command: string[];
690
+ addedAt: string;
691
+ }[];
692
+ installed: {
693
+ id: string;
694
+ name: string;
695
+ command: string[];
696
+ }[];
675
697
  }>;
676
698
  updateSettings(input: {
677
699
  expectedVersion: number;
678
- backend?: Backend | null;
679
- choices?: Partial<Record<Backend, Choices>>;
700
+ backend?: string | null;
701
+ choices?: Partial<Record<string, Choices>>;
680
702
  describe?: {
681
703
  enabled: boolean;
682
704
  };
@@ -708,7 +730,7 @@ export declare class Conversations {
708
730
  };
709
731
  acp: {
710
732
  found: boolean;
711
- name: string | null;
733
+ name: string;
712
734
  problem?: undefined;
713
735
  } | {
714
736
  found: boolean;
@@ -716,6 +738,17 @@ export declare class Conversations {
716
738
  name?: undefined;
717
739
  };
718
740
  };
741
+ added: {
742
+ backend: `acp:${string}`;
743
+ name: string;
744
+ command: string[];
745
+ addedAt: string;
746
+ }[];
747
+ installed: {
748
+ id: string;
749
+ name: string;
750
+ command: string[];
751
+ }[];
719
752
  }>;
720
753
  check(project: Project, input: {
721
754
  backend: Backend;
@@ -747,7 +780,7 @@ export declare class Conversations {
747
780
  };
748
781
  acp: {
749
782
  found: boolean;
750
- name: string | null;
783
+ name: string;
751
784
  problem?: undefined;
752
785
  } | {
753
786
  found: boolean;
@@ -755,9 +788,122 @@ export declare class Conversations {
755
788
  name?: undefined;
756
789
  };
757
790
  };
791
+ added: {
792
+ backend: `acp:${string}`;
793
+ name: string;
794
+ command: string[];
795
+ addedAt: string;
796
+ }[];
797
+ installed: {
798
+ id: string;
799
+ name: string;
800
+ command: string[];
801
+ }[];
758
802
  }>;
759
803
  private inspect;
760
804
  private offer;
805
+ addAgent(project: Project, input: {
806
+ command: string[];
807
+ }): Promise<{
808
+ version: number;
809
+ updatedAt: string | null;
810
+ backend: Backend | null;
811
+ serviceBackend: "claude-acp" | "codex-acp" | "acp" | "claude-cli";
812
+ choices: Partial<Record<Backend, Choices>>;
813
+ offered: Partial<Record<Backend, Offered>>;
814
+ checking: Backend[];
815
+ describe: {
816
+ enabled: boolean;
817
+ };
818
+ agents: {
819
+ 'claude-acp': {
820
+ found: boolean;
821
+ problem: string;
822
+ } | {
823
+ found: boolean;
824
+ problem?: undefined;
825
+ };
826
+ 'codex-acp': {
827
+ found: boolean;
828
+ problem: string;
829
+ } | {
830
+ found: boolean;
831
+ problem?: undefined;
832
+ };
833
+ acp: {
834
+ found: boolean;
835
+ name: string;
836
+ problem?: undefined;
837
+ } | {
838
+ found: boolean;
839
+ problem: string;
840
+ name?: undefined;
841
+ };
842
+ };
843
+ added: {
844
+ backend: `acp:${string}`;
845
+ name: string;
846
+ command: string[];
847
+ addedAt: string;
848
+ }[];
849
+ installed: {
850
+ id: string;
851
+ name: string;
852
+ command: string[];
853
+ }[];
854
+ }>;
855
+ private addOnce;
856
+ private newName;
857
+ removeAgent(input: {
858
+ backend: string;
859
+ }): Promise<{
860
+ version: number;
861
+ updatedAt: string | null;
862
+ backend: Backend | null;
863
+ serviceBackend: "claude-acp" | "codex-acp" | "acp" | "claude-cli";
864
+ choices: Partial<Record<Backend, Choices>>;
865
+ offered: Partial<Record<Backend, Offered>>;
866
+ checking: Backend[];
867
+ describe: {
868
+ enabled: boolean;
869
+ };
870
+ agents: {
871
+ 'claude-acp': {
872
+ found: boolean;
873
+ problem: string;
874
+ } | {
875
+ found: boolean;
876
+ problem?: undefined;
877
+ };
878
+ 'codex-acp': {
879
+ found: boolean;
880
+ problem: string;
881
+ } | {
882
+ found: boolean;
883
+ problem?: undefined;
884
+ };
885
+ acp: {
886
+ found: boolean;
887
+ name: string;
888
+ problem?: undefined;
889
+ } | {
890
+ found: boolean;
891
+ problem: string;
892
+ name?: undefined;
893
+ };
894
+ };
895
+ added: {
896
+ backend: `acp:${string}`;
897
+ name: string;
898
+ command: string[];
899
+ addedAt: string;
900
+ }[];
901
+ installed: {
902
+ id: string;
903
+ name: string;
904
+ command: string[];
905
+ }[];
906
+ }>;
761
907
  stop(project: Project, by: string, input: {
762
908
  conversationId: string;
763
909
  turnId: string;