@cavuno/board 2.0.1 → 2.0.3

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 (43) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/CONTRIBUTING.md +16 -5
  3. package/SECURITY.md +1 -1
  4. package/TRADEMARKS.md +1 -1
  5. package/dist/{board-DKXyxwNN.d.ts → board-3Xj_Y-Tx.d.ts} +1 -1
  6. package/dist/{board-QFeHT4UN.d.mts → board-pNN710Zc.d.mts} +1 -1
  7. package/dist/doctor.js +1 -1
  8. package/dist/filters.d.mts +3 -3
  9. package/dist/filters.d.ts +3 -3
  10. package/dist/format.d.mts +5 -5
  11. package/dist/format.d.ts +5 -5
  12. package/dist/index.d.mts +9 -9
  13. package/dist/index.d.ts +9 -9
  14. package/dist/index.js +1 -1
  15. package/dist/index.mjs +1 -1
  16. package/dist/{jobs-DTnCZGtb.d.ts → jobs-C4qRfCdP.d.ts} +1 -1
  17. package/dist/{jobs-CuRzTDb1.d.mts → jobs-k84C0v_8.d.mts} +1 -1
  18. package/dist/route-contract.d.mts +2 -2
  19. package/dist/route-contract.d.ts +2 -2
  20. package/dist/{salaries-QoNpzRCT.d.ts → salaries--J5mTylN.d.ts} +2 -2
  21. package/dist/{salaries-BOpR51Ny.d.mts → salaries-C9YLO5NG.d.mts} +2 -2
  22. package/dist/{search-f93nrSg3.d.mts → search-CE_qQiM7.d.mts} +2 -2
  23. package/dist/{search-B5ROY6PK.d.ts → search-CLRQ_El9.d.ts} +2 -2
  24. package/dist/seo.d.mts +5 -5
  25. package/dist/seo.d.ts +5 -5
  26. package/dist/server.d.mts +5 -5
  27. package/dist/server.d.ts +5 -5
  28. package/dist/sitemap.d.mts +5 -5
  29. package/dist/sitemap.d.ts +5 -5
  30. package/dist/skills.js +1 -1
  31. package/dist/suggest.d.mts +2 -2
  32. package/dist/suggest.d.ts +2 -2
  33. package/dist/well-known.d.mts +1 -1
  34. package/dist/well-known.d.ts +1 -1
  35. package/package.json +27 -6
  36. package/skills/cavuno-board-i18n/SKILL.md +2 -3
  37. package/skills/manifest.json +1 -1
  38. /package/dist/{_spec-sW85fuvT.d.mts → _spec-BKtVFcV9.d.mts} +0 -0
  39. /package/dist/{_spec-sW85fuvT.d.ts → _spec-BKtVFcV9.d.ts} +0 -0
  40. /package/dist/{roles-vY0AXhoc.d.mts → roles-DBgzkvEt.d.mts} +0 -0
  41. /package/dist/{roles-vY0AXhoc.d.ts → roles-DBgzkvEt.d.ts} +0 -0
  42. /package/dist/{ui-copy-CL-VN1xb.d.mts → ui-copy-CCkz6CVF.d.mts} +0 -0
  43. /package/dist/{ui-copy-CL-VN1xb.d.ts → ui-copy-CCkz6CVF.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,8 +1,19 @@
1
1
  # Changelog
2
2
 
3
- This changelog starts with the standalone public SDK. It records changes that
4
- affect Board API compatibility, exported types, runtime behavior, or supported
5
- integration patterns.
3
+ This changelog records changes that affect Board API compatibility, exported
4
+ types, runtime behavior, or supported integration patterns.
5
+
6
+ ## 2.0.3 — 2026-07-24
7
+
8
+ - Added verifiable npm provenance generated from the public Cavuno SDK source
9
+ repository.
10
+ - Moved publishing to short-lived GitHub Actions credentials and made
11
+ dependency installation reproducible with a committed lockfile.
12
+
13
+ ## 2.0.2 — 2026-07-24
14
+
15
+ - Changed the public contact address to `hi@cavuno.com`.
16
+ - Simplified repository documentation for external contributors.
6
17
 
7
18
  ## 2.0.1 — 2026-07-24
8
19
 
package/CONTRIBUTING.md CHANGED
@@ -6,9 +6,9 @@ Thank you for helping improve the Cavuno Board SDK.
6
6
 
7
7
  - Search existing issues and pull requests.
8
8
  - Open an issue first for significant behavior or interface changes.
9
- - Never commit API keys, access tokens, customer data, private API contracts,
10
- internal infrastructure details, or generated artifacts from an unfiltered
11
- service specification.
9
+ - Never commit API keys, access tokens, customer data, non-public information,
10
+ vulnerability details, or generated artifacts from an unreviewed
11
+ specification.
12
12
 
13
13
  ## Development
14
14
 
@@ -18,8 +18,19 @@ Thank you for helping improve the Cavuno Board SDK.
18
18
  4. Build with `pnpm build`.
19
19
  5. Run `pnpm test`, `pnpm typecheck`, and `pnpm check:publish`.
20
20
 
21
- Keep changes focused and add tests for changed behavior. Public SDK methods
22
- must use the documented Board API rather than private service endpoints.
21
+ Keep changes focused and add tests for changed behavior. SDK methods must use
22
+ the documented Board API.
23
23
 
24
24
  By submitting a contribution, you agree that it may be distributed under the
25
25
  MIT License and that you have the right to submit it.
26
+
27
+ ## Releases
28
+
29
+ Releases are published from `main` by the repository's `Publish to npm`
30
+ workflow. Maintainers update the package version and changelog in a pull
31
+ request, merge it after CI passes, and then run the publishing workflow from
32
+ `main`.
33
+
34
+ The workflow uses npm trusted publishing with short-lived GitHub Actions
35
+ credentials. Published packages include provenance linking the npm artifact to
36
+ the public source commit and workflow that produced it.
package/SECURITY.md CHANGED
@@ -9,7 +9,7 @@ the latest release before reporting an issue that may already be fixed.
9
9
 
10
10
  Do not open a public issue for a suspected vulnerability.
11
11
 
12
- Email support@cavuno.com with:
12
+ Email hi@cavuno.com with:
13
13
 
14
14
  - the affected package and version;
15
15
  - a clear description of the impact;
package/TRADEMARKS.md CHANGED
@@ -13,4 +13,4 @@ official Cavuno product.
13
13
  Do not use Cavuno branding in a project name, package name, domain, social
14
14
  account, or logo in a way that could confuse people about its source.
15
15
 
16
- For permission beyond these nominative uses, contact support@cavuno.com.
16
+ For permission beyond these nominative uses, contact hi@cavuno.com.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.js';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.js';
2
2
 
3
3
  type PublicBoard = Schemas['PublicBoardContext'];
4
4
  type PublicBoardFeatures = PublicBoard['features'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.mjs';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.mjs';
2
2
 
3
3
  type PublicBoard = Schemas['PublicBoardContext'];
4
4
  type PublicBoardFeatures = PublicBoard['features'];
package/dist/doctor.js CHANGED
@@ -24,7 +24,7 @@ __export(doctor_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(doctor_exports);
26
26
 
27
- // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.14_tsx@4.21.0_typescript@5.9.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
27
+ // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.22_tsx@4.23.1_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
28
28
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
29
29
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
30
30
 
@@ -1,6 +1,6 @@
1
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.mjs';
2
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-CuRzTDb1.mjs';
3
- import './_spec-sW85fuvT.mjs';
1
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.mjs';
2
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-k84C0v_8.mjs';
3
+ import './_spec-BKtVFcV9.mjs';
4
4
 
5
5
  declare const REMOTE_OPTIONS: readonly RemoteOption[];
6
6
  /**
package/dist/filters.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.js';
2
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-DTnCZGtb.js';
3
- import './_spec-sW85fuvT.js';
1
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.js';
2
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-C4qRfCdP.js';
3
+ import './_spec-BKtVFcV9.js';
4
4
 
5
5
  declare const REMOTE_OPTIONS: readonly RemoteOption[];
6
6
  /**
package/dist/format.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-CuRzTDb1.mjs';
2
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.mjs';
3
- export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CL-VN1xb.mjs';
4
- import { C as CustomFieldDefinition } from './board-QFeHT4UN.mjs';
5
- import './_spec-sW85fuvT.mjs';
1
+ import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-k84C0v_8.mjs';
2
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.mjs';
3
+ export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CCkz6CVF.mjs';
4
+ import { C as CustomFieldDefinition } from './board-pNN710Zc.mjs';
5
+ import './_spec-BKtVFcV9.mjs';
6
6
 
7
7
  /**
8
8
  * Date display helpers in the board language (required leading parameter,
package/dist/format.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-DTnCZGtb.js';
2
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.js';
3
- export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CL-VN1xb.js';
4
- import { C as CustomFieldDefinition } from './board-DKXyxwNN.js';
5
- import './_spec-sW85fuvT.js';
1
+ import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-C4qRfCdP.js';
2
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.js';
3
+ export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CCkz6CVF.js';
4
+ import { C as CustomFieldDefinition } from './board-3Xj_Y-Tx.js';
5
+ import './_spec-BKtVFcV9.js';
6
6
 
7
7
  /**
8
8
  * Date display helpers in the board language (required leading parameter,
package/dist/index.d.mts CHANGED
@@ -1,11 +1,11 @@
1
- import { S as Schemas, c as components } from './_spec-sW85fuvT.mjs';
2
- import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-f93nrSg3.mjs';
3
- export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-f93nrSg3.mjs';
4
- export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-QFeHT4UN.mjs';
5
- import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-CuRzTDb1.mjs';
6
- export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-CuRzTDb1.mjs';
7
- import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-BOpR51Ny.mjs';
8
- export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-BOpR51Ny.mjs';
1
+ import { S as Schemas, c as components } from './_spec-BKtVFcV9.mjs';
2
+ import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CE_qQiM7.mjs';
3
+ export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, R as REFRESH_TOKEN_KEY, f as SuggestResult, g as SuggestionItem, T as TermSuggestion } from './search-CE_qQiM7.mjs';
4
+ export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-pNN710Zc.mjs';
5
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-k84C0v_8.mjs';
6
+ export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-k84C0v_8.mjs';
7
+ import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-C9YLO5NG.mjs';
8
+ export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-C9YLO5NG.mjs';
9
9
 
10
10
  /**
11
11
  * Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
141
141
  * constant because the package is platform-neutral and cannot read
142
142
  * package.json at runtime.
143
143
  */
144
- declare const SDK_VERSION = "2.0.1";
144
+ declare const SDK_VERSION = "2.0.3";
145
145
 
146
146
  type SavedJob = Schemas['SavedJob'];
147
147
  type SavedJobsListQuery = {
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { S as Schemas, c as components } from './_spec-sW85fuvT.js';
2
- import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-B5ROY6PK.js';
3
- export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-B5ROY6PK.js';
4
- export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-DKXyxwNN.js';
5
- import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-DTnCZGtb.js';
6
- export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-DTnCZGtb.js';
7
- import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-QoNpzRCT.js';
8
- export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-QoNpzRCT.js';
1
+ import { S as Schemas, c as components } from './_spec-BKtVFcV9.js';
2
+ import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CLRQ_El9.js';
3
+ export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, R as REFRESH_TOKEN_KEY, f as SuggestResult, g as SuggestionItem, T as TermSuggestion } from './search-CLRQ_El9.js';
4
+ export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-3Xj_Y-Tx.js';
5
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-C4qRfCdP.js';
6
+ export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-C4qRfCdP.js';
7
+ import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries--J5mTylN.js';
8
+ export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries--J5mTylN.js';
9
9
 
10
10
  /**
11
11
  * Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
141
141
  * constant because the package is platform-neutral and cannot read
142
142
  * package.json at runtime.
143
143
  */
144
- declare const SDK_VERSION = "2.0.1";
144
+ declare const SDK_VERSION = "2.0.3";
145
145
 
146
146
  type SavedJob = Schemas['SavedJob'];
147
147
  type SavedJobsListQuery = {
package/dist/index.js CHANGED
@@ -312,7 +312,7 @@ async function clearSession(storage) {
312
312
  }
313
313
 
314
314
  // src/version.ts
315
- var SDK_VERSION = "2.0.1";
315
+ var SDK_VERSION = "2.0.3";
316
316
 
317
317
  // src/client.ts
318
318
  function isRawBody(body) {
package/dist/index.mjs CHANGED
@@ -265,7 +265,7 @@ async function clearSession(storage) {
265
265
  }
266
266
 
267
267
  // src/version.ts
268
- var SDK_VERSION = "2.0.1";
268
+ var SDK_VERSION = "2.0.3";
269
269
 
270
270
  // src/client.ts
271
271
  function isRawBody(body) {
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.js';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.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-sW85fuvT.mjs';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,5 +1,5 @@
1
- import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-vY0AXhoc.mjs';
2
- export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-vY0AXhoc.mjs';
1
+ import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-DBgzkvEt.mjs';
2
+ export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-DBgzkvEt.mjs';
3
3
 
4
4
  /**
5
5
  * Classify routes into role assignments. Markers (keyed by `sourcePath`)
@@ -1,5 +1,5 @@
1
- import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-vY0AXhoc.js';
2
- export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-vY0AXhoc.js';
1
+ import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-DBgzkvEt.js';
2
+ export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-DBgzkvEt.js';
3
3
 
4
4
  /**
5
5
  * Classify routes into role assignments. Markers (keyed by `sourcePath`)
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.js';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-DTnCZGtb.js';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.js';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-C4qRfCdP.js';
3
3
 
4
4
  /** Author shape embedded on posts (no `object` discriminator). */
5
5
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.mjs';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-CuRzTDb1.mjs';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.mjs';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-k84C0v_8.mjs';
3
3
 
4
4
  /** Author shape embedded on posts (no `object` discriminator). */
5
5
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.mjs';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -78,4 +78,4 @@ type SearchSuggestQuery = {
78
78
  limit?: number;
79
79
  };
80
80
 
81
- export { type Awaitable as A, type BoardRequest as B, type CompanySuggestion as C, type FetchOptions as F, type Logger as L, REFRESH_TOKEN_KEY as R, type SuggestionItem as S, type TermSuggestion as T, type SearchSuggestQuery as a, type SuggestResult as b, type StorageMode as c, BoardClient as d, ACCESS_TOKEN_KEY as e, BOARD_ACCESS_GRANT_KEY as f, type CustomStorage as g };
81
+ export { type Awaitable as A, type BoardRequest as B, type CompanySuggestion as C, type FetchOptions as F, type Logger as L, REFRESH_TOKEN_KEY as R, type StorageMode as S, type TermSuggestion as T, BoardClient as a, type SearchSuggestQuery as b, ACCESS_TOKEN_KEY as c, BOARD_ACCESS_GRANT_KEY as d, type CustomStorage as e, type SuggestResult as f, type SuggestionItem as g };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-sW85fuvT.js';
1
+ import { S as Schemas } from './_spec-BKtVFcV9.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -78,4 +78,4 @@ type SearchSuggestQuery = {
78
78
  limit?: number;
79
79
  };
80
80
 
81
- export { type Awaitable as A, type BoardRequest as B, type CompanySuggestion as C, type FetchOptions as F, type Logger as L, REFRESH_TOKEN_KEY as R, type SuggestionItem as S, type TermSuggestion as T, type SearchSuggestQuery as a, type SuggestResult as b, type StorageMode as c, BoardClient as d, ACCESS_TOKEN_KEY as e, BOARD_ACCESS_GRANT_KEY as f, type CustomStorage as g };
81
+ export { type Awaitable as A, type BoardRequest as B, type CompanySuggestion as C, type FetchOptions as F, type Logger as L, REFRESH_TOKEN_KEY as R, type StorageMode as S, type TermSuggestion as T, BoardClient as a, type SearchSuggestQuery as b, ACCESS_TOKEN_KEY as c, BOARD_ACCESS_GRANT_KEY as d, type CustomStorage as e, type SuggestResult as f, type SuggestionItem as g };
package/dist/seo.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-BOpR51Ny.mjs';
2
- import { P as PublicBoard } from './board-QFeHT4UN.mjs';
3
- import { P as PublicJob } from './jobs-CuRzTDb1.mjs';
4
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.mjs';
5
- import './_spec-sW85fuvT.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-C9YLO5NG.mjs';
2
+ import { P as PublicBoard } from './board-pNN710Zc.mjs';
3
+ import { P as PublicJob } from './jobs-k84C0v_8.mjs';
4
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.mjs';
5
+ import './_spec-BKtVFcV9.mjs';
6
6
 
7
7
  /**
8
8
  * Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
package/dist/seo.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-QoNpzRCT.js';
2
- import { P as PublicBoard } from './board-DKXyxwNN.js';
3
- import { P as PublicJob } from './jobs-DTnCZGtb.js';
4
- import { B as BoardLabelOverrides } from './ui-copy-CL-VN1xb.js';
5
- import './_spec-sW85fuvT.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries--J5mTylN.js';
2
+ import { P as PublicBoard } from './board-3Xj_Y-Tx.js';
3
+ import { P as PublicJob } from './jobs-C4qRfCdP.js';
4
+ import { B as BoardLabelOverrides } from './ui-copy-CCkz6CVF.js';
5
+ import './_spec-BKtVFcV9.js';
6
6
 
7
7
  /**
8
8
  * Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
package/dist/server.d.mts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-sW85fuvT.mjs';
3
- import './search-f93nrSg3.mjs';
4
- import './board-QFeHT4UN.mjs';
5
- import './jobs-CuRzTDb1.mjs';
6
- import './salaries-BOpR51Ny.mjs';
2
+ import './_spec-BKtVFcV9.mjs';
3
+ import './search-CE_qQiM7.mjs';
4
+ import './board-pNN710Zc.mjs';
5
+ import './jobs-k84C0v_8.mjs';
6
+ import './salaries-C9YLO5NG.mjs';
7
7
 
8
8
  /**
9
9
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-sW85fuvT.js';
3
- import './search-B5ROY6PK.js';
4
- import './board-DKXyxwNN.js';
5
- import './jobs-DTnCZGtb.js';
6
- import './salaries-QoNpzRCT.js';
2
+ import './_spec-BKtVFcV9.js';
3
+ import './search-CLRQ_El9.js';
4
+ import './board-3Xj_Y-Tx.js';
5
+ import './jobs-C4qRfCdP.js';
6
+ import './salaries--J5mTylN.js';
7
7
 
8
8
  /**
9
9
  * Session cookie codec — pure (no framework imports, no node imports) so it
@@ -1,9 +1,9 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-sW85fuvT.mjs';
3
- import './search-f93nrSg3.mjs';
4
- import './board-QFeHT4UN.mjs';
5
- import './jobs-CuRzTDb1.mjs';
6
- import './salaries-BOpR51Ny.mjs';
2
+ import './_spec-BKtVFcV9.mjs';
3
+ import './search-CE_qQiM7.mjs';
4
+ import './board-pNN710Zc.mjs';
5
+ import './jobs-k84C0v_8.mjs';
6
+ import './salaries-C9YLO5NG.mjs';
7
7
 
8
8
  /**
9
9
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
package/dist/sitemap.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-sW85fuvT.js';
3
- import './search-B5ROY6PK.js';
4
- import './board-DKXyxwNN.js';
5
- import './jobs-DTnCZGtb.js';
6
- import './salaries-QoNpzRCT.js';
2
+ import './_spec-BKtVFcV9.js';
3
+ import './search-CLRQ_El9.js';
4
+ import './board-3Xj_Y-Tx.js';
5
+ import './jobs-C4qRfCdP.js';
6
+ import './salaries--J5mTylN.js';
7
7
 
8
8
  /**
9
9
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
package/dist/skills.js CHANGED
@@ -26,7 +26,7 @@ __export(skills_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(skills_exports);
28
28
 
29
- // ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.14_tsx@4.21.0_typescript@5.9.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
29
+ // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.22_tsx@4.23.1_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
30
30
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
31
31
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
32
32
 
@@ -1,5 +1,5 @@
1
- import { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-f93nrSg3.mjs';
2
- import './_spec-sW85fuvT.mjs';
1
+ import { g as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, f as SuggestResult } from './search-CE_qQiM7.mjs';
2
+ import './_spec-BKtVFcV9.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 { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-B5ROY6PK.js';
2
- import './_spec-sW85fuvT.js';
1
+ import { g as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, f as SuggestResult } from './search-CLRQ_El9.js';
2
+ import './_spec-BKtVFcV9.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
@@ -1,4 +1,4 @@
1
- import { R as RouteEntry, a as RouteRole } from './roles-vY0AXhoc.mjs';
1
+ import { R as RouteEntry, a as RouteRole } from './roles-DBgzkvEt.mjs';
2
2
 
3
3
  /**
4
4
  * Runtime well-known endpoint — Request → Response serving ManifestV1
@@ -1,4 +1,4 @@
1
- import { R as RouteEntry, a as RouteRole } from './roles-vY0AXhoc.js';
1
+ import { R as RouteEntry, a as RouteRole } from './roles-DBgzkvEt.js';
2
2
 
3
3
  /**
4
4
  * Runtime well-known endpoint — Request → Response serving ManifestV1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cavuno/board",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "TypeScript SDK for building headless job boards with the Cavuno Board API",
5
5
  "keywords": [
6
6
  "api-client",
@@ -22,12 +22,12 @@
22
22
  "homepage": "https://cavuno.com/docs/sdk",
23
23
  "bugs": {
24
24
  "url": "https://github.com/wollemiahq/cavuno-sdk/issues",
25
- "email": "support@cavuno.com"
25
+ "email": "hi@cavuno.com"
26
26
  },
27
27
  "license": "MIT",
28
28
  "author": {
29
29
  "name": "Cavuno",
30
- "email": "support@cavuno.com",
30
+ "email": "hi@cavuno.com",
31
31
  "url": "https://cavuno.com"
32
32
  },
33
33
  "repository": {
@@ -204,10 +204,31 @@
204
204
  },
205
205
  "./skills/*": "./skills/*"
206
206
  },
207
+ "publishConfig": {
208
+ "access": "public",
209
+ "provenance": true
210
+ },
211
+ "scripts": {
212
+ "build": "rm -rf dist && tsup",
213
+ "clean": "git clean -xdf .turbo dist node_modules src/generated",
214
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.node.json",
215
+ "test": "vitest run",
216
+ "check:publish": "publint --strict && attw --pack . --profile node16",
217
+ "gen:skills-manifest": "tsx scripts/generate-skills-manifest.ts",
218
+ "assert-publish-target": "node -e \"const p=require('./package.json'); if(p.name!=='@cavuno/board'){throw new Error('Refusing to publish: package.json name is '+p.name+', expected @cavuno/board')}; if(p.private){throw new Error('Refusing to publish: package.json has private:true')}\"",
219
+ "prepublishOnly": "pnpm run assert-publish-target && pnpm run gen:skills-manifest && pnpm run build"
220
+ },
221
+ "devDependencies": {
222
+ "@arethetypeswrong/cli": "^0.18.2",
223
+ "@types/node": "24.9.1",
224
+ "publint": "^0.3.12",
225
+ "tsup": "^8.4.0",
226
+ "tsx": "^4.19.2",
227
+ "vitest": "^3.2.6",
228
+ "typescript": "^5.9.3"
229
+ },
207
230
  "engines": {
208
231
  "node": ">=20"
209
232
  },
210
- "publishConfig": {
211
- "access": "public"
212
- }
233
+ "packageManager": "pnpm@10.19.0"
213
234
  }
@@ -62,7 +62,7 @@ extra locales are prefixed (`/de/`, `/fr/`).
62
62
  from `getLocale()` (it replaces the static `board.language` in the root).
63
63
  5. **Seam.** Point `boardCopy` at the URL locale (`getLocale()`) instead of
64
64
  only `board.language`, so `/de/` renders German chrome even on an English
65
- board. This is the opt-in that adds over the single-language model.
65
+ board. This is the opt-in over the single-language model.
66
66
  6. **SEO slice.** Per-locale `hreflang`, canonical, and sitemap entries are
67
67
  part of completing multi-language — do them when you add real locales, not
68
68
  in the foundation.
@@ -78,5 +78,4 @@ extra locales are prefixed (`/de/`, `/fr/`).
78
78
  - **Do not scatter catalog calls** through markup — everything imports the one
79
79
  seam, so the catalog→code migration is a single-file change.
80
80
 
81
- Reference: (starter i18n), (copy catalog), (entity
82
- translation). Wiring flavor: `cavuno-board-tanstack-start`.
81
+ Wiring flavor: `cavuno-board-tanstack-start`.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.1",
2
+ "version": "2.0.3",
3
3
  "skills": [
4
4
  {
5
5
  "name": "cavuno-board-account",