@parall/sdk 1.56.2 → 1.57.1

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/constants.js CHANGED
@@ -365,6 +365,26 @@ export const ENDPOINTS = {
365
365
  TEAM_MEMBERS: (orgId, teamId) => `${API_BASE}/orgs/${orgId}/teams/${teamId}/members`,
366
366
  TEAM_MEMBER: (orgId, teamId, userId) => `${API_BASE}/orgs/${orgId}/teams/${teamId}/members/${userId}`,
367
367
  ORG_MEMBERS_ONLINE: (orgId) => `${API_BASE}/orgs/${orgId}/members/online`,
368
+ LLM_PROVIDERS: (orgId) => `${API_BASE}/orgs/${orgId}/llm-providers`,
369
+ LLM_PROVIDER: (orgId, providerId) => `${API_BASE}/orgs/${orgId}/llm-providers/${providerId}`,
370
+ ORG_LLM_MODELS: (orgId) => `${API_BASE}/orgs/${orgId}/llm-models`,
371
+ ORG_LLM_MODEL: (orgId, modelRowId) => `${API_BASE}/orgs/${orgId}/llm-models/${modelRowId}`,
372
+ /**
373
+ * Platform catalog merged with this org's own model rows. Pass `runtime` to
374
+ * filter org-added models to the ones that runtime can actually reach —
375
+ * without it a picker can offer a model the write path rejects.
376
+ */
377
+ ORG_MODEL_CATALOG: (orgId, runtime, includeModel) => {
378
+ const params = new URLSearchParams();
379
+ if (runtime)
380
+ params.set('runtime', runtime);
381
+ // include_model keeps a hidden legacy model the caller is still pinned to
382
+ // representable, matching the public catalog.
383
+ if (includeModel)
384
+ params.set('include_model', includeModel);
385
+ const qs = params.toString();
386
+ return `${API_BASE}/orgs/${orgId}/models${qs ? `?${qs}` : ''}`;
387
+ },
368
388
  ORG_MEMBER: (orgId, userId) => `${API_BASE}/orgs/${orgId}/members/${userId}`,
369
389
  ORG_MEMBER_CHATS: (orgId, memberId) => `${API_BASE}/orgs/${orgId}/members/${memberId}/chats`,
370
390
  ORG_MEMBER_TASKS: (orgId, memberId) => `${API_BASE}/orgs/${orgId}/members/${memberId}/tasks`,
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export * from './browser-viewer.js';
2
+ export { BROWSER_USE_FEATURE_FLAG, isBrowserUseEnabled } from './browser-use.js';
2
3
  export * from './attachment-types.js';
3
4
  export type { ParallClientOptions } from './client.js';
4
5
  export { ApiError, ParallClient } from './client.js';
5
6
  export * from './constants.js';
7
+ export * from './llm-provider-types.js';
6
8
  export * from './subject.js';
7
9
  export * from './task-label-types.js';
8
10
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACjF,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export * from './browser-viewer.js';
2
+ export { BROWSER_USE_FEATURE_FLAG, isBrowserUseEnabled } from './browser-use.js';
2
3
  export * from './attachment-types.js';
3
4
  export { ApiError, ParallClient } from './client.js';
4
5
  export * from './constants.js';
6
+ export * from './llm-provider-types.js';
5
7
  export * from './subject.js';
6
8
  export * from './task-label-types.js';
7
9
  export * from './types.js';
@@ -0,0 +1,38 @@
1
+ import type { CreateLLMProviderRequest, CreateOrgLLMModelRequest, LLMProvider, OrgLLMModel, UpdateOrgLLMModelRequest, UpdateLLMProviderRequest } from './llm-provider-types.js';
2
+ import type { PlatformModelInfo } from './types.js';
3
+ import { WechatClient } from './wechat-client.js';
4
+ /**
5
+ * Org-configured model providers (BYOK) and the model rows bound to them.
6
+ *
7
+ * Writes are org-admin only server-side: a provider row carries a credential
8
+ * and decides where the org's LLM spend goes.
9
+ *
10
+ * Design: docs/engineering-design/org-llm-provider-byok-design.md
11
+ */
12
+ export declare abstract class LLMProviderClient extends WechatClient {
13
+ getLLMProviders(orgId: string): Promise<LLMProvider[]>;
14
+ createLLMProvider(orgId: string, data: CreateLLMProviderRequest): Promise<LLMProvider>;
15
+ /** Omitting `api_key` leaves the stored credential untouched. */
16
+ updateLLMProvider(orgId: string, providerId: string, data: UpdateLLMProviderRequest): Promise<LLMProvider>;
17
+ /** Fails with PROVIDER_IN_USE while model rows still point at it. */
18
+ deleteLLMProvider(orgId: string, providerId: string): Promise<void>;
19
+ getOrgLLMModels(orgId: string): Promise<OrgLLMModel[]>;
20
+ createOrgLLMModel(orgId: string, data: CreateOrgLLMModelRequest): Promise<OrgLLMModel>;
21
+ /**
22
+ * Patches a model row in place. Repointing a provider or fixing an upstream
23
+ * name this way avoids the delete-and-recreate window, during which an
24
+ * org-only model has no upstream at all and its pinned agents fail.
25
+ */
26
+ updateOrgLLMModel(orgId: string, modelRowId: string, data: UpdateOrgLLMModelRequest): Promise<OrgLLMModel>;
27
+ deleteOrgLLMModel(orgId: string, modelRowId: string): Promise<void>;
28
+ /**
29
+ * The catalog as this org sees it: platform models with the org's rows
30
+ * merged in. Distinct from the public model catalog, which stays org-agnostic
31
+ * and cacheable — use this one wherever an org context exists.
32
+ *
33
+ * Pass `runtime` on a picker: org-added models are then filtered to what that
34
+ * runtime's protocol can reach, matching the server-side pin validation.
35
+ */
36
+ getOrgModelCatalog(orgId: string, runtime?: string, includeModel?: string): Promise<PlatformModelInfo[]>;
37
+ }
38
+ //# sourceMappingURL=llm-provider-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider-client.d.ts","sourceRoot":"","sources":["../src/llm-provider-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,8BAAsB,iBAAkB,SAAQ,YAAY;IACpD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQtD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5F,iEAAiE;IAC3D,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAIvB,qEAAqE;IAC/D,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQtD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5F;;;;OAIG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAIjB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAOhC"}
@@ -0,0 +1,57 @@
1
+ import { ENDPOINTS } from './constants.js';
2
+ import { WechatClient } from './wechat-client.js';
3
+ /**
4
+ * Org-configured model providers (BYOK) and the model rows bound to them.
5
+ *
6
+ * Writes are org-admin only server-side: a provider row carries a credential
7
+ * and decides where the org's LLM spend goes.
8
+ *
9
+ * Design: docs/engineering-design/org-llm-provider-byok-design.md
10
+ */
11
+ export class LLMProviderClient extends WechatClient {
12
+ async getLLMProviders(orgId) {
13
+ const response = await this.request('GET', ENDPOINTS.LLM_PROVIDERS(orgId));
14
+ return response.data;
15
+ }
16
+ async createLLMProvider(orgId, data) {
17
+ return this.request('POST', ENDPOINTS.LLM_PROVIDERS(orgId), data);
18
+ }
19
+ /** Omitting `api_key` leaves the stored credential untouched. */
20
+ async updateLLMProvider(orgId, providerId, data) {
21
+ return this.request('PATCH', ENDPOINTS.LLM_PROVIDER(orgId, providerId), data);
22
+ }
23
+ /** Fails with PROVIDER_IN_USE while model rows still point at it. */
24
+ async deleteLLMProvider(orgId, providerId) {
25
+ return this.request('DELETE', ENDPOINTS.LLM_PROVIDER(orgId, providerId));
26
+ }
27
+ async getOrgLLMModels(orgId) {
28
+ const response = await this.request('GET', ENDPOINTS.ORG_LLM_MODELS(orgId));
29
+ return response.data;
30
+ }
31
+ async createOrgLLMModel(orgId, data) {
32
+ return this.request('POST', ENDPOINTS.ORG_LLM_MODELS(orgId), data);
33
+ }
34
+ /**
35
+ * Patches a model row in place. Repointing a provider or fixing an upstream
36
+ * name this way avoids the delete-and-recreate window, during which an
37
+ * org-only model has no upstream at all and its pinned agents fail.
38
+ */
39
+ async updateOrgLLMModel(orgId, modelRowId, data) {
40
+ return this.request('PATCH', ENDPOINTS.ORG_LLM_MODEL(orgId, modelRowId), data);
41
+ }
42
+ async deleteOrgLLMModel(orgId, modelRowId) {
43
+ return this.request('DELETE', ENDPOINTS.ORG_LLM_MODEL(orgId, modelRowId));
44
+ }
45
+ /**
46
+ * The catalog as this org sees it: platform models with the org's rows
47
+ * merged in. Distinct from the public model catalog, which stays org-agnostic
48
+ * and cacheable — use this one wherever an org context exists.
49
+ *
50
+ * Pass `runtime` on a picker: org-added models are then filtered to what that
51
+ * runtime's protocol can reach, matching the server-side pin validation.
52
+ */
53
+ async getOrgModelCatalog(orgId, runtime, includeModel) {
54
+ const response = await this.request('GET', ENDPOINTS.ORG_MODEL_CATALOG(orgId, runtime, includeModel));
55
+ return response.data;
56
+ }
57
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Org-configured model providers (BYOK) and the model rows bound to them.
3
+ *
4
+ * Design: docs/engineering-design/org-llm-provider-byok-design.md
5
+ */
6
+ /** Inbound protocol a provider can serve. */
7
+ export type LLMProviderEndpoint = 'chat_completions' | 'messages' | 'responses';
8
+ export type LLMProviderStatus = 'active' | 'disabled';
9
+ /**
10
+ * A provider as the server returns it. The credential is never echoed back —
11
+ * `api_key_set` is the only thing a client learns about it.
12
+ */
13
+ export interface LLMProvider {
14
+ id: string;
15
+ name: string;
16
+ base_url: string;
17
+ api_key_set: boolean;
18
+ endpoints: LLMProviderEndpoint[];
19
+ status: LLMProviderStatus;
20
+ is_platform: boolean;
21
+ /**
22
+ * Runtime types whose protocol this provider can actually serve. Anything
23
+ * absent here silently uses the platform provider — surface this, or an
24
+ * operator will assume their credential covers every agent.
25
+ */
26
+ runtimes: string[];
27
+ /** Most recent fallback-worthy failure, if any. */
28
+ last_error_at?: string | null;
29
+ last_error_status?: number | null;
30
+ created_at: string;
31
+ updated_at: string;
32
+ }
33
+ export interface CreateLLMProviderRequest {
34
+ name: string;
35
+ base_url: string;
36
+ api_key: string;
37
+ endpoints: LLMProviderEndpoint[];
38
+ }
39
+ /** Omitting `api_key` leaves the stored credential untouched. */
40
+ export interface UpdateLLMProviderRequest {
41
+ name?: string;
42
+ base_url?: string;
43
+ api_key?: string;
44
+ endpoints?: LLMProviderEndpoint[];
45
+ status?: LLMProviderStatus;
46
+ }
47
+ /**
48
+ * One org's row for a model. Overriding a platform model and adding a new one
49
+ * are the same shape: `overrides_platform` is derived by the server from
50
+ * whether the platform catalog knows this id, never stored.
51
+ */
52
+ export interface OrgLLMModel {
53
+ id: string;
54
+ model_id: string;
55
+ provider_id: string;
56
+ upstream_model_id: string;
57
+ display_name?: string | null;
58
+ context_window?: number | null;
59
+ max_tokens?: number | null;
60
+ overrides_platform: boolean;
61
+ created_at: string;
62
+ updated_at: string;
63
+ }
64
+ export interface CreateOrgLLMModelRequest {
65
+ model_id: string;
66
+ provider_id: string;
67
+ /** The name to send to this provider, which differs per provider. */
68
+ upstream_model_id: string;
69
+ /** Required when `model_id` is not in the platform catalog. */
70
+ display_name?: string;
71
+ context_window?: number;
72
+ max_tokens?: number;
73
+ effort_levels?: string[];
74
+ input_modalities?: string[];
75
+ }
76
+ /**
77
+ * Everything about a model row except its identity. `model_id` is what agents
78
+ * pin to, so changing it is a delete-and-recreate the operator performs
79
+ * deliberately; the server rejects it here.
80
+ */
81
+ export interface UpdateOrgLLMModelRequest {
82
+ provider_id?: string;
83
+ upstream_model_id?: string;
84
+ /**
85
+ * Metadata fields accept `null` to clear the org's value and go back to
86
+ * inheriting the platform entry's. Omitting a field leaves it as it is —
87
+ * the two are different requests, so do not send `undefined` meaning
88
+ * "clear". A model the platform does not have cannot clear these: it has
89
+ * nothing to inherit from, and the server rejects it.
90
+ */
91
+ display_name?: string | null;
92
+ context_window?: number | null;
93
+ max_tokens?: number | null;
94
+ effort_levels?: string[] | null;
95
+ input_modalities?: string[] | null;
96
+ }
97
+ //# sourceMappingURL=llm-provider-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider-types.d.ts","sourceRoot":"","sources":["../src/llm-provider-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,UAAU,GAAG,WAAW,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACpC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Org-configured model providers (BYOK) and the model rows bound to them.
3
+ *
4
+ * Design: docs/engineering-design/org-llm-provider-byok-design.md
5
+ */
6
+ export {};
package/dist/types.d.ts CHANGED
@@ -376,6 +376,25 @@ export interface Organization {
376
376
  onboarding_agent_id: string | null;
377
377
  /** Org-level IANA timezone (e.g. "America/New_York"). Defaults to "UTC". */
378
378
  timezone: string;
379
+ /**
380
+ * Whether this org may configure its own LLM providers (BYOK). Absent means
381
+ * it inherits the platform default, which is off.
382
+ *
383
+ * An entitlement, not a feature flag: only a platform admin changes it, and
384
+ * it is expected to become plan-driven. Turning it off also stops existing
385
+ * provider configuration from taking effect.
386
+ */
387
+ llm_byok_enabled?: boolean | null;
388
+ /**
389
+ * When an org's own model provider fails at run time, retry once on the
390
+ * platform provider — billed to this org's credit balance. Defaults to off,
391
+ * so "no fallback" is the default state and fallback is opted into.
392
+ * Does NOT gate the capability fallback: a provider that cannot serve a
393
+ * runtime's protocol always defers to the platform regardless.
394
+ * Current servers populate this field; it remains optional for source
395
+ * compatibility with cached and rolling-upgrade organization payloads.
396
+ */
397
+ llm_byok_fallback_enabled?: boolean;
379
398
  created_at: string;
380
399
  /** Per-member flag: true when the user has dismissed the onboarding popup for this org. */
381
400
  onboarding_dismissed: boolean;
@@ -873,10 +892,8 @@ export interface MessageDispatchSource {
873
892
  source_type: string;
874
893
  source_id: string;
875
894
  /**
876
- * Conversation generation of the sending execution (parel v2 invocation
877
- * context). Required by the server for agents on the direct_session_v2
878
- * transport; a value older than the current New Session barrier is
879
- * rejected (STALE_GENERATION).
895
+ * @deprecated Ignored by current servers. Retained so clients compiled
896
+ * against older SDKs can upgrade without source changes.
880
897
  */
881
898
  generation?: number;
882
899
  }
@@ -1465,8 +1482,8 @@ export interface UpdateTaskRequest {
1465
1482
  * Lane-bound form (v1 consumers): dispatch_lane + dispatch_event_id bind
1466
1483
  * the update to the claimed typed lane (incumbency-checked).
1467
1484
  * By-id form (parel v2 converged consumers — no lane exists):
1468
- * dispatch_event_id + dispatch_generation bind the update to the WorkItem
1469
- * directly under the conversation-generation fence.
1485
+ * dispatch_event_id alone binds the update to the WorkItem; the server
1486
+ * admits it on the binding's transport and deletion state alone.
1470
1487
  * In both forms dispatch_effect_key additionally commits the update as
1471
1488
  * the dispatch's idempotent Effect and resolves the WorkItem in the same
1472
1489
  * transaction. Lane-bound: exactly "task_update:<dispatch_event_id>" —
@@ -1479,6 +1496,10 @@ export interface UpdateTaskRequest {
1479
1496
  dispatch_lane?: string;
1480
1497
  dispatch_event_id?: string;
1481
1498
  dispatch_effect_key?: string;
1499
+ /**
1500
+ * @deprecated Ignored by current servers. Retained so clients compiled
1501
+ * against older SDKs can upgrade without source changes.
1502
+ */
1482
1503
  dispatch_generation?: number;
1483
1504
  }
1484
1505
  export interface CreateTaskRelationRequest {
@@ -2773,6 +2794,7 @@ export interface ChannelConversation {
2773
2794
  agent_id: string;
2774
2795
  agent_session_id?: string | null;
2775
2796
  external_conversation_id: string;
2797
+ external_conversation_name?: string;
2776
2798
  external_thread_id: string;
2777
2799
  conversation_type: string;
2778
2800
  external_user_id: string;
@@ -4603,61 +4625,7 @@ export interface BrowserAliasExecutionReceipt {
4603
4625
  terminal_at?: string;
4604
4626
  updated_at: string;
4605
4627
  }
4606
- export type BrowserUseAction = 'read' | 'tabs' | 'wait' | 'snapshot' | 'get' | 'screenshot' | 'open' | 'navigate' | 'viewport' | 'click' | 'fill' | 'type' | 'press' | 'scroll' | 'close' | 'recover' | 'eval';
4607
- export interface BrowserUseTarget {
4608
- tab_id?: string;
4609
- browser_generation?: number;
4610
- document_generation?: number;
4611
- snapshot_id?: string;
4612
- ref?: string;
4613
- }
4614
- export interface BrowserUseOperationRequest {
4615
- contract_version: 'browser-use-operation-v1';
4616
- request_id: string;
4617
- profile_id: string;
4618
- action: BrowserUseAction;
4619
- target?: BrowserUseTarget;
4620
- params: Record<string, unknown>;
4621
- /** Canonical RFC3339 UTC instant, no more than two minutes in the future. */
4622
- deadline: string;
4623
- }
4624
- export type BrowserUseOperationPhase = 'accepted' | 'started' | 'succeeded' | 'failed' | 'outcome_unknown';
4625
- export interface BrowserUseOperationError {
4626
- code: string;
4627
- message?: string;
4628
- hint?: string;
4629
- }
4630
- /** Durable Browser Use proof. `data` is encrypted/transient: it is present
4631
- * only while result_available is true and disappears after result_expires_at;
4632
- * the terminal receipt and result_digest remain durable. */
4633
- export interface BrowserUseOperationReceipt {
4634
- contract_version: 'browser-use-operation-v1';
4635
- operation_id: string;
4636
- request_id: string;
4637
- profile_id: string;
4638
- profile_version: number;
4639
- profile_config_revision: number;
4640
- action: BrowserUseAction;
4641
- required_grant: 'browser.read' | 'browser.interact' | 'browser.advanced';
4642
- phase: BrowserUseOperationPhase;
4643
- dispatched?: boolean;
4644
- receipt_id?: string;
4645
- receipt_digest?: string;
4646
- occurred_at?: string;
4647
- tab_id?: string;
4648
- browser_generation?: number;
4649
- duration_ms?: number;
4650
- result_digest?: string;
4651
- result_available: boolean;
4652
- result_expires_at?: string;
4653
- data?: unknown;
4654
- error?: BrowserUseOperationError;
4655
- deadline: string;
4656
- accepted_at: string;
4657
- started_at?: string;
4658
- terminal_at?: string;
4659
- updated_at: string;
4660
- }
4628
+ export type { BrowserUseAction, BrowserUseActionRequest, BrowserUseArticle, BrowserUseGrant, BrowserUseOperationError, BrowserUseOperationPhase, BrowserUseOperationReceipt, BrowserUseOperationReceiptBase, BrowserUseOperationReceiptFor, BrowserUseOperationRequest, BrowserUseRefTarget, BrowserUseSuccessDataMap, BrowserUseTabState, BrowserUseTabSummary, BrowserUseTabTarget, BrowserUseTarget, BrowserUseViewport, } from './browser-use.js';
4661
4629
  /**
4662
4630
  * Sanitized per-profile egress proxy status (hosted Cloud Profiles) — the GET
4663
4631
  * response and the PUT/DELETE result. NEVER carries the password; `password_set`