@parall/sdk 1.55.4 → 1.56.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/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { Label, LabelCreatedData, LabelDeletedData, LabelUpdatedData } from './task-label-types.js';
2
+ export type { CompletedUploadPart, FileUrlResponse, PresignedUploadPart, PresignResponse, PresignUploadRequest, } from './attachment-types.js';
2
3
  export type UserType = 'human' | 'agent';
3
4
  export type UserStatus = 'active' | 'disabled';
4
5
  export interface User {
@@ -47,9 +48,25 @@ export interface Chat {
47
48
  pinned: boolean;
48
49
  hidden: boolean;
49
50
  my_notification_level?: NotificationLevel;
51
+ /**
52
+ * Resolved per-(agent, chat) reply policy for an AGENT caller: override →
53
+ * room default → mentions_only floor, gated on the runtime capability.
54
+ * Absent for human callers, DMs, and smart chats — a runtime reading
55
+ * nothing here falls back to its legacy agent_routing_mode check.
56
+ */
57
+ my_agent_reply_policy?: AgentReplyPolicy;
50
58
  }
51
59
  export type ChatMemberRole = 'owner' | 'admin' | 'member';
52
60
  export type NotificationLevel = 'all' | 'mentions_only' | 'none';
61
+ /** Trigger axis of the per-(agent, chat) reply policy. No 'none': @mentions
62
+ * are an unsuppressible floor, so it would equal 'mentions_only'. */
63
+ export type AgentReplyTrigger = 'all' | 'mentions_only';
64
+ /** Reply-form axis; V1 defines only 'full'. */
65
+ export type AgentReplyForm = 'full';
66
+ export interface AgentReplyPolicy {
67
+ trigger: AgentReplyTrigger;
68
+ form: AgentReplyForm;
69
+ }
53
70
  export interface PushSubscribeRequest {
54
71
  platform: 'web' | 'ios' | 'android';
55
72
  token: string;
@@ -80,6 +97,14 @@ export interface ChatMember {
80
97
  pinned: boolean;
81
98
  hidden: boolean;
82
99
  joined_at: string;
100
+ /**
101
+ * Per-(agent, chat) trigger override on an AGENT member row; absent/null =
102
+ * follow the room default. Writable by chat owners/admins and org admins
103
+ * only — never by the agent itself.
104
+ */
105
+ agent_reply_trigger?: AgentReplyTrigger | null;
106
+ /** Reply-form axis; always 'full' in V1. Absent on older servers. */
107
+ agent_reply_form?: AgentReplyForm;
83
108
  /** Org-scoped public title. Omitted by older servers and for former DM peers. */
84
109
  title?: string;
85
110
  user?: User;
@@ -89,6 +114,11 @@ export interface UpdateChatMemberRequest {
89
114
  pinned?: boolean;
90
115
  hidden?: boolean;
91
116
  notification_level?: NotificationLevel;
117
+ /** 'all' | 'mentions_only' sets the override; '' clears it (follow the
118
+ * room default). Chat-governance authz — agents can never write it. */
119
+ agent_reply_trigger?: AgentReplyTrigger | '';
120
+ /** V1 accepts only 'full'. */
121
+ agent_reply_form?: AgentReplyForm;
92
122
  }
93
123
  export interface TransferChatOwnershipRequest {
94
124
  target_user_id: string;
@@ -175,6 +205,8 @@ export interface ApprovalCardContent {
175
205
  display: {
176
206
  title: string;
177
207
  description?: string;
208
+ request_reason?: string;
209
+ resource_label?: string;
178
210
  requester?: {
179
211
  id: string;
180
212
  name: string;
@@ -189,6 +221,7 @@ export interface ApprovalCardContent {
189
221
  status: string;
190
222
  decided_by?: string;
191
223
  decided_at?: string;
224
+ decision_reason?: string | null;
192
225
  execution_status?: ExecutionStatus | null;
193
226
  execution_error?: string | null;
194
227
  executed_at?: string | null;
@@ -213,6 +246,7 @@ export interface SystemContent {
213
246
  actor_name: string;
214
247
  target_id?: string;
215
248
  target_name?: string;
249
+ decision_reason?: string;
216
250
  }
217
251
  export type MessageContent = TextContent | ToolCallContent | ToolResultContent | ApprovalCardContent | StateDeltaContent | SystemContent | IssueProjectionContent | CardContent;
218
252
  export interface Message {
@@ -236,10 +270,18 @@ export interface Message {
236
270
  recent_repliers?: User[];
237
271
  /**
238
272
  * Per-viewer count of thread replies newer than the viewer's thread read
239
- * cursor, excluding the viewer's own replies (root only). Populated on
240
- * top-level list responses; omitted when zero.
273
+ * cursor, excluding the viewer's own replies (root only). Watcher-scoped:
274
+ * only threads the viewer watches accrue unread. Populated on top-level
275
+ * list responses; omitted when zero.
241
276
  */
242
277
  unread_reply_count?: number;
278
+ /**
279
+ * Per-viewer thread watch state (root only): true when the viewer watches
280
+ * this root's thread. Populated on top-level list responses for roots with
281
+ * replies; omitted means not watching. Seeds the client's live unread
282
+ * mirror.
283
+ */
284
+ watching?: boolean;
243
285
  edited_at: string | null;
244
286
  deleted_at: string | null;
245
287
  created_at: string;
@@ -289,9 +331,12 @@ export interface Approval {
289
331
  resource_uri: string;
290
332
  action_payload: Record<string, unknown>;
291
333
  title: string;
334
+ request_reason?: string | null;
335
+ resource_label?: string | null;
292
336
  requester_id: string;
293
337
  decided_by: string | null;
294
338
  decided_at: string | null;
339
+ decision_reason?: string | null;
295
340
  status: ApprovalStatus;
296
341
  expires_at: string | null;
297
342
  execution_status?: ExecutionStatus | null;
@@ -317,6 +362,9 @@ export interface Organization {
317
362
  avatar_url: string | null;
318
363
  is_personal: boolean;
319
364
  member_limit: number | null;
365
+ attachment_max_file_size_bytes?: number | null;
366
+ attachment_storage_limit_bytes?: number | null;
367
+ attachment_storage_used_bytes?: number;
320
368
  /** Org-level default smart routing strategy: 'llm' | 'agent' | null. */
321
369
  smart_routing_strategy: string | null;
322
370
  /** Agent ID for strategy='agent'. NULL when strategy is 'llm' or unset. */
@@ -543,11 +591,6 @@ export interface CheckEmailResponse {
543
591
  exists: boolean;
544
592
  pending_verification?: boolean;
545
593
  }
546
- export interface PresignResponse {
547
- upload_url: string;
548
- attachment_id: string;
549
- expires_in: number;
550
- }
551
594
  export interface WsTicketResponse {
552
595
  ticket: string;
553
596
  expires_at: string;
@@ -1228,21 +1271,6 @@ export interface LaunchCredentialResponse {
1228
1271
  id: string;
1229
1272
  agent_id: string;
1230
1273
  }
1231
- export interface PresignUploadRequest {
1232
- file_name: string;
1233
- file_size: number;
1234
- mime_type?: string;
1235
- }
1236
- export interface FileUrlResponse {
1237
- url: string;
1238
- is_proxy_url?: boolean;
1239
- expires_in: number;
1240
- width?: number;
1241
- height?: number;
1242
- file_name: string;
1243
- file_size: number;
1244
- mime_type: string;
1245
- }
1246
1274
  export interface AvatarUploadResponse {
1247
1275
  avatar_url: string;
1248
1276
  }
@@ -1368,6 +1396,19 @@ export interface CreateTaskRequest {
1368
1396
  due_date?: string;
1369
1397
  label_ids?: string[];
1370
1398
  }
1399
+ /**
1400
+ * Moves a task (and its whole subtree) into another project via
1401
+ * POST /tasks/{taskId}/move — the only path that changes the binding; PATCH
1402
+ * keeps refusing project_id changes. Every subtree node is renumbered from the
1403
+ * target project's counter and its old KEY-N identifier stays resolvable as a
1404
+ * permanent alias. parent_id (must belong to the target project) attaches the
1405
+ * moved root under a parent there; same-project calls with a parent degrade to
1406
+ * a reparent, without one they are an idempotent no-op.
1407
+ */
1408
+ export interface MoveTaskRequest {
1409
+ project_id: string;
1410
+ parent_id?: string;
1411
+ }
1371
1412
  export interface UpdateTaskRequest {
1372
1413
  title?: string;
1373
1414
  description?: string;
@@ -1842,10 +1883,32 @@ export interface ScheduleFiredData {
1842
1883
  actual_fired_at: string;
1843
1884
  }
1844
1885
  export type WikiChangesetStatus = 'draft' | 'proposed' | 'approval_pending' | 'approved' | 'rejected' | 'merged' | 'closed' | 'superseded' | 'conflict';
1886
+ export type WikiAccessTier = 'public' | 'restricted' | 'private';
1887
+ export type WikiMemberRole = 'viewer' | 'editor' | 'manager';
1888
+ export interface WikiAccessPolicyMember {
1889
+ subject: string;
1890
+ role: WikiMemberRole;
1891
+ }
1892
+ /** GET/PUT shape of the who-can-access projection (membership design §4).
1893
+ * PUT must echo the revision from the latest GET (409 POLICY_REVISION_STALE
1894
+ * on mismatch). Container policy bits ride the root ('' path) PUT only. */
1895
+ export interface WikiAccessPolicy {
1896
+ path: string;
1897
+ general_access: WikiAccessTier | 'inherit';
1898
+ default_role?: 'editor' | 'viewer';
1899
+ discoverable: boolean;
1900
+ members: WikiAccessPolicyMember[];
1901
+ revision: string;
1902
+ /** Stored rows the projection cannot express — route to the advanced rules surface. */
1903
+ advanced?: boolean;
1904
+ editors_can_invite?: boolean;
1905
+ viewers_can_download?: boolean;
1906
+ }
1845
1907
  export interface Wiki {
1846
1908
  id: string;
1847
1909
  org_id: string;
1848
- slug: string;
1910
+ /** Absent on degraded listing entries (discoverable-but-unreadable). */
1911
+ slug?: string;
1849
1912
  name: string;
1850
1913
  repo_owner: string;
1851
1914
  repo_name: string;
@@ -1866,10 +1929,26 @@ export interface Wiki {
1866
1929
  purge_eligible_at?: string | null;
1867
1930
  /** Server-computed restore availability for recycle-bin rows. */
1868
1931
  restorable?: boolean | null;
1932
+ /** Derived from the root path rules (never stored): public | restricted | private. */
1933
+ access_tier?: 'public' | 'restricted' | 'private';
1934
+ /** Caller's explicit membership at the library root: none | viewer | editor | manager. */
1935
+ my_membership?: 'none' | 'viewer' | 'editor' | 'manager';
1936
+ /** True for discoverable-but-unreadable listing entries: only id, name and
1937
+ * access_tier are populated — enough to request to join, nothing else.
1938
+ * Degraded entries must not be mounted, synced or treated as content. */
1939
+ degraded?: boolean;
1940
+ /** Caller's library-level star (the sidebar Starred group). Carried on full
1941
+ * list/get projections only — degraded entries never have it. */
1942
+ starred?: boolean;
1869
1943
  }
1870
1944
  export interface WikiFileChange {
1871
1945
  path: string;
1872
- action: 'create' | 'update' | 'delete';
1946
+ action: 'create' | 'update' | 'delete' | 'rename';
1947
+ /**
1948
+ * Rename source; present only when action is "rename" (path is the rename
1949
+ * target). Additive key — older changesets never carry it.
1950
+ */
1951
+ from_path?: string;
1873
1952
  }
1874
1953
  export interface WikiChangeset {
1875
1954
  id: string;
@@ -1900,6 +1979,12 @@ export interface WikiTreeEntry {
1900
1979
  * entry; use it to badge private folders, never for access decisions.
1901
1980
  */
1902
1981
  restricted?: boolean;
1982
+ /**
1983
+ * Committer date (RFC3339) of the newest default-branch commit touching this
1984
+ * entry — the listing's "Last published" value. Present only when the tree
1985
+ * was requested with `last_commit: true` and the lookup succeeded.
1986
+ */
1987
+ last_commit_at?: string;
1903
1988
  }
1904
1989
  export interface WikiTreeResponse {
1905
1990
  data: WikiTreeEntry[];
@@ -2050,6 +2135,8 @@ export interface WikiRefsCheckResponse {
2050
2135
  export interface WikiDiffFile {
2051
2136
  path: string;
2052
2137
  action?: string;
2138
+ /** Rename source when action is "rename" (path is the target). */
2139
+ from_path?: string;
2053
2140
  additions: number;
2054
2141
  deletions: number;
2055
2142
  }
@@ -2062,19 +2149,40 @@ export interface CreateWikiRequest {
2062
2149
  name: string;
2063
2150
  default_branch?: string;
2064
2151
  }
2065
- export interface WikiFileChangeInput {
2152
+ interface WikiFileChangeInputCommon {
2066
2153
  path: string;
2067
- action: 'create' | 'update' | 'delete';
2068
- content_base64?: string;
2069
2154
  base_version?: number;
2070
2155
  /**
2071
2156
  * Git blob SHA of the default-branch version this change was authored
2072
2157
  * against. When set on update/delete, the server rejects the changeset
2073
2158
  * with 409 STALE_BASE if the file has since changed on the default branch
2074
- * (prevents silently overwriting concurrent edits).
2159
+ * (prevents silently overwriting concurrent edits). For rename it guards
2160
+ * the from_path side.
2075
2161
  */
2076
2162
  base_sha?: string;
2077
2163
  }
2164
+ export interface WikiFileChangeWriteInput extends WikiFileChangeInputCommon {
2165
+ action: 'create' | 'update' | 'delete';
2166
+ content_base64?: string;
2167
+ /** Only valid with action "rename" — the server rejects it elsewhere. */
2168
+ from_path?: never;
2169
+ }
2170
+ /**
2171
+ * Rename is a discriminated variant: `from_path` (the source; `path` is the
2172
+ * target) and `content_base64` are both REQUIRED. The content must be sent —
2173
+ * the server rejects a rename without the content_base64 key
2174
+ * (400 MISSING_FIELDS) because the single-commit move always writes content
2175
+ * and an omitted key would otherwise erase the file; an explicitly empty
2176
+ * string (an empty file) is legal. Requires the server capability
2177
+ * `cap:wiki-rename` — while it is off the server answers 422 RENAME_DISABLED
2178
+ * (older servers answer 400 INVALID_ACTION).
2179
+ */
2180
+ export interface WikiFileChangeRenameInput extends WikiFileChangeInputCommon {
2181
+ action: 'rename';
2182
+ from_path: string;
2183
+ content_base64: string;
2184
+ }
2185
+ export type WikiFileChangeInput = WikiFileChangeWriteInput | WikiFileChangeRenameInput;
2078
2186
  export interface CreateWikiChangesetRequest {
2079
2187
  title: string;
2080
2188
  message?: string;
@@ -2326,6 +2434,7 @@ export interface CardUpdateData {
2326
2434
  execution_status?: ExecutionStatus | null;
2327
2435
  decided_by?: string;
2328
2436
  decided_at?: string;
2437
+ decision_reason?: string | null;
2329
2438
  executed_at?: string | null;
2330
2439
  execution_error?: string | null;
2331
2440
  }
@@ -2338,7 +2447,7 @@ export interface WatchingData {
2338
2447
  export interface MembershipChangedData {
2339
2448
  chat_id: string;
2340
2449
  user_id: string;
2341
- action: 'added' | 'removed' | 'role_changed';
2450
+ action: 'added' | 'removed' | 'role_changed' | 'policy_changed';
2342
2451
  }
2343
2452
  /**
2344
2453
  * A member was removed from an org — kicked by an admin or self-removal
@@ -4176,6 +4285,12 @@ export interface EdgeBrowserProfile {
4176
4285
  edge_id: string;
4177
4286
  name: string;
4178
4287
  is_default: boolean;
4288
+ /** Stable compare-and-swap revision for Local BYOC Profile operations. */
4289
+ version: number;
4290
+ /** Stable configuration binding used by Alias readiness and execution. */
4291
+ config_revision: number;
4292
+ /** Authoritative persisted Profile operation lifecycle. */
4293
+ lifecycle_state: 'active' | 'pending_create' | 'pending_rename' | 'pending_delete';
4179
4294
  created_at: string;
4180
4295
  updated_at: string;
4181
4296
  /**
@@ -4186,6 +4301,337 @@ export interface EdgeBrowserProfile {
4186
4301
  */
4187
4302
  proxy_configured?: boolean;
4188
4303
  }
4304
+ export type EdgeProfileOperationAction = 'create' | 'rename' | 'delete';
4305
+ export type EdgeProfileOperationStatus = 'confirmation_required' | 'pending' | 'retryable' | 'rejected' | 'outcome_unknown' | 'succeeded';
4306
+ export type EdgeProfileOperationOutcome = 'applied' | 'retryable' | 'rejected';
4307
+ export type EdgeProfileOperationErrorCode = 'JWT_REQUIRED' | 'HUMAN_REQUIRED' | 'EDGE_NOT_FOUND' | 'EDGE_OFFLINE' | 'EDGE_STATUS_UNAVAILABLE' | 'PROFILE_NOT_FOUND' | 'PROFILE_VERSION_CONFLICT' | 'PROFILE_OPERATION_IN_PROGRESS' | 'PROFILE_OPERATION_NOT_FOUND' | 'PROFILE_OPERATION_CONFLICT' | 'PROFILE_DELETE_IMPACT_CHANGED' | 'IDEMPOTENCY_CONFLICT' | 'INVALID_IDEMPOTENCY_KEY' | 'INVALID_INPUT';
4308
+ export type EdgeProfileOperationRequest = {
4309
+ action: 'create';
4310
+ name: string;
4311
+ } | {
4312
+ action: 'rename';
4313
+ profile_id: string;
4314
+ expected_version: number;
4315
+ name: string;
4316
+ } | {
4317
+ action: 'delete';
4318
+ profile_id: string;
4319
+ expected_version: number;
4320
+ };
4321
+ export interface EdgeProfileOperationConfirmRequest {
4322
+ impact_hash: string;
4323
+ confirmation_token: string;
4324
+ }
4325
+ export interface EdgeProfileDeleteImpact {
4326
+ profile_id: string;
4327
+ profile_version: number;
4328
+ aliases: Array<{
4329
+ alias_id: string;
4330
+ name: string;
4331
+ }>;
4332
+ /** Classified legacy rows block confirmation; they are never silently deleted. */
4333
+ legacy_connections: Array<{
4334
+ connection_id: string;
4335
+ classification: string;
4336
+ }>;
4337
+ grants_count: number;
4338
+ accepted_or_running_executions: number;
4339
+ impact_hash: string;
4340
+ confirmation_token: string;
4341
+ }
4342
+ export interface EdgeProfileOperationReceipt {
4343
+ operation_id: string;
4344
+ edge_id: string;
4345
+ profile_id: string;
4346
+ action: EdgeProfileOperationAction;
4347
+ status: EdgeProfileOperationStatus;
4348
+ expected_version?: number;
4349
+ target_version: number;
4350
+ attempt: number;
4351
+ name_before?: string;
4352
+ name_after?: string;
4353
+ impact?: EdgeProfileDeleteImpact;
4354
+ /** Present only while a Delete is awaiting the explicit strong confirmation. */
4355
+ confirmation_token?: string;
4356
+ /** Exact Edge outcome only; Server-private lifecycle evidence is never exposed here. */
4357
+ edge_outcome?: EdgeProfileOperationOutcome;
4358
+ error?: {
4359
+ code: string;
4360
+ message?: string;
4361
+ };
4362
+ created_at: string;
4363
+ updated_at: string;
4364
+ completed_at?: string;
4365
+ }
4366
+ export interface BrowserAliasCreateRequest {
4367
+ name: string;
4368
+ clip_id: string;
4369
+ edge_id: string;
4370
+ profile_id: string;
4371
+ idempotency_key: string;
4372
+ }
4373
+ export interface BrowserAliasRenameRequest {
4374
+ name: string;
4375
+ expected_version: number;
4376
+ idempotency_key: string;
4377
+ }
4378
+ export interface BrowserAliasDeleteRequest {
4379
+ expected_version: number;
4380
+ idempotency_key: string;
4381
+ }
4382
+ export type BrowserAliasErrorCode = 'JWT_REQUIRED' | 'HUMAN_REQUIRED' | 'INVALID_REQUEST' | 'INVALID_ALIAS_NAME' | 'CLIP_NOT_AVAILABLE' | 'PROFILE_NOT_FOUND' | 'ALIAS_NOT_FOUND' | 'ALIAS_NOT_READY' | 'ALIAS_NAME_TAKEN' | 'ALIAS_STALE' | 'PROFILE_OPERATION_IN_PROGRESS' | 'IDEMPOTENCY_CONFLICT' | 'EDGE_OFFLINE' | 'EDGE_STATUS_UNAVAILABLE';
4383
+ export interface BrowserAliasVersion {
4384
+ id: string;
4385
+ version_seq: number;
4386
+ source_kind: 'publisher_working_copy' | 'approved_public_snapshot';
4387
+ source_clip_version_id?: string;
4388
+ source_working_revision?: string;
4389
+ version_label?: string;
4390
+ artifact_digest?: string;
4391
+ preparation_status: 'pending' | 'preparing' | 'ready' | 'failed';
4392
+ preparation_result?: Record<string, unknown>;
4393
+ created_at: string;
4394
+ updated_at: string;
4395
+ }
4396
+ export type BrowserAliasReadinessStatus = 'checking' | 'ready' | 'needs_action' | 'unavailable' | 'error';
4397
+ export declare const BROWSER_ALIAS_READINESS_REASON_CODES: readonly ["edge_offline", "profile_not_found", "profile_damaged", "artifact_invalid", "runtime_incompatible", "needs_login", "target_service_unavailable", "readiness_check_running", "readiness_check_timeout", "readiness_contract_error"];
4398
+ export type BrowserAliasReadinessReasonCode = (typeof BROWSER_ALIAS_READINESS_REASON_CODES)[number];
4399
+ export interface BrowserAliasReadinessReason {
4400
+ code: BrowserAliasReadinessReasonCode;
4401
+ status: BrowserAliasReadinessStatus;
4402
+ hint: string;
4403
+ observed_at: string;
4404
+ retry_after_ms?: number;
4405
+ }
4406
+ export interface BrowserAliasReadiness {
4407
+ alias_id: string;
4408
+ status: BrowserAliasReadinessStatus;
4409
+ blocking_reasons: BrowserAliasReadinessReason[];
4410
+ primary_reason?: BrowserAliasReadinessReasonCode;
4411
+ hint?: string;
4412
+ observed_at: string;
4413
+ source: 'server' | 'edge';
4414
+ retry_after_ms?: number;
4415
+ alias_revision: number;
4416
+ active_alias_version_id?: string;
4417
+ profile_revision: number;
4418
+ profile_config_revision: number;
4419
+ generation: number;
4420
+ updated_at: string;
4421
+ }
4422
+ export interface BrowserAliasReadinessCheckRequest {
4423
+ idempotency_key: string;
4424
+ }
4425
+ export type BrowserAliasReadinessCheckStatus = 'pending' | 'dispatched' | 'succeeded' | 'rejected';
4426
+ export interface BrowserAliasReadinessCheckReceipt {
4427
+ check_id: string;
4428
+ alias_id: string;
4429
+ status: BrowserAliasReadinessCheckStatus;
4430
+ error_code?: 'REPORT_STALE';
4431
+ generation: number;
4432
+ attempt: number;
4433
+ readiness?: BrowserAliasReadiness;
4434
+ created_at: string;
4435
+ updated_at: string;
4436
+ dispatched_at?: string;
4437
+ completed_at?: string;
4438
+ }
4439
+ export interface BrowserAlias {
4440
+ id: string;
4441
+ name: string;
4442
+ version: number;
4443
+ lifecycle: 'preparing' | 'active' | 'update_preparing' | 'update_failed' | 'deleting';
4444
+ edge: {
4445
+ id: string;
4446
+ name: string;
4447
+ status: 'online' | 'offline';
4448
+ placement: 'byoc' | 'hosted';
4449
+ };
4450
+ profile: {
4451
+ id: string;
4452
+ name: string;
4453
+ version: number;
4454
+ config_revision: number;
4455
+ lifecycle_state: string;
4456
+ };
4457
+ clip: {
4458
+ id: string;
4459
+ name: string;
4460
+ version?: string;
4461
+ };
4462
+ desired_version?: BrowserAliasVersion;
4463
+ active_version?: BrowserAliasVersion;
4464
+ active_artifact_digest?: string;
4465
+ preparation_result?: Record<string, unknown>;
4466
+ update_result?: Record<string, unknown>;
4467
+ readiness?: BrowserAliasReadiness;
4468
+ created_at: string;
4469
+ updated_at: string;
4470
+ }
4471
+ export interface BrowserAliasDeleteProof {
4472
+ alias_deleted: true;
4473
+ grants_deleted: number;
4474
+ name_released: true;
4475
+ }
4476
+ export interface BrowserAliasCommandContractSnapshot {
4477
+ command_name: string;
4478
+ input_schema: Record<string, unknown>;
4479
+ output_schema: Record<string, unknown> | null;
4480
+ side_effect_level: string;
4481
+ data_scopes: string[];
4482
+ allowed_domains: string[];
4483
+ required_capabilities: string[];
4484
+ }
4485
+ export interface BrowserAliasGrantContractEvidence {
4486
+ contract_hash: string;
4487
+ contract_snapshot: BrowserAliasCommandContractSnapshot;
4488
+ }
4489
+ export interface BrowserAliasGrantCommand {
4490
+ command_name: string;
4491
+ status: 'missing' | 'active' | 'review_required';
4492
+ authorized?: BrowserAliasGrantContractEvidence;
4493
+ current: BrowserAliasGrantContractEvidence;
4494
+ delta?: {
4495
+ changed_fields: string[];
4496
+ };
4497
+ }
4498
+ export interface BrowserAliasGrantSet {
4499
+ key_id: string;
4500
+ alias: {
4501
+ id: string;
4502
+ name: string;
4503
+ clip: BrowserAlias['clip'];
4504
+ };
4505
+ /** Zero means this Key+Alias set has never been written. */
4506
+ version: number;
4507
+ commands: BrowserAliasGrantCommand[];
4508
+ updated_at?: string;
4509
+ }
4510
+ export interface BrowserAliasGrantReplaceRequest {
4511
+ expected_version: number;
4512
+ idempotency_key: string;
4513
+ commands: Array<{
4514
+ command_name: string;
4515
+ authorized_contract_hash: string;
4516
+ authorized_contract_snapshot: BrowserAliasCommandContractSnapshot;
4517
+ }>;
4518
+ }
4519
+ export interface ManagedBrowserAliasSummary {
4520
+ id: string;
4521
+ name: string;
4522
+ clip: BrowserAlias['clip'];
4523
+ readiness?: BrowserAliasReadiness;
4524
+ commands: string[];
4525
+ needs_owner_review: string[];
4526
+ }
4527
+ export interface ManagedBrowserAliasCommand {
4528
+ name: string;
4529
+ status: 'active';
4530
+ description: string;
4531
+ input_schema: Record<string, unknown>;
4532
+ output_schema: Record<string, unknown> | null;
4533
+ side_effect_level: string;
4534
+ data_scopes: string[];
4535
+ allowed_domains: string[];
4536
+ required_capabilities: string[];
4537
+ }
4538
+ export interface ManagedBrowserAliasReviewRequiredCommand {
4539
+ name: string;
4540
+ status: 'review_required';
4541
+ hint: string;
4542
+ }
4543
+ export interface ManagedBrowserAliasInfo {
4544
+ id: string;
4545
+ name: string;
4546
+ clip: BrowserAlias['clip'];
4547
+ readiness?: BrowserAliasReadiness;
4548
+ commands: ManagedBrowserAliasCommand[];
4549
+ needs_owner_review: ManagedBrowserAliasReviewRequiredCommand[];
4550
+ }
4551
+ export type BrowserAliasExecutionStatus = 'accepted' | 'running' | 'succeeded' | 'failed' | 'outcome_unknown';
4552
+ export interface BrowserAliasExecutionRequest {
4553
+ request_id: string;
4554
+ alias: string;
4555
+ command: string;
4556
+ args: Record<string, unknown>;
4557
+ }
4558
+ export interface BrowserAliasExecutionError {
4559
+ code: string;
4560
+ message: string;
4561
+ hint?: string;
4562
+ }
4563
+ /** Redacted managed-key/Owner recovery DTO. It never contains target IDs,
4564
+ * hashes, dispatch claims or Edge-ledger evidence. */
4565
+ export interface BrowserAliasExecutionReceipt {
4566
+ request_id: string;
4567
+ alias: string;
4568
+ command: string;
4569
+ status: BrowserAliasExecutionStatus;
4570
+ dispatched: true;
4571
+ command_timeout_ms: number;
4572
+ execution_deadline: string;
4573
+ result?: Record<string, unknown>;
4574
+ error?: BrowserAliasExecutionError;
4575
+ accepted_at: string;
4576
+ running_at?: string;
4577
+ terminal_at?: string;
4578
+ updated_at: string;
4579
+ }
4580
+ export type BrowserUseAction = 'read' | 'tabs' | 'wait' | 'snapshot' | 'get' | 'screenshot' | 'open' | 'navigate' | 'viewport' | 'click' | 'fill' | 'type' | 'press' | 'scroll' | 'close' | 'recover' | 'eval';
4581
+ export interface BrowserUseTarget {
4582
+ tab_id?: string;
4583
+ browser_generation?: number;
4584
+ document_generation?: number;
4585
+ snapshot_id?: string;
4586
+ ref?: string;
4587
+ }
4588
+ export interface BrowserUseOperationRequest {
4589
+ contract_version: 'browser-use-operation-v1';
4590
+ request_id: string;
4591
+ profile_id: string;
4592
+ action: BrowserUseAction;
4593
+ target?: BrowserUseTarget;
4594
+ params: Record<string, unknown>;
4595
+ /** Canonical RFC3339 UTC instant, no more than two minutes in the future. */
4596
+ deadline: string;
4597
+ }
4598
+ export type BrowserUseOperationPhase = 'accepted' | 'started' | 'succeeded' | 'failed' | 'outcome_unknown';
4599
+ export interface BrowserUseOperationError {
4600
+ code: string;
4601
+ message?: string;
4602
+ hint?: string;
4603
+ }
4604
+ /** Durable Browser Use proof. `data` is encrypted/transient: it is present
4605
+ * only while result_available is true and disappears after result_expires_at;
4606
+ * the terminal receipt and result_digest remain durable. */
4607
+ export interface BrowserUseOperationReceipt {
4608
+ contract_version: 'browser-use-operation-v1';
4609
+ operation_id: string;
4610
+ request_id: string;
4611
+ profile_id: string;
4612
+ profile_version: number;
4613
+ profile_config_revision: number;
4614
+ action: BrowserUseAction;
4615
+ required_grant: 'browser.read' | 'browser.interact' | 'browser.advanced';
4616
+ phase: BrowserUseOperationPhase;
4617
+ dispatched?: boolean;
4618
+ receipt_id?: string;
4619
+ receipt_digest?: string;
4620
+ occurred_at?: string;
4621
+ tab_id?: string;
4622
+ browser_generation?: number;
4623
+ duration_ms?: number;
4624
+ result_digest?: string;
4625
+ result_available: boolean;
4626
+ result_expires_at?: string;
4627
+ data?: unknown;
4628
+ error?: BrowserUseOperationError;
4629
+ deadline: string;
4630
+ accepted_at: string;
4631
+ started_at?: string;
4632
+ terminal_at?: string;
4633
+ updated_at: string;
4634
+ }
4189
4635
  /**
4190
4636
  * Sanitized per-profile egress proxy status (hosted Cloud Profiles) — the GET
4191
4637
  * response and the PUT/DELETE result. NEVER carries the password; `password_set`
@@ -4682,5 +5128,4 @@ export interface EdgeOnboardingStatus {
4682
5128
  hosted_profile_created?: boolean;
4683
5129
  hosted_connection_created?: boolean;
4684
5130
  }
4685
- export {};
4686
5131
  //# sourceMappingURL=types.d.ts.map