@bongos/core 1.24.30 → 1.24.31

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 (101) hide show
  1. package/.bongos-core.json +153 -103
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +8 -0
  4. package/clients/bongos-client/index.cjs +8 -0
  5. package/clients/bongos-client/index.d.ts +8 -0
  6. package/clients/bongos-client/index.mjs +8 -0
  7. package/docs/api/openapi.json +139 -1
  8. package/docs/api-reference.md +7 -3
  9. package/docs/copy-inventory.md +192 -187
  10. package/docs/copy-registry.json +530 -458
  11. package/docs/module-api-changelog.md +2 -2
  12. package/docs/page-inventory.json +15 -35
  13. package/docs/page-readings.json +226 -263
  14. package/modules/copy-desk/module.json +1 -1
  15. package/modules/copy-desk/routes/copy-desk-studio.js +103 -0
  16. package/modules/copy-desk/tests/copy_no_cms.mjs +2 -2
  17. package/modules/hall-ui/public/ai-studio.html +1 -1
  18. package/modules/hall-ui/public/atlas.html +1 -1
  19. package/modules/hall-ui/public/blockers.html +1 -1
  20. package/modules/hall-ui/public/board-room.html +1 -1
  21. package/modules/hall-ui/public/city.html +1 -1
  22. package/modules/hall-ui/public/collab.html +1 -1
  23. package/modules/hall-ui/public/commands.html +1 -1
  24. package/modules/hall-ui/public/copy-desk.html +1 -1
  25. package/modules/hall-ui/public/craft-mode.js +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/goal-map.html +1 -1
  32. package/modules/hall-ui/public/goals.html +1 -1
  33. package/modules/hall-ui/public/government.html +1 -1
  34. package/modules/hall-ui/public/hall-render.js +62 -86
  35. package/modules/hall-ui/public/home-city-draw.js +360 -52
  36. package/modules/hall-ui/public/home-city.css +47 -11
  37. package/modules/hall-ui/public/home-city.js +156 -40
  38. package/modules/hall-ui/public/home-gallery.css +129 -0
  39. package/modules/hall-ui/public/home-gallery.js +349 -0
  40. package/modules/hall-ui/public/home-studio.css +72 -0
  41. package/modules/hall-ui/public/home-studio.js +203 -0
  42. package/modules/hall-ui/public/idea.html +1 -1
  43. package/modules/hall-ui/public/ideas.html +1 -1
  44. package/modules/hall-ui/public/index.html +4 -1
  45. package/modules/hall-ui/public/market-watch-item.html +1 -1
  46. package/modules/hall-ui/public/market-watch-rules.html +1 -1
  47. package/modules/hall-ui/public/market-watch-settings.js +6 -1
  48. package/modules/hall-ui/public/market-watch.html +141 -54
  49. package/modules/hall-ui/public/market-watch.js +54 -0
  50. package/modules/hall-ui/public/market-watch.states.json +2 -1
  51. package/modules/hall-ui/public/modules.html +1 -1
  52. package/modules/hall-ui/public/my-agents.html +1 -1
  53. package/modules/hall-ui/public/primer.html +1 -1
  54. package/modules/hall-ui/public/profile.html +1 -1
  55. package/modules/hall-ui/public/project-settings.html +1 -1
  56. package/modules/hall-ui/public/ranks.html +1 -1
  57. package/modules/hall-ui/public/roadmap.html +1 -1
  58. package/modules/hall-ui/public/roster.html +1 -1
  59. package/modules/hall-ui/public/sessions.html +1 -1
  60. package/modules/hall-ui/public/settings.html +1 -1
  61. package/modules/hall-ui/public/shell.js +2 -3
  62. package/modules/hall-ui/public/street.html +1 -1
  63. package/modules/hall-ui/public/studio.html +9 -1
  64. package/modules/hall-ui/public/style.css +74 -27
  65. package/modules/hall-ui/public/task.html +1 -1
  66. package/modules/hall-ui/public/thinking.html +1 -1
  67. package/modules/hall-ui/public/tweak-editor.html +1 -1
  68. package/modules/hall-ui/public/watch.html +1 -1
  69. package/modules/hall-ui/public/work.html +1 -1
  70. package/modules/hall-ui/records/home-city.md +123 -0
  71. package/modules/hall-ui/records/loader.md +1 -1
  72. package/modules/hall-ui/records/market-watch-settings.md +16 -3
  73. package/modules/hall-ui/records/market-watch.md +3 -1
  74. package/modules/lifecycle/home-city.js +58 -10
  75. package/modules/lifecycle/home-gallery.js +320 -0
  76. package/modules/lifecycle/migrations/lifecycle_020_work_appreciations.sql +36 -0
  77. package/modules/lifecycle/module.json +1 -0
  78. package/modules/lifecycle/routes/home-gallery.js +37 -0
  79. package/modules/market-watch/routes/settings.js +1 -1
  80. package/package-lock.json +2 -2
  81. package/package.json +1 -1
  82. package/release-notes.json +29 -1
  83. package/scripts/bongos/leak-scan-allowlist.js +8 -0
  84. package/scripts/hall-preview/README.md +1 -0
  85. package/scripts/hall-preview/server.js +10 -0
  86. package/src/bongos/serve-internal.js +17 -3
  87. package/src/module-api.js +1 -1
  88. package/tests/hall_builders_page_pass.mjs +18 -27
  89. package/tests/hall_loading.mjs +1 -1
  90. package/tests/hall_nav.mjs +11 -4
  91. package/tests/hall_page_gate_map.mjs +7 -4
  92. package/tests/home_city.mjs +200 -5
  93. package/tests/home_city_widget.mjs +167 -27
  94. package/tests/home_gallery.mjs +255 -0
  95. package/tests/home_gallery_widget.mjs +220 -0
  96. package/tests/home_studio.mjs +169 -0
  97. package/tests/home_studio_widget.mjs +157 -0
  98. package/tests/market_watch_pages.mjs +162 -0
  99. package/tests/nav_permission_atoms.mjs +2 -2
  100. package/modules/hall-ui/public/market-watch-settings.html +0 -115
  101. package/modules/hall-ui/public/market-watch-settings.states.json +0 -14
@@ -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
- - 680 operations across 85 resource groups
8
+ - 684 operations across 85 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -393,6 +393,8 @@ function createClient(opts = {}) {
393
393
  getCopyDeskQueue: (args) => request("GET", "/copy-desk/queue", { hasBody: false }, args),
394
394
  // GET /copy-desk/strings — rank: any-builder — GET /copy-desk/strings
395
395
  getCopyDeskStrings: (args) => request("GET", "/copy-desk/strings", { hasBody: false }, args),
396
+ // GET /copy-desk/studio — rank: any-builder — GET /copy-desk/studio
397
+ getCopyDeskStudio: (args) => request("GET", "/copy-desk/studio", { hasBody: false }, args),
396
398
  // GET /copy-desk/tally — rank: any-builder — GET /copy-desk/tally
397
399
  getCopyDeskTally: (args) => request("GET", "/copy-desk/tally", { hasBody: false }, args),
398
400
  },
@@ -705,6 +707,12 @@ function createClient(opts = {}) {
705
707
  "home": {
706
708
  // GET /home/city — rank: any-builder — GET /home/city
707
709
  getHomeCity: (args) => request("GET", "/home/city", { hasBody: false }, args),
710
+ // GET /home/gallery — rank: any-builder — GET /home/gallery
711
+ getHomeGallery: (args) => request("GET", "/home/gallery", { hasBody: false }, args),
712
+ // PUT /home/gallery/{id}/heart — rank: any-builder — PUT /home/gallery/:id/heart
713
+ putHomeGalleryIdHeart: (args) => request("PUT", "/home/gallery/{id}/heart", { hasBody: true }, args),
714
+ // GET /home/studio/works — rank: any-builder — GET /home/studio/works
715
+ getHomeStudioWorks: (args) => request("GET", "/home/studio/works", { hasBody: false }, args),
708
716
  },
709
717
  "inbox": {
710
718
  // GET /inbox — rank: any-builder — GET /inbox
@@ -392,6 +392,8 @@ function createClient(opts = {}) {
392
392
  getCopyDeskQueue: (args) => request("GET", "/copy-desk/queue", { hasBody: false }, args),
393
393
  // GET /copy-desk/strings — rank: any-builder — GET /copy-desk/strings
394
394
  getCopyDeskStrings: (args) => request("GET", "/copy-desk/strings", { hasBody: false }, args),
395
+ // GET /copy-desk/studio — rank: any-builder — GET /copy-desk/studio
396
+ getCopyDeskStudio: (args) => request("GET", "/copy-desk/studio", { hasBody: false }, args),
395
397
  // GET /copy-desk/tally — rank: any-builder — GET /copy-desk/tally
396
398
  getCopyDeskTally: (args) => request("GET", "/copy-desk/tally", { hasBody: false }, args),
397
399
  },
@@ -704,6 +706,12 @@ function createClient(opts = {}) {
704
706
  "home": {
705
707
  // GET /home/city — rank: any-builder — GET /home/city
706
708
  getHomeCity: (args) => request("GET", "/home/city", { hasBody: false }, args),
709
+ // GET /home/gallery — rank: any-builder — GET /home/gallery
710
+ getHomeGallery: (args) => request("GET", "/home/gallery", { hasBody: false }, args),
711
+ // PUT /home/gallery/{id}/heart — rank: any-builder — PUT /home/gallery/:id/heart
712
+ putHomeGalleryIdHeart: (args) => request("PUT", "/home/gallery/{id}/heart", { hasBody: true }, args),
713
+ // GET /home/studio/works — rank: any-builder — GET /home/studio/works
714
+ getHomeStudioWorks: (args) => request("GET", "/home/studio/works", { hasBody: false }, args),
707
715
  },
708
716
  "inbox": {
709
717
  // GET /inbox — rank: any-builder — GET /inbox
@@ -1045,6 +1045,8 @@ export interface BongosClient {
1045
1045
  getCopyDeskQueue(args?: RequestArgs): Promise<ApiResponse>;
1046
1046
  /** GET /copy-desk/strings — rank: any-builder */
1047
1047
  getCopyDeskStrings(args?: RequestArgs): Promise<ApiResponse>;
1048
+ /** GET /copy-desk/studio — rank: any-builder */
1049
+ getCopyDeskStudio(args?: RequestArgs): Promise<ApiResponse>;
1048
1050
  /** GET /copy-desk/tally — rank: any-builder */
1049
1051
  getCopyDeskTally(args?: RequestArgs): Promise<ApiResponse>;
1050
1052
  };
@@ -1357,6 +1359,12 @@ export interface BongosClient {
1357
1359
  "home": {
1358
1360
  /** GET /home/city — rank: any-builder */
1359
1361
  getHomeCity(args?: RequestArgs): Promise<ApiResponse>;
1362
+ /** GET /home/gallery — rank: any-builder */
1363
+ getHomeGallery(args?: RequestArgs): Promise<ApiResponse>;
1364
+ /** PUT /home/gallery/{id}/heart — rank: any-builder */
1365
+ putHomeGalleryIdHeart(args?: RequestArgs): Promise<ApiResponse>;
1366
+ /** GET /home/studio/works — rank: any-builder */
1367
+ getHomeStudioWorks(args?: RequestArgs): Promise<ApiResponse>;
1360
1368
  };
1361
1369
  "inbox": {
1362
1370
  /** GET /inbox — rank: any-builder */
@@ -389,6 +389,8 @@ export function createClient(opts = {}) {
389
389
  getCopyDeskQueue: (args) => request("GET", "/copy-desk/queue", { hasBody: false }, args),
390
390
  // GET /copy-desk/strings — rank: any-builder — GET /copy-desk/strings
391
391
  getCopyDeskStrings: (args) => request("GET", "/copy-desk/strings", { hasBody: false }, args),
392
+ // GET /copy-desk/studio — rank: any-builder — GET /copy-desk/studio
393
+ getCopyDeskStudio: (args) => request("GET", "/copy-desk/studio", { hasBody: false }, args),
392
394
  // GET /copy-desk/tally — rank: any-builder — GET /copy-desk/tally
393
395
  getCopyDeskTally: (args) => request("GET", "/copy-desk/tally", { hasBody: false }, args),
394
396
  },
@@ -701,6 +703,12 @@ export function createClient(opts = {}) {
701
703
  "home": {
702
704
  // GET /home/city — rank: any-builder — GET /home/city
703
705
  getHomeCity: (args) => request("GET", "/home/city", { hasBody: false }, args),
706
+ // GET /home/gallery — rank: any-builder — GET /home/gallery
707
+ getHomeGallery: (args) => request("GET", "/home/gallery", { hasBody: false }, args),
708
+ // PUT /home/gallery/{id}/heart — rank: any-builder — PUT /home/gallery/:id/heart
709
+ putHomeGalleryIdHeart: (args) => request("PUT", "/home/gallery/{id}/heart", { hasBody: true }, args),
710
+ // GET /home/studio/works — rank: any-builder — GET /home/studio/works
711
+ getHomeStudioWorks: (args) => request("GET", "/home/studio/works", { hasBody: false }, args),
704
712
  },
705
713
  "inbox": {
706
714
  // GET /inbox — rank: any-builder — GET /inbox
@@ -6232,6 +6232,37 @@
6232
6232
  ]
6233
6233
  }
6234
6234
  },
6235
+ "/copy-desk/studio": {
6236
+ "get": {
6237
+ "operationId": "get_copy_desk_studio",
6238
+ "tags": [
6239
+ "copy-desk"
6240
+ ],
6241
+ "summary": "GET /copy-desk/studio",
6242
+ "description": "GET /copy-desk/studio, the caller's easel, the pages waiting for an artist and the newest open flags. A work list, like /copy-desk/next and /copy-desk/queue, which any signed-in builder may already read.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
6243
+ "x-rank": "any-builder",
6244
+ "x-source": "modules/copy-desk/routes/copy-desk-studio.js",
6245
+ "responses": {
6246
+ "200": {
6247
+ "description": "Success."
6248
+ },
6249
+ "400": {
6250
+ "$ref": "#/components/responses/BadRequest"
6251
+ },
6252
+ "401": {
6253
+ "$ref": "#/components/responses/Unauthorized"
6254
+ },
6255
+ "403": {
6256
+ "$ref": "#/components/responses/Forbidden"
6257
+ }
6258
+ },
6259
+ "security": [
6260
+ {
6261
+ "builderSession": []
6262
+ }
6263
+ ]
6264
+ }
6265
+ },
6235
6266
  "/copy-desk/tally": {
6236
6267
  "get": {
6237
6268
  "operationId": "get_copy_desk_tally",
@@ -12920,6 +12951,113 @@
12920
12951
  ]
12921
12952
  }
12922
12953
  },
12954
+ "/home/gallery": {
12955
+ "get": {
12956
+ "operationId": "get_home_gallery",
12957
+ "tags": [
12958
+ "home"
12959
+ ],
12960
+ "summary": "GET /home/gallery",
12961
+ "description": "GET /home/gallery?order=popular|latest, at most 60 works. Every work is a shipped task whose picture a signed-in builder can already open (the task-visuals audience); a work under a private goal the viewer cannot read is left off. Each carries its heart count and whether the viewer gave one.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
12962
+ "x-rank": "any-builder",
12963
+ "x-source": "modules/lifecycle/routes/home-gallery.js",
12964
+ "responses": {
12965
+ "200": {
12966
+ "description": "Success."
12967
+ },
12968
+ "400": {
12969
+ "$ref": "#/components/responses/BadRequest"
12970
+ },
12971
+ "401": {
12972
+ "$ref": "#/components/responses/Unauthorized"
12973
+ },
12974
+ "403": {
12975
+ "$ref": "#/components/responses/Forbidden"
12976
+ }
12977
+ },
12978
+ "security": [
12979
+ {
12980
+ "builderSession": []
12981
+ }
12982
+ ]
12983
+ }
12984
+ },
12985
+ "/home/gallery/{id}/heart": {
12986
+ "put": {
12987
+ "operationId": "put_home_gallery_id_heart",
12988
+ "tags": [
12989
+ "home"
12990
+ ],
12991
+ "summary": "PUT /home/gallery/:id/heart",
12992
+ "description": "PUT /home/gallery/:id/heart { on }. Appreciation, never a grade: one heart per builder per work, given or taken back by the builder themself (the caller, never the body). Refused for anything their wall would not hang.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
12993
+ "x-rank": "any-builder",
12994
+ "x-source": "modules/lifecycle/routes/home-gallery.js",
12995
+ "parameters": [
12996
+ {
12997
+ "name": "id",
12998
+ "in": "path",
12999
+ "required": true,
13000
+ "schema": {
13001
+ "type": "string"
13002
+ },
13003
+ "description": "Path parameter `id`."
13004
+ }
13005
+ ],
13006
+ "responses": {
13007
+ "200": {
13008
+ "description": "Success."
13009
+ },
13010
+ "400": {
13011
+ "$ref": "#/components/responses/BadRequest"
13012
+ },
13013
+ "401": {
13014
+ "$ref": "#/components/responses/Unauthorized"
13015
+ },
13016
+ "403": {
13017
+ "$ref": "#/components/responses/Forbidden"
13018
+ },
13019
+ "404": {
13020
+ "$ref": "#/components/responses/NotFound"
13021
+ }
13022
+ },
13023
+ "security": [
13024
+ {
13025
+ "builderSession": []
13026
+ }
13027
+ ]
13028
+ }
13029
+ },
13030
+ "/home/studio/works": {
13031
+ "get": {
13032
+ "operationId": "get_home_studio_works",
13033
+ "tags": [
13034
+ "home"
13035
+ ],
13036
+ "summary": "GET /home/studio/works",
13037
+ "description": "GET /home/studio/works?page=<page id>, the studio's two shelves (task 1005061): the works the CALLER appreciated and the works the caller signed, at most six each, and the easel page's newest work, all by the wall's own rule.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
13038
+ "x-rank": "any-builder",
13039
+ "x-source": "modules/lifecycle/routes/home-gallery.js",
13040
+ "responses": {
13041
+ "200": {
13042
+ "description": "Success."
13043
+ },
13044
+ "400": {
13045
+ "$ref": "#/components/responses/BadRequest"
13046
+ },
13047
+ "401": {
13048
+ "$ref": "#/components/responses/Unauthorized"
13049
+ },
13050
+ "403": {
13051
+ "$ref": "#/components/responses/Forbidden"
13052
+ }
13053
+ },
13054
+ "security": [
13055
+ {
13056
+ "builderSession": []
13057
+ }
13058
+ ]
13059
+ }
13060
+ },
12923
13061
  "/inbox": {
12924
13062
  "get": {
12925
13063
  "operationId": "get_inbox",
@@ -42769,7 +42907,7 @@
42769
42907
  "description": "A required dependency/feature is not configured or is temporarily down."
42770
42908
  }
42771
42909
  },
42772
- "x-endpoint-count": 680,
42910
+ "x-endpoint-count": 684,
42773
42911
  "x-schema-count": 719,
42774
42912
  "x-undocumented-bodies": 12,
42775
42913
  "x-response-schemas": 457,
@@ -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. 680 endpoints across 115 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 684 endpoints across 117 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`.
@@ -221,7 +221,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
221
221
  | GET | `/api/bongos/connections/requests` | `any-builder` | — | MY pending requests, both directions (own data). |
222
222
  | GET | `/api/bongos/connections/suggestions` | `any-builder` | — | "builders you may know" (R21, task 1002297; ADR 0202 D5). |
223
223
 
224
- ## `copy-desk` (21)
224
+ ## `copy-desk` (22)
225
225
 
226
226
  | Method | Path | Rank | Body | Description |
227
227
  |---|---|---|---|---|
@@ -245,6 +245,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
245
245
  | POST | `/api/bongos/copy-desk/proposals` | `any-builder` | `string_id`, `proposed_text`, `why`, `file`, `line`, `flag_id` | ------------------------------------------------------------------------- POST /copy-desk/proposals — an artist proposes new wording, and… |
246
246
  | GET | `/api/bongos/copy-desk/queue` | `any-builder` | — | ------------------------------------------------------------------------- GET /copy-desk/queue — the artist's working list. |
247
247
  | GET | `/api/bongos/copy-desk/strings` | `any-builder` | — | ------------------------------------------------------------------------- GET /copy-desk/strings — search the inventory, to find somethin… |
248
+ | GET | `/api/bongos/copy-desk/studio` | `any-builder` | — | GET /copy-desk/studio, the caller's easel, the pages waiting for an artist and the newest open flags. |
248
249
  | GET | `/api/bongos/copy-desk/tally` | `any-builder` | — | ------------------------------------------------------------------------- GET /copy-desk/tally — the caller's corner tally in the studio:… |
249
250
 
250
251
  ## `core-update` (1)
@@ -472,11 +473,14 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
472
473
  | GET | `/api/bongos/help-requests/for-me` | `any-builder` | — | The addressed read — C01's answer to "and fires a notification". |
473
474
  | GET | `/api/bongos/help-requests/mine` | `any-builder` | — | your own asks, so you can settle them. |
474
475
 
475
- ## `home` (1)
476
+ ## `home` (4)
476
477
 
477
478
  | Method | Path | Rank | Body | Description |
478
479
  |---|---|---|---|---|
479
480
  | GET | `/api/bongos/home/city` | `any-builder` | — | GET /home/city, the counts Home's city draws. |
481
+ | GET | `/api/bongos/home/gallery` | `any-builder` | — | GET /home/gallery?order=popular\|latest, at most 60 works. |
482
+ | PUT | `/api/bongos/home/gallery/:id/heart` | `any-builder` | — | PUT /home/gallery/:id/heart { on }. |
483
+ | GET | `/api/bongos/home/studio/works` | `any-builder` | — | GET /home/studio/works?page=<page id>, the studio's two shelves (task 1005061): the works the CALLER appreciated and the works the caller… |
480
484
 
481
485
  ## `inbox` (20)
482
486