@bongos/core 1.20.1 → 1.20.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.
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/gds/package-core.js",
5
- "core_version": "1.20.1",
6
- "core_contract": "1.20.1",
7
- "source_commit": "538c76c7fe358561c386a9201b0b9fb4f0d06a43",
5
+ "core_version": "1.20.3",
6
+ "core_contract": "1.20.3",
7
+ "source_commit": "08c1ed047c5b8d898c41f3be382772312100c240",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-30T02:04:12.975Z",
9
+ "built_at": "2026-09-30T03:02:28.909Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 554,
13
13
  "agent_docs_stubbed": 25,
14
- "functional_verbatim": 2608,
14
+ "functional_verbatim": 2609,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 3188,
20
- "tree_sha256": "6066cfbf6807327395dfb780b2ea38ae26e7f33e2ae4f612f2230f81c8b096b6",
19
+ "file_count": 3189,
20
+ "tree_sha256": "b2f8df195cd671a690f009c403ebe37ab58c8f1a3237c20aafbbc28fb5a08cb3",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -322,12 +322,12 @@
322
322
  {
323
323
  "path": "clients/bongos-client/README.md",
324
324
  "mode": "0000644",
325
- "sha256": "ea74f1ba9a116b50861b1ad17c2da3697e55bc0510d7db78ef7f7dea90299a14"
325
+ "sha256": "aeb6b6285117097aa891b659cdcaf20755098355556a9bfa6e11557c8f980366"
326
326
  },
327
327
  {
328
328
  "path": "clients/bongos-client/bongos-client.global.js",
329
329
  "mode": "0000644",
330
- "sha256": "513dbe9acaf5bb1deeb9f4a21c453c51b7b02dd2cc451c551da91e96467c9fc5"
330
+ "sha256": "1b36ddb96f6ca78135b0628b18f53d68c04c7ce950b60bb7916d2fcb08544474"
331
331
  },
332
332
  {
333
333
  "path": "clients/bongos-client/examples/hello-world.mjs",
@@ -337,17 +337,17 @@
337
337
  {
338
338
  "path": "clients/bongos-client/index.cjs",
339
339
  "mode": "0000644",
340
- "sha256": "c6261afa6f9a9d7d141ce8f2d1e84b8dd625fadb560e9968ba7d626d66ce4b51"
340
+ "sha256": "65ba46030b9c7eec610029bd6fa0e55bc660618a81d50e3af1293f795a533a1c"
341
341
  },
342
342
  {
343
343
  "path": "clients/bongos-client/index.d.ts",
344
344
  "mode": "0000644",
345
- "sha256": "82abd5dc851a8c56d04bec16a6e332f270d03e9963cf43204a7d5f0c7e5f9b59"
345
+ "sha256": "922701156282c55e3d7aa4a4ed4746fe47a579a189fd76065f868b21e319045a"
346
346
  },
347
347
  {
348
348
  "path": "clients/bongos-client/index.mjs",
349
349
  "mode": "0000644",
350
- "sha256": "49c85f291b374c380a5f5b331da4539b88b4ef254cf417cdb6a19d95073c789c"
350
+ "sha256": "3b4c0ae08ee72672d580355da8fd99109d075d85c650516f8b273641ddbff3f6"
351
351
  },
352
352
  {
353
353
  "path": "clients/bongos-client/package.json",
@@ -2017,7 +2017,7 @@
2017
2017
  {
2018
2018
  "path": "docs/adr/0310-a-speciality-offers-skills-and-the-adopter-chooses-them.md",
2019
2019
  "mode": "0000644",
2020
- "sha256": "7121b37dfcb39b5e2c1cdfe0be86e1ab2228003ee7b10620da15b64bfd0943d2"
2020
+ "sha256": "7641ba652bf937b55808ef0f6e10f14654800d60ad9bfb4326cd407fc1b8adcf"
2021
2021
  },
2022
2022
  {
2023
2023
  "path": "docs/adr/0311-an-idea-is-a-permanent-origin-tag.md",
@@ -2227,12 +2227,12 @@
2227
2227
  {
2228
2228
  "path": "docs/api-reference.md",
2229
2229
  "mode": "0000644",
2230
- "sha256": "4abe1c6b64c858bba61234c0d65b1896f6c2928dfccd5d205203485e0da8339c"
2230
+ "sha256": "46c90700bd3b16d25e1c7b7753f270b23a7ec801fd7ca2c6c9d88125e270eca6"
2231
2231
  },
2232
2232
  {
2233
2233
  "path": "docs/api/openapi.json",
2234
2234
  "mode": "0000644",
2235
- "sha256": "c36943540b9061c5171d815b9e547500ebec8a13cceb59151b7c309d7da208a6"
2235
+ "sha256": "5d4be73b912ed2682fbcab207b4c83d58ca6530712de5ba350bbcb69b545079c"
2236
2236
  },
2237
2237
  {
2238
2238
  "path": "docs/architecture.md",
@@ -2257,12 +2257,12 @@
2257
2257
  {
2258
2258
  "path": "docs/copy-inventory.md",
2259
2259
  "mode": "0000644",
2260
- "sha256": "91de610122f8818fcf977c29930933ef788bdcb6a06325a980d02cdbaa00d453"
2260
+ "sha256": "3c78ba6c1c958d024141c68f2b99e71a665a042d2bccd187cb9ae3676c00b502"
2261
2261
  },
2262
2262
  {
2263
2263
  "path": "docs/copy-registry.json",
2264
2264
  "mode": "0000644",
2265
- "sha256": "dc7d48d5ff360e6a12ac8dd35fee27df6094ebed20421426abab236003b4c38e"
2265
+ "sha256": "920b392dc53e07b5b290f8add28f9b1a3a50f9b2a13391c2a649250084656c5f"
2266
2266
  },
2267
2267
  {
2268
2268
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2762,7 +2762,7 @@
2762
2762
  {
2763
2763
  "path": "docs/module-api-changelog.md",
2764
2764
  "mode": "0000644",
2765
- "sha256": "cd5697a04adc8d9214f94c8ec9734dd17859a8dc429bb197258baff84358db55"
2765
+ "sha256": "b1141ad77bcd4d780bfb80787cce1fea081b764b377bd72c083aaef520e11f70"
2766
2766
  },
2767
2767
  {
2768
2768
  "path": "docs/modules-contract.md",
@@ -2847,12 +2847,12 @@
2847
2847
  {
2848
2848
  "path": "docs/page-inventory.json",
2849
2849
  "mode": "0000644",
2850
- "sha256": "d61b313acdf5eba903c0ce82b787369afd25be2a2e8db1c08afc590991ba05e9"
2850
+ "sha256": "d5242323bc5db540dfa190d5b89c92af0bf6e0a36419d141705fb4d7f51ea39c"
2851
2851
  },
2852
2852
  {
2853
2853
  "path": "docs/page-readings.json",
2854
2854
  "mode": "0000644",
2855
- "sha256": "b16b11c591defc50b0738ef0df220d5879f0f1b2f5adf9a85bbc2d5b69d6e1a1"
2855
+ "sha256": "5397c8af5143f2e9a16f008bae0cd172713f641e1d810c87113f01e620499172"
2856
2856
  },
2857
2857
  {
2858
2858
  "path": "docs/project-context.template.md",
@@ -5127,7 +5127,7 @@
5127
5127
  {
5128
5128
  "path": "modules/hall-ui/public/goal-inbox.js",
5129
5129
  "mode": "0000644",
5130
- "sha256": "77c6653d8c18097f31dc84958cf688c96bf32888a7ecdc99fce049d8cdc1cb95"
5130
+ "sha256": "70d448aec17ff903e6bed16410f969925e1cc57e3bc40b465ef2f06eb67b4638"
5131
5131
  },
5132
5132
  {
5133
5133
  "path": "modules/hall-ui/public/goal-map.html",
@@ -5502,12 +5502,12 @@
5502
5502
  {
5503
5503
  "path": "modules/hall-ui/public/settings-specialities.js",
5504
5504
  "mode": "0000644",
5505
- "sha256": "cf4a1073eff2b0b0a2df47d3af9849a2a2cd9fa83089e0d494d8f0780434478d"
5505
+ "sha256": "9bc109f2e947f1db1525b937d350f46e5231cc14a9dd5db8fa1c97a2b46fe6d1"
5506
5506
  },
5507
5507
  {
5508
5508
  "path": "modules/hall-ui/public/settings.css",
5509
5509
  "mode": "0000644",
5510
- "sha256": "17097f37b32a8ea2645600110fd3c412da5c8c991b1d3e4b2d3fa1ac3187f4da"
5510
+ "sha256": "d73ab35cd887285813fe8d3f3f13ec8b0e2d179b1a9fb3cc910ea6caa7131607"
5511
5511
  },
5512
5512
  {
5513
5513
  "path": "modules/hall-ui/public/settings.html",
@@ -5522,7 +5522,7 @@
5522
5522
  {
5523
5523
  "path": "modules/hall-ui/public/settings.states.json",
5524
5524
  "mode": "0000644",
5525
- "sha256": "c32285cb12f598141245d3a9beba3c026f5598311ed16d39e50823e11043e995"
5525
+ "sha256": "54f12d63deb961cfe6d13ad0d9ccd6ca1defbc3a4bce1c036e2d93ed4281951b"
5526
5526
  },
5527
5527
  {
5528
5528
  "path": "modules/hall-ui/public/shell.js",
@@ -5757,7 +5757,7 @@
5757
5757
  {
5758
5758
  "path": "modules/hall-ui/records/panel-family.md",
5759
5759
  "mode": "0000644",
5760
- "sha256": "10fa9985b6743101fb86ad2f96fd0272a5c6be58944c84ddc944fb7a6648c16e"
5760
+ "sha256": "42e0d8cbb266e912c5ab034d2a88f11da310d4a4a8f61a87ce86a08b154d32d9"
5761
5761
  },
5762
5762
  {
5763
5763
  "path": "modules/hall-ui/records/reading-rooms.md",
@@ -8317,17 +8317,17 @@
8317
8317
  {
8318
8318
  "path": "modules/specialities/routes/specialities.js",
8319
8319
  "mode": "0000644",
8320
- "sha256": "a5f21deb5aef391799031ea3d9408c5b22eb8fcbcee84828e36021d6cf508298"
8320
+ "sha256": "b12e3feba6f79e96f8e43ae41252d1136c37575b9a79201cbffb87d91b4f237c"
8321
8321
  },
8322
8322
  {
8323
8323
  "path": "modules/specialities/skills.js",
8324
8324
  "mode": "0000644",
8325
- "sha256": "4e5a98eecadbd16f361090be05118c1974aa57e12aeb80865f43c538ab996b71"
8325
+ "sha256": "82b024a99907bee711ac83ba838430d2f253705ce4f5c083680c3b5fd909b24c"
8326
8326
  },
8327
8327
  {
8328
8328
  "path": "modules/specialities/specialities.js",
8329
8329
  "mode": "0000644",
8330
- "sha256": "20cf7786bb08c68675690d6b6165e7a8d2545b7ca3de3658c66e27027bed7a3f"
8330
+ "sha256": "a27607e3760d1fb31d1f6e78d920cc8ab0a94e0add3ea7497d4989637ce3173a"
8331
8331
  },
8332
8332
  {
8333
8333
  "path": "modules/status-ui/CLAUDE.md",
@@ -8822,12 +8822,12 @@
8822
8822
  {
8823
8823
  "path": "package-lock.json",
8824
8824
  "mode": "0000644",
8825
- "sha256": "8dd3c0f14900fb242e7b38bebe2e50d566150f53970f2f148c7a503d6725d405"
8825
+ "sha256": "09e758156a2344894e786908b8d30cfcdf39b7eee6e03a9bdb6671e08791e77a"
8826
8826
  },
8827
8827
  {
8828
8828
  "path": "package.json",
8829
8829
  "mode": "0000644",
8830
- "sha256": "c323f14e5965da3e2b585b841d6caf80e36c0186d2d53373bd5c73849002aa70"
8830
+ "sha256": "5059b19984a6fdd0997b4f6062001f43c537c9cc02b983039af1ea1f56a958e2"
8831
8831
  },
8832
8832
  {
8833
8833
  "path": "public-docs/index.html",
@@ -8847,7 +8847,7 @@
8847
8847
  {
8848
8848
  "path": "release-notes.json",
8849
8849
  "mode": "0000644",
8850
- "sha256": "eadbb2046a348fb8ac4a7787e45755ec7b9652de21e21b5a4f434ac5570d4f9d"
8850
+ "sha256": "42d334cbd78f69784c937c7b857aedfe54019ceaa072893b9a2a520c651a6703"
8851
8851
  },
8852
8852
  {
8853
8853
  "path": "scripts/bongos-mcp.js",
@@ -10522,7 +10522,7 @@
10522
10522
  {
10523
10523
  "path": "scripts/hall-preview/server.js",
10524
10524
  "mode": "0000644",
10525
- "sha256": "56912c7ce4912c938300278d9af7cc2a125ea672c0beb5298a79dd5ce8afdb0f"
10525
+ "sha256": "4529909a899a52180c5876d926be2ef2dc42a8bffef43d84c38dd9d399f2c5d2"
10526
10526
  },
10527
10527
  {
10528
10528
  "path": "scripts/hall-preview/task-visual.js",
@@ -10942,7 +10942,7 @@
10942
10942
  {
10943
10943
  "path": "src/module-api.js",
10944
10944
  "mode": "0000644",
10945
- "sha256": "35a2ae08614ac9d86186c4bab8f68a38c4a717c1677da75eb7b586e098f15247"
10945
+ "sha256": "1961978ac4aca79f758766be8172a32e3bcbe9f447fa767d700689eaeec97542"
10946
10946
  },
10947
10947
  {
10948
10948
  "path": "src/module-loader/catalog.js",
@@ -14847,7 +14847,7 @@
14847
14847
  {
14848
14848
  "path": "tests/rot_inbox.mjs",
14849
14849
  "mode": "0000644",
14850
- "sha256": "7611e8595f5ea2b314d92d756c15ba8dfc6843daf32c0130e00ed13a24fe38b8"
14850
+ "sha256": "d32e3adca10d2701816c9cb039cc6d7a51c807c6ebe9c942738fddfe330054ef"
14851
14851
  },
14852
14852
  {
14853
14853
  "path": "tests/route_permission_check.mjs",
@@ -15427,7 +15427,12 @@
15427
15427
  {
15428
15428
  "path": "tests/speciality_skills.mjs",
15429
15429
  "mode": "0000644",
15430
- "sha256": "6030911cb515c11215310fa8e3c363567ca9cfb78ce5c706858c0025eec5d071"
15430
+ "sha256": "dddd0c7c5544dacdfd65160d720814a5a71fd74708e7e7beac5964bb59b633fc"
15431
+ },
15432
+ {
15433
+ "path": "tests/speciality_walkthrough_ui.mjs",
15434
+ "mode": "0000644",
15435
+ "sha256": "bc83406501c682b33a19ac7a0a1fa23a07f9e52654c265e2513b5f73b3311f3c"
15431
15436
  },
15432
15437
  {
15433
15438
  "path": "tests/spike_task_map.mjs",
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
5
5
  by hand; it regenerates when the spec changes, so it can never drift from the routes.
6
6
 
7
7
  - API version: **v1** (served at `/api/bongos/v1`)
8
- - 454 operations across 69 resource groups
8
+ - 455 operations across 69 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -979,6 +979,8 @@ function createClient(opts = {}) {
979
979
  deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
980
980
  // POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
981
981
  postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
982
+ // GET /specialities/{id}/skills — rank: any-builder — GET /specialities/:id/skills
983
+ getSpecialitiesIdSkills: (args) => request("GET", "/specialities/{id}/skills", { hasBody: false }, args),
982
984
  // PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
983
985
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
984
986
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
@@ -978,6 +978,8 @@ function createClient(opts = {}) {
978
978
  deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
979
979
  // POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
980
980
  postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
981
+ // GET /specialities/{id}/skills — rank: any-builder — GET /specialities/:id/skills
982
+ getSpecialitiesIdSkills: (args) => request("GET", "/specialities/{id}/skills", { hasBody: false }, args),
981
983
  // PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
982
984
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
983
985
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
@@ -157,6 +157,7 @@ export interface GetSessionsSearchResponse { sessions: unknown; count: unknown;
157
157
  export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown }
158
158
  export interface GetSpecialitiesIdDocumentsResponse { documents: unknown }
159
159
  export interface GetSpecialitiesIdResponse { speciality: unknown }
160
+ export interface GetSpecialitiesIdSkillsResponse { speciality: unknown; adopted: boolean; enabled: unknown; skills: unknown }
160
161
  export interface GetSpecialitiesOfferedResponse { suggestions: unknown }
161
162
  export interface GetSpecialitiesResponse { specialities: unknown }
162
163
  export interface GetSsoPubkeyResponse { alg: unknown; format: unknown; public_key_b64: unknown }
@@ -1398,6 +1399,8 @@ export interface BongosClient {
1398
1399
  deleteSpecialitiesIdDocumentsDocId(args?: RequestArgs): Promise<DeleteSpecialitiesIdDocumentsDocIdResponse>;
1399
1400
  /** POST /specialities/{id}/offer — rank: metic+archon */
1400
1401
  postSpecialitiesIdOffer(args?: RequestArgs): Promise<PostSpecialitiesIdOfferResponse>;
1402
+ /** GET /specialities/{id}/skills — rank: any-builder */
1403
+ getSpecialitiesIdSkills(args?: RequestArgs): Promise<GetSpecialitiesIdSkillsResponse>;
1401
1404
  /** PUT /specialities/{id}/skills — rank: any-builder */
1402
1405
  putSpecialitiesIdSkills(args: RequestArgs & { body: PutSpecialitiesIdSkillsRequest }): Promise<PutSpecialitiesIdSkillsResponse>;
1403
1406
  /** POST /specialities/{id}/unoffer — rank: metic+archon */
@@ -975,6 +975,8 @@ export function createClient(opts = {}) {
975
975
  deleteSpecialitiesIdDocumentsDocId: (args) => request("DELETE", "/specialities/{id}/documents/{docId}", { hasBody: false }, args),
976
976
  // POST /specialities/{id}/offer — rank: metic+archon — POST /specialities/:id/offer
977
977
  postSpecialitiesIdOffer: (args) => request("POST", "/specialities/{id}/offer", { hasBody: true }, args),
978
+ // GET /specialities/{id}/skills — rank: any-builder — GET /specialities/:id/skills
979
+ getSpecialitiesIdSkills: (args) => request("GET", "/specialities/{id}/skills", { hasBody: false }, args),
978
980
  // PUT /specialities/{id}/skills — rank: any-builder — PUT /specialities/:id/skills
979
981
  putSpecialitiesIdSkills: (args) => request("PUT", "/specialities/{id}/skills", { hasBody: true }, args),
980
982
  // POST /specialities/{id}/unoffer — rank: metic+archon — POST /specialities/:id/unoffer
@@ -75,7 +75,7 @@ Already shipped in `specialities_catalog`: `owner_kind` (`builder` | `project`),
75
75
  Deliberately separate tasks, because the middle one is where the ruling lives and it should not be a sub-bullet of a schema change:
76
76
 
77
77
  1. **Schema + validation** — the offered set on the catalog, the enabled set on the adoption, `validateDraft`, the routes. Refuses a skill the instance does not have. *Built in task 1004072 (`skills` / `enabled_skills`, specialities_003, `modules/specialities/skills.js`).*
78
- 2. **The walkthrough** — the adoption flow that presents each skill and takes a decision. The ruling's real deliverable.
78
+ 2. **The walkthrough** — the adoption flow that presents each skill and takes a decision. The ruling's real deliverable. *Built in task 1004073 (`GET /specialities/:id/skills`, `skills.explainSkill`, the hall settings panel). The consequence above came true: skill descriptions are model-facing, so a SKILL.md may now carry optional people-facing `plain:` / `reach-for:` / `cost:` lines, and the walkthrough says so when it had to derive the words instead.*
79
79
  3. **Injection** — the enabled set reaches the session through the contract the Conductor already injects; a line naming the skills this builder leans on, per [ADR 0296](0296-a-role-speciality-is-data-over-three-existing-surfaces.md)'s pattern of using surfaces that exist.
80
80
 
81
81
  Nothing is built by this ADR. It is the decision task 1003978 asked to be made first.
@@ -17998,6 +17998,56 @@
17998
17998
  }
17999
17999
  },
18000
18000
  "/specialities/{id}/skills": {
18001
+ "get": {
18002
+ "operationId": "get_specialities_id_skills",
18003
+ "tags": [
18004
+ "specialities"
18005
+ ],
18006
+ "summary": "GET /specialities/:id/skills",
18007
+ "description": "GET /specialities/:id/skills — what the adoption WALKTHROUGH shows (task 1004073, ADR 0310 §3): each skill the speciality offers, explained for the person deciding (what it does, when to reach for it, what it costs, what it needs), plus the caller's own enabled set and whether they hold it at all. Same visibility as GET /specialities/:id — 404 for a row you cannot see. An offered skill this instance no longer has comes back `installed: false`, so the walkthrough can say so instead of offering something that would 404. Read-only; rank: any builder who may see the speciality.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
18008
+ "x-rank": "any-builder",
18009
+ "x-source": "modules/specialities/routes/specialities.js",
18010
+ "parameters": [
18011
+ {
18012
+ "name": "id",
18013
+ "in": "path",
18014
+ "required": true,
18015
+ "schema": {
18016
+ "type": "string"
18017
+ },
18018
+ "description": "Path parameter `id`."
18019
+ }
18020
+ ],
18021
+ "responses": {
18022
+ "200": {
18023
+ "description": "Success.",
18024
+ "content": {
18025
+ "application/json": {
18026
+ "schema": {
18027
+ "$ref": "#/components/schemas/GetSpecialitiesIdSkillsResponse"
18028
+ }
18029
+ }
18030
+ }
18031
+ },
18032
+ "400": {
18033
+ "$ref": "#/components/responses/BadRequest"
18034
+ },
18035
+ "401": {
18036
+ "$ref": "#/components/responses/Unauthorized"
18037
+ },
18038
+ "403": {
18039
+ "$ref": "#/components/responses/Forbidden"
18040
+ },
18041
+ "404": {
18042
+ "$ref": "#/components/responses/NotFound"
18043
+ }
18044
+ },
18045
+ "security": [
18046
+ {
18047
+ "builderSession": []
18048
+ }
18049
+ ]
18050
+ },
18001
18051
  "put": {
18002
18052
  "operationId": "put_specialities_id_skills",
18003
18053
  "tags": [
@@ -23284,6 +23334,23 @@
23284
23334
  "speciality"
23285
23335
  ]
23286
23336
  },
23337
+ "GetSpecialitiesIdSkillsResponse": {
23338
+ "type": "object",
23339
+ "properties": {
23340
+ "speciality": {},
23341
+ "adopted": {
23342
+ "type": "boolean"
23343
+ },
23344
+ "enabled": {},
23345
+ "skills": {}
23346
+ },
23347
+ "required": [
23348
+ "speciality",
23349
+ "adopted",
23350
+ "enabled",
23351
+ "skills"
23352
+ ]
23353
+ },
23287
23354
  "GetSpecialitiesOfferedResponse": {
23288
23355
  "type": "object",
23289
23356
  "properties": {
@@ -29027,9 +29094,9 @@
29027
29094
  "description": "A required dependency/feature is not configured or is temporarily down."
29028
29095
  }
29029
29096
  },
29030
- "x-endpoint-count": 454,
29031
- "x-schema-count": 486,
29097
+ "x-endpoint-count": 455,
29098
+ "x-schema-count": 487,
29032
29099
  "x-undocumented-bodies": 11,
29033
- "x-response-schemas": 330,
29100
+ "x-response-schemas": 331,
29034
29101
  "x-generated-by": "scripts/gds/gen-api-docs.js"
29035
29102
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Bongos API reference
4
4
 
5
- > **Generated from the live route files** — the route file is authoritative. 454 endpoints across 81 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 455 endpoints across 81 route files.
6
6
  > Machine-readable spec: [`docs/api/openapi.json`](api/openapi.json) (OpenAPI 3.1). Rendered docs site: **`/docs`** (e.g. `cloudbongos.com/docs`).
7
7
 
8
8
  Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust-boundary-server-enforced-permissions.md)): `public` < `any-builder` < `metic+archon` < `archon`.
@@ -688,7 +688,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
688
688
  |---|---|---|---|---|
689
689
  | GET | `/api/bongos/software-update` | `any-builder` | — | GET /software-update — Settings → Software update (task 1004296): this project's core, the newest release its channel allows, what the ve… |
690
690
 
691
- ## `specialities` (13)
691
+ ## `specialities` (14)
692
692
 
693
693
  | Method | Path | Rank | Body | Description |
694
694
  |---|---|---|---|---|
@@ -702,6 +702,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
702
702
  | POST | `/api/bongos/specialities/:id/documents` | `any-builder` | `title`, `body_md`, `source` | ── training (a): the owner's own documents ─────────────────────────────── |
703
703
  | DELETE | `/api/bongos/specialities/:id/documents/:docId` | `any-builder` | — | |
704
704
  | POST | `/api/bongos/specialities/:id/offer` | `metic+archon` | — | ── offering: a project puts its name behind a speciality ───────────────── OFFERING IS CURATION, NOT OWNERSHIP, so it is gated differentl… |
705
+ | GET | `/api/bongos/specialities/:id/skills` | `any-builder` | — | GET /specialities/:id/skills — what the adoption WALKTHROUGH shows (task 1004073, ADR 0310 §3): each skill the speciality offers, explain… |
705
706
  | PUT | `/api/bongos/specialities/:id/skills` | `any-builder` | `enabled_skills` | PUT /specialities/:id/skills — the caller's ENABLED set for a speciality they hold (task 1004072, ADR 0310 §2). |
706
707
  | POST | `/api/bongos/specialities/:id/unoffer` | `metic+archon` | — | |
707
708
  | GET | `/api/bongos/specialities/offered` | `any-builder` | — | GET /specialities/offered — the suggestions for THIS builder. |