@cavuno/board 4.6.0 → 4.8.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/{_spec-Dm-1AieO.d.mts → _spec-DePC7a05.d.mts} +48 -3
  3. package/dist/{_spec-Dm-1AieO.d.ts → _spec-DePC7a05.d.ts} +48 -3
  4. package/dist/{blog-C5g0Tt8w.d.mts → blog-DbFr4VPW.d.mts} +1 -1
  5. package/dist/{blog-BvyEW4bf.d.ts → blog-ummlt6Uq.d.ts} +1 -1
  6. package/dist/{board-CemD1yEl.d.mts → board-DxTMBgIf.d.mts} +2 -2
  7. package/dist/{board-CW3qMKdu.d.ts → board-zWyHbyi4.d.ts} +2 -2
  8. package/dist/{breadcrumbs-Bgmklae3.d.mts → breadcrumbs-P4qh0zML.d.mts} +2 -2
  9. package/dist/{breadcrumbs-BRHiWWSf.d.ts → breadcrumbs-kbmspmfk.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-VWGF4I5C.mjs → chunk-6454IFHS.mjs} +1 -6
  12. package/dist/{chunk-GC5QWN7Y.mjs → chunk-IWWPHFK2.mjs} +4 -0
  13. package/dist/filters.d.mts +2 -2
  14. package/dist/filters.d.ts +2 -2
  15. package/dist/format.d.mts +4 -4
  16. package/dist/format.d.ts +4 -4
  17. package/dist/format.mjs +1 -1
  18. package/dist/index.d.mts +73 -14
  19. package/dist/index.d.ts +73 -14
  20. package/dist/index.js +77 -1
  21. package/dist/index.mjs +74 -2
  22. package/dist/{jobs-B0phTsdB.d.mts → jobs-DTLDt57G.d.mts} +1 -1
  23. package/dist/{jobs-f-n4_rrz.d.ts → jobs-twt5TO9l.d.ts} +1 -1
  24. package/dist/{search-C1LHejWz.d.ts → search-CHD6peIl.d.ts} +1 -1
  25. package/dist/{search-DVg1L-3s.d.mts → search-f2UNlTfv.d.mts} +1 -1
  26. package/dist/seo.d.mts +6 -6
  27. package/dist/seo.d.ts +6 -6
  28. package/dist/seo.js +1 -6
  29. package/dist/seo.mjs +1 -1
  30. package/dist/server.d.mts +5 -5
  31. package/dist/server.d.ts +5 -5
  32. package/dist/server.mjs +1 -1
  33. package/dist/sitemap.d.mts +5 -5
  34. package/dist/sitemap.d.ts +5 -5
  35. package/dist/suggest.d.mts +2 -2
  36. package/dist/suggest.d.ts +2 -2
  37. package/package.json +1 -1
  38. package/skills/cavuno-board-account/SKILL.md +4 -1
  39. package/skills/manifest.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,38 @@
3
3
  This changelog records changes that affect Board API compatibility, exported
4
4
  types, runtime behavior, or supported integration patterns.
5
5
 
6
+ ## 4.8.0 — 2026-08-23
7
+
8
+ - **Country-gated Apply flows**: compatible starters can use
9
+ `board.jobs.createApplyIntent` for opaque external-apply redirects and
10
+ `board.jobs.prepareApplyApproval` before native Apply. The browser completes
11
+ country approval directly against the Cavuno Apply gateway, then returns the
12
+ opaque receipt through the existing `board.jobs.apply` call. New job payloads
13
+ expose `applyAction`, and native Apply accepts `approvalReceipt` plus the
14
+ matching server-owned `approvalSessionKey`. These additions keep destination
15
+ URLs and client-supplied country or IP values out of the trusted decision.
16
+
17
+ ## 4.7.0 — 2026-08-23
18
+
19
+ - **`board.me.companies.recommendedTalent.list`**: candidates who fit one of
20
+ your company's jobs, best match first, for a signed-in employer. Pass the
21
+ company `slug` and the required `job`. Each item wraps the same
22
+ `talent_directory_entry` card the public directory returns, so existing
23
+ rendering works unchanged, and `jobSearchStatus` is populated even when the
24
+ candidate scoped it to employers only, because the caller is a verified
25
+ employer. Candidates who already applied to that job are excluded — they
26
+ belong to the job's pipeline, not to sourcing — as are hidden profiles and
27
+ anyone whose job-search status is `not_looking`. The response exposes no
28
+ rank, score, band, or ranker identity, and ranking improves server-side
29
+ without contract changes. The list is a bounded top slice, so expect it to
30
+ be short; an empty `data` is not a relevance signal and can arrive
31
+ mid-pagination, so follow `hasMore` / `nextCursor` rather than stopping at
32
+ the first empty page. Requires an approved `company_membership` for the
33
+ company, and the job must belong to it. A draft job answers
34
+ `409 job_not_published` rather than an empty list — only published jobs
35
+ carry the vectors matching needs. Exported types: `RecommendedTalent`,
36
+ `RecommendedTalentListQuery`.
37
+
6
38
  ## 4.6.0 — 2026-08-22
7
39
 
8
40
  - **`board.me.recommendedJobs.list`**: personalized jobs for the signed-in
@@ -127,11 +127,40 @@ interface components {
127
127
  companyName: string | null;
128
128
  } | null;
129
129
  };
130
+ ApplyApprovalPlan: {
131
+ /** @enum {string} */
132
+ object: "apply_approval_plan";
133
+ /** @enum {string} */
134
+ kind: "not_required";
135
+ } | {
136
+ /** @enum {string} */
137
+ object: "apply_approval_plan";
138
+ /** @enum {string} */
139
+ kind: "approval_required";
140
+ /** Format: uri */
141
+ approvalUrl: string;
142
+ /** Format: date-time */
143
+ expiresAt: string;
144
+ };
130
145
  ApplyBody: {
131
146
  name?: string;
132
147
  /** Format: email */
133
148
  email?: string;
134
149
  coverNote?: string;
150
+ /** @description Opaque native country-approval receipt returned by the browser-direct Apply gateway. */
151
+ approvalReceipt?: string;
152
+ /** @description Server-owned board session key that prepared the country approval. */
153
+ approvalSessionKey?: string;
154
+ };
155
+ ApplyIntent: {
156
+ /** @description Opaque one-time Apply intent token. */
157
+ id: string;
158
+ /** @enum {string} */
159
+ object: "apply_intent";
160
+ /** Format: uri */
161
+ gatewayUrl: string;
162
+ /** Format: date-time */
163
+ expiresAt: string;
135
164
  };
136
165
  Block: {
137
166
  /** @enum {string} */
@@ -329,6 +358,7 @@ interface components {
329
358
  handle: string | null;
330
359
  headline: string | null;
331
360
  location: string | null;
361
+ countryCode: string | null;
332
362
  /** @enum {string} */
333
363
  profileVisibility: "hidden" | "logged_in_only" | "public";
334
364
  /** @enum {string} */
@@ -634,6 +664,12 @@ interface components {
634
664
  object: "conversation_ref";
635
665
  conversationId: string | null;
636
666
  };
667
+ CreateApplyApprovalBody: {
668
+ sessionKey: string;
669
+ };
670
+ CreateApplyIntentBody: {
671
+ sessionKey: string;
672
+ };
637
673
  CreateCompanyBody: {
638
674
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
639
675
  website?: string;
@@ -1578,7 +1614,7 @@ interface components {
1578
1614
  /** @enum {string} */
1579
1615
  object: "notification_preference";
1580
1616
  /** @enum {string} */
1581
- channel: "messageEmails" | "applicationEmails";
1617
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
1582
1618
  subscribed: boolean;
1583
1619
  updatedAt: number | null;
1584
1620
  };
@@ -1880,6 +1916,9 @@ interface components {
1880
1916
  description: string | null;
1881
1917
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
1882
1918
  applicationUrl: string | null;
1919
+ isSponsored: boolean;
1920
+ /** @enum {string} */
1921
+ applyAction: "native" | "external_direct" | "gateway_external" | "gateway_native";
1883
1922
  /** @description Hierarchical permit selection authored by the board owner. The three `remoteWorkPermit*` and `remoteWorldwide` fields are read-only derived projections. */
1884
1923
  remotePermits: {
1885
1924
  type: string;
@@ -2172,6 +2211,11 @@ interface components {
2172
2211
  object: "recommended_job";
2173
2212
  job: components["schemas"]["PublicJobCard"];
2174
2213
  };
2214
+ RecommendedTalent: {
2215
+ /** @enum {string} */
2216
+ object: "recommended_talent";
2217
+ candidate: components["schemas"]["TalentDirectoryEntry"];
2218
+ };
2175
2219
  RedirectResolution: {
2176
2220
  /** @enum {string} */
2177
2221
  object: "redirect_resolution";
@@ -2756,7 +2800,7 @@ interface components {
2756
2800
  UnsubscribeBody: {
2757
2801
  boardUserId: string;
2758
2802
  /** @enum {string} */
2759
- channel: "messageEmails" | "applicationEmails";
2803
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2760
2804
  token: string;
2761
2805
  };
2762
2806
  UpdateApplicationFactsBody: {
@@ -2773,6 +2817,7 @@ interface components {
2773
2817
  handle?: string;
2774
2818
  headline?: string;
2775
2819
  location?: string;
2820
+ countryCode?: string | null;
2776
2821
  /** @enum {string} */
2777
2822
  profileVisibility?: "hidden" | "logged_in_only" | "public";
2778
2823
  /** @enum {string} */
@@ -2827,7 +2872,7 @@ interface components {
2827
2872
  };
2828
2873
  UpdateNotificationPreferenceBody: {
2829
2874
  /** @enum {string} */
2830
- channel: "messageEmails" | "applicationEmails";
2875
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2831
2876
  subscribed: boolean;
2832
2877
  };
2833
2878
  UpdatePasswordBody: {
@@ -127,11 +127,40 @@ interface components {
127
127
  companyName: string | null;
128
128
  } | null;
129
129
  };
130
+ ApplyApprovalPlan: {
131
+ /** @enum {string} */
132
+ object: "apply_approval_plan";
133
+ /** @enum {string} */
134
+ kind: "not_required";
135
+ } | {
136
+ /** @enum {string} */
137
+ object: "apply_approval_plan";
138
+ /** @enum {string} */
139
+ kind: "approval_required";
140
+ /** Format: uri */
141
+ approvalUrl: string;
142
+ /** Format: date-time */
143
+ expiresAt: string;
144
+ };
130
145
  ApplyBody: {
131
146
  name?: string;
132
147
  /** Format: email */
133
148
  email?: string;
134
149
  coverNote?: string;
150
+ /** @description Opaque native country-approval receipt returned by the browser-direct Apply gateway. */
151
+ approvalReceipt?: string;
152
+ /** @description Server-owned board session key that prepared the country approval. */
153
+ approvalSessionKey?: string;
154
+ };
155
+ ApplyIntent: {
156
+ /** @description Opaque one-time Apply intent token. */
157
+ id: string;
158
+ /** @enum {string} */
159
+ object: "apply_intent";
160
+ /** Format: uri */
161
+ gatewayUrl: string;
162
+ /** Format: date-time */
163
+ expiresAt: string;
135
164
  };
136
165
  Block: {
137
166
  /** @enum {string} */
@@ -329,6 +358,7 @@ interface components {
329
358
  handle: string | null;
330
359
  headline: string | null;
331
360
  location: string | null;
361
+ countryCode: string | null;
332
362
  /** @enum {string} */
333
363
  profileVisibility: "hidden" | "logged_in_only" | "public";
334
364
  /** @enum {string} */
@@ -634,6 +664,12 @@ interface components {
634
664
  object: "conversation_ref";
635
665
  conversationId: string | null;
636
666
  };
667
+ CreateApplyApprovalBody: {
668
+ sessionKey: string;
669
+ };
670
+ CreateApplyIntentBody: {
671
+ sessionKey: string;
672
+ };
637
673
  CreateCompanyBody: {
638
674
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
639
675
  website?: string;
@@ -1578,7 +1614,7 @@ interface components {
1578
1614
  /** @enum {string} */
1579
1615
  object: "notification_preference";
1580
1616
  /** @enum {string} */
1581
- channel: "messageEmails" | "applicationEmails";
1617
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
1582
1618
  subscribed: boolean;
1583
1619
  updatedAt: number | null;
1584
1620
  };
@@ -1880,6 +1916,9 @@ interface components {
1880
1916
  description: string | null;
1881
1917
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
1882
1918
  applicationUrl: string | null;
1919
+ isSponsored: boolean;
1920
+ /** @enum {string} */
1921
+ applyAction: "native" | "external_direct" | "gateway_external" | "gateway_native";
1883
1922
  /** @description Hierarchical permit selection authored by the board owner. The three `remoteWorkPermit*` and `remoteWorldwide` fields are read-only derived projections. */
1884
1923
  remotePermits: {
1885
1924
  type: string;
@@ -2172,6 +2211,11 @@ interface components {
2172
2211
  object: "recommended_job";
2173
2212
  job: components["schemas"]["PublicJobCard"];
2174
2213
  };
2214
+ RecommendedTalent: {
2215
+ /** @enum {string} */
2216
+ object: "recommended_talent";
2217
+ candidate: components["schemas"]["TalentDirectoryEntry"];
2218
+ };
2175
2219
  RedirectResolution: {
2176
2220
  /** @enum {string} */
2177
2221
  object: "redirect_resolution";
@@ -2756,7 +2800,7 @@ interface components {
2756
2800
  UnsubscribeBody: {
2757
2801
  boardUserId: string;
2758
2802
  /** @enum {string} */
2759
- channel: "messageEmails" | "applicationEmails";
2803
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2760
2804
  token: string;
2761
2805
  };
2762
2806
  UpdateApplicationFactsBody: {
@@ -2773,6 +2817,7 @@ interface components {
2773
2817
  handle?: string;
2774
2818
  headline?: string;
2775
2819
  location?: string;
2820
+ countryCode?: string | null;
2776
2821
  /** @enum {string} */
2777
2822
  profileVisibility?: "hidden" | "logged_in_only" | "public";
2778
2823
  /** @enum {string} */
@@ -2827,7 +2872,7 @@ interface components {
2827
2872
  };
2828
2873
  UpdateNotificationPreferenceBody: {
2829
2874
  /** @enum {string} */
2830
- channel: "messageEmails" | "applicationEmails";
2875
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2831
2876
  subscribed: boolean;
2832
2877
  };
2833
2878
  UpdatePasswordBody: {
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-Dm-1AieO.mjs';
1
+ import { S as Schemas } from './_spec-DePC7a05.mjs';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-Dm-1AieO.js';
1
+ import { S as Schemas } from './_spec-DePC7a05.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-Dm-1AieO.mjs';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-B0phTsdB.mjs';
1
+ import { S as Schemas } from './_spec-DePC7a05.mjs';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-DTLDt57G.mjs';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /** A market (sector) a company operates in — name + its source slug. */
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-Dm-1AieO.js';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-f-n4_rrz.js';
1
+ import { S as Schemas } from './_spec-DePC7a05.js';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-twt5TO9l.js';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /** A market (sector) a company operates in — name + its source slug. */
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CemD1yEl.mjs';
2
- import { P as PublicJob } from './jobs-B0phTsdB.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-DxTMBgIf.mjs';
2
+ import { P as PublicJob } from './jobs-DTLDt57G.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CW3qMKdu.js';
2
- import { P as PublicJob } from './jobs-f-n4_rrz.js';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-zWyHbyi4.js';
2
+ import { P as PublicJob } from './jobs-twt5TO9l.js';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any