@sanqianx/claude-ai-workbench 0.13.2 → 0.13.4

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 (122) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +156 -156
  3. package/apps/agent-terminal/app.css +652 -613
  4. package/apps/agent-terminal/app.js +143 -67
  5. package/apps/agent-terminal/conversation-composer.js +44 -0
  6. package/apps/agent-terminal/index.html +172 -170
  7. package/apps/agent-terminal/panel-host-proof.html +152 -152
  8. package/apps/agent-terminal/panel-proof-content.html +41 -41
  9. package/apps/agent-terminal/right-workspace-dock.css +189 -159
  10. package/apps/agent-terminal/right-workspace-dock.js +652 -521
  11. package/apps/agent-terminal/user-question-card.js +68 -0
  12. package/apps/ai-profile-settings-host/index.html +25 -25
  13. package/apps/ai-profile-settings-host/page.css +1 -1
  14. package/apps/ai-profile-settings-host/page.js +113 -113
  15. package/apps/minimal-test-host/README.md +15 -15
  16. package/apps/minimal-test-host/host.css +2 -2
  17. package/apps/minimal-test-host/host.js +35 -35
  18. package/apps/minimal-test-host/index.html +58 -58
  19. package/apps/minimal-test-host/optional-mock/fault-injection.js +15 -15
  20. package/docs/sdk/FILE_LAYOUT.md +31 -31
  21. package/docs/sdk/INTEGRATION.md +126 -126
  22. package/docs/sdk/README.md +21 -21
  23. package/docs/sdk/SESSION_EVENTS.md +15 -13
  24. package/docs/sdk/openapi.yaml +16 -1
  25. package/package.json +1 -1
  26. package/packages/client/README.md +29 -29
  27. package/packages/client/index.d.ts +122 -122
  28. package/packages/client/index.js +260 -260
  29. package/packages/client/package.json +2 -2
  30. package/packages/contracts/README.md +9 -9
  31. package/packages/contracts/index.d.ts +519 -517
  32. package/packages/contracts/index.js +312 -312
  33. package/packages/contracts/package.json +1 -1
  34. package/packages/core/README.md +8 -8
  35. package/packages/core/index.d.ts +76 -76
  36. package/packages/core/index.js +222 -222
  37. package/packages/core/package.json +2 -2
  38. package/packages/server/README.md +17 -17
  39. package/packages/server/bin/agent-terminal-server.js +42 -42
  40. package/packages/server/bin/claude-workbench.js +225 -225
  41. package/packages/server/index.d.ts +171 -171
  42. package/packages/server/index.js +230 -230
  43. package/packages/server/lib/agent-discovery.js +133 -133
  44. package/packages/server/lib/agent-registry.js +143 -143
  45. package/packages/server/lib/agent-spawn-env.js +17 -17
  46. package/packages/server/lib/attachment-store.js +78 -78
  47. package/packages/server/lib/bridges/app-server-bridge.js +373 -373
  48. package/packages/server/lib/bridges/opencode-server-bridge.js +506 -506
  49. package/packages/server/lib/capture-settings-store.js +35 -35
  50. package/packages/server/lib/claude-history-recovery.js +87 -87
  51. package/packages/server/lib/cli-session-recovery.js +28 -28
  52. package/packages/server/lib/context-resolver.js +55 -55
  53. package/packages/server/lib/conversation-capture.js +51 -51
  54. package/packages/server/lib/delegation-phase-store.js +357 -357
  55. package/packages/server/lib/delegation-store.js +474 -468
  56. package/packages/server/lib/diagnostics.js +32 -32
  57. package/packages/server/lib/drivers/cli-json-runner.js +974 -974
  58. package/packages/server/lib/drivers/codex-driver.js +1461 -1442
  59. package/packages/server/lib/drivers/opencode-driver.js +1554 -1554
  60. package/packages/server/lib/drivers/zcode-driver.js +1250 -1250
  61. package/packages/server/lib/drivers/zcode-profile-runtime.js +71 -71
  62. package/packages/server/lib/event-stream.js +138 -138
  63. package/packages/server/lib/folder-picker.js +623 -623
  64. package/packages/server/lib/http-handler.js +339 -339
  65. package/packages/server/lib/json-file.js +26 -26
  66. package/packages/server/lib/knowledge-context.js +33 -33
  67. package/packages/server/lib/model-detection.js +295 -295
  68. package/packages/server/lib/parent-context.js +44 -0
  69. package/packages/server/lib/profile-store.js +283 -283
  70. package/packages/server/lib/project-store.js +102 -102
  71. package/packages/server/lib/runtime-loader.js +120 -120
  72. package/packages/server/lib/session-archive-store.js +53 -53
  73. package/packages/server/lib/session-history.js +612 -612
  74. package/packages/server/lib/system-doctor.js +125 -125
  75. package/packages/server/lib/ui-preferences-store.js +48 -48
  76. package/packages/server/lib/user-questions.js +67 -0
  77. package/packages/server/lib/workbench-service.js +1696 -1675
  78. package/packages/server/package.json +2 -2
  79. package/packages/ui/README.md +30 -30
  80. package/packages/ui/ai-profile-settings.d.ts +45 -45
  81. package/packages/ui/ai-profile-settings.js +283 -283
  82. package/packages/ui/claude-terminal.d.ts +31 -31
  83. package/packages/ui/claude-terminal.js +343 -343
  84. package/packages/ui/index.d.ts +18 -18
  85. package/packages/ui/index.js +51 -51
  86. package/packages/ui/package.json +2 -2
  87. package/packages/ui/theme.css +13 -13
  88. package/src/assets/claude-prompts.json +21 -21
  89. package/src/backend/http/ai-profile-routes.js +61 -61
  90. package/src/backend/http/claude-routes.js +170 -170
  91. package/src/backend/http/node-helpers.js +45 -45
  92. package/src/backend/index.js +21 -21
  93. package/src/backend/lib/ai-adapter.js +144 -144
  94. package/src/backend/lib/ai-profile-store.js +259 -259
  95. package/src/backend/lib/ai-vendor-presets.js +83 -83
  96. package/src/backend/lib/ai-workspace.js +140 -140
  97. package/src/backend/lib/automation-config.js +253 -253
  98. package/src/backend/lib/claude-cli-runner.js +2408 -2392
  99. package/src/backend/lib/data-dir.js +169 -169
  100. package/src/backend/lib/llm-client.js +176 -176
  101. package/src/backend/lib/model-context-windows.js +82 -82
  102. package/src/backend/lib/native-task-control.js +217 -217
  103. package/src/backend/lib/native-task-history-index.js +475 -475
  104. package/src/backend/lib/native-task-history-reader.js +526 -526
  105. package/src/backend/lib/native-task-messages.js +457 -457
  106. package/src/backend/lib/native-task-registry.js +325 -325
  107. package/src/backend/lib/native-task-runtime.js +242 -242
  108. package/src/backend/lib/native-task-trace.js +440 -440
  109. package/src/backend/lib/native-task-transcript.js +393 -393
  110. package/src/backend/lib/prompt-registry.js +166 -166
  111. package/src/backend/lib/runtime-config.js +121 -121
  112. package/src/backend/lib/sdk-session-stream.js +143 -143
  113. package/src/backend/lib/sdk-turn-stream.js +16 -16
  114. package/src/backend/lib/store-scope.js +131 -131
  115. package/src/backend/lib/task-identity.js +104 -104
  116. package/src/backend/lib/task-state-projection.js +58 -58
  117. package/src/index.js +7 -7
  118. package/src/sdk-wave-a.ts +1 -1
  119. package/src/sdk-wave-b.ts +1 -1
  120. package/src/sdk-wave-c.ts +1 -1
  121. package/src/sdk-wave-d.ts +1 -1
  122. package/src/sdk-wave-e.ts +1 -1
@@ -1,171 +1,171 @@
1
- import type { Server } from "node:http";
2
- import type { AgentId, AgentStatus, AiProfile, AiProfileInput, AttachmentInput, DelegationAcceptResult, DelegationListPage, EffortLevel, PermissionMode, Project, ProjectInput, ProjectPatch, SessionSummary, SessionHistoryPage, SlashCommand, WorkbenchContext } from "@claude-ai-workbench/contracts";
3
-
4
- export interface WorkbenchRunner {
5
- startChatSession(options: Record<string, unknown>): {sessionId: string};
6
- startDelegatedSession?(options: Record<string, unknown>): {sessionId: string; replayed?: boolean};
7
- supportsDelegatedSessions?(agentId: AgentId): boolean;
8
- listSessions(filter?: Record<string, unknown>): Record<string, unknown>[];
9
- getState(sessionId: string): Record<string, unknown> | null;
10
- getSession(sessionId: string): Record<string, unknown> | null;
11
- getSessionTokenUsage(sessionId: string): Record<string, unknown>;
12
- subscribe(sessionId: string, listener: (event: Record<string, unknown>) => void): () => void;
13
- sendInput(sessionId: string, text: string, profile: Record<string, unknown>, options?: Record<string, unknown>): Promise<unknown>;
14
- listSupportedCommands?(sessionId: string, profile: Record<string, unknown>): Promise<SlashCommand[]>;
15
- resolvePermission(sessionId: string, requestId: string, decision: Record<string, unknown>): unknown;
16
- abort(sessionId: string, reason?: string): void;
17
- deleteSession(sessionId: string): unknown;
18
- findClaudeExecutableForSdk(): unknown;
19
- }
20
-
21
- export interface WorkbenchServerOptions {
22
- dataDir?: string;
23
- workspaces?: Record<string, string>;
24
- runner?: WorkbenchRunner;
25
- profiles?: ProfileStore;
26
- attachments?: AttachmentStore;
27
- contexts?: ContextResolver;
28
- service?: WorkbenchService;
29
- projects?: ProjectStore;
30
- sessionArchive?: SessionArchiveStore;
31
- registry?: AgentRegistry;
32
- drivers?: Partial<Record<AgentId, WorkbenchRunner>>;
33
- agentDiscovery?: AgentDiscovery;
34
- modelContextWindows?: { resolveContextWindow(model: string): number | null };
35
- apiPrefix?: string;
36
- corsOrigin?: string;
37
- serveHost?: boolean;
38
- staticRoot?: string;
39
- profileSettingsRoot?: string;
40
- terminalHostRoot?: string;
41
- agentTerminalRoot?: string;
42
- createMissingWorkspaces?: boolean;
43
- version?: string;
44
- maxSessions?: number;
45
- maxConcurrentRuns?: number;
46
- }
47
-
48
- export interface WorkbenchServer {
49
- server: Server;
50
- service: WorkbenchService;
51
- profiles: ProfileStore;
52
- attachments: AttachmentStore;
53
- contexts: ContextResolver;
54
- projects: ProjectStore;
55
- sessionArchive: SessionArchiveStore;
56
- registry: AgentRegistry;
57
- agentDiscovery: AgentDiscovery;
58
- apiPrefix: string;
59
- dataDir: string;
60
- }
61
-
62
- export declare class ProfileStore {
63
- constructor(options: {dataDir: string; profileFile?: string; credentialFile?: string});
64
- list(): AiProfile[];
65
- get(id: string): AiProfile | null;
66
- save(input: AiProfileInput, idOverride?: string): AiProfile;
67
- delete(id: string): boolean;
68
- setCredential(id: string, credential: string | {secret: string}): void;
69
- runtimeProfile(id: string): Record<string, unknown>;
70
- runtimeDraft(input: AiProfileInput, credential?: string | {secret: string}): Record<string, unknown>;
71
- }
72
-
73
- export declare class ContextResolver {
74
- constructor(options?: {workspaces?: Record<string, string>; createMissing?: boolean});
75
- register(ref: string, target: string): void;
76
- unregister(ref: string): boolean;
77
- resolve(context: WorkbenchContext): {context: WorkbenchContext; workspacePath: string};
78
- findByRealPath(realPath: string): string[];
79
- }
80
-
81
- export declare class ProjectStore {
82
- constructor(options: {dataDir: string; projectFile?: string});
83
- list(): Project[];
84
- get(id: string): Project | null;
85
- create(input: ProjectInput): Project;
86
- rename(id: string, name: string): Project;
87
- update(id: string, patch: ProjectPatch): Project;
88
- remove(id: string): boolean;
89
- toWorkspaceMap(): Record<string, string>;
90
- }
91
-
92
- export declare class SessionArchiveStore {
93
- constructor(options: {dataDir: string; archiveFile?: string});
94
- isArchived(sessionId: string): boolean;
95
- archive(sessionId: string): {archivedAt: string};
96
- restore(sessionId: string): boolean;
97
- forget(sessionId: string): void;
98
- }
99
-
100
- export declare class AgentRegistry {
101
- constructor(options?: {drivers?: Partial<Record<AgentId, WorkbenchRunner>>});
102
- register(agentId: AgentId, driver: WorkbenchRunner): WorkbenchRunner;
103
- driverFor(agentId: AgentId): WorkbenchRunner;
104
- agentOf(sessionId: string): AgentId;
105
- asRunner(): WorkbenchRunner;
106
- }
107
-
108
- export interface AgentDiscovery {
109
- (): Record<AgentId, AgentStatus & {reason?: string}>;
110
- invalidate?(): void;
111
- refresh?(): Promise<Record<AgentId, AgentStatus>>;
112
- snapshot?(): { state: string; generation: number; updatedAt: string | null };
113
- close?(): void;
114
- }
115
-
116
- export interface CliDriverOptions {
117
- command?: string;
118
- spawn?: typeof import("node:child_process").spawn;
119
- ignoreUserConfig?: boolean;
120
- }
121
-
122
- export declare class AttachmentStore {
123
- constructor(options: {root: string});
124
- saveMany(sessionId: string, attachments: AttachmentInput[]): Record<string, unknown>[];
125
- save(sessionId: string, attachment: AttachmentInput): Record<string, unknown>;
126
- read(sessionId: string, attachmentId: string): {metadata: Record<string, unknown>; data: Buffer} | null;
127
- }
128
-
129
- export declare class WorkbenchService {
130
- readonly version: string;
131
- loadHistory(sessionId: string, options?: { before?: string; limit?: number }): SessionHistoryPage;
132
- listProjects(): {projects: Project[]};
133
- getProject(id: string): Project;
134
- createProject(input: ProjectInput): Project;
135
- renameProject(id: string, input: ProjectPatch): Project;
136
- removeProject(id: string): boolean;
137
- listSessions(contextId: string, options?: {includeArchived?: boolean}): SessionSummary[];
138
- startSession(context: WorkbenchContext, aiProfileId?: string | null, options?: {agentId?: AgentId; model?: string | null; permissionMode?: PermissionMode; effort?: EffortLevel}): SessionSummary;
139
- listCommands(sessionId: string): Promise<{commands: SlashCommand[]}>;
140
- readAttachment(sessionId: string, attachmentId: string): {metadata: Record<string, unknown>; data: Buffer};
141
- send(sessionId: string, text?: string, options?: Record<string, unknown>, attachments?: AttachmentInput[]): Promise<Record<string, unknown>>;
142
- createDelegation(parentSessionId: string, input: Record<string, unknown>): Promise<DelegationAcceptResult>;
143
- listDelegations(parentSessionId: string, query: {storeScope?: string | null; contextId?: string | null}): DelegationListPage;
144
- testProfile(profileId: string): Promise<Record<string, unknown>>;
145
- testProfileDraft(input: {profile: AiProfileInput; credential?: string}): Promise<Record<string, unknown>>;
146
- destroy(): void;
147
- }
148
-
149
- export declare function createWorkbenchServer(options?: WorkbenchServerOptions): WorkbenchServer;
150
- export declare function createAgentDiscovery(options?: {claudeProbe?: (options?: {signal?: AbortSignal}) => {available: boolean; version?: string | null} | Promise<{available: boolean; version?: string | null}>; cacheTtlMs?: number; probeTimeoutMs?: number; scanBudgetMs?: number}): AgentDiscovery;
151
- export declare function createCodexDriver(options?: CliDriverOptions): WorkbenchRunner;
152
- export declare function createOpenCodeDriver(options?: CliDriverOptions): WorkbenchRunner;
153
- export declare function createZCodeDriver(): WorkbenchRunner;
154
- export declare function createDelegationStore(options: {root: string; storeScope: string; fsx?: unknown}): {
155
- reserve(input: Record<string, unknown>): Record<string, unknown>;
156
- getByRequest(scope: Record<string, string>, requestId: string): Record<string, unknown> | null;
157
- getById(scope: Record<string, string>, delegationId: string): Record<string, unknown> | null;
158
- list(scope: Record<string, string>): Record<string, unknown>[];
159
- describe(): Record<string, unknown>;
160
- };
161
- export declare function createDelegationPhaseStore(options: {root: string; storeScope: string; fsx?: unknown}): {
162
- recordChildCreated(input: Record<string, unknown>): boolean;
163
- recordChildCreateFailed(input: Record<string, unknown>): boolean;
164
- claimDispatch(input: Record<string, unknown>): {claimed: boolean; claim: Record<string, unknown> | null};
165
- recordOutcome(input: Record<string, unknown>): boolean;
166
- abandonLiveClaim(input: Record<string, unknown>): boolean;
167
- stateOf(delegationId: string): Record<string, unknown>;
168
- isClaimLive(delegationId: string): boolean;
169
- describe(): Record<string, unknown>;
170
- };
171
- export declare function createHttpHandler(service: WorkbenchService, options?: Record<string, unknown>): (request: unknown, response: unknown) => Promise<boolean>;
1
+ import type { Server } from "node:http";
2
+ import type { AgentId, AgentStatus, AiProfile, AiProfileInput, AttachmentInput, DelegationAcceptResult, DelegationListPage, EffortLevel, PermissionMode, Project, ProjectInput, ProjectPatch, SessionSummary, SessionHistoryPage, SlashCommand, WorkbenchContext } from "@claude-ai-workbench/contracts";
3
+
4
+ export interface WorkbenchRunner {
5
+ startChatSession(options: Record<string, unknown>): {sessionId: string};
6
+ startDelegatedSession?(options: Record<string, unknown>): {sessionId: string; replayed?: boolean};
7
+ supportsDelegatedSessions?(agentId: AgentId): boolean;
8
+ listSessions(filter?: Record<string, unknown>): Record<string, unknown>[];
9
+ getState(sessionId: string): Record<string, unknown> | null;
10
+ getSession(sessionId: string): Record<string, unknown> | null;
11
+ getSessionTokenUsage(sessionId: string): Record<string, unknown>;
12
+ subscribe(sessionId: string, listener: (event: Record<string, unknown>) => void): () => void;
13
+ sendInput(sessionId: string, text: string, profile: Record<string, unknown>, options?: Record<string, unknown>): Promise<unknown>;
14
+ listSupportedCommands?(sessionId: string, profile: Record<string, unknown>): Promise<SlashCommand[]>;
15
+ resolvePermission(sessionId: string, requestId: string, decision: Record<string, unknown>): unknown;
16
+ abort(sessionId: string, reason?: string): void;
17
+ deleteSession(sessionId: string): unknown;
18
+ findClaudeExecutableForSdk(): unknown;
19
+ }
20
+
21
+ export interface WorkbenchServerOptions {
22
+ dataDir?: string;
23
+ workspaces?: Record<string, string>;
24
+ runner?: WorkbenchRunner;
25
+ profiles?: ProfileStore;
26
+ attachments?: AttachmentStore;
27
+ contexts?: ContextResolver;
28
+ service?: WorkbenchService;
29
+ projects?: ProjectStore;
30
+ sessionArchive?: SessionArchiveStore;
31
+ registry?: AgentRegistry;
32
+ drivers?: Partial<Record<AgentId, WorkbenchRunner>>;
33
+ agentDiscovery?: AgentDiscovery;
34
+ modelContextWindows?: { resolveContextWindow(model: string): number | null };
35
+ apiPrefix?: string;
36
+ corsOrigin?: string;
37
+ serveHost?: boolean;
38
+ staticRoot?: string;
39
+ profileSettingsRoot?: string;
40
+ terminalHostRoot?: string;
41
+ agentTerminalRoot?: string;
42
+ createMissingWorkspaces?: boolean;
43
+ version?: string;
44
+ maxSessions?: number;
45
+ maxConcurrentRuns?: number;
46
+ }
47
+
48
+ export interface WorkbenchServer {
49
+ server: Server;
50
+ service: WorkbenchService;
51
+ profiles: ProfileStore;
52
+ attachments: AttachmentStore;
53
+ contexts: ContextResolver;
54
+ projects: ProjectStore;
55
+ sessionArchive: SessionArchiveStore;
56
+ registry: AgentRegistry;
57
+ agentDiscovery: AgentDiscovery;
58
+ apiPrefix: string;
59
+ dataDir: string;
60
+ }
61
+
62
+ export declare class ProfileStore {
63
+ constructor(options: {dataDir: string; profileFile?: string; credentialFile?: string});
64
+ list(): AiProfile[];
65
+ get(id: string): AiProfile | null;
66
+ save(input: AiProfileInput, idOverride?: string): AiProfile;
67
+ delete(id: string): boolean;
68
+ setCredential(id: string, credential: string | {secret: string}): void;
69
+ runtimeProfile(id: string): Record<string, unknown>;
70
+ runtimeDraft(input: AiProfileInput, credential?: string | {secret: string}): Record<string, unknown>;
71
+ }
72
+
73
+ export declare class ContextResolver {
74
+ constructor(options?: {workspaces?: Record<string, string>; createMissing?: boolean});
75
+ register(ref: string, target: string): void;
76
+ unregister(ref: string): boolean;
77
+ resolve(context: WorkbenchContext): {context: WorkbenchContext; workspacePath: string};
78
+ findByRealPath(realPath: string): string[];
79
+ }
80
+
81
+ export declare class ProjectStore {
82
+ constructor(options: {dataDir: string; projectFile?: string});
83
+ list(): Project[];
84
+ get(id: string): Project | null;
85
+ create(input: ProjectInput): Project;
86
+ rename(id: string, name: string): Project;
87
+ update(id: string, patch: ProjectPatch): Project;
88
+ remove(id: string): boolean;
89
+ toWorkspaceMap(): Record<string, string>;
90
+ }
91
+
92
+ export declare class SessionArchiveStore {
93
+ constructor(options: {dataDir: string; archiveFile?: string});
94
+ isArchived(sessionId: string): boolean;
95
+ archive(sessionId: string): {archivedAt: string};
96
+ restore(sessionId: string): boolean;
97
+ forget(sessionId: string): void;
98
+ }
99
+
100
+ export declare class AgentRegistry {
101
+ constructor(options?: {drivers?: Partial<Record<AgentId, WorkbenchRunner>>});
102
+ register(agentId: AgentId, driver: WorkbenchRunner): WorkbenchRunner;
103
+ driverFor(agentId: AgentId): WorkbenchRunner;
104
+ agentOf(sessionId: string): AgentId;
105
+ asRunner(): WorkbenchRunner;
106
+ }
107
+
108
+ export interface AgentDiscovery {
109
+ (): Record<AgentId, AgentStatus & {reason?: string}>;
110
+ invalidate?(): void;
111
+ refresh?(): Promise<Record<AgentId, AgentStatus>>;
112
+ snapshot?(): { state: string; generation: number; updatedAt: string | null };
113
+ close?(): void;
114
+ }
115
+
116
+ export interface CliDriverOptions {
117
+ command?: string;
118
+ spawn?: typeof import("node:child_process").spawn;
119
+ ignoreUserConfig?: boolean;
120
+ }
121
+
122
+ export declare class AttachmentStore {
123
+ constructor(options: {root: string});
124
+ saveMany(sessionId: string, attachments: AttachmentInput[]): Record<string, unknown>[];
125
+ save(sessionId: string, attachment: AttachmentInput): Record<string, unknown>;
126
+ read(sessionId: string, attachmentId: string): {metadata: Record<string, unknown>; data: Buffer} | null;
127
+ }
128
+
129
+ export declare class WorkbenchService {
130
+ readonly version: string;
131
+ loadHistory(sessionId: string, options?: { before?: string; limit?: number }): SessionHistoryPage;
132
+ listProjects(): {projects: Project[]};
133
+ getProject(id: string): Project;
134
+ createProject(input: ProjectInput): Project;
135
+ renameProject(id: string, input: ProjectPatch): Project;
136
+ removeProject(id: string): boolean;
137
+ listSessions(contextId: string, options?: {includeArchived?: boolean}): SessionSummary[];
138
+ startSession(context: WorkbenchContext, aiProfileId?: string | null, options?: {agentId?: AgentId; model?: string | null; permissionMode?: PermissionMode; effort?: EffortLevel}): SessionSummary;
139
+ listCommands(sessionId: string): Promise<{commands: SlashCommand[]}>;
140
+ readAttachment(sessionId: string, attachmentId: string): {metadata: Record<string, unknown>; data: Buffer};
141
+ send(sessionId: string, text?: string, options?: Record<string, unknown>, attachments?: AttachmentInput[]): Promise<Record<string, unknown>>;
142
+ createDelegation(parentSessionId: string, input: Record<string, unknown>): Promise<DelegationAcceptResult>;
143
+ listDelegations(parentSessionId: string, query: {storeScope?: string | null; contextId?: string | null}): DelegationListPage;
144
+ testProfile(profileId: string): Promise<Record<string, unknown>>;
145
+ testProfileDraft(input: {profile: AiProfileInput; credential?: string}): Promise<Record<string, unknown>>;
146
+ destroy(): void;
147
+ }
148
+
149
+ export declare function createWorkbenchServer(options?: WorkbenchServerOptions): WorkbenchServer;
150
+ export declare function createAgentDiscovery(options?: {claudeProbe?: (options?: {signal?: AbortSignal}) => {available: boolean; version?: string | null} | Promise<{available: boolean; version?: string | null}>; cacheTtlMs?: number; probeTimeoutMs?: number; scanBudgetMs?: number}): AgentDiscovery;
151
+ export declare function createCodexDriver(options?: CliDriverOptions): WorkbenchRunner;
152
+ export declare function createOpenCodeDriver(options?: CliDriverOptions): WorkbenchRunner;
153
+ export declare function createZCodeDriver(): WorkbenchRunner;
154
+ export declare function createDelegationStore(options: {root: string; storeScope: string; fsx?: unknown}): {
155
+ reserve(input: Record<string, unknown>): Record<string, unknown>;
156
+ getByRequest(scope: Record<string, string>, requestId: string): Record<string, unknown> | null;
157
+ getById(scope: Record<string, string>, delegationId: string): Record<string, unknown> | null;
158
+ list(scope: Record<string, string>): Record<string, unknown>[];
159
+ describe(): Record<string, unknown>;
160
+ };
161
+ export declare function createDelegationPhaseStore(options: {root: string; storeScope: string; fsx?: unknown}): {
162
+ recordChildCreated(input: Record<string, unknown>): boolean;
163
+ recordChildCreateFailed(input: Record<string, unknown>): boolean;
164
+ claimDispatch(input: Record<string, unknown>): {claimed: boolean; claim: Record<string, unknown> | null};
165
+ recordOutcome(input: Record<string, unknown>): boolean;
166
+ abandonLiveClaim(input: Record<string, unknown>): boolean;
167
+ stateOf(delegationId: string): Record<string, unknown>;
168
+ isClaimLive(delegationId: string): boolean;
169
+ describe(): Record<string, unknown>;
170
+ };
171
+ export declare function createHttpHandler(service: WorkbenchService, options?: Record<string, unknown>): (request: unknown, response: unknown) => Promise<boolean>;