@cavuno/board 4.9.0 → 4.11.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 (40) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/{_spec-B9Ah8dNs.d.mts → _spec-Ck02NvUF.d.mts} +72 -1
  3. package/dist/{_spec-B9Ah8dNs.d.ts → _spec-Ck02NvUF.d.ts} +72 -1
  4. package/dist/{blog-BmqWfLZi.d.mts → blog-CZUXieNu.d.mts} +1 -1
  5. package/dist/{blog-bh07fZ8Q.d.ts → blog-ClwNmr_N.d.ts} +1 -1
  6. package/dist/{board-De8nLbk7.d.ts → board-6XZx1x5M.d.ts} +2 -2
  7. package/dist/{board-B4jLqmxn.d.mts → board-wHyyyAhT.d.mts} +2 -2
  8. package/dist/{breadcrumbs-B1HVufC7.d.ts → breadcrumbs-CPaEpS6h.d.ts} +2 -2
  9. package/dist/{breadcrumbs-BVQL2dNY.d.mts → breadcrumbs-DJjtyjlf.d.mts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-T46JASKG.mjs → chunk-XEJWXRLK.mjs} +7 -0
  12. package/dist/filters.d.mts +2 -2
  13. package/dist/filters.d.ts +2 -2
  14. package/dist/format.d.mts +4 -4
  15. package/dist/format.d.ts +4 -4
  16. package/dist/index.d.mts +93 -14
  17. package/dist/index.d.ts +93 -14
  18. package/dist/index.js +118 -4
  19. package/dist/index.mjs +112 -5
  20. package/dist/{jobs-Iv6Wkvvf.d.ts → jobs-3BAwXBxR.d.ts} +1 -1
  21. package/dist/{jobs-B7q3BgIK.d.mts → jobs-iG5udM2R.d.mts} +1 -1
  22. package/dist/{search-DC0jatQN.d.mts → search-5DzB-OrD.d.mts} +1 -1
  23. package/dist/{search-CbDZwdyl.d.ts → search-kfabRi5l.d.ts} +1 -1
  24. package/dist/{seo-HCE7aCkh.d.mts → seo-C_Mt1i-Y.d.mts} +1 -1
  25. package/dist/{seo-BDFUuvXM.d.ts → seo-DndU15zg.d.ts} +1 -1
  26. package/dist/seo-files.d.mts +2 -2
  27. package/dist/seo-files.d.ts +2 -2
  28. package/dist/seo.d.mts +6 -6
  29. package/dist/seo.d.ts +6 -6
  30. package/dist/server.d.mts +6 -6
  31. package/dist/server.d.ts +6 -6
  32. package/dist/server.mjs +1 -1
  33. package/dist/sitemap.d.mts +6 -6
  34. package/dist/sitemap.d.ts +6 -6
  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-setup/SKILL.md +1 -0
  39. package/skills/cavuno-board-talent-access/SKILL.md +149 -0
  40. package/skills/manifest.json +8 -1
package/dist/index.js CHANGED
@@ -179,6 +179,13 @@ var BOARD_API_ERROR_CODES = [
179
179
  "paywall_no_candidate_profile",
180
180
  "paywall_no_recurring_subscription",
181
181
  "paywall_offer_not_found",
182
+ // Employer talent-access paywall
183
+ "talent_access_unavailable",
184
+ "company_required",
185
+ "already_on_plan",
186
+ "talent_access_required",
187
+ "messaging_talent_access_required",
188
+ "stripe_not_connected",
182
189
  // Public job posting
183
190
  "job_posting_logo_lookup_unavailable",
184
191
  "job_posting_logo_not_found",
@@ -335,7 +342,7 @@ async function clearSession(storage) {
335
342
  }
336
343
 
337
344
  // src/version.ts
338
- var SDK_VERSION = "4.9.0";
345
+ var SDK_VERSION = "4.11.0";
339
346
 
340
347
  // src/client.ts
341
348
  function isRawBody(body) {
@@ -1843,6 +1850,29 @@ function meNamespace(client) {
1843
1850
  );
1844
1851
  }
1845
1852
  },
1853
+ /**
1854
+ * Stripe Customer Portal for a company I am an approved member of.
1855
+ * Surfaces every subscription on the company's Stripe customer (job
1856
+ * posting + talent access). Not a talent-access portal — candidate
1857
+ * `me.access.portal` is a different buyer.
1858
+ */
1859
+ billingPortal: {
1860
+ /**
1861
+ * Mint a Stripe Customer Portal session. Optional `returnPath` is
1862
+ * resolved against the board origin.
1863
+ *
1864
+ * @example
1865
+ * const { url } = await board.me.companies.billingPortal.create('acme', {
1866
+ * returnPath: '/employers/billing',
1867
+ * });
1868
+ */
1869
+ create(slug, body, options) {
1870
+ return client.fetch(
1871
+ `/me/companies/${encodeURIComponent(slug)}/billing-portal`,
1872
+ { ...options, method: "POST", body }
1873
+ );
1874
+ }
1875
+ },
1846
1876
  /**
1847
1877
  * The read-only reporting funnel that backs the hosted employer jobs
1848
1878
  * table: per-job views / apply clicks / native applications,
@@ -2107,9 +2137,11 @@ function meNamespace(client) {
2107
2137
  }
2108
2138
  },
2109
2139
  /**
2110
- * The viewer's talent entitlement on this board — "does this
2111
- * employer have talent access?" for gating a Message-vs-upsell CTA.
2112
- * Candidates and unaffiliated viewers get `hasTalentAccess: false`.
2140
+ * The employer talent-access paywall — "does this employer have
2141
+ * talent access?" plus remaining company-scoped unlock/message credits
2142
+ * and the charging model. Candidates and unaffiliated viewers get
2143
+ * `hasTalentAccess: false`. Message credits spend inline on
2144
+ * `conversations.start` (no separate spend endpoint).
2113
2145
  *
2114
2146
  * @example
2115
2147
  * const { hasTalentAccess } = await board.me.talentAccess.retrieve();
@@ -2117,12 +2149,94 @@ function meNamespace(client) {
2117
2149
  talentAccess: {
2118
2150
  /**
2119
2151
  * Retrieve the viewer's talent entitlement. Never cache — per-user.
2152
+ * Credits are company-scoped; `companyId` is set when the viewer has
2153
+ * exactly one approved membership, otherwise `null` (pass `companyId`
2154
+ * on writes — `company_required` with more than one).
2120
2155
  *
2121
2156
  * @example
2122
2157
  * const access = await board.me.talentAccess.retrieve();
2123
2158
  */
2124
2159
  retrieve(options) {
2125
2160
  return client.fetch("/me/talent-access", options);
2161
+ },
2162
+ /**
2163
+ * Per-candidate unlock and credit state for the opaque `/p/{id}`
2164
+ * profile route. Named `/p/{handle}` is the share bypass.
2165
+ *
2166
+ * @example
2167
+ * const gate = await board.me.talentAccess.retrieveCandidate(candidateId);
2168
+ */
2169
+ retrieveCandidate(candidateId, options) {
2170
+ return client.fetch(
2171
+ `/me/talent-access/candidates/${encodeURIComponent(candidateId)}`,
2172
+ options
2173
+ );
2174
+ },
2175
+ /**
2176
+ * Start embedded checkout for a public `talent_access` plan and return
2177
+ * a connected-account mount kit. Same shape as candidate-access
2178
+ * checkout; session metadata is `origin: talent_access`. `companyId`
2179
+ * is required when the viewer has more than one approved membership
2180
+ * (`company_required`).
2181
+ *
2182
+ * @example
2183
+ * const kit = await board.me.talentAccess.checkout({
2184
+ * planId,
2185
+ * returnPath: '/employers',
2186
+ * colorMode: 'light',
2187
+ * });
2188
+ */
2189
+ checkout(body, options) {
2190
+ return client.fetch(
2191
+ "/me/talent-access/checkout",
2192
+ { ...options, method: "POST", body }
2193
+ );
2194
+ },
2195
+ /**
2196
+ * Poll a talent-access checkout session: `open` (re-mountable via
2197
+ * `clientSecret`), `complete`, or `expired`. The session must be
2198
+ * `origin: talent_access` for this board user.
2199
+ *
2200
+ * @example
2201
+ * const s = await board.me.talentAccess.retrieveCheckout(kit.sessionId);
2202
+ */
2203
+ retrieveCheckout(sessionId, options) {
2204
+ return client.fetch(
2205
+ `/me/talent-access/checkout/${encodeURIComponent(sessionId)}`,
2206
+ options
2207
+ );
2208
+ },
2209
+ /**
2210
+ * Spend one profile-unlock credit. Idempotent: already-unlocked
2211
+ * returns `{ alreadyUnlocked: true }` with no decrement. Credits are
2212
+ * company-scoped; `companyId` is required with multiple approved
2213
+ * memberships (`company_required`).
2214
+ *
2215
+ * @example
2216
+ * const unlock = await board.me.talentAccess.unlock({ candidateId });
2217
+ */
2218
+ unlock(body, options) {
2219
+ return client.fetch("/me/talent-access/unlocks", {
2220
+ ...options,
2221
+ method: "POST",
2222
+ body
2223
+ });
2224
+ },
2225
+ /**
2226
+ * Swap the company's primary talent_access subscription to `planId`
2227
+ * in place (prorated). Never a second checkout — Checkout would mint
2228
+ * a parallel subscription. Requires an existing talent_access sub.
2229
+ * `companyId` is required with multiple approved memberships.
2230
+ *
2231
+ * @example
2232
+ * await board.me.talentAccess.upgrade({ planId });
2233
+ */
2234
+ upgrade(body, options) {
2235
+ return client.fetch("/me/talent-access/upgrade", {
2236
+ ...options,
2237
+ method: "POST",
2238
+ body
2239
+ });
2126
2240
  }
2127
2241
  },
2128
2242
  /**
package/dist/index.mjs CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  isValidationError,
16
16
  resolveStorage,
17
17
  writeSession
18
- } from "./chunk-T46JASKG.mjs";
18
+ } from "./chunk-XEJWXRLK.mjs";
19
19
  import {
20
20
  paginate
21
21
  } from "./chunk-DLSO6XXY.mjs";
@@ -39,7 +39,7 @@ function toSearchParams(query) {
39
39
  }
40
40
 
41
41
  // src/version.ts
42
- var SDK_VERSION = "4.9.0";
42
+ var SDK_VERSION = "4.11.0";
43
43
 
44
44
  // src/client.ts
45
45
  function isRawBody(body) {
@@ -1547,6 +1547,29 @@ function meNamespace(client) {
1547
1547
  );
1548
1548
  }
1549
1549
  },
1550
+ /**
1551
+ * Stripe Customer Portal for a company I am an approved member of.
1552
+ * Surfaces every subscription on the company's Stripe customer (job
1553
+ * posting + talent access). Not a talent-access portal — candidate
1554
+ * `me.access.portal` is a different buyer.
1555
+ */
1556
+ billingPortal: {
1557
+ /**
1558
+ * Mint a Stripe Customer Portal session. Optional `returnPath` is
1559
+ * resolved against the board origin.
1560
+ *
1561
+ * @example
1562
+ * const { url } = await board.me.companies.billingPortal.create('acme', {
1563
+ * returnPath: '/employers/billing',
1564
+ * });
1565
+ */
1566
+ create(slug, body, options) {
1567
+ return client.fetch(
1568
+ `/me/companies/${encodeURIComponent(slug)}/billing-portal`,
1569
+ { ...options, method: "POST", body }
1570
+ );
1571
+ }
1572
+ },
1550
1573
  /**
1551
1574
  * The read-only reporting funnel that backs the hosted employer jobs
1552
1575
  * table: per-job views / apply clicks / native applications,
@@ -1811,9 +1834,11 @@ function meNamespace(client) {
1811
1834
  }
1812
1835
  },
1813
1836
  /**
1814
- * The viewer's talent entitlement on this board — "does this
1815
- * employer have talent access?" for gating a Message-vs-upsell CTA.
1816
- * Candidates and unaffiliated viewers get `hasTalentAccess: false`.
1837
+ * The employer talent-access paywall — "does this employer have
1838
+ * talent access?" plus remaining company-scoped unlock/message credits
1839
+ * and the charging model. Candidates and unaffiliated viewers get
1840
+ * `hasTalentAccess: false`. Message credits spend inline on
1841
+ * `conversations.start` (no separate spend endpoint).
1817
1842
  *
1818
1843
  * @example
1819
1844
  * const { hasTalentAccess } = await board.me.talentAccess.retrieve();
@@ -1821,12 +1846,94 @@ function meNamespace(client) {
1821
1846
  talentAccess: {
1822
1847
  /**
1823
1848
  * Retrieve the viewer's talent entitlement. Never cache — per-user.
1849
+ * Credits are company-scoped; `companyId` is set when the viewer has
1850
+ * exactly one approved membership, otherwise `null` (pass `companyId`
1851
+ * on writes — `company_required` with more than one).
1824
1852
  *
1825
1853
  * @example
1826
1854
  * const access = await board.me.talentAccess.retrieve();
1827
1855
  */
1828
1856
  retrieve(options) {
1829
1857
  return client.fetch("/me/talent-access", options);
1858
+ },
1859
+ /**
1860
+ * Per-candidate unlock and credit state for the opaque `/p/{id}`
1861
+ * profile route. Named `/p/{handle}` is the share bypass.
1862
+ *
1863
+ * @example
1864
+ * const gate = await board.me.talentAccess.retrieveCandidate(candidateId);
1865
+ */
1866
+ retrieveCandidate(candidateId, options) {
1867
+ return client.fetch(
1868
+ `/me/talent-access/candidates/${encodeURIComponent(candidateId)}`,
1869
+ options
1870
+ );
1871
+ },
1872
+ /**
1873
+ * Start embedded checkout for a public `talent_access` plan and return
1874
+ * a connected-account mount kit. Same shape as candidate-access
1875
+ * checkout; session metadata is `origin: talent_access`. `companyId`
1876
+ * is required when the viewer has more than one approved membership
1877
+ * (`company_required`).
1878
+ *
1879
+ * @example
1880
+ * const kit = await board.me.talentAccess.checkout({
1881
+ * planId,
1882
+ * returnPath: '/employers',
1883
+ * colorMode: 'light',
1884
+ * });
1885
+ */
1886
+ checkout(body, options) {
1887
+ return client.fetch(
1888
+ "/me/talent-access/checkout",
1889
+ { ...options, method: "POST", body }
1890
+ );
1891
+ },
1892
+ /**
1893
+ * Poll a talent-access checkout session: `open` (re-mountable via
1894
+ * `clientSecret`), `complete`, or `expired`. The session must be
1895
+ * `origin: talent_access` for this board user.
1896
+ *
1897
+ * @example
1898
+ * const s = await board.me.talentAccess.retrieveCheckout(kit.sessionId);
1899
+ */
1900
+ retrieveCheckout(sessionId, options) {
1901
+ return client.fetch(
1902
+ `/me/talent-access/checkout/${encodeURIComponent(sessionId)}`,
1903
+ options
1904
+ );
1905
+ },
1906
+ /**
1907
+ * Spend one profile-unlock credit. Idempotent: already-unlocked
1908
+ * returns `{ alreadyUnlocked: true }` with no decrement. Credits are
1909
+ * company-scoped; `companyId` is required with multiple approved
1910
+ * memberships (`company_required`).
1911
+ *
1912
+ * @example
1913
+ * const unlock = await board.me.talentAccess.unlock({ candidateId });
1914
+ */
1915
+ unlock(body, options) {
1916
+ return client.fetch("/me/talent-access/unlocks", {
1917
+ ...options,
1918
+ method: "POST",
1919
+ body
1920
+ });
1921
+ },
1922
+ /**
1923
+ * Swap the company's primary talent_access subscription to `planId`
1924
+ * in place (prorated). Never a second checkout — Checkout would mint
1925
+ * a parallel subscription. Requires an existing talent_access sub.
1926
+ * `companyId` is required with multiple approved memberships.
1927
+ *
1928
+ * @example
1929
+ * await board.me.talentAccess.upgrade({ planId });
1930
+ */
1931
+ upgrade(body, options) {
1932
+ return client.fetch("/me/talent-access/upgrade", {
1933
+ ...options,
1934
+ method: "POST",
1935
+ body
1936
+ });
1830
1937
  }
1831
1938
  },
1832
1939
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.js';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.mjs';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.mjs';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.js';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.mjs';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.mjs';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B9Ah8dNs.js';
1
+ import { S as Schemas } from './_spec-Ck02NvUF.js';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-HCE7aCkh.mjs';
2
- import './_spec-B9Ah8dNs.mjs';
1
+ import { B as BoardSeo } from './seo-C_Mt1i-Y.mjs';
2
+ import './_spec-Ck02NvUF.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-BDFUuvXM.js';
2
- import './_spec-B9Ah8dNs.js';
1
+ import { B as BoardSeo } from './seo-DndU15zg.js';
2
+ import './_spec-Ck02NvUF.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BmqWfLZi.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-BVQL2dNY.mjs';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-BVQL2dNY.mjs';
4
- import './_spec-B9Ah8dNs.mjs';
5
- import './board-B4jLqmxn.mjs';
6
- import './jobs-B7q3BgIK.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CZUXieNu.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-DJjtyjlf.mjs';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-DJjtyjlf.mjs';
4
+ import './_spec-Ck02NvUF.mjs';
5
+ import './board-wHyyyAhT.mjs';
6
+ import './jobs-iG5udM2R.mjs';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/seo.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-bh07fZ8Q.js';
2
- import { e as JsonLdObject } from './breadcrumbs-B1HVufC7.js';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-B1HVufC7.js';
4
- import './_spec-B9Ah8dNs.js';
5
- import './board-De8nLbk7.js';
6
- import './jobs-Iv6Wkvvf.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-ClwNmr_N.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-CPaEpS6h.js';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-CPaEpS6h.js';
4
+ import './_spec-Ck02NvUF.js';
5
+ import './board-6XZx1x5M.js';
6
+ import './jobs-3BAwXBxR.js';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/server.d.mts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-B9Ah8dNs.mjs';
3
- import './search-DC0jatQN.mjs';
4
- import './board-B4jLqmxn.mjs';
5
- import './jobs-B7q3BgIK.mjs';
6
- import './seo-HCE7aCkh.mjs';
7
- import './blog-BmqWfLZi.mjs';
2
+ import './_spec-Ck02NvUF.mjs';
3
+ import './search-5DzB-OrD.mjs';
4
+ import './board-wHyyyAhT.mjs';
5
+ import './jobs-iG5udM2R.mjs';
6
+ import './seo-C_Mt1i-Y.mjs';
7
+ import './blog-CZUXieNu.mjs';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-B9Ah8dNs.js';
3
- import './search-CbDZwdyl.js';
4
- import './board-De8nLbk7.js';
5
- import './jobs-Iv6Wkvvf.js';
6
- import './seo-BDFUuvXM.js';
7
- import './blog-bh07fZ8Q.js';
2
+ import './_spec-Ck02NvUF.js';
3
+ import './search-kfabRi5l.js';
4
+ import './board-6XZx1x5M.js';
5
+ import './jobs-3BAwXBxR.js';
6
+ import './seo-DndU15zg.js';
7
+ import './blog-ClwNmr_N.js';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  isNoStore,
3
3
  isUnauthorized,
4
4
  scopeToken
5
- } from "./chunk-T46JASKG.mjs";
5
+ } from "./chunk-XEJWXRLK.mjs";
6
6
 
7
7
  // src/server/cookie.ts
8
8
  var COOKIE_ATTRIBUTES = "Path=/; HttpOnly; Secure; SameSite=Lax";
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-B9Ah8dNs.mjs';
3
- import './search-DC0jatQN.mjs';
4
- import './board-B4jLqmxn.mjs';
5
- import './jobs-B7q3BgIK.mjs';
6
- import './seo-HCE7aCkh.mjs';
7
- import './blog-BmqWfLZi.mjs';
2
+ import './_spec-Ck02NvUF.mjs';
3
+ import './search-5DzB-OrD.mjs';
4
+ import './board-wHyyyAhT.mjs';
5
+ import './jobs-iG5udM2R.mjs';
6
+ import './seo-C_Mt1i-Y.mjs';
7
+ import './blog-CZUXieNu.mjs';
8
8
 
9
9
  /**
10
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
package/dist/sitemap.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-B9Ah8dNs.js';
3
- import './search-CbDZwdyl.js';
4
- import './board-De8nLbk7.js';
5
- import './jobs-Iv6Wkvvf.js';
6
- import './seo-BDFUuvXM.js';
7
- import './blog-bh07fZ8Q.js';
2
+ import './_spec-Ck02NvUF.js';
3
+ import './search-kfabRi5l.js';
4
+ import './board-6XZx1x5M.js';
5
+ import './jobs-3BAwXBxR.js';
6
+ import './seo-DndU15zg.js';
7
+ import './blog-ClwNmr_N.js';
8
8
 
9
9
  /**
10
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
@@ -1,5 +1,5 @@
1
- import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-DC0jatQN.mjs';
2
- import './_spec-B9Ah8dNs.mjs';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-5DzB-OrD.mjs';
2
+ import './_spec-Ck02NvUF.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
package/dist/suggest.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-CbDZwdyl.js';
2
- import './_spec-B9Ah8dNs.js';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-kfabRi5l.js';
2
+ import './_spec-Ck02NvUF.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cavuno/board",
3
- "version": "4.9.0",
3
+ "version": "4.11.0",
4
4
  "description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -64,6 +64,7 @@ Route each enabled capability to its focused skill:
64
64
  | Saved jobs and applications | `cavuno-board-applications` |
65
65
  | Messaging | `cavuno-board-messaging` |
66
66
  | Candidate paywall | `cavuno-board-paywall` |
67
+ | Employer talent access | `cavuno-board-talent-access` |
67
68
  | Public job posting | `cavuno-board-post-a-job` |
68
69
  | Localized chrome | `cavuno-board-i18n` |
69
70
  | Metadata and structured data | `cavuno-board-seo` |