@parall/sdk 1.52.0 → 1.52.2

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
@@ -2332,7 +2332,7 @@ export interface InboxItem {
2332
2332
  created_at: string;
2333
2333
  updated_at: string;
2334
2334
  }
2335
- export type ChannelProvider = 'feishu' | 'slack';
2335
+ export type ChannelProvider = 'feishu' | 'slack' | 'wechat';
2336
2336
  export type ChannelConnectionStatus = 'pending' | 'active' | 'disabled';
2337
2337
  /**
2338
2338
  * Inbound transport for a connection. Defaults to the provider's lowest-
@@ -2366,6 +2366,9 @@ export interface ChannelConnection {
2366
2366
  * hides the upgrade CTA when this is false/absent.
2367
2367
  */
2368
2368
  upgrade_eligible?: boolean;
2369
+ /** Set when the provider reported the device node offline (wechat Offline
2370
+ * event) — the connection stays active but needs a vendor-side re-login. */
2371
+ last_offline_at?: string | null;
2369
2372
  created_at: string;
2370
2373
  updated_at: string;
2371
2374
  }
@@ -2378,6 +2381,8 @@ export interface ChannelCredentialsInput {
2378
2381
  /** Slack fields (webhook-only: the signing secret is the verifier). */
2379
2382
  bot_token?: string;
2380
2383
  signing_secret?: string;
2384
+ /** WeChat field (research preview): vendor API credential. */
2385
+ token?: string;
2381
2386
  team_id?: string;
2382
2387
  }
2383
2388
  export interface CreateChannelConnectionInput {
@@ -2497,8 +2502,9 @@ export interface SlackManifestLinkResult {
2497
2502
  * generic ChannelProvider here would compile call sites that always 400.
2498
2503
  */
2499
2504
  export interface SendChannelMessageInput {
2500
- channel_type: 'slack';
2501
- /** Vendor-native conversation id from the inbound event (e.g. C…/D…). */
2505
+ channel_type: 'slack' | 'wechat';
2506
+ /** Vendor-native conversation id from the inbound event (e.g. C…/D… for
2507
+ * slack, a wxid or room id for wechat). */
2502
2508
  conversation_id: string;
2503
2509
  /**
2504
2510
  * External message id being answered (channel-domain format:
@@ -2507,12 +2513,15 @@ export interface SendChannelMessageInput {
2507
2513
  * In DMs the SESSION never forks, but reply POSITION follows the
2508
2514
  * question: a thread-child id lands the reply inside that thread, a
2509
2515
  * bare id (or omitting the field) keeps the flattened main flow.
2516
+ * WeChat has no threads — omit for wechat.
2510
2517
  */
2511
2518
  reply_to?: string;
2519
+ /** WeChat-only: @-mention a group member (wxid) in a group reply. */
2520
+ at?: string;
2512
2521
  text: string;
2513
2522
  }
2514
2523
  export interface SentChannelMessage {
2515
- channel_type: 'slack';
2524
+ channel_type: 'slack' | 'wechat';
2516
2525
  conversation_id: string;
2517
2526
  /**
2518
2527
  * Channel-domain external id — `{channel}:{ts}` for top-level posts,
@@ -2542,6 +2551,12 @@ export interface SlackChannelsPage {
2542
2551
  channels: SlackChannelInfo[];
2543
2552
  next_cursor?: string;
2544
2553
  }
2554
+ /** WeChat address book (id lists only — the vendor returns no names). */
2555
+ export interface WechatContactsPage {
2556
+ friends: string[];
2557
+ chatrooms: string[];
2558
+ ghs: string[];
2559
+ }
2545
2560
  export interface SlackUserInfo {
2546
2561
  id: string;
2547
2562
  name: string;
@@ -2836,10 +2851,11 @@ export interface DispatchReceivedData {
2836
2851
  /**
2837
2852
  * Terminal counterpart of DispatchReceivedData: published on org:{orgId} when
2838
2853
  * a message WorkItem reaches a terminal resolution, so the message-level
2839
- * Activity indicator flips active→done — or, per indicator v2.1, active→failed
2840
- * for `redrive_exhausted` (persistent dead-letter row); only `cancelled`
2841
- * clears the indicator without inferring completion from agent session
2842
- * state. Message WorkItems only.
2854
+ * Activity state flips active→done — or, per indicator v2.1, active→failed
2855
+ * for `redrive_exhausted`. Failed history remains available through Activity;
2856
+ * only a live event produces the transient inline failure indicator. Only
2857
+ * `cancelled` clears the activity — without inferring completion from agent
2858
+ * session state. Message WorkItems only.
2843
2859
  */
2844
2860
  export interface DispatchResolvedData {
2845
2861
  agent_id: string;
@@ -3742,27 +3758,6 @@ export interface MachineClip {
3742
3758
  version?: string;
3743
3759
  browser_profile_id?: string | null;
3744
3760
  }
3745
- export interface RegistryCommandInfo {
3746
- name: string;
3747
- description: string;
3748
- input?: string;
3749
- output?: string;
3750
- }
3751
- export interface RegistryDependencyInfo {
3752
- package: string;
3753
- version: string;
3754
- }
3755
- export interface RegistryClipInfo {
3756
- name: string;
3757
- package: string;
3758
- version: string;
3759
- type: string;
3760
- description?: string;
3761
- domain?: string;
3762
- author?: string;
3763
- commands: RegistryCommandInfo[];
3764
- dependencies: Record<string, RegistryDependencyInfo>;
3765
- }
3766
3761
  export type ClipCreatedData = Clip;
3767
3762
  export type ClipUpdatedData = Clip;
3768
3763
  export interface ClipRemovedData {
@@ -3954,8 +3949,60 @@ export interface ClipConnection {
3954
3949
  created_at: string;
3955
3950
  updated_at: string;
3956
3951
  }
3957
- /** v1 MCP clip auth modes. Server-side OAuth is a designed follow-up. */
3952
+ /**
3953
+ * MCP clip auth modes this SDK can WRITE: the pre-shared credential kinds a
3954
+ * `PUT …/mcp-config` may set. Deliberately excludes `oauth` — an OAuth
3955
+ * connection is created by the server-brokered browser flow (PUT → authorize
3956
+ * URL → public callback), which returns a different response shape and is
3957
+ * typed separately (MCPOAuthInitiateRequest/Response). Widening this union
3958
+ * would make `putClipMCPConfig({auth_type: 'oauth'})` type-legal while its
3959
+ * declared return type is wrong. Reads use MCPConfigAuthType.
3960
+ */
3958
3961
  export type MCPAuthType = 'none' | 'bearer' | 'api_key';
3962
+ /**
3963
+ * MCP clip auth modes a config can REPORT. A config authorized through the
3964
+ * OAuth flow reads back as `oauth`, so every reader must handle it even
3965
+ * though no typed call here produces one.
3966
+ */
3967
+ export type MCPConfigAuthType = MCPAuthType | 'oauth';
3968
+ /**
3969
+ * Connection state of an `oauth` config (server-derived, deployment-instance
3970
+ * fenced): `connected` = a valid or lazily-refreshable token; `needs_reauth` =
3971
+ * an org admin must authorize again; `disconnected` = no authorization here.
3972
+ */
3973
+ export type MCPOAuthStatus = 'connected' | 'needs_reauth' | 'disconnected';
3974
+ /**
3975
+ * Body of the OAuth-initiating `PUT …/mcp-config`: `auth_type` is the literal
3976
+ * `'oauth'` and there is no credential field — the authorization happens in
3977
+ * the provider's browser flow. Kept apart from MCPConfigPutRequest because
3978
+ * the response is MCPOAuthInitiateResponse, not MCPConfigResponse (see the
3979
+ * MCPAuthType note).
3980
+ */
3981
+ export interface MCPOAuthInitiateRequest {
3982
+ server_url: string;
3983
+ auth_type: 'oauth';
3984
+ }
3985
+ /**
3986
+ * Response of an OAuth-initiating PUT. Nothing is committed yet: an org
3987
+ * admin's browser must complete `authorize_url` before `expires_at`; the
3988
+ * config (and its default connection) is committed by the public callback. A
3989
+ * repeat PUT while the attempt is live returns the SAME attempt's URL.
3990
+ */
3991
+ export interface MCPOAuthInitiateResponse {
3992
+ authorize_url: string;
3993
+ expires_at: string;
3994
+ }
3995
+ /**
3996
+ * Response of `POST …/mcp-config/oauth/disconnect` (If-Match mandatory).
3997
+ * `revoked: false` means the provider-side grant may still exist and can need
3998
+ * manual removal at the provider — the local disconnect stands regardless;
3999
+ * `auth_type` remains `oauth` with `oauth_status: 'disconnected'`.
4000
+ */
4001
+ export interface MCPOAuthDisconnectResponse {
4002
+ disconnected: boolean;
4003
+ revoked: boolean;
4004
+ version: string;
4005
+ }
3959
4006
  /**
3960
4007
  * One tool from the cached tools/list snapshot. The full remote tool object is
3961
4008
  * snapshotted verbatim (inputSchema etc. ride along in the index signature).
@@ -3976,12 +4023,14 @@ export interface MCPToolInfo {
3976
4023
  */
3977
4024
  export interface MCPConfigResponse {
3978
4025
  server_url: string;
3979
- auth_type: MCPAuthType;
4026
+ auth_type: MCPConfigAuthType;
3980
4027
  /** Whether a credential is stored (write-only; the value is never returned). */
3981
4028
  credential_set: boolean;
3982
4029
  /** Cached tools/list snapshot; untrusted remote metadata (see MCPToolInfo). */
3983
4030
  tools?: MCPToolInfo[];
3984
4031
  tools_refreshed_at?: string;
4032
+ /** Present only when `auth_type` is `oauth`. */
4033
+ oauth_status?: MCPOAuthStatus;
3985
4034
  /**
3986
4035
  * Opaque CAS token for If-Match on PUT/DELETE (lost-update protection).
3987
4036
  * Version mismatch answers `409 MCP_CONFIG_STALE`.
@@ -4002,9 +4051,7 @@ export interface MCPConfigPutRequest {
4002
4051
  }
4003
4052
  /**
4004
4053
  * A clip in the api-server org registry (`crg_…`, table `clip_registry`) — the
4005
- * v3 registry that install and clip connections operate on. Distinct from
4006
- * {@link RegistryClipInfo}, which is the clip-service → Pinix Hub catalog proxy
4007
- * and carries no registry id.
4054
+ * v3 registry that publish, install, and clip connections operate on.
4008
4055
  */
4009
4056
  export interface ClipRegistryEntry {
4010
4057
  id: string;
@@ -4029,6 +4076,43 @@ export interface InstallRegistryClipResponse {
4029
4076
  clip_id: string;
4030
4077
  name: string;
4031
4078
  }
4079
+ /**
4080
+ * Create or update a clip in the org registry
4081
+ * (`POST /orgs/{orgId}/clip-registry/publish`). Upsert is keyed by `name`
4082
+ * within the org; updating an existing clip is author-only (`403 FORBIDDEN`
4083
+ * otherwise). `files` REPLACES the clip's whole file set. An invalid
4084
+ * `visibility` silently falls back to `private` server-side; `public` submits
4085
+ * a pending review snapshot — cross-org installs keep serving the previously
4086
+ * approved version until platform review approves it, while the publishing
4087
+ * org itself always execs the latest working copy.
4088
+ */
4089
+ export interface PublishRegistryClipRequest {
4090
+ name: string;
4091
+ description?: string;
4092
+ visibility?: 'public' | 'private';
4093
+ version?: string;
4094
+ /** clip.json-shaped manifest (commands map + metadata). */
4095
+ manifest?: Record<string, unknown>;
4096
+ /** filename → UTF-8 content (e.g. `search.js`). */
4097
+ files: Record<string, string>;
4098
+ }
4099
+ /**
4100
+ * A clip's per-org agent exec access (`GET/PUT /orgs/{orgId}/clips/{clipId}/exec-access`).
4101
+ *
4102
+ * - `all_agents` (default): every org agent may exec the clip.
4103
+ * - `selected_agents`: only the agents in `agent_ids` may exec; an empty list
4104
+ * blocks every agent. Denied agents also stop seeing the clip in
4105
+ * `clips/installed`, and exec answers `403 CLIP_AGENT_NOT_ALLOWED`.
4106
+ *
4107
+ * Decided by the CALLING org (an installer restricts its own agents, never the
4108
+ * publisher's). Humans are never restricted; the PUT is human-only (an agent
4109
+ * principal is refused so it can never widen its own access).
4110
+ */
4111
+ export interface ClipAgentExecAccess {
4112
+ mode: 'all_agents' | 'selected_agents';
4113
+ /** Granted agent user ids under `selected_agents`; always [] under `all_agents`. */
4114
+ agent_ids: string[];
4115
+ }
4032
4116
  /**
4033
4117
  * Execute a registry (Edge) clip command on an Edge device
4034
4118
  * (`POST /orgs/{orgId}/edge/exec`).