@bongos/core 1.19.534 → 1.19.536
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 +74 -39
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +8 -0
- package/clients/bongos-client/index.cjs +8 -0
- package/clients/bongos-client/index.d.ts +11 -0
- package/clients/bongos-client/index.mjs +8 -0
- package/docs/api/openapi.json +186 -3
- package/docs/api-reference.md +10 -2
- package/docs/copy-inventory.md +64 -43
- package/docs/copy-registry.json +293 -62
- package/docs/module-api-changelog.md +4 -0
- package/modules/dev-box/app/src/vendor/bongos-client.cjs +8 -0
- package/modules/government/catalog.js +1 -0
- package/modules/government/migrations/government_010_project_settings_manage.sql +58 -0
- package/modules/hall-ui/public/hall-kit.js +93 -7
- package/modules/hall-ui/public/project-settings.css +90 -0
- package/modules/hall-ui/public/project-settings.html +68 -0
- package/modules/hall-ui/public/project-settings.js +249 -0
- package/modules/hall-ui/public/roadmap-timeline.js +105 -0
- package/modules/hall-ui/public/roadmap.html +7 -1
- package/modules/hall-ui/public/roadmap.js +16 -0
- package/modules/hall-ui/public/shell.js +3 -0
- package/modules/hall-ui/public/style.css +4 -2
- package/modules/hall-ui/public/watch.html +4 -0
- package/modules/hall-ui/public/watch.js +116 -0
- package/modules/lifecycle/goal-category.js +82 -0
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/routes/goals.js +16 -0
- package/modules/lifecycle/routes/project-settings.js +263 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/hall-preview/refresh-fixtures.js +6 -0
- package/src/bongos/serve-internal.js +12 -1
- package/src/module-api.js +13 -1
- package/tests/hall_kit_charts.mjs +173 -0
- package/tests/hall_nav.mjs +3 -1
- package/tests/hall_oversight_world.mjs +159 -0
- package/tests/hall_page_gate_map.mjs +4 -0
- package/tests/hall_reading_world.mjs +153 -0
- package/tests/project_settings_page.mjs +337 -0
package/docs/api/openapi.json
CHANGED
|
@@ -181,6 +181,10 @@
|
|
|
181
181
|
"name": "profiles",
|
|
182
182
|
"description": "Endpoints under `/api/bongos/profiles`."
|
|
183
183
|
},
|
|
184
|
+
{
|
|
185
|
+
"name": "project-settings",
|
|
186
|
+
"description": "Endpoints under `/api/bongos/project-settings`."
|
|
187
|
+
},
|
|
184
188
|
{
|
|
185
189
|
"name": "projects",
|
|
186
190
|
"description": "Endpoints under `/api/bongos/projects`."
|
|
@@ -10939,6 +10943,99 @@
|
|
|
10939
10943
|
"security": []
|
|
10940
10944
|
}
|
|
10941
10945
|
},
|
|
10946
|
+
"/project-settings": {
|
|
10947
|
+
"get": {
|
|
10948
|
+
"operationId": "get_project_settings",
|
|
10949
|
+
"tags": [
|
|
10950
|
+
"project-settings"
|
|
10951
|
+
],
|
|
10952
|
+
"summary": "GET /project-settings",
|
|
10953
|
+
"description": "GET /project-settings — all five rows in ONE read. rank: project.settings.manage (metic+, government_010), the SAME floor as the page it serves (requireGovernmentPage). The first cut gated this any-builder on the reasoning that it is \"the project's own published terms\" — but the payload also carries reward-policy internals (marginPct, usdPeg, mode), a raw rejected project_settings value, and internal file/migration paths, and a xenos who cannot even load the page could still curl those. Matching the read floor to the page's (task 1003280 grade, hacker lens) closes that asymmetry; the two WRITES already gate on this same atom, so the whole surface is now one floor. One read, not five: the page draws five rows, so it asks for five rows. Fetching per-row would put the hall's own settings page in the shape goal 1000072's criterion names (hall-ui/CLAUDE.md, \"a card asks the server for the rows it draws\").\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `project.settings.manage` (all required).",
|
|
10954
|
+
"x-rank": "metic+archon",
|
|
10955
|
+
"x-source": "modules/lifecycle/routes/project-settings.js",
|
|
10956
|
+
"x-permissions": [
|
|
10957
|
+
"project.settings.manage"
|
|
10958
|
+
],
|
|
10959
|
+
"responses": {
|
|
10960
|
+
"200": {
|
|
10961
|
+
"description": "Success.",
|
|
10962
|
+
"content": {
|
|
10963
|
+
"application/json": {
|
|
10964
|
+
"schema": {
|
|
10965
|
+
"$ref": "#/components/schemas/GetProjectSettingsResponse"
|
|
10966
|
+
}
|
|
10967
|
+
}
|
|
10968
|
+
}
|
|
10969
|
+
},
|
|
10970
|
+
"400": {
|
|
10971
|
+
"$ref": "#/components/responses/BadRequest"
|
|
10972
|
+
},
|
|
10973
|
+
"401": {
|
|
10974
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
10975
|
+
},
|
|
10976
|
+
"403": {
|
|
10977
|
+
"$ref": "#/components/responses/Forbidden"
|
|
10978
|
+
}
|
|
10979
|
+
},
|
|
10980
|
+
"security": [
|
|
10981
|
+
{
|
|
10982
|
+
"builderSession": []
|
|
10983
|
+
}
|
|
10984
|
+
]
|
|
10985
|
+
}
|
|
10986
|
+
},
|
|
10987
|
+
"/project-settings/rot-days": {
|
|
10988
|
+
"patch": {
|
|
10989
|
+
"operationId": "patch_project_settings_rot_days",
|
|
10990
|
+
"tags": [
|
|
10991
|
+
"project-settings"
|
|
10992
|
+
],
|
|
10993
|
+
"summary": "PATCH /project-settings/rot-days",
|
|
10994
|
+
"description": "PATCH /project-settings/rot-days — body { days }. The one number this page writes. rank: project.settings.manage (metic+, government_010). Validated HERE against the resolver's own parser rather than a re-typed range, so the page and the reader of the value can never disagree about what is acceptable — the second copy of \"1..365\" would be the drift this file exists to prevent. rank: project.settings.manage (metic+, granted by government_010). THE ATOM IS A STRING LITERAL, not a named constant, and that is load-bearing: the route-rank auditor (src/bongos/route-rank-check.js) reads this file statically and pulls the atom out of `requirePermission(...)` with a QUOTED-STRING match. A `requirePermission(SETTINGS_ATOM)` therefore resolves to an EMPTY gate — rank 'unknown' — which is a hard ADR 0016 build failure, and the generated OpenAPI would have carried no `x-permissions` either. This route was written with a constant first and fitness.js caught it; that is why every gated route in the tree spells its atom inline. (Wrapping the middleware list across lines is fine — the sibling PATCH /work-categories/:id does exactly that and still classifies metic+archon.)\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `project.settings.manage` (all required).",
|
|
10995
|
+
"x-rank": "metic+archon",
|
|
10996
|
+
"x-source": "modules/lifecycle/routes/project-settings.js",
|
|
10997
|
+
"x-permissions": [
|
|
10998
|
+
"project.settings.manage"
|
|
10999
|
+
],
|
|
11000
|
+
"requestBody": {
|
|
11001
|
+
"required": true,
|
|
11002
|
+
"content": {
|
|
11003
|
+
"application/json": {
|
|
11004
|
+
"schema": {
|
|
11005
|
+
"$ref": "#/components/schemas/PatchProjectSettingsRotDaysRequest"
|
|
11006
|
+
}
|
|
11007
|
+
}
|
|
11008
|
+
},
|
|
11009
|
+
"x-validated": true
|
|
11010
|
+
},
|
|
11011
|
+
"responses": {
|
|
11012
|
+
"200": {
|
|
11013
|
+
"description": "Success.",
|
|
11014
|
+
"content": {
|
|
11015
|
+
"application/json": {
|
|
11016
|
+
"schema": {
|
|
11017
|
+
"$ref": "#/components/schemas/PatchProjectSettingsRotDaysResponse"
|
|
11018
|
+
}
|
|
11019
|
+
}
|
|
11020
|
+
}
|
|
11021
|
+
},
|
|
11022
|
+
"400": {
|
|
11023
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
11024
|
+
},
|
|
11025
|
+
"401": {
|
|
11026
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
11027
|
+
},
|
|
11028
|
+
"403": {
|
|
11029
|
+
"$ref": "#/components/responses/Forbidden"
|
|
11030
|
+
}
|
|
11031
|
+
},
|
|
11032
|
+
"security": [
|
|
11033
|
+
{
|
|
11034
|
+
"builderSession": []
|
|
11035
|
+
}
|
|
11036
|
+
]
|
|
11037
|
+
}
|
|
11038
|
+
},
|
|
10942
11039
|
"/projects": {
|
|
10943
11040
|
"get": {
|
|
10944
11041
|
"operationId": "get_projects",
|
|
@@ -16012,6 +16109,54 @@
|
|
|
16012
16109
|
}
|
|
16013
16110
|
]
|
|
16014
16111
|
}
|
|
16112
|
+
},
|
|
16113
|
+
"/work-categories/{id}": {
|
|
16114
|
+
"patch": {
|
|
16115
|
+
"operationId": "patch_work_categories_id",
|
|
16116
|
+
"tags": [
|
|
16117
|
+
"work-categories"
|
|
16118
|
+
],
|
|
16119
|
+
"summary": "PATCH /work-categories/:id",
|
|
16120
|
+
"description": "PATCH /work-categories/:id — body { label?, sort_order?, active? }: rename a category, move it in the order, or stop offering it. The set has been list+add only since core_226 even though the table carries both columns, so a project could grow its vocabulary and never tidy it (task 1003280). rank: project.settings.manage (metic+, government_010) — the SHAPE of the set, one tier up from POST's goal.create, because reordering and deactivating affect what every future author is offered rather than adding one label to the tail. The slug is deliberately NOT patchable: it is the stable key goal prose and the /goal-create prompt refer to. Deactivating never deletes — goals already carrying a retired category keep a resolvable label.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `project.settings.manage` (all required).",
|
|
16121
|
+
"x-rank": "metic+archon",
|
|
16122
|
+
"x-source": "modules/lifecycle/routes/goals.js",
|
|
16123
|
+
"x-permissions": [
|
|
16124
|
+
"project.settings.manage"
|
|
16125
|
+
],
|
|
16126
|
+
"parameters": [
|
|
16127
|
+
{
|
|
16128
|
+
"name": "id",
|
|
16129
|
+
"in": "path",
|
|
16130
|
+
"required": true,
|
|
16131
|
+
"schema": {
|
|
16132
|
+
"type": "string"
|
|
16133
|
+
},
|
|
16134
|
+
"description": "Path parameter `id`."
|
|
16135
|
+
}
|
|
16136
|
+
],
|
|
16137
|
+
"responses": {
|
|
16138
|
+
"200": {
|
|
16139
|
+
"description": "Success."
|
|
16140
|
+
},
|
|
16141
|
+
"400": {
|
|
16142
|
+
"$ref": "#/components/responses/BadRequest"
|
|
16143
|
+
},
|
|
16144
|
+
"401": {
|
|
16145
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
16146
|
+
},
|
|
16147
|
+
"403": {
|
|
16148
|
+
"$ref": "#/components/responses/Forbidden"
|
|
16149
|
+
},
|
|
16150
|
+
"404": {
|
|
16151
|
+
"$ref": "#/components/responses/NotFound"
|
|
16152
|
+
}
|
|
16153
|
+
},
|
|
16154
|
+
"security": [
|
|
16155
|
+
{
|
|
16156
|
+
"builderSession": []
|
|
16157
|
+
}
|
|
16158
|
+
]
|
|
16159
|
+
}
|
|
16015
16160
|
}
|
|
16016
16161
|
},
|
|
16017
16162
|
"components": {
|
|
@@ -17176,6 +17321,15 @@
|
|
|
17176
17321
|
"cross_project"
|
|
17177
17322
|
]
|
|
17178
17323
|
},
|
|
17324
|
+
"GetProjectSettingsResponse": {
|
|
17325
|
+
"type": "object",
|
|
17326
|
+
"properties": {
|
|
17327
|
+
"rows": {}
|
|
17328
|
+
},
|
|
17329
|
+
"required": [
|
|
17330
|
+
"rows"
|
|
17331
|
+
]
|
|
17332
|
+
},
|
|
17179
17333
|
"GetProjectsFeaturedResponse": {
|
|
17180
17334
|
"type": "object",
|
|
17181
17335
|
"properties": {
|
|
@@ -18208,6 +18362,35 @@
|
|
|
18208
18362
|
"known_sounds"
|
|
18209
18363
|
]
|
|
18210
18364
|
},
|
|
18365
|
+
"PatchProjectSettingsRotDaysRequest": {
|
|
18366
|
+
"type": "object",
|
|
18367
|
+
"properties": {
|
|
18368
|
+
"days": {
|
|
18369
|
+
"type": "number"
|
|
18370
|
+
}
|
|
18371
|
+
},
|
|
18372
|
+
"required": [
|
|
18373
|
+
"days"
|
|
18374
|
+
],
|
|
18375
|
+
"additionalProperties": false
|
|
18376
|
+
},
|
|
18377
|
+
"PatchProjectSettingsRotDaysResponse": {
|
|
18378
|
+
"type": "object",
|
|
18379
|
+
"properties": {
|
|
18380
|
+
"ok": {
|
|
18381
|
+
"type": "boolean"
|
|
18382
|
+
},
|
|
18383
|
+
"rot_days": {},
|
|
18384
|
+
"source": {},
|
|
18385
|
+
"describe": {}
|
|
18386
|
+
},
|
|
18387
|
+
"required": [
|
|
18388
|
+
"ok",
|
|
18389
|
+
"rot_days",
|
|
18390
|
+
"source",
|
|
18391
|
+
"describe"
|
|
18392
|
+
]
|
|
18393
|
+
},
|
|
18211
18394
|
"PatchProjectsIdFeaturedRequest": {
|
|
18212
18395
|
"type": "object",
|
|
18213
18396
|
"properties": {
|
|
@@ -22201,9 +22384,9 @@
|
|
|
22201
22384
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
22202
22385
|
}
|
|
22203
22386
|
},
|
|
22204
|
-
"x-endpoint-count":
|
|
22205
|
-
"x-schema-count":
|
|
22387
|
+
"x-endpoint-count": 355,
|
|
22388
|
+
"x-schema-count": 390,
|
|
22206
22389
|
"x-undocumented-bodies": 9,
|
|
22207
|
-
"x-response-schemas":
|
|
22390
|
+
"x-response-schemas": 265,
|
|
22208
22391
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
22209
22392
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -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.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 355 endpoints across 58 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/<redacted>.md)): `public` < `any-builder` < `metic+archon` < `archon`.
|
|
@@ -442,6 +442,13 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
442
442
|
|---|---|---|---|---|
|
|
443
443
|
| GET | `/api/bongos/profiles/:handle` | `public` | — | a handle-addressed public profile. |
|
|
444
444
|
|
|
445
|
+
## `project-settings` (2)
|
|
446
|
+
|
|
447
|
+
| Method | Path | Rank | Body | Description |
|
|
448
|
+
|---|---|---|---|---|
|
|
449
|
+
| GET | `/api/bongos/project-settings` | `metic+archon` | — | GET /project-settings — all five rows in ONE read. |
|
|
450
|
+
| PATCH | `/api/bongos/project-settings/rot-days` | `metic+archon` | `days` | PATCH /project-settings/rot-days — body { days }. |
|
|
451
|
+
|
|
445
452
|
## `projects` (5)
|
|
446
453
|
|
|
447
454
|
| Method | Path | Rank | Body | Description |
|
|
@@ -622,12 +629,13 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
622
629
|
| GET | `/api/bongos/versions/close-suggestions` | `public` | — | Close-flow gate suggestions for every version still 'building'. |
|
|
623
630
|
| GET | `/api/bongos/versions/progress` | `public` | — | read-only progress aggregate; mirrors /public/progress. |
|
|
624
631
|
|
|
625
|
-
## `work-categories` (
|
|
632
|
+
## `work-categories` (3)
|
|
626
633
|
|
|
627
634
|
| Method | Path | Rank | Body | Description |
|
|
628
635
|
|---|---|---|---|---|
|
|
629
636
|
| GET | `/api/bongos/work-categories` | `any-builder` | — | ---- the ADVISORY human category (task 1003275, criterion legibility-categories) ---- A category ORIENTS a person and steers Claude; it a… |
|
|
630
637
|
| POST | `/api/bongos/work-categories` | `metic+archon` | — | POST /work-categories — the endpoint the "Claude could not place this goal" prompt writes into. |
|
|
638
|
+
| PATCH | `/api/bongos/work-categories/:id` | `metic+archon` | — | PATCH /work-categories/:id — body { label?, sort_order?, active? }: rename a category, move it in the order, or stop offering it. |
|
|
631
639
|
|
|
632
640
|
---
|
|
633
641
|
|