@bongos/core 1.21.68 → 1.21.70

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 (32) hide show
  1. package/.bongos-core.json +36 -36
  2. package/.claude/skills/bongos-feedback/SKILL.md +10 -46
  3. package/clients/bongos-client/README.md +1 -1
  4. package/clients/bongos-client/bongos-client.global.js +6 -2
  5. package/clients/bongos-client/index.cjs +6 -2
  6. package/clients/bongos-client/index.d.ts +10 -3
  7. package/clients/bongos-client/index.mjs +6 -2
  8. package/docs/api/openapi.json +151 -15
  9. package/docs/api-reference.md +6 -4
  10. package/docs/copy-inventory.md +371 -366
  11. package/docs/copy-registry.json +457 -412
  12. package/docs/module-api-changelog.md +4 -0
  13. package/docs/page-inventory.json +2 -1
  14. package/docs/page-readings.json +718 -714
  15. package/modules/platform-identity/instance-feedback.js +108 -7
  16. package/modules/platform-identity/routes/sso.js +71 -0
  17. package/modules/public-landing/public/account.html +88 -1
  18. package/modules/public-landing/public/account.probes.json +9 -0
  19. package/modules/public-landing/public/account.states.json +2 -1
  20. package/modules/public-landing/public/assets/cosmos.css +3 -0
  21. package/modules/public-landing/public/projects.html +14 -81
  22. package/package-lock.json +2 -2
  23. package/package.json +1 -1
  24. package/release-notes.json +11 -0
  25. package/scripts/gds/feedback-send.js +144 -71
  26. package/src/bongos/platform-visibility-gate.js +3 -0
  27. package/src/bongos/routes/feedback.js +91 -77
  28. package/src/module-api.js +1 -1
  29. package/tests/card_apply_ui.mjs +0 -1
  30. package/tests/hub_account_page.mjs +132 -6
  31. package/tests/instance_feedback.mjs +267 -68
  32. package/tests/public_landing_projects.mjs +12 -13
@@ -6000,14 +6000,14 @@
6000
6000
  ]
6001
6001
  }
6002
6002
  },
6003
- "/feedback": {
6003
+ "/feedback/receipt": {
6004
6004
  "post": {
6005
- "operationId": "post_feedback",
6005
+ "operationId": "post_feedback_receipt",
6006
6006
  "tags": [
6007
6007
  "feedback"
6008
6008
  ],
6009
- "summary": "POST /feedback",
6010
- "description": "signed-in builder — reporting a problem with Bongos grants nothing here, and the hub files every report at 'backlog' behind a Metic+ nod.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
6009
+ "summary": "POST /feedback/receipt",
6010
+ "description": "signed-in builder — a receipt only says \"this builder sent this text\"; it grants nothing here, and the hub files every report behind a nod.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
6011
6011
  "x-rank": "any-builder",
6012
6012
  "x-source": "src/bongos/routes/feedback.js",
6013
6013
  "requestBody": {
@@ -6015,7 +6015,7 @@
6015
6015
  "content": {
6016
6016
  "application/json": {
6017
6017
  "schema": {
6018
- "$ref": "#/components/schemas/PostFeedbackRequest"
6018
+ "$ref": "#/components/schemas/PostFeedbackReceiptRequest"
6019
6019
  }
6020
6020
  }
6021
6021
  },
@@ -6023,7 +6023,14 @@
6023
6023
  },
6024
6024
  "responses": {
6025
6025
  "200": {
6026
- "description": "Success."
6026
+ "description": "Success.",
6027
+ "content": {
6028
+ "application/json": {
6029
+ "schema": {
6030
+ "$ref": "#/components/schemas/PostFeedbackReceiptResponse"
6031
+ }
6032
+ }
6033
+ }
6027
6034
  },
6028
6035
  "400": {
6029
6036
  "$ref": "#/components/responses/ValidationFailed"
@@ -6042,6 +6049,41 @@
6042
6049
  ]
6043
6050
  }
6044
6051
  },
6052
+ "/feedback/receipt/{id}": {
6053
+ "get": {
6054
+ "operationId": "get_feedback_receipt_id",
6055
+ "tags": [
6056
+ "feedback"
6057
+ ],
6058
+ "summary": "GET /feedback/receipt/:id",
6059
+ "description": "the hub redeems a receipt with no session of its own. The id is 144 random bits, known only to the CLI that asked for it and the hub it sent it to, and it works once.\n\n**Rank:** `public` — No authentication — any caller.",
6060
+ "x-rank": "public",
6061
+ "x-source": "src/bongos/routes/feedback.js",
6062
+ "parameters": [
6063
+ {
6064
+ "name": "id",
6065
+ "in": "path",
6066
+ "required": true,
6067
+ "schema": {
6068
+ "type": "string"
6069
+ },
6070
+ "description": "Path parameter `id`."
6071
+ }
6072
+ ],
6073
+ "responses": {
6074
+ "200": {
6075
+ "description": "Success."
6076
+ },
6077
+ "400": {
6078
+ "$ref": "#/components/responses/BadRequest"
6079
+ },
6080
+ "404": {
6081
+ "$ref": "#/components/responses/NotFound"
6082
+ }
6083
+ },
6084
+ "security": []
6085
+ }
6086
+ },
6045
6087
  "/founding/alive": {
6046
6088
  "post": {
6047
6089
  "operationId": "post_founding_alive",
@@ -21081,6 +21123,45 @@
21081
21123
  "security": []
21082
21124
  }
21083
21125
  },
21126
+ "/sso/feedback/direct": {
21127
+ "post": {
21128
+ "operationId": "post_sso_feedback_direct",
21129
+ "tags": [
21130
+ "sso"
21131
+ ],
21132
+ "summary": "POST /sso/feedback/direct",
21133
+ "description": "POST /sso/feedback/direct — `bongos feedback` straight from a builder's CLI, with a one-time receipt from their own project (task 1004591). Answers 202 at once so the builder never waits; the receipt is redeemed AFTER, and a report the project does not vouch for is dropped (logged, never filed). Why this proves the sender, and what \"hosted\" earns: ../instance-feedback.js. rank: public — no session on the hub; the proof is the project's receipt. Capped per caller address (10/h whatever host it names), then per named project (30/h), BEFORE anything is fetched.\n\n**Rank:** `public` — No authentication — any caller.",
21134
+ "x-rank": "public",
21135
+ "x-source": "modules/platform-identity/routes/sso.js",
21136
+ "requestBody": {
21137
+ "required": true,
21138
+ "content": {
21139
+ "application/json": {
21140
+ "schema": {
21141
+ "$ref": "#/components/schemas/PostSsoFeedbackDirectRequest"
21142
+ }
21143
+ }
21144
+ },
21145
+ "x-validated": true
21146
+ },
21147
+ "responses": {
21148
+ "200": {
21149
+ "description": "Success.",
21150
+ "content": {
21151
+ "application/json": {
21152
+ "schema": {
21153
+ "$ref": "#/components/schemas/PostSsoFeedbackDirectResponse"
21154
+ }
21155
+ }
21156
+ }
21157
+ },
21158
+ "400": {
21159
+ "$ref": "#/components/responses/ValidationFailed"
21160
+ }
21161
+ },
21162
+ "security": []
21163
+ }
21164
+ },
21084
21165
  "/sso/invites/clear": {
21085
21166
  "post": {
21086
21167
  "operationId": "post_sso_invites_clear",
@@ -28936,12 +29017,12 @@
28936
29017
  "criterion"
28937
29018
  ]
28938
29019
  },
28939
- "PostFeedbackRequest": {
29020
+ "PostFeedbackReceiptRequest": {
28940
29021
  "type": "object",
28941
29022
  "properties": {
28942
- "message": {
29023
+ "sha256": {
28943
29024
  "type": "string",
28944
- "maxLength": 4000
29025
+ "maxLength": 64
28945
29026
  },
28946
29027
  "kind": {
28947
29028
  "type": "string",
@@ -28949,14 +29030,28 @@
28949
29030
  "bug",
28950
29031
  "idea"
28951
29032
  ]
28952
- },
28953
- "context": {}
29033
+ }
28954
29034
  },
28955
29035
  "required": [
28956
- "message"
29036
+ "sha256"
28957
29037
  ],
28958
29038
  "additionalProperties": false
28959
29039
  },
29040
+ "PostFeedbackReceiptResponse": {
29041
+ "type": "object",
29042
+ "properties": {
29043
+ "ok": {
29044
+ "type": "boolean"
29045
+ },
29046
+ "receipt": {},
29047
+ "hub": {}
29048
+ },
29049
+ "required": [
29050
+ "ok",
29051
+ "receipt",
29052
+ "hub"
29053
+ ]
29054
+ },
28960
29055
  "PostFoundingPlanRequest": {
28961
29056
  "type": "object",
28962
29057
  "properties": {
@@ -32099,6 +32194,47 @@
32099
32194
  ],
32100
32195
  "additionalProperties": false
32101
32196
  },
32197
+ "PostSsoFeedbackDirectRequest": {
32198
+ "type": "object",
32199
+ "properties": {
32200
+ "origin": {
32201
+ "type": "string",
32202
+ "maxLength": 200
32203
+ },
32204
+ "receipt": {
32205
+ "type": "string",
32206
+ "maxLength": 64
32207
+ },
32208
+ "message": {
32209
+ "type": "string"
32210
+ },
32211
+ "kind": {
32212
+ "type": "string"
32213
+ },
32214
+ "context": {}
32215
+ },
32216
+ "required": [
32217
+ "origin",
32218
+ "receipt",
32219
+ "message"
32220
+ ],
32221
+ "additionalProperties": false
32222
+ },
32223
+ "PostSsoFeedbackDirectResponse": {
32224
+ "type": "object",
32225
+ "properties": {
32226
+ "ok": {
32227
+ "type": "boolean"
32228
+ },
32229
+ "accepted": {
32230
+ "type": "boolean"
32231
+ }
32232
+ },
32233
+ "required": [
32234
+ "ok",
32235
+ "accepted"
32236
+ ]
32237
+ },
32102
32238
  "PostSsoFeedbackRequest": {
32103
32239
  "type": "object",
32104
32240
  "properties": {
@@ -33434,9 +33570,9 @@
33434
33570
  "description": "A required dependency/feature is not configured or is temporarily down."
33435
33571
  }
33436
33572
  },
33437
- "x-endpoint-count": 520,
33438
- "x-schema-count": 561,
33573
+ "x-endpoint-count": 522,
33574
+ "x-schema-count": 564,
33439
33575
  "x-undocumented-bodies": 12,
33440
- "x-response-schemas": 372,
33576
+ "x-response-schemas": 374,
33441
33577
  "x-generated-by": "scripts/gds/gen-api-docs.js"
33442
33578
  }
@@ -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. 520 endpoints across 93 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 522 endpoints across 93 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`.
@@ -261,11 +261,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
261
261
  | POST | `/api/bongos/done-when/:criterionId/unsatisfy` | `metic+archon` | `reason` | Auth: flip a criterion back to unsatisfied (rare; for corrections). |
262
262
  | GET | `/api/bongos/done-when/pending-review` | `metic+archon` | — | Auth (Metic+): the criterion review queue — every criterion auto-flagged "met — pending review" (≥1 linked task, all shipped, not yet con… |
263
263
 
264
- ## `feedback` (1)
264
+ ## `feedback` (2)
265
265
 
266
266
  | Method | Path | Rank | Body | Description |
267
267
  |---|---|---|---|---|
268
- | POST | `/api/bongos/feedback` | `any-builder` | `message`, `kind`, `context` | signed-in builder — reporting a problem with Bongos grants nothing here, and the hub files every report at 'backlog' behind a Metic+ nod. |
268
+ | POST | `/api/bongos/feedback/receipt` | `any-builder` | `sha256`, `kind` | signed-in builder — a receipt only says "this builder sent this text"; it grants nothing here, and the hub files every report behind a nod. |
269
+ | GET | `/api/bongos/feedback/receipt/:id` | `public` | — | the hub redeems a receipt with no session of its own. |
269
270
 
270
271
  ## `founding` (6)
271
272
 
@@ -793,7 +794,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
793
794
  | GET | `/api/bongos/specialities/installed-skills` | `any-builder` | — | GET /specialities/installed-skills — every skill THIS instance has, each explained the way the adoption walkthrough explains it, so a spe… |
794
795
  | GET | `/api/bongos/specialities/offered` | `any-builder` | — | GET /specialities/offered — the suggestions for THIS builder. |
795
796
 
796
- ## `sso` (11)
797
+ ## `sso` (12)
797
798
 
798
799
  | Method | Path | Rank | Body | Description |
799
800
  |---|---|---|---|---|
@@ -803,6 +804,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
803
804
  | POST | `/api/bongos/sso/device/poll` | `public` | `device_code` | POST /sso/device/poll — poll the hub device flow. |
804
805
  | POST | `/api/bongos/sso/device/start` | `public` | `origin` | POST /sso/device/start — begin CLI federation. |
805
806
  | POST | `/api/bongos/sso/feedback` | `public` | `client_id`, `client_secret`, `github_id`, `message`, `kind`, `context` | POST /sso/feedback — a federated project relays one builder's feedback about Bongos itself (task 1004462). |
807
+ | POST | `/api/bongos/sso/feedback/direct` | `public` | `origin`, `receipt`, `message`, `kind`, `context` | POST /sso/feedback/direct — `bongos feedback` straight from a builder's CLI, with a one-time receipt from their own project (task 1004591). |
806
808
  | POST | `/api/bongos/sso/invites/clear` | `public` | `client_id`, `client_secret`, `github_login` | authenticated by client_id + client_secret, not a builder rank. |
807
809
  | POST | `/api/bongos/sso/invites/notify` | `public` | `client_id`, `client_secret`, `github_login` | authenticated by client_id + client_secret, not a builder rank. |
808
810
  | POST | `/api/bongos/sso/membership/check-in` | `public` | `client_id`, `client_secret`, `github_id`, `github_login`, `display_name`, `avatar_url`, `membership_kind` | POST /sso/membership/check-in — a federated instance reports, on every sign-in, that a builder builds on its project (ADR 0141 §3). |