@getpaseo/server 0.1.99 → 0.1.101

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 (83) hide show
  1. package/dist/server/executable-resolution/windows.js +3 -0
  2. package/dist/server/server/agent/agent-manager.d.ts +10 -0
  3. package/dist/server/server/agent/agent-manager.js +65 -27
  4. package/dist/server/server/agent/agent-sdk-types.d.ts +8 -0
  5. package/dist/server/server/agent/mcp-server.d.ts +2 -45
  6. package/dist/server/server/agent/mcp-server.js +45 -1985
  7. package/dist/server/server/agent/prompt-attachments.js +6 -2
  8. package/dist/server/server/agent/provider-registry.js +1 -0
  9. package/dist/server/server/agent/provider-snapshot-manager.d.ts +4 -0
  10. package/dist/server/server/agent/provider-snapshot-manager.js +58 -13
  11. package/dist/server/server/agent/providers/acp-agent.d.ts +39 -2
  12. package/dist/server/server/agent/providers/acp-agent.js +281 -20
  13. package/dist/server/server/agent/providers/claude/agent.js +96 -62
  14. package/dist/server/server/agent/providers/codex-app-server-agent.js +6 -57
  15. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +2 -1
  16. package/dist/server/server/agent/providers/copilot-acp-agent.js +10 -0
  17. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +1 -0
  18. package/dist/server/server/agent/providers/diagnostic-utils.js +1 -1
  19. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +3 -0
  20. package/dist/server/server/agent/providers/generic-acp-agent.js +41 -23
  21. package/dist/server/server/agent/providers/mock-load-test-agent.js +4 -2
  22. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +14 -11
  23. package/dist/server/server/agent/providers/opencode/server-manager.js +149 -91
  24. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +6 -5
  25. package/dist/server/server/agent/providers/opencode/test-server-manager.js +13 -3
  26. package/dist/server/server/agent/providers/opencode/test-utils/{test-opencode-runtime.d.ts → test-opencode-harness.d.ts} +11 -11
  27. package/dist/server/server/agent/providers/opencode/test-utils/{test-opencode-runtime.js → test-opencode-harness.js} +23 -10
  28. package/dist/server/server/agent/providers/opencode-agent.d.ts +9 -3
  29. package/dist/server/server/agent/providers/opencode-agent.js +26 -38
  30. package/dist/server/server/agent/providers/pi/agent.d.ts +4 -2
  31. package/dist/server/server/agent/providers/pi/agent.js +8 -3
  32. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +3 -0
  33. package/dist/server/server/agent/providers/pi/cli-runtime.js +6 -3
  34. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +2 -1
  35. package/dist/server/server/agent/providers/provider-image-output.d.ts +5 -0
  36. package/dist/server/server/agent/providers/provider-image-output.js +55 -0
  37. package/dist/server/server/agent/tools/paseo-tools.d.ts +48 -0
  38. package/dist/server/server/agent/tools/paseo-tools.js +2121 -0
  39. package/dist/server/server/agent/tools/types.d.ts +36 -0
  40. package/dist/server/server/agent/tools/types.js +2 -0
  41. package/dist/server/server/bootstrap.js +71 -62
  42. package/dist/server/server/persisted-config.d.ts +5 -0
  43. package/dist/server/server/persisted-config.js +10 -2
  44. package/dist/server/server/session/agent-updates/agent-updates-service.d.ts +59 -0
  45. package/dist/server/server/session/agent-updates/agent-updates-service.js +220 -0
  46. package/dist/server/server/session/checkout/checkout-session.d.ts +13 -15
  47. package/dist/server/server/session/checkout/checkout-session.js +18 -16
  48. package/dist/server/server/session/checkout/git-metadata-generator.d.ts +53 -0
  49. package/dist/server/server/session/checkout/git-metadata-generator.js +159 -0
  50. package/dist/server/server/session/daemon/daemon-session.d.ts +14 -0
  51. package/dist/server/server/session/daemon/daemon-session.js +38 -0
  52. package/dist/server/server/session/daemon/diagnostics.d.ts +41 -0
  53. package/dist/server/server/session/daemon/diagnostics.js +421 -0
  54. package/dist/server/server/session/git-mutation/git-mutation-service.d.ts +34 -0
  55. package/dist/server/server/session/git-mutation/git-mutation-service.js +71 -0
  56. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.d.ts +36 -0
  57. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.js +134 -0
  58. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.d.ts +34 -0
  59. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.js +190 -0
  60. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.d.ts +41 -0
  61. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.js +100 -0
  62. package/dist/server/server/session.d.ts +7 -51
  63. package/dist/server/server/session.js +113 -938
  64. package/dist/server/server/speech/providers/openai/config.d.ts +1 -2
  65. package/dist/server/server/speech/providers/openai/config.js +13 -9
  66. package/dist/server/server/speech/providers/openai/runtime.js +2 -16
  67. package/dist/server/server/speech/providers/openai/stt.d.ts +1 -0
  68. package/dist/server/server/speech/providers/openai/stt.js +4 -2
  69. package/dist/server/server/speech/providers/openai/tts.d.ts +1 -0
  70. package/dist/server/server/speech/providers/openai/tts.js +1 -0
  71. package/dist/server/server/websocket/runtime-metrics.d.ts +20 -0
  72. package/dist/server/server/websocket-server.d.ts +1 -2
  73. package/dist/server/server/websocket-server.js +26 -21
  74. package/dist/server/server/worktree-bootstrap.d.ts +1 -1
  75. package/dist/server/server/worktree-branch-name-generator.js +3 -1
  76. package/dist/server/utils/checkout-git.js +51 -26
  77. package/dist/src/executable-resolution/windows.js +3 -0
  78. package/dist/src/server/persisted-config.js +10 -2
  79. package/package.json +5 -5
  80. package/dist/server/server/agent/providers/opencode/runtime.d.ts +0 -28
  81. package/dist/server/server/agent/providers/opencode/runtime.js +0 -5
  82. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +0 -42
  83. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +0 -168
@@ -67,14 +67,18 @@ export function buildAgentBranchNameSeed(firstAgentContext) {
67
67
  const parts = [];
68
68
  const prompt = firstAgentContext.prompt?.trim();
69
69
  if (prompt) {
70
- parts.push(prompt);
70
+ parts.push(["<user-prompt>", prompt, "</user-prompt>"].join("\n"));
71
71
  }
72
+ const renderedAttachments = [];
72
73
  for (const attachment of firstAgentContext.attachments ?? []) {
73
74
  const rendered = renderPromptAttachmentAsText(attachment).trim();
74
75
  if (rendered) {
75
- parts.push(rendered);
76
+ renderedAttachments.push(rendered);
76
77
  }
77
78
  }
79
+ if (renderedAttachments.length > 0) {
80
+ parts.push(["<attachments>", renderedAttachments.join("\n\n"), "</attachments>"].join("\n"));
81
+ }
78
82
  return parts.length > 0 ? parts.join("\n\n") : undefined;
79
83
  }
80
84
  //# sourceMappingURL=prompt-attachments.js.map
@@ -51,6 +51,7 @@ const PROVIDER_CLIENT_FACTORIES = {
51
51
  providerParams: options?.providerParams ?? {
52
52
  sessionDir: "~/.omp/agent/sessions",
53
53
  },
54
+ commandsRpcType: "get_available_commands",
54
55
  }),
55
56
  mock: (logger) => new MockLoadTestAgentClient(logger),
56
57
  "mock-slow": () => new MockSlowProviderClient(),
@@ -15,6 +15,7 @@ export interface ProviderSnapshotManagerOptions {
15
15
  isDev?: boolean;
16
16
  extraClients?: Partial<Record<AgentProvider, AgentClient>>;
17
17
  refreshTimeoutMs?: number;
18
+ diagnosticTimeoutMs?: number;
18
19
  }
19
20
  interface ProviderSnapshotRefreshOptions {
20
21
  cwd: string;
@@ -64,6 +65,7 @@ export declare class ProviderSnapshotManager {
64
65
  private readonly events;
65
66
  private destroyed;
66
67
  private readonly refreshTimeoutMs;
68
+ private readonly diagnosticTimeoutMs;
67
69
  private readonly logger;
68
70
  private readonly workspaceGitService?;
69
71
  private readonly managedProcesses?;
@@ -101,6 +103,8 @@ export declare class ProviderSnapshotManager {
101
103
  private resolveParent;
102
104
  private getReadyProvider;
103
105
  private requireProvider;
106
+ private refreshDiagnosticSnapshotEntry;
107
+ private getBaseProviderDiagnostic;
104
108
  private createLoadingEntries;
105
109
  private reconcileSnapshotForRegistry;
106
110
  private warmUp;
@@ -5,8 +5,9 @@ import { expandTilde } from "../../utils/path.js";
5
5
  import { withTimeout } from "../../utils/promise-timeout.js";
6
6
  import { buildProviderRegistry, shutdownAgentClients, } from "./provider-registry.js";
7
7
  import { applyMutableProviderConfigToOverrides } from "../daemon-config-store.js";
8
- import { formatProviderDiagnostic } from "./providers/diagnostic-utils.js";
9
- const DEFAULT_REFRESH_TIMEOUT_MS = 30000;
8
+ import { formatProviderDiagnostic, formatProviderDiagnosticError, } from "./providers/diagnostic-utils.js";
9
+ const DEFAULT_REFRESH_TIMEOUT_MS = 60000;
10
+ const DEFAULT_DIAGNOSTIC_TIMEOUT_MS = 120000;
10
11
  const REFRESH_TIMEOUT_ENV_VAR = "PASEO_PROVIDER_REFRESH_TIMEOUT_MS";
11
12
  // Provider refresh probes can be slow on cold starts (e.g. Copilot's first
12
13
  // `copilot --acp` invocation, OpenCode workspace probes with many MCP servers).
@@ -25,6 +26,12 @@ function resolveRefreshTimeoutMs(option) {
25
26
  }
26
27
  return DEFAULT_REFRESH_TIMEOUT_MS;
27
28
  }
29
+ function resolveDiagnosticTimeoutMs(option, refreshTimeoutMs) {
30
+ if (typeof option === "number" && Number.isFinite(option) && option > 0) {
31
+ return option;
32
+ }
33
+ return Math.max(refreshTimeoutMs, DEFAULT_DIAGNOSTIC_TIMEOUT_MS);
34
+ }
28
35
  export class ProviderSnapshotManager {
29
36
  constructor(options) {
30
37
  this.snapshots = new Map();
@@ -40,6 +47,7 @@ export class ProviderSnapshotManager {
40
47
  this.providerOverrides = options.providerOverrides;
41
48
  this.baseProviderOverrides = options.providerOverrides;
42
49
  this.refreshTimeoutMs = resolveRefreshTimeoutMs(options.refreshTimeoutMs);
50
+ this.diagnosticTimeoutMs = resolveDiagnosticTimeoutMs(options.diagnosticTimeoutMs, this.refreshTimeoutMs);
43
51
  this.providerRegistry = this.buildRegistry();
44
52
  this.providerClients = { ...this.extraClients };
45
53
  }
@@ -180,18 +188,23 @@ export class ProviderSnapshotManager {
180
188
  });
181
189
  }
182
190
  async getProviderDiagnostic(provider) {
183
- const definition = this.requireProvider(provider);
184
- const client = this.ensureClient(provider, definition);
185
- // Force-refresh the snapshot so Models/Status come from the single catalog authority.
186
- await this.refreshSnapshotForCwd({ cwd: homedir(), providers: [provider] });
187
- const entry = await this.getProvider({ cwd: homedir(), provider, wait: true });
191
+ const definition = this.providerRegistry[provider];
192
+ if (!definition) {
193
+ return {
194
+ provider,
195
+ diagnostic: formatProviderDiagnostic(provider, [
196
+ { label: "Error", value: `Provider ${provider} is not configured` },
197
+ ]),
198
+ };
199
+ }
200
+ const baseDiagnosticPromise = this.getBaseProviderDiagnostic(provider, definition);
201
+ const snapshotEntryPromise = this.refreshDiagnosticSnapshotEntry(provider, definition);
202
+ const [baseDiagnostic, entry] = await Promise.all([
203
+ baseDiagnosticPromise,
204
+ snapshotEntryPromise,
205
+ ]);
188
206
  const modelCount = entry.status === "ready" ? String(entry.models?.length ?? 0) : "—";
189
207
  const status = formatProviderStatus(entry);
190
- const baseDiagnostic = client.getDiagnostic
191
- ? (await client.getDiagnostic()).diagnostic
192
- : formatProviderDiagnostic(definition.label ?? provider, [
193
- { label: "Diagnostic", value: "No diagnostic available" },
194
- ]);
195
208
  const diagnostic = `${baseDiagnostic}\n Models: ${modelCount}\n Status: ${status}`;
196
209
  return { provider, diagnostic };
197
210
  }
@@ -283,6 +296,38 @@ export class ProviderSnapshotManager {
283
296
  }
284
297
  return definition;
285
298
  }
299
+ async refreshDiagnosticSnapshotEntry(provider, definition) {
300
+ try {
301
+ const cwd = resolveSnapshotCwd();
302
+ await this.refreshSnapshotForCwd({ cwd, providers: [provider] });
303
+ return await this.getProvider({ cwd, provider, wait: false });
304
+ }
305
+ catch (error) {
306
+ return {
307
+ provider,
308
+ status: "error",
309
+ enabled: definition.enabled,
310
+ label: definition.label,
311
+ description: definition.description,
312
+ defaultModeId: definition.defaultModeId,
313
+ error: toErrorMessage(error),
314
+ };
315
+ }
316
+ }
317
+ async getBaseProviderDiagnostic(provider, definition) {
318
+ try {
319
+ const client = this.ensureClient(provider, definition);
320
+ if (client.getDiagnostic) {
321
+ return (await withTimeout(client.getDiagnostic(), this.diagnosticTimeoutMs, `Timed out collecting ${definition.label ?? provider} diagnostic after ${this.diagnosticTimeoutMs}ms`)).diagnostic;
322
+ }
323
+ return formatProviderDiagnostic(definition.label ?? provider, [
324
+ { label: "Diagnostic", value: "No diagnostic available" },
325
+ ]);
326
+ }
327
+ catch (error) {
328
+ return formatProviderDiagnosticError(definition.label ?? provider, error);
329
+ }
330
+ }
286
331
  createLoadingEntries() {
287
332
  const entries = new Map();
288
333
  for (const provider of this.getProviderIds()) {
@@ -454,7 +499,7 @@ export class ProviderSnapshotManager {
454
499
  setEntry({ ...base, status: "unavailable", enabled: true });
455
500
  return;
456
501
  }
457
- const catalog = await withTimeout(definition.fetchCatalog({ cwd, force }, client), this.refreshTimeoutMs, `Timed out refreshing ${definition.label} after ${this.refreshTimeoutMs}ms`);
502
+ const catalog = await withTimeout(definition.fetchCatalog({ cwd, force, timeoutMs: this.refreshTimeoutMs }, client), this.refreshTimeoutMs, `Timed out refreshing ${definition.label} after ${this.refreshTimeoutMs}ms`);
458
503
  setEntry({
459
504
  ...base,
460
505
  status: "ready",
@@ -3,8 +3,9 @@ import type { ProcessTerminator } from "../../../utils/tree-kill.js";
3
3
  import type { ReadableStream as NodeReadableStream, WritableStream as NodeWritableStream } from "node:stream/web";
4
4
  import { ClientSideConnection, type Client as ACPClient, type CreateTerminalRequest, type InitializeResponse, type KillTerminalRequest, type LoadSessionResponse, type NewSessionResponse, type ReadTextFileRequest, type RequestPermissionRequest, type RequestPermissionResponse, type ResumeSessionResponse, type SessionConfigOption, type SessionMode, type SessionModelState, type SessionNotification, type TerminalOutputRequest, type TerminalOutputResponse, type ToolCallContent, type ToolCallLocation, type ToolCallStatus, type ToolKind, type Usage, type WaitForTerminalExitRequest, type WriteTextFileRequest, type Stream as ACPStream } from "@agentclientprotocol/sdk";
5
5
  import type { Logger } from "pino";
6
- import { type AgentCapabilityFlags, type AgentClient, type AgentLaunchContext, type AgentMode, type AgentModelDefinition, type AgentPermissionRequest, type AgentPermissionResponse, type AgentPersistenceHandle, type AgentPromptInput, type AgentRunOptions, type AgentRunResult, type AgentRuntimeInfo, type AgentSession, type AgentSessionConfig, type AgentSlashCommand, type AgentStreamEvent, type AgentUsage, type FetchCatalogOptions, type ImportableProviderSession, type ImportProviderSessionContext, type ImportProviderSessionInput, type ListImportableSessionsOptions, type ProviderCatalog } from "../agent-sdk-types.js";
6
+ import { type AgentCapabilityFlags, type AgentClient, type AgentFeature, type AgentLaunchContext, type AgentMode, type AgentModelDefinition, type AgentPermissionRequest, type AgentPermissionResponse, type AgentPersistenceHandle, type AgentPromptInput, type AgentRunOptions, type AgentRunResult, type AgentRuntimeInfo, type AgentSession, type AgentSessionConfig, type AgentSlashCommand, type AgentStreamEvent, type AgentUsage, type FetchCatalogOptions, type ImportableProviderSession, type ImportProviderSessionContext, type ImportProviderSessionInput, type ListImportableSessionsOptions, type ProviderCatalog } from "../agent-sdk-types.js";
7
7
  import { type ProviderRuntimeSettings } from "../provider-launch-config.js";
8
+ import { type DiagnosticEntry } from "./diagnostic-utils.js";
8
9
  export declare function summarizeACPRequestError(error: unknown): {
9
10
  message: string;
10
11
  code?: string;
@@ -24,6 +25,7 @@ interface ACPAgentClientOptions {
24
25
  modelTransformer?: (models: AgentModelDefinition[]) => AgentModelDefinition[];
25
26
  sessionResponseTransformer?: (response: SessionStateResponse) => SessionStateResponse;
26
27
  configOptionsTransformer?: (configOptions: SessionConfigOption[]) => SessionConfigOption[];
28
+ configFeatureOptions?: ACPConfigFeatureOption[];
27
29
  modeIdTransformer?: (modeId: string) => string | null;
28
30
  toolSnapshotTransformer?: (snapshot: ACPToolSnapshot) => ACPToolSnapshot;
29
31
  providerModeWriter?: (context: ACPProviderModeWriterContext) => Promise<ACPProviderModeWriteResult>;
@@ -43,6 +45,7 @@ interface ACPAgentSessionOptions {
43
45
  modelTransformer?: (models: AgentModelDefinition[]) => AgentModelDefinition[];
44
46
  sessionResponseTransformer?: (response: SessionStateResponse) => SessionStateResponse;
45
47
  configOptionsTransformer?: (configOptions: SessionConfigOption[]) => SessionConfigOption[];
48
+ configFeatureOptions?: ACPConfigFeatureOption[];
46
49
  modeIdTransformer?: (modeId: string) => string | null;
47
50
  toolSnapshotTransformer?: (snapshot: ACPToolSnapshot) => ACPToolSnapshot;
48
51
  providerModeWriter?: (context: ACPProviderModeWriterContext) => Promise<ACPProviderModeWriteResult>;
@@ -60,6 +63,17 @@ export interface SpawnedACPProcess {
60
63
  child: ChildProcessWithoutNullStreams;
61
64
  connection: ClientSideConnection;
62
65
  initialize: InitializeResponse;
66
+ stderrChunks?: string[];
67
+ }
68
+ type UninitializedACPProcess = Omit<SpawnedACPProcess, "initialize"> & {
69
+ initialize?: InitializeResponse;
70
+ };
71
+ interface ACPProcessTransport {
72
+ child: ChildProcessWithoutNullStreams;
73
+ connection: ClientSideConnection;
74
+ stderrChunks: string[];
75
+ spawnReady: Promise<void>;
76
+ spawnError: Promise<never>;
63
77
  }
64
78
  export interface ACPToolSnapshot {
65
79
  toolCallId: string;
@@ -76,6 +90,16 @@ interface TerminalExit {
76
90
  exitCode?: number | null;
77
91
  signal?: string | null;
78
92
  }
93
+ export interface ACPConfigFeatureOption {
94
+ id: string;
95
+ configId: string;
96
+ category: string;
97
+ label: string;
98
+ description?: string;
99
+ tooltip?: string;
100
+ icon?: string;
101
+ emptyOptionLabel?: string;
102
+ }
79
103
  type SelectConfigOption = Extract<SessionConfigOption, {
80
104
  type: "select";
81
105
  }>;
@@ -134,6 +158,7 @@ export declare function deriveModesFromACP(fallbackModes: AgentMode[], modeState
134
158
  currentModeId: string | null;
135
159
  };
136
160
  export declare function deriveModelDefinitionsFromACP(provider: string, models: SessionModelState | null | undefined, configOptions?: SessionConfigOption[] | null): AgentModelDefinition[];
161
+ export declare function deriveFeaturesFromACP(configOptions: SessionConfigOption[] | null | undefined, featureOptions: ACPConfigFeatureOption[]): AgentFeature[];
137
162
  export declare class ACPAgentClient implements AgentClient {
138
163
  readonly provider: string;
139
164
  readonly capabilities: AgentCapabilityFlags;
@@ -144,6 +169,7 @@ export declare class ACPAgentClient implements AgentClient {
144
169
  private readonly modelTransformer?;
145
170
  private readonly sessionResponseTransformer?;
146
171
  private readonly configOptionsTransformer?;
172
+ private readonly configFeatureOptions;
147
173
  private readonly modeIdTransformer?;
148
174
  private readonly toolSnapshotTransformer?;
149
175
  private readonly providerModeWriter?;
@@ -156,15 +182,23 @@ export declare class ACPAgentClient implements AgentClient {
156
182
  createSession(config: AgentSessionConfig, launchContext?: AgentLaunchContext): Promise<AgentSession>;
157
183
  resumeSession(handle: AgentPersistenceHandle, overrides?: Partial<AgentSessionConfig>, launchContext?: AgentLaunchContext): Promise<AgentSession>;
158
184
  fetchCatalog(options: FetchCatalogOptions): Promise<ProviderCatalog>;
185
+ listFeatures(config: AgentSessionConfig): Promise<AgentFeature[]>;
159
186
  listImportableSessions(options?: ListImportableSessionsOptions): Promise<ImportableProviderSession[]>;
160
187
  importSession(input: ImportProviderSessionInput, context: ImportProviderSessionContext): Promise<import("../agent-sdk-types.js").ImportedProviderSession>;
161
188
  isAvailable(): Promise<boolean>;
162
189
  protected spawnProcess(launchEnv?: Record<string, string>, options?: {
163
190
  initializeTimeoutMs?: number;
191
+ onSpawned?: (probe: UninitializedACPProcess) => void;
164
192
  }): Promise<SpawnedACPProcess>;
193
+ protected spawnTransport(launchEnv?: Record<string, string>): Promise<ACPProcessTransport>;
194
+ protected initializeTransport(transport: ACPProcessTransport, initializeTimeoutMs?: number): Promise<InitializeResponse>;
165
195
  protected buildProbeClient(): ACPClient;
166
- protected closeProbe(probe: SpawnedACPProcess): Promise<void>;
196
+ protected closeProbe(probe: UninitializedACPProcess): Promise<void>;
167
197
  protected runACPRequest<T>(request: () => Promise<T>): Promise<T>;
198
+ protected buildACPProbeDiagnosticRows(options?: {
199
+ cwd?: string;
200
+ phaseTimeoutMs?: number;
201
+ }): Promise<DiagnosticEntry[]>;
168
202
  protected resolveLaunchCommand(): Promise<{
169
203
  command: string;
170
204
  args: string[];
@@ -182,6 +216,7 @@ export declare class ACPAgentSession implements AgentSession, ACPClient {
182
216
  protected readonly modelTransformer?: (models: AgentModelDefinition[]) => AgentModelDefinition[];
183
217
  private readonly sessionResponseTransformer?;
184
218
  private readonly configOptionsTransformer?;
219
+ private readonly configFeatureOptions;
185
220
  private readonly modeIdTransformer?;
186
221
  private readonly toolSnapshotTransformer?;
187
222
  private readonly providerModeWriter?;
@@ -236,6 +271,7 @@ export declare class ACPAgentSession implements AgentSession, ACPClient {
236
271
  getRuntimeInfo(): Promise<AgentRuntimeInfo>;
237
272
  getAvailableModes(): Promise<AgentMode[]>;
238
273
  getCurrentMode(): Promise<string | null>;
274
+ get features(): AgentFeature[];
239
275
  private ensureCommandsReadyDeferred;
240
276
  private settleCommandsReady;
241
277
  private waitForCommandsReady;
@@ -246,6 +282,7 @@ export declare class ACPAgentSession implements AgentSession, ACPClient {
246
282
  setModel(modelId: string | null): Promise<void>;
247
283
  private setModelWithSelection;
248
284
  setThinkingOption(thinkingOptionId: string | null): Promise<void>;
285
+ setFeature(featureId: string, value: unknown): Promise<void>;
249
286
  private applyConfigOptionResponse;
250
287
  getPendingPermissions(): AgentPermissionRequest[];
251
288
  respondToPermission(requestId: string, response: AgentPermissionResponse): Promise<void>;