@bongos/core 1.20.44 → 1.20.46

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 (75) hide show
  1. package/.bongos-core.json +118 -73
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +6 -0
  4. package/clients/bongos-client/index.cjs +6 -0
  5. package/clients/bongos-client/index.d.ts +8 -0
  6. package/clients/bongos-client/index.mjs +6 -0
  7. package/docs/api/openapi.json +138 -3
  8. package/docs/api-reference.md +9 -2
  9. package/docs/copy-inventory.md +65 -29
  10. package/docs/copy-registry.json +418 -33
  11. package/docs/module-api-changelog.md +4 -0
  12. package/docs/modules-contract.md +1 -0
  13. package/docs/onboarding/slash-commands.md +12 -56
  14. package/docs/page-inventory.json +35 -4
  15. package/docs/page-readings.json +994 -959
  16. package/modules/hall-ui/public/atlas.html +1 -1
  17. package/modules/hall-ui/public/blockers.html +1 -1
  18. package/modules/hall-ui/public/board-room.html +1 -1
  19. package/modules/hall-ui/public/collab.html +1 -1
  20. package/modules/hall-ui/public/commands-lib.js +142 -0
  21. package/modules/hall-ui/public/commands.css +98 -0
  22. package/modules/hall-ui/public/commands.html +65 -0
  23. package/modules/hall-ui/public/commands.js +52 -0
  24. package/modules/hall-ui/public/commands.states.json +14 -0
  25. package/modules/hall-ui/public/copy-desk.html +1 -1
  26. package/modules/hall-ui/public/deploy.html +1 -1
  27. package/modules/hall-ui/public/diagrams.html +1 -1
  28. package/modules/hall-ui/public/drachmae.html +1 -1
  29. package/modules/hall-ui/public/fleet.html +1 -1
  30. package/modules/hall-ui/public/gate.html +1 -1
  31. package/modules/hall-ui/public/goals.html +1 -1
  32. package/modules/hall-ui/public/government.html +1 -1
  33. package/modules/hall-ui/public/idea.html +1 -1
  34. package/modules/hall-ui/public/ideas.html +1 -1
  35. package/modules/hall-ui/public/index.html +1 -1
  36. package/modules/hall-ui/public/modules.css +45 -0
  37. package/modules/hall-ui/public/modules.html +24 -2
  38. package/modules/hall-ui/public/modules.js +94 -2
  39. package/modules/hall-ui/public/primer.html +1 -1
  40. package/modules/hall-ui/public/profile.html +1 -1
  41. package/modules/hall-ui/public/project-settings.html +1 -1
  42. package/modules/hall-ui/public/ranks.html +1 -1
  43. package/modules/hall-ui/public/roadmap.html +1 -1
  44. package/modules/hall-ui/public/roster.html +1 -1
  45. package/modules/hall-ui/public/sessions.html +1 -1
  46. package/modules/hall-ui/public/settings.html +1 -1
  47. package/modules/hall-ui/public/shell.js +3 -0
  48. package/modules/hall-ui/public/studio.html +1 -1
  49. package/modules/hall-ui/public/task.html +1 -1
  50. package/modules/hall-ui/public/thinking.html +1 -1
  51. package/modules/hall-ui/public/tweak-editor.html +1 -1
  52. package/modules/hall-ui/public/watch.html +1 -1
  53. package/modules/hall-ui/public/work.html +1 -1
  54. package/modules/hall-ui/records/catalog.md +2 -0
  55. package/modules/hall-ui/records/commands.md +11 -0
  56. package/modules/specialities/skills.js +6 -0
  57. package/package-lock.json +2 -2
  58. package/package.json +1 -1
  59. package/release-notes.json +12 -0
  60. package/scripts/gds/module-artifact.js +21 -1
  61. package/scripts/gds/module.js +15 -1
  62. package/scripts/hall-preview/server.js +3 -0
  63. package/src/bongos/module-store.js +30 -1
  64. package/src/bongos/routes/cli-commands.js +49 -0
  65. package/src/bongos/routes/modules.js +91 -1
  66. package/src/bongos/routes.js +3 -0
  67. package/src/bongos/serve-internal.js +4 -1
  68. package/src/module-api.js +1 -1
  69. package/tests/hall_catalog_world.mjs +1 -1
  70. package/tests/hall_commands.mjs +162 -0
  71. package/tests/hall_nav.mjs +3 -1
  72. package/tests/hall_page_gate_map.mjs +3 -0
  73. package/tests/hall_tweak_editor.mjs +1 -1
  74. package/tests/module_store_howto.mjs +244 -0
  75. package/tests/nav_permission_atoms.mjs +1 -1
@@ -250,6 +250,10 @@ function createClient(opts = {}) {
250
250
  // POST /claims/batch/validate — rank: any-builder — POST /claims/batch/validate
251
251
  postClaimsBatchValidate: (args) => request("POST", "/claims/batch/validate", { hasBody: true }, args),
252
252
  },
253
+ "cli": {
254
+ // GET /cli/commands — rank: any-builder — GET /cli/commands
255
+ getCliCommands: (args) => request("GET", "/cli/commands", { hasBody: false }, args),
256
+ },
253
257
  "closeness": {
254
258
  // GET /closeness/for-me — rank: any-builder — GET /closeness/for-me
255
259
  getClosenessForMe: (args) => request("GET", "/closeness/for-me", { hasBody: false }, args),
@@ -1049,6 +1053,8 @@ function createClient(opts = {}) {
1049
1053
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1050
1054
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1051
1055
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1056
+ // GET /store/modules/{key}/versions/{version}/howto — rank: any-builder — GET /store/modules/:key/versions/:version/howto
1057
+ getStoreModulesKeyVersionsVersionHowto: (args) => request("GET", "/store/modules/{key}/versions/{version}/howto", { hasBody: false }, args),
1052
1058
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1053
1059
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1054
1060
  },
@@ -249,6 +249,10 @@ function createClient(opts = {}) {
249
249
  // POST /claims/batch/validate — rank: any-builder — POST /claims/batch/validate
250
250
  postClaimsBatchValidate: (args) => request("POST", "/claims/batch/validate", { hasBody: true }, args),
251
251
  },
252
+ "cli": {
253
+ // GET /cli/commands — rank: any-builder — GET /cli/commands
254
+ getCliCommands: (args) => request("GET", "/cli/commands", { hasBody: false }, args),
255
+ },
252
256
  "closeness": {
253
257
  // GET /closeness/for-me — rank: any-builder — GET /closeness/for-me
254
258
  getClosenessForMe: (args) => request("GET", "/closeness/for-me", { hasBody: false }, args),
@@ -1048,6 +1052,8 @@ function createClient(opts = {}) {
1048
1052
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1049
1053
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1050
1054
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1055
+ // GET /store/modules/{key}/versions/{version}/howto — rank: any-builder — GET /store/modules/:key/versions/:version/howto
1056
+ getStoreModulesKeyVersionsVersionHowto: (args) => request("GET", "/store/modules/{key}/versions/{version}/howto", { hasBody: false }, args),
1051
1057
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1052
1058
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1053
1059
  },
@@ -46,6 +46,7 @@ export interface GetBuildersIdOnboardingResponse { builder_id: unknown; onboardi
46
46
  export interface GetBuildersIdProfileResponse { builder: unknown; shipped_count: unknown; recent_ships: unknown; achievements: unknown; cross_project?: unknown; handle?: unknown }
47
47
  export interface GetBuildersMePendingRankChangeResponse { change: unknown; greeting?: unknown }
48
48
  export interface GetBuildersRosterResponse { builders: unknown; stale_hours: unknown; stale_hours_source: unknown }
49
+ export interface GetCliCommandsResponse { version: unknown; groups: unknown }
49
50
  export interface GetClosenessForMeResponse { closeness: unknown; count: unknown; returned: unknown }
50
51
  export interface GetClosenessWeightsResponse { weights: unknown; window_days: unknown; note: unknown }
51
52
  export interface GetClosenessWithBuilderIdResponse { closeness: unknown; why: unknown }
@@ -164,6 +165,7 @@ export interface GetSpecialitiesOfferedResponse { suggestions: unknown }
164
165
  export interface GetSpecialitiesResponse { specialities: unknown }
165
166
  export interface GetSsoPubkeyResponse { alg: unknown; format: unknown; public_key_b64: unknown }
166
167
  export interface GetStoreEntitlementsResponse { entitlements: unknown }
168
+ export interface GetStoreModulesKeyVersionsVersionHowtoResponse { module_key: unknown; title: unknown; version: unknown; published_at: unknown; delisted: unknown; markdown: unknown; artifact_url: unknown }
167
169
  export interface GetTaskRecommendationsForMeResponse { recommendations: unknown; count: unknown }
168
170
  export interface GetTaskRecommendationsMineResponse { recommendations: unknown; count: unknown }
169
171
  export interface GetTasksClaimableResponse { claimable: unknown; claimable_total: unknown; active_claims: unknown }
@@ -684,6 +686,10 @@ export interface BongosClient {
684
686
  /** POST /claims/batch/validate — rank: any-builder */
685
687
  postClaimsBatchValidate(args: RequestArgs & { body: PostClaimsBatchValidateRequest }): Promise<ApiResponse>;
686
688
  };
689
+ "cli": {
690
+ /** GET /cli/commands — rank: any-builder */
691
+ getCliCommands(args?: RequestArgs): Promise<GetCliCommandsResponse>;
692
+ };
687
693
  "closeness": {
688
694
  /** GET /closeness/for-me — rank: any-builder */
689
695
  getClosenessForMe(args?: RequestArgs): Promise<GetClosenessForMeResponse>;
@@ -1483,6 +1489,8 @@ export interface BongosClient {
1483
1489
  getStoreModulesKeyEntitlement(args?: RequestArgs): Promise<ApiResponse>;
1484
1490
  /** POST /store/modules/{key}/versions — rank: metic+archon */
1485
1491
  postStoreModulesKeyVersions(args?: RequestArgs): Promise<PostStoreModulesKeyVersionsResponse>;
1492
+ /** GET /store/modules/{key}/versions/{version}/howto — rank: any-builder */
1493
+ getStoreModulesKeyVersionsVersionHowto(args?: RequestArgs): Promise<GetStoreModulesKeyVersionsVersionHowtoResponse>;
1486
1494
  /** GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder */
1487
1495
  getStoreModulesKeyVersionsVersionTarball(args?: RequestArgs): Promise<ApiResponse>;
1488
1496
  };
@@ -246,6 +246,10 @@ export function createClient(opts = {}) {
246
246
  // POST /claims/batch/validate — rank: any-builder — POST /claims/batch/validate
247
247
  postClaimsBatchValidate: (args) => request("POST", "/claims/batch/validate", { hasBody: true }, args),
248
248
  },
249
+ "cli": {
250
+ // GET /cli/commands — rank: any-builder — GET /cli/commands
251
+ getCliCommands: (args) => request("GET", "/cli/commands", { hasBody: false }, args),
252
+ },
249
253
  "closeness": {
250
254
  // GET /closeness/for-me — rank: any-builder — GET /closeness/for-me
251
255
  getClosenessForMe: (args) => request("GET", "/closeness/for-me", { hasBody: false }, args),
@@ -1045,6 +1049,8 @@ export function createClient(opts = {}) {
1045
1049
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1046
1050
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1047
1051
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1052
+ // GET /store/modules/{key}/versions/{version}/howto — rank: any-builder — GET /store/modules/:key/versions/:version/howto
1053
+ getStoreModulesKeyVersionsVersionHowto: (args) => request("GET", "/store/modules/{key}/versions/{version}/howto", { hasBody: false }, args),
1048
1054
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1049
1055
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1050
1056
  },
@@ -77,6 +77,10 @@
77
77
  "name": "claims",
78
78
  "description": "Endpoints under `/api/bongos/claims`."
79
79
  },
80
+ {
81
+ "name": "cli",
82
+ "description": "Endpoints under `/api/bongos/cli`."
83
+ },
80
84
  {
81
85
  "name": "closeness",
82
86
  "description": "Endpoints under `/api/bongos/closeness`."
@@ -3395,6 +3399,44 @@
3395
3399
  ]
3396
3400
  }
3397
3401
  },
3402
+ "/cli/commands": {
3403
+ "get": {
3404
+ "operationId": "get_cli_commands",
3405
+ "tags": [
3406
+ "cli"
3407
+ ],
3408
+ "summary": "GET /cli/commands",
3409
+ "description": "GET /cli/commands — the bongos CLI's verbs, grouped like `bongos --help`. rank: any builder — read-only reference; the hall's Commands page is sign-in gated.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
3410
+ "x-rank": "any-builder",
3411
+ "x-source": "src/bongos/routes/cli-commands.js",
3412
+ "responses": {
3413
+ "200": {
3414
+ "description": "Success.",
3415
+ "content": {
3416
+ "application/json": {
3417
+ "schema": {
3418
+ "$ref": "#/components/schemas/GetCliCommandsResponse"
3419
+ }
3420
+ }
3421
+ }
3422
+ },
3423
+ "400": {
3424
+ "$ref": "#/components/responses/BadRequest"
3425
+ },
3426
+ "401": {
3427
+ "$ref": "#/components/responses/Unauthorized"
3428
+ },
3429
+ "403": {
3430
+ "$ref": "#/components/responses/Forbidden"
3431
+ }
3432
+ },
3433
+ "security": [
3434
+ {
3435
+ "builderSession": []
3436
+ }
3437
+ ]
3438
+ }
3439
+ },
3398
3440
  "/closeness/for-me": {
3399
3441
  "get": {
3400
3442
  "operationId": "get_closeness_for_me",
@@ -19343,6 +19385,67 @@
19343
19385
  ]
19344
19386
  }
19345
19387
  },
19388
+ "/store/modules/{key}/versions/{version}/howto": {
19389
+ "get": {
19390
+ "operationId": "get_store_modules_key_versions_version_howto",
19391
+ "tags": [
19392
+ "store"
19393
+ ],
19394
+ "summary": "GET /store/modules/:key/versions/:version/howto",
19395
+ "description": "GET /api/bongos/store/modules/:key/versions/:version/howto — the how-to a version shipped with (task 1004366, ADR 0347 D1/D3), read from that version's own stored tarball after the install hash check, so it always matches the version and cannot change after publishing. Returns the markdown as TEXT, never HTML: the hall's Modules tab renders it through its one escaping markdown reader (md-reader.js), because the file is author-written and must be treated as untrusted input. rank: any-builder — no entitlement needed, since a buyer reads the how-to before deciding. The one exception is a delisted module: ADR 0338 D2 keeps it readable only for the people who already hold it, so there the caller's own entitlement is checked (own-scoped, like the reads above).\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
19396
+ "x-rank": "any-builder",
19397
+ "x-source": "src/bongos/routes/modules.js",
19398
+ "parameters": [
19399
+ {
19400
+ "name": "key",
19401
+ "in": "path",
19402
+ "required": true,
19403
+ "schema": {
19404
+ "type": "string"
19405
+ },
19406
+ "description": "Path parameter `key`."
19407
+ },
19408
+ {
19409
+ "name": "version",
19410
+ "in": "path",
19411
+ "required": true,
19412
+ "schema": {
19413
+ "type": "string"
19414
+ },
19415
+ "description": "Path parameter `version`."
19416
+ }
19417
+ ],
19418
+ "responses": {
19419
+ "200": {
19420
+ "description": "Success.",
19421
+ "content": {
19422
+ "application/json": {
19423
+ "schema": {
19424
+ "$ref": "#/components/schemas/GetStoreModulesKeyVersionsVersionHowtoResponse"
19425
+ }
19426
+ }
19427
+ }
19428
+ },
19429
+ "400": {
19430
+ "$ref": "#/components/responses/BadRequest"
19431
+ },
19432
+ "401": {
19433
+ "$ref": "#/components/responses/Unauthorized"
19434
+ },
19435
+ "403": {
19436
+ "$ref": "#/components/responses/Forbidden"
19437
+ },
19438
+ "404": {
19439
+ "$ref": "#/components/responses/NotFound"
19440
+ }
19441
+ },
19442
+ "security": [
19443
+ {
19444
+ "builderSession": []
19445
+ }
19446
+ ]
19447
+ }
19448
+ },
19346
19449
  "/store/modules/{key}/versions/{version}/tarball": {
19347
19450
  "get": {
19348
19451
  "operationId": "get_store_modules_key_versions_version_tarball",
@@ -22507,6 +22610,17 @@
22507
22610
  "stale_hours_source"
22508
22611
  ]
22509
22612
  },
22613
+ "GetCliCommandsResponse": {
22614
+ "type": "object",
22615
+ "properties": {
22616
+ "version": {},
22617
+ "groups": {}
22618
+ },
22619
+ "required": [
22620
+ "version",
22621
+ "groups"
22622
+ ]
22623
+ },
22510
22624
  "GetClosenessForMeResponse": {
22511
22625
  "type": "object",
22512
22626
  "properties": {
@@ -24049,6 +24163,27 @@
24049
24163
  "entitlements"
24050
24164
  ]
24051
24165
  },
24166
+ "GetStoreModulesKeyVersionsVersionHowtoResponse": {
24167
+ "type": "object",
24168
+ "properties": {
24169
+ "module_key": {},
24170
+ "title": {},
24171
+ "version": {},
24172
+ "published_at": {},
24173
+ "delisted": {},
24174
+ "markdown": {},
24175
+ "artifact_url": {}
24176
+ },
24177
+ "required": [
24178
+ "module_key",
24179
+ "title",
24180
+ "version",
24181
+ "published_at",
24182
+ "delisted",
24183
+ "markdown",
24184
+ "artifact_url"
24185
+ ]
24186
+ },
24052
24187
  "GetTaskRecommendationsForMeResponse": {
24053
24188
  "type": "object",
24054
24189
  "properties": {
@@ -29998,9 +30133,9 @@
29998
30133
  "description": "A required dependency/feature is not configured or is temporarily down."
29999
30134
  }
30000
30135
  },
30001
- "x-endpoint-count": 469,
30002
- "x-schema-count": 501,
30136
+ "x-endpoint-count": 471,
30137
+ "x-schema-count": 503,
30003
30138
  "x-undocumented-bodies": 12,
30004
- "x-response-schemas": 337,
30139
+ "x-response-schemas": 339,
30005
30140
  "x-generated-by": "scripts/gds/gen-api-docs.js"
30006
30141
  }
@@ -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. 469 endpoints across 84 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 471 endpoints across 85 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`.
@@ -146,6 +146,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
146
146
  | POST | `/api/bongos/claims/batch/release` | `any-builder` | `claim_ids`, `force` | Bulk release (task 1758) — the batch twin of resolve(outcome='abandoned'). |
147
147
  | POST | `/api/bongos/claims/batch/validate` | `any-builder` | `task_ids` | Dry-run validate (task 1758) — read-only twin of claimTasksBatch's pre-flight checks. |
148
148
 
149
+ ## `cli` (1)
150
+
151
+ | Method | Path | Rank | Body | Description |
152
+ |---|---|---|---|---|
153
+ | GET | `/api/bongos/cli/commands` | `any-builder` | — | GET /cli/commands — the bongos CLI's verbs, grouped like `bongos --help`. |
154
+
149
155
  ## `closeness` (3)
150
156
 
151
157
  | Method | Path | Rank | Body | Description |
@@ -744,7 +750,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
744
750
  | GET | `/api/bongos/sso/pubkey` | `public` | — | GET /sso/pubkey — the hub's Ed25519 assertion-verification key (public). |
745
751
  | POST | `/api/bongos/sso/token` | `public` | `client_id`, `client_secret`, `code`, `redirect_uri` | POST /sso/token — server-to-server code redemption. |
746
752
 
747
- ## `store` (6)
753
+ ## `store` (7)
748
754
 
749
755
  | Method | Path | Rank | Body | Description |
750
756
  |---|---|---|---|---|
@@ -753,6 +759,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
753
759
  | POST | `/api/bongos/store/modules/:key/acquired` | `any-builder` | `version` | |
754
760
  | GET | `/api/bongos/store/modules/:key/entitlement` | `any-builder` | — | |
755
761
  | POST | `/api/bongos/store/modules/:key/versions` | `metic+archon` | _undocumented_ | POST /api/bongos/store/modules/:key/versions — publish one module version to the store (task 1004271, ADR 0338 D1). |
762
+ | GET | `/api/bongos/store/modules/:key/versions/:version/howto` | `any-builder` | — | GET /api/bongos/store/modules/:key/versions/:version/howto — the how-to a version shipped with (task 1004366, ADR 0347 D1/D3), read from … |
756
763
  | GET | `/api/bongos/store/modules/:key/versions/:version/tarball` | `any-builder` | — | |
757
764
 
758
765
  ## `task-recommendations` (4)