@oneshot-agent/sdk 0.50.0 → 0.52.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
@@ -175,6 +175,19 @@ export interface DecisionContext {
175
175
  /** Any additional context */
176
176
  [key: string]: unknown;
177
177
  }
178
+ /** The HTTP methods a declared route of the API uses. */
179
+ export type RouteMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
180
+ /** What {@link OneShot.route} sends to a declared route, besides the {@link ToolOptions} of a paid one. */
181
+ export interface RouteOptions extends ToolOptions {
182
+ /** Values for the `{name}` (or `:name`) parameters of the path; each is URL-encoded. */
183
+ params?: Record<string, string | number>;
184
+ /** The query string. null/undefined are left out; booleans are `true`/`false`; objects and arrays are JSON. */
185
+ query?: Record<string, unknown>;
186
+ /** The JSON body of a POST, PUT or PATCH. An object field is sent as it is. */
187
+ body?: Record<string, unknown>;
188
+ /** The route is paid for (fixed or quoted): go through the quote-to-pay flow. POST only. */
189
+ paid?: boolean;
190
+ }
178
191
  export interface ToolOptions {
179
192
  /** End-to-end deadline in milliseconds. Existing timeout remains the polling limit in seconds. */
180
193
  totalTimeoutMs?: number;
@@ -225,7 +238,7 @@ export interface ToolOptions {
225
238
  * `waitForPhones: true` to keep polling at a slower cadence (every 5s)
226
239
  * until phones land or `phoneTimeoutSec` expires (default 360s = 6 min).
227
240
  * Only meaningful for tools whose upstream enrichment supports async
228
- * phone reveals (research/person, enrich/profile, …). For other tools
241
+ * phone reveals (person-dossier, person-profile, …). For other tools
229
242
  * the flag is a no-op.
230
243
  */
231
244
  waitForPhones?: boolean;
@@ -237,8 +250,8 @@ export interface ToolOptions {
237
250
  * idempotency. Those endpoints reject a conflicting body with 422.
238
251
  * Access-token enrichment requests do not receive replay or conflict
239
252
  * checks. Replay window and requirement differ by endpoint: email.send
240
- * is optional with a 24h cached-response replay window; enrichProfile /
241
- * findEmail / verifyEmail are honored when durable enrichment is enabled
253
+ * is optional with a 24h cached-response replay window; personProfile /
254
+ * personEmail / personEmailStatus are honored when durable enrichment is enabled
242
255
  * on the server AND the session authenticates with a wallet, not an
243
256
  * `accessToken` — an access-token session skips the durable-replay check
244
257
  * on these three routes entirely and always dispatches a fresh job, even
@@ -310,7 +323,7 @@ export interface ResearchToolOptions extends ToolOptions {
310
323
  topic: string;
311
324
  depth?: 'deep' | 'quick';
312
325
  }
313
- export interface PeopleSearchOptions extends ToolOptions {
326
+ export interface PersonFindOptions extends ToolOptions {
314
327
  job_titles?: string[];
315
328
  keywords?: string[];
316
329
  companies?: string[];
@@ -337,13 +350,13 @@ export interface PeopleSearchOptions extends ToolOptions {
337
350
  * regardless of which provider answers the search. */
338
351
  offset?: number;
339
352
  }
340
- export interface EnrichProfileOptions extends ToolOptions {
353
+ export interface PersonProfileOptions extends ToolOptions {
341
354
  linkedin_url?: string;
342
355
  email?: string;
343
356
  name?: string;
344
357
  company_domain?: string;
345
358
  }
346
- export interface CompanySearchOptions extends ToolOptions {
359
+ export interface CompanyFindOptions extends ToolOptions {
347
360
  name?: string;
348
361
  domain?: string;
349
362
  industry?: string[];
@@ -355,38 +368,38 @@ export interface CompanySearchOptions extends ToolOptions {
355
368
  tags?: string[];
356
369
  limit?: number;
357
370
  }
358
- export interface EnrichCompanyOptions extends ToolOptions {
371
+ export interface CompanyProfileOptions extends ToolOptions {
359
372
  domain?: string;
360
373
  name?: string;
361
374
  linkedin_url?: string;
362
375
  ticker?: string;
363
376
  }
364
- export interface FindEmailOptions extends ToolOptions {
377
+ export interface PersonEmailOptions extends ToolOptions {
365
378
  full_name?: string;
366
379
  first_name?: string;
367
380
  last_name?: string;
368
381
  company_domain: string;
369
382
  }
370
- export interface VerifyEmailOptions extends ToolOptions {
383
+ export interface PersonEmailStatusOptions extends ToolOptions {
371
384
  email: string;
372
385
  }
373
- export interface DeepResearchPersonOptions extends ToolOptions {
386
+ export interface PersonDossierOptions extends ToolOptions {
374
387
  email?: string;
375
388
  social_media_url?: string;
376
389
  name?: string;
377
390
  company?: string;
378
391
  }
379
- export interface SocialProfilesOptions extends ToolOptions {
392
+ export interface PersonSocialAccountsOptions extends ToolOptions {
380
393
  email?: string;
381
394
  social_media_url?: string;
382
395
  }
383
- export interface ArticleSearchOptions extends ToolOptions {
396
+ export interface PersonArticlesOptions extends ToolOptions {
384
397
  name: string;
385
398
  company: string;
386
399
  sort?: 'recent' | 'popular';
387
400
  limit?: number;
388
401
  }
389
- export interface PersonNewsfeedOptions extends ToolOptions {
402
+ export interface PersonPostsOptions extends ToolOptions {
390
403
  social_media_url: string;
391
404
  }
392
405
  export interface PersonInterestsOptions extends ToolOptions {
@@ -394,7 +407,7 @@ export interface PersonInterestsOptions extends ToolOptions {
394
407
  phone?: string;
395
408
  social_media_url?: string;
396
409
  }
397
- export interface PersonInteractionsOptions extends ToolOptions {
410
+ export interface PersonFollowersOptions extends ToolOptions {
398
411
  social_media_url: string;
399
412
  type?: 'replies' | 'followers' | 'following' | 'followers,following';
400
413
  max_results?: number;
@@ -508,19 +521,24 @@ export interface Education {
508
521
  start_date?: string;
509
522
  end_date?: string;
510
523
  }
524
+ /**
525
+ * A normalized person record. The worker returns every scalar field below and
526
+ * uses `null`, not a missing key, for a value the provider did not have; the
527
+ * declared person_dossier schema requires exactly that shape (#1789).
528
+ */
511
529
  export interface PersonResult {
512
530
  company_address?: BusinessAddress | null;
513
- full_name?: string;
514
- first_name?: string;
515
- last_name?: string;
516
- title?: string;
517
- company?: string;
518
- company_domain?: string;
519
- linkedin_url?: string;
520
- location?: string;
521
- email?: string;
522
- phone?: string;
523
- summary?: string;
531
+ full_name?: string | null;
532
+ first_name?: string | null;
533
+ last_name?: string | null;
534
+ title?: string | null;
535
+ company?: string | null;
536
+ company_domain?: string | null;
537
+ linkedin_url?: string | null;
538
+ location?: string | null;
539
+ email?: string | null;
540
+ phone?: string | null;
541
+ summary?: string | null;
524
542
  skills?: string[];
525
543
  experience?: Experience[];
526
544
  education?: Education[];
@@ -531,7 +549,7 @@ export interface PersonResult {
531
549
  best_work_email?: string | null;
532
550
  best_personal_email?: string | null;
533
551
  }
534
- export interface PeopleSearchResult {
552
+ export interface PersonFindResult {
535
553
  status: string;
536
554
  results: PersonResult[];
537
555
  total_found: number;
@@ -660,9 +678,20 @@ export interface DomainPoolStatusResult {
660
678
  warmup_state: DomainWarmupState;
661
679
  pause_reason: DomainPauseReason;
662
680
  }
663
- export interface EnrichProfileResult {
681
+ export interface SocialAccount {
682
+ platform: string;
683
+ url: string;
684
+ handle: string | null;
685
+ }
686
+ export interface DossierSection<T> {
687
+ state: 'found' | 'none' | 'unavailable';
688
+ data: T;
689
+ }
690
+ export interface PersonProfileResult {
664
691
  status: string;
665
- profile: PersonResult;
692
+ profile: PersonResult & {
693
+ social_accounts: SocialAccount[];
694
+ };
666
695
  request_id?: string;
667
696
  /** Receipt id (`rcpt_…`) for this call. Pass to `tagReceiptValue` to annotate value later. */
668
697
  receipt_id?: string;
@@ -692,7 +721,7 @@ export interface CompanyResult {
692
721
  linkedin_url?: string;
693
722
  [key: string]: unknown;
694
723
  }
695
- export interface CompanySearchResult {
724
+ export interface CompanyFindResult {
696
725
  status: string;
697
726
  results: CompanyResult[];
698
727
  total_found: number;
@@ -704,7 +733,7 @@ export interface CompanySearchResult {
704
733
  memo?: string;
705
734
  cost?: number;
706
735
  }
707
- export interface EnrichCompanyResult {
736
+ export interface CompanyProfileResult {
708
737
  status: string;
709
738
  company: CompanyResult;
710
739
  request_id?: string;
@@ -714,7 +743,7 @@ export interface EnrichCompanyResult {
714
743
  memo?: string;
715
744
  cost?: number;
716
745
  }
717
- export interface FindEmailResult {
746
+ export interface PersonEmailResult {
718
747
  status: string;
719
748
  email: string | null;
720
749
  found: boolean;
@@ -731,7 +760,7 @@ export interface AsyncJobResult {
731
760
  request_id: string;
732
761
  status: string;
733
762
  }
734
- /** Enrichment data nested inside deep research and enrichment responses. */
763
+ /** Legacy enrichment fields retained for consumers of earlier result shapes. */
735
764
  export interface PersonEnrichment {
736
765
  displayname?: string;
737
766
  firstname?: string;
@@ -776,26 +805,41 @@ export interface PersonEnrichment {
776
805
  };
777
806
  }>;
778
807
  }
779
- export interface DeepResearchPersonResult {
808
+ /** A post can retain null metadata when the collector had no value. */
809
+ export type PersonDossierPost = Omit<PersonPostsResult['result'][number], 'platform' | 'content' | 'url' | 'posted_at'> & {
810
+ platform?: string | null;
811
+ content?: string | null;
812
+ url?: string | null;
813
+ posted_at?: string | null;
814
+ };
815
+ export interface PersonDossierResult {
780
816
  status: string;
781
817
  result: {
782
- enrichment: PersonEnrichment;
783
- following?: Record<string, unknown>[];
784
- articles?: Array<{
785
- title?: string;
786
- url?: string;
787
- source?: string;
788
- published_date?: string;
789
- snippet?: string;
790
- }>;
791
- dossier?: Record<string, unknown>;
818
+ profile: {
819
+ state: 'found';
820
+ data: PersonProfileResult['profile'];
821
+ };
822
+ social_accounts: DossierSection<SocialAccount[]>;
823
+ articles: DossierSection<Array<{
824
+ title: string | null;
825
+ url: string | null;
826
+ source: string | null;
827
+ published_date: string | null;
828
+ snippet: string | null;
829
+ }>>;
830
+ /** At most ten recent posts, using the person_posts representation. */
831
+ posts: DossierSection<PersonDossierPost[]>;
832
+ /** Section-grounded prose; one line when only the profile was found. */
833
+ summary: string;
792
834
  };
793
835
  request_id: string;
794
836
  completed_at: string;
837
+ receipt_id?: string;
838
+ decisionContext?: Record<string, unknown>;
795
839
  memo?: string;
796
840
  cost?: number;
797
841
  }
798
- export interface SocialProfilesResult {
842
+ export interface PersonSocialAccountsResult {
799
843
  status: string;
800
844
  result: Record<string, {
801
845
  url?: string;
@@ -808,7 +852,7 @@ export interface SocialProfilesResult {
808
852
  memo?: string;
809
853
  cost?: number;
810
854
  }
811
- export interface ArticleSearchResult {
855
+ export interface PersonArticlesResult {
812
856
  status: string;
813
857
  result: Array<{
814
858
  title?: string;
@@ -822,7 +866,7 @@ export interface ArticleSearchResult {
822
866
  memo?: string;
823
867
  cost?: number;
824
868
  }
825
- export interface PersonNewsfeedResult {
869
+ export interface PersonPostsResult {
826
870
  status: string;
827
871
  result: Array<{
828
872
  platform?: string;
@@ -846,7 +890,7 @@ export interface PersonInterestsResult {
846
890
  memo?: string;
847
891
  cost?: number;
848
892
  }
849
- export interface PersonInteractionsResult {
893
+ export interface PersonFollowersResult {
850
894
  status: string;
851
895
  result: {
852
896
  followers?: Array<Record<string, unknown>>;
@@ -858,7 +902,7 @@ export interface PersonInteractionsResult {
858
902
  memo?: string;
859
903
  cost?: number;
860
904
  }
861
- export interface VerifyEmailResult {
905
+ export interface PersonEmailStatusResult {
862
906
  status: string;
863
907
  email: string;
864
908
  valid: boolean;
@@ -1526,13 +1570,20 @@ export type ComputeDoneCheck =
1526
1570
  equals?: string | number | boolean;
1527
1571
  at_least?: number;
1528
1572
  }
1573
+ /** Every case of the goal is in one of `finished_states` (a state in `owner_required_for` also needs an owner in the record). With no cases the check is not met. */
1574
+ | {
1575
+ kind: 'cases';
1576
+ finished_states: string[];
1577
+ owner_required_for?: string[];
1578
+ min_cases?: number;
1579
+ }
1529
1580
  /** No check can be written: you confirm with `confirmComputeGoal`. */
1530
1581
  | {
1531
1582
  kind: 'owner';
1532
1583
  };
1533
1584
  /** What an evaluation of the done-check found. */
1534
1585
  export interface ComputeCheckResult {
1535
- kind: 'count' | 'tool_result' | 'owner';
1586
+ kind: 'count' | 'tool_result' | 'cases' | 'owner';
1536
1587
  /** `null` while waiting for the owner. */
1537
1588
  passed: boolean | null;
1538
1589
  observed?: unknown;
@@ -1669,7 +1720,7 @@ export interface ComputeBudgetStatus {
1669
1720
  created_at: string;
1670
1721
  }>;
1671
1722
  }
1672
- export interface LocalSearchOptions extends ToolOptions {
1723
+ export interface BusinessFindOptions extends ToolOptions {
1673
1724
  /** Business categories, e.g. ['hvac contractor', 'dental practice']. category or keywords required. */
1674
1725
  category?: string[];
1675
1726
  /** Free-text keywords (alternative to category). */
@@ -1682,12 +1733,12 @@ export interface LocalSearchOptions extends ToolOptions {
1682
1733
  is_chain?: boolean;
1683
1734
  /** Default 'open' drops closed businesses. */
1684
1735
  operating_status?: 'open' | 'any';
1685
- /** true = only rows with a resolvable website domain (contactable via findEmail). */
1736
+ /** true = only rows with a resolvable website domain (contactable via personEmail). */
1686
1737
  has_domain?: boolean;
1687
1738
  /** 1-500, default 100. Effective max is bounded by the vendor-call cap; see `truncated`. */
1688
1739
  limit?: number;
1689
1740
  }
1690
- export interface LocalResolveOptions extends ToolOptions {
1741
+ export interface BusinessResolveOptions extends ToolOptions {
1691
1742
  name: string;
1692
1743
  address?: string;
1693
1744
  city?: string;
@@ -1720,7 +1771,7 @@ export interface LocalResult {
1720
1771
  latitude: number | null;
1721
1772
  longitude: number | null;
1722
1773
  }
1723
- export interface LocalSearchResult {
1774
+ export interface BusinessFindResult {
1724
1775
  status: string;
1725
1776
  results: LocalResult[];
1726
1777
  total_found: number;
@@ -1734,9 +1785,9 @@ export interface LocalSearchResult {
1734
1785
  memo?: string;
1735
1786
  cost?: number;
1736
1787
  }
1737
- export interface LocalResolveResult {
1788
+ export interface BusinessResolveResult {
1738
1789
  status: string;
1739
- /** false is a completed job, not an error — the same contract as findEmail. */
1790
+ /** false is a completed job, not an error — the same contract as personEmail. */
1740
1791
  found: boolean;
1741
1792
  /** 0..1 confidence of the best candidate (0 when nothing was returned). */
1742
1793
  confidence: number;
@@ -1757,7 +1808,7 @@ export interface LocalResolveResult {
1757
1808
  * k=Combined Synopsis/Solicitation, s=Special Notice, a=Award Notice, u=Justification,
1758
1809
  * i=Intent to Bundle, g=Surplus Property. */
1759
1810
  export type GovNoticeTypeCode = 'r' | 'p' | 'o' | 'k' | 's' | 'a' | 'u' | 'i' | 'g';
1760
- export interface GovSolicitationsOptions extends ToolOptions {
1811
+ export interface RecordSolicitationsFindOptions extends ToolOptions {
1761
1812
  /** 6-digit NAICS codes, 1-20. Required. */
1762
1813
  naics: string[];
1763
1814
  /** Default ['r', 'p'] — Sources Sought + Presolicitation, the window where the requirement is still being written. */
@@ -1821,7 +1872,7 @@ export interface Solicitation {
1821
1872
  /** = notice_id */
1822
1873
  id: string;
1823
1874
  }
1824
- export interface GovSolicitationsResult {
1875
+ export interface RecordSolicitationsFindResult {
1825
1876
  status: string;
1826
1877
  results: Solicitation[];
1827
1878
  total_found: number;
@@ -1881,8 +1932,8 @@ export interface LinkedInConnectIntentIssued {
1881
1932
  requested_actions: string[];
1882
1933
  }
1883
1934
  export interface LinkedInCoverage {
1884
- provider_history: 'never' | 'requested' | 'running' | 'done' | 'error';
1885
- provider_history_completed_at: string | null;
1935
+ history_sync_status: 'never' | 'requested' | 'running' | 'done' | 'error';
1936
+ history_sync_completed_at: string | null;
1886
1937
  enumerated_as_of: string | null;
1887
1938
  enumerated_back_to: string | null;
1888
1939
  latest_message_at: string | null;
@@ -1890,8 +1941,7 @@ export interface LinkedInCoverage {
1890
1941
  message_count: number;
1891
1942
  conversation_count: number;
1892
1943
  last_incremental_at: string | null;
1893
- last_webhook_at: string | null;
1894
- /** provider_history done AND a windowless enumeration finished after it AND no pending cursor. */
1944
+ /** history_sync_status done AND a windowless enumeration finished after it AND no pending cursor. */
1895
1945
  complete: boolean;
1896
1946
  }
1897
1947
  export type LinkedInSyncState = 'reconnect_required' | 'never_synced' | 'syncing' | 'partial' | 'complete';
@@ -1907,8 +1957,8 @@ export interface LinkedInAccount {
1907
1957
  };
1908
1958
  };
1909
1959
  id: string;
1910
- /** deleted_upstream/revoked require a new connect; reconnect_required permits reconnect. */
1911
- status: 'connected' | 'reconnect_required' | 'error' | 'revoked' | 'deleted_upstream';
1960
+ /** connection_deleted/revoked require a new connect; reconnect_required permits reconnect. */
1961
+ status: 'connected' | 'reconnect_required' | 'error' | 'revoked' | 'connection_deleted';
1912
1962
  display_name: string | null;
1913
1963
  member_urn: string | null;
1914
1964
  allowed_actions: string[];
@@ -1917,19 +1967,18 @@ export interface LinkedInAccount {
1917
1967
  reconnected_at: string | null;
1918
1968
  last_status_at: string | null;
1919
1969
  revoked_at: string | null;
1920
- /** False for deleted_upstream: start a new connection instead of retrying reconnect. */
1970
+ /** False for connection_deleted: start a new connection instead of retrying reconnect. */
1921
1971
  reconnect_required: boolean;
1922
1972
  idle_revoke_at: string | null;
1923
- /** Why the grant ended: `agent`, `idle`, `ops` or `upstream_missing`. Null while active. */
1973
+ /** Why the grant ended: `agent`, `idle`, `ops` or `connection_missing`. Null while active. */
1924
1974
  revoked_reason: string | null;
1925
1975
  sync: {
1926
1976
  history_sync_status: string;
1927
1977
  history_sync_completed_at: string | null;
1928
1978
  coverage_earliest_at: string | null;
1929
1979
  coverage_latest_at: string | null;
1930
- last_full_enumeration_at: string | null;
1980
+ last_full_sync_at: string | null;
1931
1981
  last_incremental_at: string | null;
1932
- last_webhook_at: string | null;
1933
1982
  message_count: number;
1934
1983
  conversation_count: number;
1935
1984
  };
@@ -1948,12 +1997,12 @@ export interface LinkedInRevokeResult {
1948
1997
  status: 'revoked';
1949
1998
  revoked_at: string;
1950
1999
  cancelled_sends: number;
1951
- upstream_deleted: boolean;
2000
+ connection_deleted: boolean;
1952
2001
  }
1953
2002
  export interface LinkedInSyncRun {
1954
2003
  run_id: string;
1955
- kind: 'initial' | 'continue' | 'incremental' | 'reconcile' | 'history_request' | 'conversations';
1956
- trigger: 'paid' | 'scheduler' | 'webhook' | 'internal';
2004
+ kind: 'initial' | 'continue' | 'incremental' | 'refresh' | 'history' | 'conversations';
2005
+ trigger: 'paid' | 'scheduled' | 'event' | 'automatic';
1957
2006
  status: 'queued' | 'running' | 'succeeded' | 'failed' | 'paused' | 'superseded';
1958
2007
  continuation_of: string | null;
1959
2008
  has_next_cursor: boolean;
@@ -1961,15 +2010,13 @@ export interface LinkedInSyncRun {
1961
2010
  pages: number;
1962
2011
  requests: number;
1963
2012
  rate_limited: number;
1964
- cursor_resets: number;
1965
2013
  messages_seen: number;
1966
2014
  messages_inserted: number;
1967
2015
  messages_updated: number;
1968
2016
  conversations_inserted: number;
1969
2017
  earliest_seen_at: string | null;
1970
2018
  latest_seen_at: string | null;
1971
- provider_sync_status: string | null;
1972
- upstream_ms: number;
2019
+ history_sync_status: string | null;
1973
2020
  duration_ms: number | null;
1974
2021
  error_code: string | null;
1975
2022
  request_id: string | null;
@@ -1999,7 +2046,7 @@ export interface LinkedInSyncRunResult {
1999
2046
  kind: string;
2000
2047
  outcome: 'exhausted' | 'bounded' | 'partial' | 'not_claimed';
2001
2048
  needs_continuation: boolean;
2002
- provider_history: string;
2049
+ history_sync_status: string;
2003
2050
  pages: number;
2004
2051
  requests: number;
2005
2052
  messages_seen: number;
@@ -2009,12 +2056,11 @@ export interface LinkedInSyncRunResult {
2009
2056
  earliest_seen_at: string | null;
2010
2057
  latest_seen_at: string | null;
2011
2058
  has_next_cursor: boolean;
2012
- upstream_ms: number;
2013
2059
  duration_ms: number;
2014
2060
  [key: string]: unknown;
2015
2061
  }
2016
2062
  export interface LinkedInAttendee {
2017
- provider_id: string | null;
2063
+ external_id: string | null;
2018
2064
  name: string | null;
2019
2065
  is_self: boolean;
2020
2066
  profile_url: string | null;
@@ -2025,7 +2071,7 @@ export interface LinkedInAttendee {
2025
2071
  }
2026
2072
  export interface LinkedInConversation {
2027
2073
  id: string;
2028
- provider_chat_id: string;
2074
+ external_chat_id: string;
2029
2075
  name: string | null;
2030
2076
  subject: string | null;
2031
2077
  type: number | null;
@@ -2041,9 +2087,9 @@ export interface LinkedInConversation {
2041
2087
  export interface LinkedInMessage {
2042
2088
  id: string;
2043
2089
  conversation_id: string;
2044
- provider_message_id: string;
2090
+ external_message_id: string;
2045
2091
  direction: 'inbound' | 'outbound';
2046
- sender_provider_id: string | null;
2092
+ sender_external_id: string | null;
2047
2093
  sender_name: string | null;
2048
2094
  text: string | null;
2049
2095
  sent_at: string;
@@ -2114,14 +2160,14 @@ export interface LinkedInInviteResult {
2114
2160
  action_request_id: string;
2115
2161
  invitation_id: string;
2116
2162
  status: 'sent' | 'already_connected' | 'pending';
2117
- provider_invitation_id?: string | null;
2163
+ external_invitation_id?: string | null;
2118
2164
  tracked?: boolean;
2119
2165
  }
2120
2166
  export interface LinkedInWithdrawInvitationResult {
2121
2167
  action_request_id: string;
2122
2168
  invitation_id: string;
2123
2169
  status: 'cancelled_before_send' | 'withdrawn' | 'already_withdrawn' | 'not_pending';
2124
- provider_invitation_id?: string;
2170
+ external_invitation_id?: string;
2125
2171
  }
2126
2172
  export interface LinkedInReplyOptions extends ToolOptions {
2127
2173
  accountId: string;
@@ -2192,14 +2238,14 @@ export interface LinkedInReactOptions extends ToolOptions {
2192
2238
  export interface LinkedInWriteResult {
2193
2239
  action_request_id: string;
2194
2240
  status: 'sent';
2195
- provider_message_id?: string;
2241
+ external_message_id?: string;
2196
2242
  message_id?: string | null;
2197
2243
  sent_at?: string;
2198
2244
  [key: string]: unknown;
2199
2245
  }
2200
2246
  export interface LinkedInProfileViewResult extends LinkedInWriteResult {
2201
2247
  profile: {
2202
- provider_id: string | null;
2248
+ external_id: string | null;
2203
2249
  public_identifier: string | null;
2204
2250
  name: string | null;
2205
2251
  headline: string | null;
@@ -2218,6 +2264,7 @@ export interface LinkedInExperienceEntry {
2218
2264
  /** As LinkedIn gives it (string or null). */
2219
2265
  start: string | null;
2220
2266
  end: string | null;
2267
+ /** Derived: false when `end` is set; otherwise LinkedIn's flag, or (when LinkedIn gives none) true when `start` is set. */
2221
2268
  current: boolean;
2222
2269
  location: string | null;
2223
2270
  }