@parall/sdk 1.36.0 → 1.37.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
@@ -611,11 +611,17 @@ export interface Machine {
611
611
  clip_provider_url?: string;
612
612
  daemon_version?: string | null;
613
613
  self_update_capable?: boolean;
614
+ detected_runtimes?: DetectedRuntime[] | null;
614
615
  region: string | null;
615
616
  created_by: string;
616
617
  created_at: string;
617
618
  updated_at: string;
618
619
  }
620
+ export interface DetectedRuntime {
621
+ runtime_type: string;
622
+ version?: string;
623
+ status: 'ok' | 'broken';
624
+ }
619
625
  export type DaemonWorkspaceMode = 'default' | 'local_path' | 'git';
620
626
  export type DaemonWorkspaceSetupRunOn = 'first_attach' | 'config_change';
621
627
  export interface DaemonWorkspaceGitConfig {
@@ -670,7 +676,7 @@ export interface AgentProfile {
670
676
  model_management: string | null;
671
677
  permissions: string[];
672
678
  machine_id: string | null;
673
- hosting_mode?: 'hosted' | 'self_hosted';
679
+ hosting_mode?: 'hosted' | 'self_hosted' | 'platform_runtime';
674
680
  runtime_type: string;
675
681
  description: string | null;
676
682
  thinking_effort: string | null;
@@ -724,6 +730,11 @@ export interface MachineConfigUpdatedData {
724
730
  llm_source?: string;
725
731
  provider_enabled?: boolean;
726
732
  }
733
+ export interface MachineAgentConfigUpdatedData {
734
+ machine_id: string;
735
+ agent_id: string;
736
+ llm_source: string;
737
+ }
727
738
  export interface MachineWorkspaceSetupRequestedData {
728
739
  machine_id: string;
729
740
  agent_id: string;
@@ -754,6 +765,14 @@ export interface MachineBrowserProfileLifecycleData {
754
765
  profile_id: string;
755
766
  action: BrowserProfileLifecycleAction;
756
767
  start_url?: string;
768
+ /** Profile's lifecycle_generation after this transition's bump (PR #1650). The
769
+ * daemon acts under it and echoes it in its status report so the server can
770
+ * reject a stale report. Absent/0 from a pre-generation server. */
771
+ generation?: number;
772
+ /** Profile's reset_generation after this transition (bumped only by `reset`). On
773
+ * an online reset the daemon records it in its per-profile sidecar so a later
774
+ * reconnect doesn't redundantly re-wipe. */
775
+ reset_generation?: number;
757
776
  }
758
777
  /**
759
778
  * Live-viewer control command relayed to the host daemon over `machine:{id}`.
@@ -850,6 +869,13 @@ export interface Task {
850
869
  canceled_at: string | null;
851
870
  archived_at?: string | null;
852
871
  deleted_at?: string | null;
872
+ /**
873
+ * Per-viewer: whether the requesting user may manage OTHER members' comment
874
+ * subscriptions for this task (creator / assignee / project lead / org
875
+ * owner-admin). Populated on single-task GET; undefined elsewhere. Read this to
876
+ * gate subscriber-management UI — do not re-derive the rule client-side.
877
+ */
878
+ can_manage_subscribers?: boolean;
853
879
  }
854
880
  export interface TaskWatcher {
855
881
  task_id: string;
@@ -1239,6 +1265,19 @@ export interface Wiki {
1239
1265
  created_by: string;
1240
1266
  created_at: string;
1241
1267
  updated_at: string;
1268
+ /** Protected default wiki — cannot be deleted. */
1269
+ is_default?: boolean | null;
1270
+ /** Set when the wiki is soft-deleted (recoverable). */
1271
+ deleted_at?: string | null;
1272
+ /** User who soft-deleted the wiki. */
1273
+ deleted_by?: string | null;
1274
+ /** Set once purge is claimed — the wiki can no longer be restored. */
1275
+ purge_started_at?: string | null;
1276
+ /** deleted_at + retention window (server-computed) — the recycle-bin countdown
1277
+ * source. Past this, restore is rejected with 410 WIKI_RETENTION_EXPIRED. */
1278
+ purge_eligible_at?: string | null;
1279
+ /** Server-computed restore availability for recycle-bin rows. */
1280
+ restorable?: boolean | null;
1242
1281
  }
1243
1282
  export interface WikiFileChange {
1244
1283
  path: string;
@@ -1267,10 +1306,18 @@ export interface WikiTreeEntry {
1267
1306
  path: string;
1268
1307
  type: 'tree' | 'blob';
1269
1308
  size?: number;
1309
+ /**
1310
+ * Entry sits inside a read-gated private subtree (path restriction). Advisory
1311
+ * display flag — the caller already passed read authorization to receive the
1312
+ * entry; use it to badge private folders, never for access decisions.
1313
+ */
1314
+ restricted?: boolean;
1270
1315
  }
1271
1316
  export interface WikiTreeResponse {
1272
1317
  data: WikiTreeEntry[];
1273
1318
  path: string;
1319
+ /** Whether the listed directory itself sits inside a read-gated private subtree. */
1320
+ path_restricted?: boolean;
1274
1321
  }
1275
1322
  export interface WikiFileManifestEntry {
1276
1323
  path: string;
@@ -1491,6 +1538,7 @@ export interface CreateWikiPathRestrictionRequest {
1491
1538
  level?: 'read' | 'maintain' | 'admin';
1492
1539
  subjects: string[];
1493
1540
  apply_to_admins?: boolean;
1541
+ create_only?: boolean;
1494
1542
  }
1495
1543
  export interface WikiAccessStatus {
1496
1544
  path: string;
@@ -1518,6 +1566,22 @@ export interface WikiOperationsResponse {
1518
1566
  data: WikiOperation[];
1519
1567
  has_more: boolean;
1520
1568
  }
1569
+ /**
1570
+ * Copy one wiki file to another path as an independent snapshot (no ongoing
1571
+ * sync). Primary use: "share a private file out" — copy from the caller's
1572
+ * personal namespace (`users/{userId}/…`) into the public wiki so the whole
1573
+ * org can read + edit the copy, leaving the private original untouched.
1574
+ */
1575
+ export interface CopyWikiFileRequest {
1576
+ source_path: string;
1577
+ dest_path: string;
1578
+ message?: string;
1579
+ }
1580
+ export interface CopyWikiFileResponse {
1581
+ source_path: string;
1582
+ dest_path: string;
1583
+ commit_sha: string;
1584
+ }
1521
1585
  export interface WikiBlob {
1522
1586
  path: string;
1523
1587
  ref: string;
@@ -1527,6 +1591,8 @@ export interface WikiBlob {
1527
1591
  content?: string;
1528
1592
  line_count?: number;
1529
1593
  sha256?: string;
1594
+ /** File sits inside a read-gated private subtree — advisory display flag. */
1595
+ restricted?: boolean;
1530
1596
  mime?: string;
1531
1597
  is_lfs?: boolean;
1532
1598
  content_sha?: string;
@@ -1636,6 +1702,15 @@ export interface MembershipChangedData {
1636
1702
  user_id: string;
1637
1703
  action: 'added' | 'removed' | 'role_changed';
1638
1704
  }
1705
+ /**
1706
+ * A member was removed from an org — kicked by an admin or self-removal
1707
+ * ("leave org"). Delivered on org:{orgId} (remaining members refresh the
1708
+ * directory) and user:{userId} (the removed user's clients drop the org).
1709
+ */
1710
+ export interface OrgMemberRemovedData {
1711
+ org_id: string;
1712
+ user_id: string;
1713
+ }
1639
1714
  export type TaskActivityAction = 'created' | 'field_changed' | 'commented';
1640
1715
  export interface TaskComment {
1641
1716
  id: string;
@@ -1757,6 +1832,13 @@ export type WikiChangesetCreatedData = WikiChangeset & {
1757
1832
  export type WikiChangesetUpdatedData = WikiChangeset & {
1758
1833
  org_id: string;
1759
1834
  };
1835
+ export interface WikiDeletedData {
1836
+ org_id: string;
1837
+ wiki_id: string;
1838
+ slug: string;
1839
+ name: string;
1840
+ }
1841
+ export type WikiRestoredData = WikiDeletedData;
1760
1842
  export interface Comment {
1761
1843
  id: string;
1762
1844
  org_id: string;
@@ -1811,7 +1893,114 @@ export interface InboxItem {
1811
1893
  created_at: string;
1812
1894
  updated_at: string;
1813
1895
  }
1814
- export type DispatchEventType = 'message' | 'task_assign' | 'task_update' | 'task_comment' | 'wiki_comment' | 'schedule.fire' | 'external_trigger' | 'approval_decided';
1896
+ export type ChannelProvider = 'feishu' | 'slack';
1897
+ export type ChannelConnectionStatus = 'pending' | 'active' | 'disabled';
1898
+ /**
1899
+ * Inbound transport for a connection. Defaults to the provider's lowest-
1900
+ * onboarding-cost mode server-side (Feishu → socket, Slack → webhook) when
1901
+ * omitted on create; can be overridden per connection.
1902
+ */
1903
+ export type ChannelIngressMode = 'webhook' | 'socket';
1904
+ export type ChannelMessageStatus = 'received' | 'dispatched' | 'failed';
1905
+ export interface ChannelConnection {
1906
+ id: string;
1907
+ org_id: string;
1908
+ agent_id: string;
1909
+ provider: ChannelProvider;
1910
+ ingress_mode: ChannelIngressMode;
1911
+ display_name: string;
1912
+ created_by: string;
1913
+ status: ChannelConnectionStatus;
1914
+ external_app_id?: string;
1915
+ external_team_id?: string;
1916
+ archived_at?: string | null;
1917
+ archive_reason?: string | null;
1918
+ /** Returned once at mint time (create / token regeneration). */
1919
+ ingress_url?: string;
1920
+ /** Returned once at mint time (create / token regeneration). */
1921
+ ingress_token?: string;
1922
+ created_at: string;
1923
+ updated_at: string;
1924
+ }
1925
+ export interface ChannelCredentialsInput {
1926
+ app_id: string;
1927
+ app_secret: string;
1928
+ verification_token?: string;
1929
+ encrypt_key?: string;
1930
+ team_id?: string;
1931
+ }
1932
+ export interface CreateChannelConnectionInput {
1933
+ agent_id: string;
1934
+ provider: ChannelProvider;
1935
+ display_name: string;
1936
+ /** Override the provider's default inbound transport (optional). */
1937
+ ingress_mode?: ChannelIngressMode;
1938
+ /** Manual provisioning: activates the connection immediately. */
1939
+ credentials?: ChannelCredentialsInput;
1940
+ }
1941
+ export interface UpdateChannelConnectionInput {
1942
+ display_name?: string;
1943
+ status?: 'active' | 'disabled';
1944
+ }
1945
+ export interface ChannelConversation {
1946
+ id: string;
1947
+ org_id: string;
1948
+ connection_id: string;
1949
+ agent_id: string;
1950
+ agent_session_id?: string | null;
1951
+ external_conversation_id: string;
1952
+ external_thread_id: string;
1953
+ conversation_type: string;
1954
+ external_user_id: string;
1955
+ external_user_name: string;
1956
+ last_inbound_at?: string | null;
1957
+ created_at: string;
1958
+ updated_at: string;
1959
+ }
1960
+ export interface ChannelMessage {
1961
+ id: string;
1962
+ org_id: string;
1963
+ connection_id: string;
1964
+ conversation_id: string;
1965
+ external_message_id: string;
1966
+ text: string;
1967
+ external_user_id: string;
1968
+ external_user_name: string;
1969
+ status: ChannelMessageStatus;
1970
+ received_at: string;
1971
+ created_at: string;
1972
+ }
1973
+ /**
1974
+ * Feishu one-click provisioning session (OAuth device flow). The client
1975
+ * renders `verification_url` as a QR code and lazily polls the status
1976
+ * endpoint every `poll_interval_seconds` — each poll may forward one
1977
+ * provider poll server-side, so respect the interval.
1978
+ */
1979
+ export type ChannelProvisioningStatus = 'pending' | 'polling' | 'done' | 'expired' | 'denied' | 'canceled' | 'failed';
1980
+ export interface ChannelProvisioningSession {
1981
+ id: string;
1982
+ org_id: string;
1983
+ agent_id: string;
1984
+ provider: ChannelProvider;
1985
+ created_by: string;
1986
+ status: ChannelProvisioningStatus;
1987
+ poll_interval_seconds: number;
1988
+ /** Set when status = 'done': the minted connection. */
1989
+ connection_id?: string;
1990
+ /** Terminal detail: access_denied / expired_token / domain_switched / connection_exists / alias_conflict / internal. */
1991
+ error_code?: string;
1992
+ expires_at: string;
1993
+ created_at: string;
1994
+ updated_at: string;
1995
+ /** QR target — present on live (pending/polling) sessions only. */
1996
+ verification_url?: string;
1997
+ user_code?: string;
1998
+ }
1999
+ export interface InitiateChannelProvisioningInput {
2000
+ agent_id: string;
2001
+ provider: ChannelProvider;
2002
+ }
2003
+ export type DispatchEventType = 'message' | 'task_assign' | 'task_update' | 'task_comment' | 'wiki_comment' | 'schedule.fire' | 'external_trigger' | 'approval_decided' | 'channel_message';
1815
2004
  export type DispatchStatus = 'pending' | 'received' | 'acked';
1816
2005
  export type DispatchDeliveryReason = 'mention' | 'watcher' | 'assignee' | 'creator';
1817
2006
  export interface DispatchEvent {
@@ -1924,10 +2113,13 @@ export type WsEventMap = {
1924
2113
  'invitation.revoked': InvitationRevokedEventData;
1925
2114
  'org.join_request.new': OrgJoinRequestNewEventData;
1926
2115
  'org.invite_link.joined': OrgInviteLinkJoinedEventData;
2116
+ 'org.member.removed': OrgMemberRemovedData;
1927
2117
  'agent_config.update': AgentConfigUpdateData;
1928
2118
  'presence.update': PresenceUpdateData;
1929
2119
  'wiki.changeset.created': WikiChangesetCreatedData;
1930
2120
  'wiki.changeset.updated': WikiChangesetUpdatedData;
2121
+ 'wiki.deleted': WikiDeletedData;
2122
+ 'wiki.restored': WikiRestoredData;
1931
2123
  'comment.created': CommentCreatedData;
1932
2124
  'comment.updated': CommentUpdatedData;
1933
2125
  'comment.deleted': CommentDeletedData;
@@ -1951,6 +2143,7 @@ export type WsEventMap = {
1951
2143
  'machine.agent.attached': MachineAgentAttachedData;
1952
2144
  'machine.agent.detached': MachineAgentDetachedData;
1953
2145
  'machine.config.updated': MachineConfigUpdatedData;
2146
+ 'machine.agent_config.updated': MachineAgentConfigUpdatedData;
1954
2147
  'machine.workspace.setup.requested': MachineWorkspaceSetupRequestedData;
1955
2148
  'machine.stop': MachineStopData;
1956
2149
  'machine.filesystem.browse': MachineFilesystemBrowseData;
@@ -2008,7 +2201,14 @@ export interface PlatformConfigResponse {
2008
2201
  version: string;
2009
2202
  schema_version: number;
2010
2203
  min_plugin_version?: string;
2204
+ /** @deprecated V1-compat only — old bridges read this for override-vs-floor. New bridges read `model_is_pin`. */
2011
2205
  mode?: string;
2206
+ /**
2207
+ * Whether the delivered model is an operator PIN (override, beats the runtime's
2208
+ * env/default) vs a catalog FLOOR (loses to env). Optional: an old server omits
2209
+ * it and the bridge falls back to the legacy `model_management`-derived signal.
2210
+ */
2211
+ model_is_pin?: boolean;
2012
2212
  config: Record<string, unknown>;
2013
2213
  }
2014
2214
  export interface AgentConfigUpdateData {
@@ -2091,6 +2291,35 @@ export interface BacklinksResponse {
2091
2291
  backlinks: BacklinkItem[];
2092
2292
  next_cursor?: string;
2093
2293
  }
2294
+ /**
2295
+ * One entity in a multi-hop ref-graph traversal (GET /refs/graph). `id`/`uri` are
2296
+ * the ref_links endpoint identifier: a bare prll:// entity id for most nodes
2297
+ * (`tsk_abc` → `prll://tsk_abc`), but a wiki_file source node carries its file
2298
+ * path (`wik_abc/docs/a.md` → `prll://wik_abc/docs/a.md`, type `wik`). The query
2299
+ * root must be entity-level (refined path/anchor URIs are rejected 400), yet
2300
+ * interior wiki_file nodes can legitimately be path-bearing.
2301
+ */
2302
+ export interface RefGraphNode {
2303
+ uri: string;
2304
+ type: string;
2305
+ id: string;
2306
+ depth: number;
2307
+ }
2308
+ /** One directed prll:// reference between two nodes in the graph. */
2309
+ export interface RefGraphEdge {
2310
+ source_uri: string;
2311
+ target_uri: string;
2312
+ source_type: string;
2313
+ target_type: string;
2314
+ context?: string;
2315
+ }
2316
+ export interface RefGraphResponse {
2317
+ root: string;
2318
+ depth: number;
2319
+ nodes: RefGraphNode[];
2320
+ edges: RefGraphEdge[];
2321
+ truncated: boolean;
2322
+ }
2094
2323
  export interface BrokenRefItem {
2095
2324
  ref_link_id: string;
2096
2325
  source_type: string;
@@ -2238,6 +2467,58 @@ export interface ComputePricing {
2238
2467
  created_at: string;
2239
2468
  }
2240
2469
  export type ComputePricingResponse = Record<string, ComputePricing>;
2470
+ /**
2471
+ * Per-runtime capability row from GET /api/v1/runtimes (public, no auth).
2472
+ * Server SSOT: server/pkg/hosting/capabilities.go RuntimeCapability — the
2473
+ * data source for the create/settings interlock (which compute × intelligence
2474
+ * × model combinations are offerable per runtime).
2475
+ */
2476
+ export interface RuntimeCapability {
2477
+ runtime: string;
2478
+ /** Where the runtime can run: "hosted" and/or "local". Hermes is cloud-only. */
2479
+ compute_modes: string[];
2480
+ /**
2481
+ * Provider family the runtime's OWN credentials can serve ("anthropic" /
2482
+ * "openai"), or "any" for family-agnostic runtimes. Own-route restriction
2483
+ * only — see cross_family_via_parall.
2484
+ */
2485
+ native_model_family: string;
2486
+ /** On the Parall proxy route any catalog model is allowed regardless of family. */
2487
+ cross_family_via_parall: boolean;
2488
+ /** Whether a pinned model is delivered when the agent runs on its own credentials. */
2489
+ own_route_model_pin: boolean;
2490
+ /** Catalog default the UI pre-selects for this runtime. */
2491
+ recommended_model: string;
2492
+ }
2493
+ /**
2494
+ * Catalog entry from GET /api/v1/models (public, no auth) — the DB-backed
2495
+ * platform model catalog. Server SSOT: handler.PlatformModelDTO
2496
+ * (docs/engineering-design/model-catalog-design.md §6.1). Replaces the
2497
+ * compile-time PLATFORM_MODELS constant as the picker data source.
2498
+ */
2499
+ export interface PlatformModelInfo {
2500
+ id: string;
2501
+ name: string;
2502
+ /** Provider family ("anthropic", "openai", "google", ...). */
2503
+ family: string;
2504
+ contextWindow: number;
2505
+ maxTokens: number;
2506
+ effortLevels?: string[];
2507
+ /** Runtime type → runtime-native CLI model name. */
2508
+ runtime_names?: Record<string, string>;
2509
+ /** Set on client-behavior variants (the "(1M)" entries) — see isPlatformModelSelectableForRuntime. */
2510
+ upstream_id?: string;
2511
+ /** Display hints: "recommended" / "new" / "beta". */
2512
+ tags?: string[];
2513
+ sort_order: number;
2514
+ /** True only for a legacy entry appended via include_model (not in the active catalog). */
2515
+ hidden?: boolean;
2516
+ }
2517
+ export interface PlatformModelsResponse {
2518
+ data: PlatformModelInfo[];
2519
+ /** Catalog content hash — changes whenever the catalog changes. */
2520
+ version: string;
2521
+ }
2241
2522
  export interface MachinePreset {
2242
2523
  key: string;
2243
2524
  cpu_cores: number;
@@ -2292,7 +2573,8 @@ export interface BillingMachineStoppedEvent {
2292
2573
  export interface BillingInsufficientEvent {
2293
2574
  org_id: string;
2294
2575
  }
2295
- export type ClipSourceType = 'registry' | 'custom' | 'builtin';
2576
+ export type ClipSourceType = 'registry' | 'custom' | 'builtin' | 'channel';
2577
+ export type UserClipSourceType = 'registry' | 'custom' | 'builtin';
2296
2578
  export type ClipStatus = 'active' | 'disabled';
2297
2579
  export interface Clip {
2298
2580
  id: string;
@@ -2324,7 +2606,7 @@ export interface CreateClipRequest {
2324
2606
  display_name?: string;
2325
2607
  description?: string;
2326
2608
  manifest?: Record<string, unknown>;
2327
- source_type?: ClipSourceType;
2609
+ source_type?: UserClipSourceType;
2328
2610
  source_ref?: string;
2329
2611
  version?: string;
2330
2612
  machine_id: string;
@@ -2387,6 +2669,14 @@ export type BrowserProfileStatus = 'pending' | 'running' | 'stopped' | 'error' |
2387
2669
  * required), `hosted` runs on the platform pool (machine_id null).
2388
2670
  */
2389
2671
  export type BrowserPlacement = 'byoc' | 'hosted';
2672
+ /** Deployment-wide hosted browser runtime availability (the controller startup
2673
+ * gate). Drives whether the create UI offers the platform-hosted placement; it
2674
+ * is org-scoped only for auth — the value itself is the same for every org.
2675
+ * Fail-closed: the server reports `available: false` if it cannot verify. */
2676
+ export interface BrowserRuntimeStatus {
2677
+ available: boolean;
2678
+ reason?: string;
2679
+ }
2390
2680
  export interface BrowserProfile {
2391
2681
  id: string;
2392
2682
  org_id: string;
@@ -2407,6 +2697,14 @@ export interface BrowserProfile {
2407
2697
  * or control gate and owner/admin can always control. The org-wide list uses
2408
2698
  * {@link BrowserProfileListItem.can_open} (per-viewer) instead. */
2409
2699
  can_open?: boolean;
2700
+ /** Per-profile outbound proxy (BYO provider credentials). Returned to the owner /
2701
+ * org admin (Get) for the edit form. The password is NEVER returned —
2702
+ * {@link proxy_password_set} reports only whether one is configured. */
2703
+ proxy_server?: string | null;
2704
+ proxy_username?: string | null;
2705
+ /** True when a proxy password is stored. Drives the edit form's "leave blank to
2706
+ * keep" affordance; the value itself is never sent to a human-facing client. */
2707
+ proxy_password_set?: boolean;
2410
2708
  }
2411
2709
  /** Sanitized row from `GET /orgs/{orgId}/browser-profiles` (org-wide discovery).
2412
2710
  * Carries only the fields the Browser Profiles tab needs to render + gate
@@ -2429,6 +2727,34 @@ export interface BrowserProfileListItem {
2429
2727
  can_open?: boolean;
2430
2728
  error_msg?: string | null;
2431
2729
  last_seen?: string | null;
2730
+ /** Non-sensitive discovery flag: does this profile egress through a proxy. The
2731
+ * proxy server / credentials are NOT in the org-wide list (owner/admin Get only). */
2732
+ proxy_configured?: boolean;
2733
+ }
2734
+ /** Daemon-facing browser profile returned by `GET /machines/me/browser-profiles`
2735
+ * (mck_-authed, machine-scoped). Unlike {@link BrowserProfile} it carries
2736
+ * `proxy_password`: the local BYOC daemon must replay it to bb-browser. This is the
2737
+ * single intended channel for the credential to leave the server — never surface it
2738
+ * on a human-facing path. */
2739
+ export interface MachineBrowserProfile {
2740
+ id: string;
2741
+ org_id: string;
2742
+ placement: BrowserPlacement;
2743
+ machine_id: string | null;
2744
+ owner_user_id: string;
2745
+ display_name: string;
2746
+ status: BrowserProfileStatus;
2747
+ error_msg?: string | null;
2748
+ last_seen?: string | null;
2749
+ proxy_server?: string | null;
2750
+ proxy_username?: string | null;
2751
+ proxy_password?: string | null;
2752
+ /** Per-profile fencing tokens (PR #1650): lifecycle_generation bumps on every
2753
+ * open/stop/reset (daemon reports under it; stale reports rejected);
2754
+ * reset_generation bumps only on reset (daemon wipes local state on reconnect
2755
+ * when this is newer than what it last applied). Default 0. */
2756
+ lifecycle_generation: number;
2757
+ reset_generation: number;
2432
2758
  }
2433
2759
  export interface BrowserProfileConsent {
2434
2760
  id: string;
@@ -2447,9 +2773,20 @@ export interface CreateBrowserProfileRequest {
2447
2773
  machine_id?: string | null;
2448
2774
  owner_user_id: string;
2449
2775
  display_name: string;
2776
+ /** Optional BYO proxy. Omit all for direct egress. proxy_server is `host:port`
2777
+ * (optional http/https/socks5 scheme); proxy_username/password are sent together. */
2778
+ proxy_server?: string | null;
2779
+ proxy_username?: string | null;
2780
+ proxy_password?: string | null;
2450
2781
  }
2451
2782
  export interface UpdateBrowserProfileRequest {
2452
2783
  display_name?: string;
2784
+ /** Per-field proxy edit (tri-state): omit = leave unchanged, "" = clear (an empty
2785
+ * proxy_server clears the whole proxy), value = set. Omitting proxy_password keeps
2786
+ * the stored one (never re-entered / echoed). */
2787
+ proxy_server?: string | null;
2788
+ proxy_username?: string | null;
2789
+ proxy_password?: string | null;
2453
2790
  }
2454
2791
  export interface BrowserProfileLifecycleRequest {
2455
2792
  start_url?: string;
@@ -2540,12 +2877,25 @@ export interface ClipRemovedData {
2540
2877
  clip_id: string;
2541
2878
  org_id: string;
2542
2879
  }
2543
- export interface SearchParams {
2880
+ export type SearchParams = {
2544
2881
  q: string;
2882
+ /** Entity selector CSV: message / task / wiki. Distinct from `wiki_type`. */
2545
2883
  types?: string;
2546
2884
  chat_id?: string;
2547
2885
  limit?: number;
2548
- }
2886
+ /** Page offset into the per-type candidate pool (default 0). Reachability is capped — past the pool, results are empty with `has_more` false. */
2887
+ offset?: number;
2888
+ /** Wiki document-type facet (frontmatter `type`) — a separate axis from `types`. */
2889
+ wiki_type?: string;
2890
+ /** RFC3339 or YYYY-MM-DD lower bound; narrows messages (created_at) and tasks (updated_at). Not applied to wiki. */
2891
+ since?: string;
2892
+ /** Sender filter (Slack `from:`) — user id. Messages only; tasks/wiki carry no sender. */
2893
+ from?: string;
2894
+ /** Result order: `relevance` (default, RRF hybrid) or `recent` (newest-first). Recent applies to messages/tasks; wiki stays relevance (no authored timestamp). */
2895
+ order?: 'relevance' | 'recent';
2896
+ /** Collapse cross-chat message results to one hit per chat (default true). Pass false on the full results page to page every match. No effect when `chat_id` is set. */
2897
+ collapse_by_chat?: boolean;
2898
+ };
2549
2899
  export interface SearchMessageResult {
2550
2900
  message_id: string;
2551
2901
  chat_id: string;
@@ -2585,6 +2935,12 @@ export interface SearchResponse {
2585
2935
  messages: SearchMessageResult[];
2586
2936
  tasks: SearchTaskResult[];
2587
2937
  wiki: SearchWikiResult[];
2938
+ /** Per-type flag: more results remain past the returned page (within the reachable pool). Lets a tabbed results UI page each type independently. Optional for resilience to older payloads; clients default to all-false. */
2939
+ has_more?: {
2940
+ messages: boolean;
2941
+ tasks: boolean;
2942
+ wiki: boolean;
2943
+ };
2588
2944
  }
2589
2945
  export {};
2590
2946
  //# sourceMappingURL=types.d.ts.map