@bongos/core 1.21.69 → 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.
- package/.bongos-core.json +24 -24
- package/.claude/skills/bongos-feedback/SKILL.md +10 -46
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +6 -2
- package/clients/bongos-client/index.cjs +6 -2
- package/clients/bongos-client/index.d.ts +10 -3
- package/clients/bongos-client/index.mjs +6 -2
- package/docs/api/openapi.json +151 -15
- package/docs/api-reference.md +6 -4
- package/docs/module-api-changelog.md +2 -0
- package/modules/platform-identity/instance-feedback.js +108 -7
- package/modules/platform-identity/routes/sso.js +71 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +5 -0
- package/scripts/gds/feedback-send.js +144 -71
- package/src/bongos/platform-visibility-gate.js +3 -0
- package/src/bongos/routes/feedback.js +91 -77
- package/src/module-api.js +1 -1
- package/tests/instance_feedback.mjs +267 -68
package/.bongos-core.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.21.
|
|
6
|
-
"core_contract": "1.21.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.21.70",
|
|
6
|
+
"core_contract": "1.21.70",
|
|
7
|
+
"source_commit": "799c79fb4bc15a5e245ed46a99e5dd64f4919cb3",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-10-
|
|
9
|
+
"built_at": "2026-10-06T20:12:59.064Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 587,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 3583,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "2b64f5c207fa75236b6cbc9a1d184fe7952421dd51a20fd2f5e31ec352a8be40",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
{
|
|
43
43
|
"path": ".claude/skills/bongos-feedback/SKILL.md",
|
|
44
44
|
"mode": "0000644",
|
|
45
|
-
"sha256": "
|
|
45
|
+
"sha256": "8cbf792ddc9aec8f9be65c6be4532a7f4593d2b3818311c6daf6aabec99b1bc7"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"path": ".claude/skills/bug-triage/SKILL.md",
|
|
@@ -312,12 +312,12 @@
|
|
|
312
312
|
{
|
|
313
313
|
"path": "clients/bongos-client/README.md",
|
|
314
314
|
"mode": "0000644",
|
|
315
|
-
"sha256": "
|
|
315
|
+
"sha256": "5b0af2f15d83dcd9e74eb5a381f28d28af9ea0af33881da240729ca1e392bf0a"
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
319
319
|
"mode": "0000644",
|
|
320
|
-
"sha256": "
|
|
320
|
+
"sha256": "d0c9745553265fcc941c29753b44cd526b5e6e3ffc4da98676a3a31becd9d09a"
|
|
321
321
|
},
|
|
322
322
|
{
|
|
323
323
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -327,17 +327,17 @@
|
|
|
327
327
|
{
|
|
328
328
|
"path": "clients/bongos-client/index.cjs",
|
|
329
329
|
"mode": "0000644",
|
|
330
|
-
"sha256": "
|
|
330
|
+
"sha256": "fd19be4bddd44f6e14bdf0a86903d65dc2aa7d1642a3228f1594bcca1cc9fd09"
|
|
331
331
|
},
|
|
332
332
|
{
|
|
333
333
|
"path": "clients/bongos-client/index.d.ts",
|
|
334
334
|
"mode": "0000644",
|
|
335
|
-
"sha256": "
|
|
335
|
+
"sha256": "a8a84e3a327cd6c8962865573b0e35487b41f64f2e287b5df80e1499f42e9e15"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "clients/bongos-client/index.mjs",
|
|
339
339
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
340
|
+
"sha256": "af56c93778ef8d471a247e7acf936d3635e0852da6733afd22691801fda343d5"
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
"path": "clients/bongos-client/package.json",
|
|
@@ -2302,12 +2302,12 @@
|
|
|
2302
2302
|
{
|
|
2303
2303
|
"path": "docs/api-reference.md",
|
|
2304
2304
|
"mode": "0000644",
|
|
2305
|
-
"sha256": "
|
|
2305
|
+
"sha256": "79ac8643ddda444a597821f6cf81c25e58baaf9eaee7422dc0d597c8557d8097"
|
|
2306
2306
|
},
|
|
2307
2307
|
{
|
|
2308
2308
|
"path": "docs/api/openapi.json",
|
|
2309
2309
|
"mode": "0000644",
|
|
2310
|
-
"sha256": "
|
|
2310
|
+
"sha256": "2e745e8f23dd12587b9ce79c642f932c885ad3263d38144949281f9b26563b2b"
|
|
2311
2311
|
},
|
|
2312
2312
|
{
|
|
2313
2313
|
"path": "docs/architecture.md",
|
|
@@ -2847,7 +2847,7 @@
|
|
|
2847
2847
|
{
|
|
2848
2848
|
"path": "docs/module-api-changelog.md",
|
|
2849
2849
|
"mode": "0000644",
|
|
2850
|
-
"sha256": "
|
|
2850
|
+
"sha256": "b43fd3370397bc58fc63f7f9c3a1616f9c429613174a8498d69ca19697d7ee25"
|
|
2851
2851
|
},
|
|
2852
2852
|
{
|
|
2853
2853
|
"path": "docs/modules-contract.md",
|
|
@@ -7797,7 +7797,7 @@
|
|
|
7797
7797
|
{
|
|
7798
7798
|
"path": "modules/platform-identity/instance-feedback.js",
|
|
7799
7799
|
"mode": "0000644",
|
|
7800
|
-
"sha256": "
|
|
7800
|
+
"sha256": "e1786bed35fb98b4d47113b6d8486891c67f72505d4ad74819bac02a1b3b6eab"
|
|
7801
7801
|
},
|
|
7802
7802
|
{
|
|
7803
7803
|
"path": "modules/platform-identity/invite-authz.js",
|
|
@@ -8082,7 +8082,7 @@
|
|
|
8082
8082
|
{
|
|
8083
8083
|
"path": "modules/platform-identity/routes/sso.js",
|
|
8084
8084
|
"mode": "0000644",
|
|
8085
|
-
"sha256": "
|
|
8085
|
+
"sha256": "d2aa5ee441648f4167db2453385c6c022ebad3a86afcd6187071deb1be90e402"
|
|
8086
8086
|
},
|
|
8087
8087
|
{
|
|
8088
8088
|
"path": "modules/platform-identity/scouting-authz.js",
|
|
@@ -10037,12 +10037,12 @@
|
|
|
10037
10037
|
{
|
|
10038
10038
|
"path": "package-lock.json",
|
|
10039
10039
|
"mode": "0000644",
|
|
10040
|
-
"sha256": "
|
|
10040
|
+
"sha256": "0abde492bc94b4bafd14a5f402b76fb5e9063f66f5ec9a9a930b17edff3363e1"
|
|
10041
10041
|
},
|
|
10042
10042
|
{
|
|
10043
10043
|
"path": "package.json",
|
|
10044
10044
|
"mode": "0000644",
|
|
10045
|
-
"sha256": "
|
|
10045
|
+
"sha256": "152af0cc2be56f12652515999ee93e697cdd85749c2eb5c430e39d76eada090e"
|
|
10046
10046
|
},
|
|
10047
10047
|
{
|
|
10048
10048
|
"path": "public-docs/index.html",
|
|
@@ -10062,7 +10062,7 @@
|
|
|
10062
10062
|
{
|
|
10063
10063
|
"path": "release-notes.json",
|
|
10064
10064
|
"mode": "0000644",
|
|
10065
|
-
"sha256": "
|
|
10065
|
+
"sha256": "62116e737a2e0bbf80e7d5f0f539f65be938c7823e3dc5b97ee3ae5d5f4f02df"
|
|
10066
10066
|
},
|
|
10067
10067
|
{
|
|
10068
10068
|
"path": "scripts/cron/style_guide_audit.sh",
|
|
@@ -10562,7 +10562,7 @@
|
|
|
10562
10562
|
{
|
|
10563
10563
|
"path": "scripts/gds/feedback-send.js",
|
|
10564
10564
|
"mode": "0000644",
|
|
10565
|
-
"sha256": "
|
|
10565
|
+
"sha256": "3b043beaecc95b9e1019d8b56c5e1e16a279bfcf5904e8547db6ca620309390b"
|
|
10566
10566
|
},
|
|
10567
10567
|
{
|
|
10568
10568
|
"path": "scripts/gds/fetch-art-key.js",
|
|
@@ -12087,7 +12087,7 @@
|
|
|
12087
12087
|
{
|
|
12088
12088
|
"path": "src/bongos/platform-visibility-gate.js",
|
|
12089
12089
|
"mode": "0000644",
|
|
12090
|
-
"sha256": "
|
|
12090
|
+
"sha256": "7238926a2efa205bf6efa49b111940687549a6466e43a327ba56d9121d18cbc5"
|
|
12091
12091
|
},
|
|
12092
12092
|
{
|
|
12093
12093
|
"path": "src/bongos/pool.js",
|
|
@@ -12172,7 +12172,7 @@
|
|
|
12172
12172
|
{
|
|
12173
12173
|
"path": "src/bongos/routes/feedback.js",
|
|
12174
12174
|
"mode": "0000644",
|
|
12175
|
-
"sha256": "
|
|
12175
|
+
"sha256": "6307d32f0739bd5107d8259b0b9f316da8e875257975d8465559db8f7d232167"
|
|
12176
12176
|
},
|
|
12177
12177
|
{
|
|
12178
12178
|
"path": "src/bongos/routes/github.js",
|
|
@@ -12282,7 +12282,7 @@
|
|
|
12282
12282
|
{
|
|
12283
12283
|
"path": "src/module-api.js",
|
|
12284
12284
|
"mode": "0000644",
|
|
12285
|
-
"sha256": "
|
|
12285
|
+
"sha256": "c297a4a84c33a4b846abd7707f0b10a813ca418841c2455dba9a453c283c9752"
|
|
12286
12286
|
},
|
|
12287
12287
|
{
|
|
12288
12288
|
"path": "src/module-loader/catalog.js",
|
|
@@ -15122,7 +15122,7 @@
|
|
|
15122
15122
|
{
|
|
15123
15123
|
"path": "tests/instance_feedback.mjs",
|
|
15124
15124
|
"mode": "0000644",
|
|
15125
|
-
"sha256": "
|
|
15125
|
+
"sha256": "704a506419ff49032b9604dc039113eaa63db68ac7a57fa09e09162ce7acfae5"
|
|
15126
15126
|
},
|
|
15127
15127
|
{
|
|
15128
15128
|
"path": "tests/instance_manifest.mjs",
|
|
@@ -7,61 +7,25 @@ plain: >-
|
|
|
7
7
|
reach-for: >-
|
|
8
8
|
When Bongos itself got in your way — a command that failed or confused you, or something you wish it did. You do not have to ask; complaining is enough.
|
|
9
9
|
cost: >-
|
|
10
|
-
Free
|
|
10
|
+
Free, and instant: one line back, and it sends in the background. It changes nothing in your project.
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Sends a note about Bongos — the tool — straight to its maintainers (tasks 1004462, 1004591). One tool call, one line back.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
**When.** File when the builder (a) labels it — "Bongos feedback: …", "tell the Bongos team" — that **is** the go; (b) wishes — "Bongos should…" (**Suggestions count**: send with `--idea`, even if you also fix it in their project); or (c) vents that Bongos is broken — **File it without being asked**, don't argue them out of it. Only about **Bongos itself** (a `bongos`/`/builder-*` command, claim, ship, grade, deploy, upgrade, hall, Settings, sign-in, credits, how it organises work). Not their own project's code, Claude, their laptop or GitHub, nor a rule working as designed. **One filing per distinct problem per session.**
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
**Write it yourself — Never paste the rant.** First line = what went wrong (it becomes the title); then what they did, what they expected, what happened, the exact error line. No code, file contents, secrets or personal data.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
- **Suggestions count.** Feedback is not only breakage. "Bongos should…", "I don't want Bongos to…", or a complaint about how Bongos organises their work (versions, goals, tasks, ranks) is feedback too — send it with `--idea`. Fixing it in their own project (moving the goal, saving a preference) is fine, but it does not replace sending it: the next project would hit the same thing.
|
|
21
|
-
- **Proactive** — the builder is venting that Bongos is not working: frustration, swearing, "this is broken again", "why does X keep failing", "Bongos is useless today". **File it without being asked**, then tell them in one line (below). The owner's standing rule (2026-09-30): every rant about Bongos not working becomes something to fix. Do not ask permission first, and do not argue them out of it.
|
|
22
|
-
|
|
23
|
-
## Is it about Bongos? (proactive mode files only when yes)
|
|
24
|
-
|
|
25
|
-
File when the complaint is about **Bongos itself**: how it organises their work (a goal that forced a new version, a version they did not want), a `bongos`/`/builder-*` command, a claim, ship, grade, merge or deploy step, the hall, Settings, sign-in, credits, the upgrade, or a Bongos message that confused them.
|
|
26
|
-
|
|
27
|
-
Do **not** file when it is about their **own project's** code, tests or design, about Claude itself, their laptop, GitHub or another service — or when the "problem" is a rule working as designed (an `[otb-plain]` card saying `By design: Yes`). If it is genuinely unclear, fix the thing in front of you first and file only if it turns out to be Bongos.
|
|
28
|
-
|
|
29
|
-
**One filing per distinct problem per session.** A second rant about the same failure adds nothing; say it is already filed (with the number) instead.
|
|
30
|
-
|
|
31
|
-
## Writing the report
|
|
32
|
-
|
|
33
|
-
Write it yourself from what you saw. **Never paste the rant.** The maintainers need the facts, not the mood:
|
|
34
|
-
|
|
35
|
-
1. A plain first line naming what went wrong — it becomes the title. (`bongos claim hung for two minutes, then failed with fetch failed`)
|
|
36
|
-
2. What the builder was doing, what they expected, what happened instead, and the exact error line if there was one.
|
|
37
|
-
3. Whether it happened more than once, and any workaround you found.
|
|
38
|
-
|
|
39
|
-
**Leave out:** code, file contents, secrets, tokens, customer or personal data, and anything about their project the maintainers do not need. Only the text you send travels (plus the Bongos and CLI versions, added automatically). As a backstop the command runs every report through Bongos's secret scrubber and refuses to send if it can't, but it is a backstop, not permission to be careless.
|
|
40
|
-
|
|
41
|
-
A report that is really a wish ("I'd like Bongos to…") goes with `--idea`.
|
|
42
|
-
|
|
43
|
-
## Sending
|
|
44
|
-
|
|
45
|
-
From the project checkout. For anything longer than one line, write the report to a file with the Write tool first — the shell eats backticks inside a quoted argument:
|
|
19
|
+
**Send** (stdin, so nothing in the text is mangled by the shell):
|
|
46
20
|
|
|
47
21
|
```bash
|
|
48
|
-
bongos feedback --message-file
|
|
22
|
+
bongos feedback --message-file - <<'EOF'
|
|
23
|
+
<report>
|
|
24
|
+
EOF
|
|
49
25
|
```
|
|
50
26
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**Proactive:** one line, after sending, then carry on with what they were doing. For example: *"I've reported this to the Bongos team as task 1004500 — it's waiting for a maintainer to approve it."* No more than that, unless they ask what was sent — then show them the report.
|
|
54
|
-
|
|
55
|
-
**Asked:** report the CLI's output verbatim.
|
|
56
|
-
|
|
57
|
-
## If it refuses
|
|
58
|
-
|
|
59
|
-
The CLI prints one plain line for each refusal. In proactive mode, a refusal is one line to the builder and nothing more — never retry in a loop.
|
|
60
|
-
|
|
61
|
-
- **"not connected to Cloud Bongos"** — a self-hosted project has no link to the hub. Point the builder at the Bongos core repository's issue tracker.
|
|
62
|
-
- **"does not yet know you as a member"** — the hub only accepts reports from someone it has seen sign in to this project. Signing in to the project once through Cloud Bongos in a browser fixes it.
|
|
63
|
-
- **"Too much feedback"** — the hourly cap. Don't retry; mention it once.
|
|
27
|
+
Add `--idea` for a wish. The command prints one line — relay it, then carry on. Proactive filing: one short sentence, e.g. *"I've sent that to the Bongos team."* If it says the project runs only on this computer, tell the builder in one line; never retry.
|
|
64
28
|
|
|
65
29
|
## Files this skill touches
|
|
66
30
|
|
|
67
|
-
- Runs: `bongos feedback` → `scripts/gds/feedback-send.js` → `POST /api/bongos/feedback
|
|
31
|
+
- Runs: `bongos feedback` → `scripts/gds/feedback-send.js` → a receipt from this project (`POST /api/bongos/feedback/receipt`, `src/bongos/routes/feedback.js`) → the hub's `POST /api/bongos/sso/feedback/direct` (`modules/platform-identity/instance-feedback.js`), which redeems the receipt before filing.
|
|
@@ -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
|
-
-
|
|
8
|
+
- 522 operations across 75 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -385,8 +385,10 @@ function createClient(opts = {}) {
|
|
|
385
385
|
getDoneWhenPendingReview: (args) => request("GET", "/done-when/pending-review", { hasBody: false }, args),
|
|
386
386
|
},
|
|
387
387
|
"feedback": {
|
|
388
|
-
// POST /feedback — rank: any-builder — POST /feedback
|
|
389
|
-
|
|
388
|
+
// POST /feedback/receipt — rank: any-builder — POST /feedback/receipt
|
|
389
|
+
postFeedbackReceipt: (args) => request("POST", "/feedback/receipt", { hasBody: true }, args),
|
|
390
|
+
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
391
|
+
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
390
392
|
},
|
|
391
393
|
"founding": {
|
|
392
394
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
@@ -1125,6 +1127,8 @@ function createClient(opts = {}) {
|
|
|
1125
1127
|
postSsoDeviceStart: (args) => request("POST", "/sso/device/start", { hasBody: true }, args),
|
|
1126
1128
|
// POST /sso/feedback — rank: public — POST /sso/feedback
|
|
1127
1129
|
postSsoFeedback: (args) => request("POST", "/sso/feedback", { hasBody: true }, args),
|
|
1130
|
+
// POST /sso/feedback/direct — rank: public — POST /sso/feedback/direct
|
|
1131
|
+
postSsoFeedbackDirect: (args) => request("POST", "/sso/feedback/direct", { hasBody: true }, args),
|
|
1128
1132
|
// POST /sso/invites/clear — rank: public — POST /sso/invites/clear
|
|
1129
1133
|
postSsoInvitesClear: (args) => request("POST", "/sso/invites/clear", { hasBody: true }, args),
|
|
1130
1134
|
// POST /sso/invites/notify — rank: public — POST /sso/invites/notify
|
|
@@ -384,8 +384,10 @@ function createClient(opts = {}) {
|
|
|
384
384
|
getDoneWhenPendingReview: (args) => request("GET", "/done-when/pending-review", { hasBody: false }, args),
|
|
385
385
|
},
|
|
386
386
|
"feedback": {
|
|
387
|
-
// POST /feedback — rank: any-builder — POST /feedback
|
|
388
|
-
|
|
387
|
+
// POST /feedback/receipt — rank: any-builder — POST /feedback/receipt
|
|
388
|
+
postFeedbackReceipt: (args) => request("POST", "/feedback/receipt", { hasBody: true }, args),
|
|
389
|
+
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
390
|
+
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
389
391
|
},
|
|
390
392
|
"founding": {
|
|
391
393
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
@@ -1124,6 +1126,8 @@ function createClient(opts = {}) {
|
|
|
1124
1126
|
postSsoDeviceStart: (args) => request("POST", "/sso/device/start", { hasBody: true }, args),
|
|
1125
1127
|
// POST /sso/feedback — rank: public — POST /sso/feedback
|
|
1126
1128
|
postSsoFeedback: (args) => request("POST", "/sso/feedback", { hasBody: true }, args),
|
|
1129
|
+
// POST /sso/feedback/direct — rank: public — POST /sso/feedback/direct
|
|
1130
|
+
postSsoFeedbackDirect: (args) => request("POST", "/sso/feedback/direct", { hasBody: true }, args),
|
|
1127
1131
|
// POST /sso/invites/clear — rank: public — POST /sso/invites/clear
|
|
1128
1132
|
postSsoInvitesClear: (args) => request("POST", "/sso/invites/clear", { hasBody: true }, args),
|
|
1129
1133
|
// POST /sso/invites/notify — rank: public — POST /sso/invites/notify
|
|
@@ -316,7 +316,8 @@ export interface PostDoneWhenCriterionIdUatRequest { kind: string; recording?: s
|
|
|
316
316
|
export interface PostDoneWhenCriterionIdUatResponse { ok: boolean; signoff: unknown; criterion_closed: unknown; achieved_goals: unknown; closed_versions: unknown }
|
|
317
317
|
export interface PostDoneWhenCriterionIdUnsatisfyRequest { reason?: string }
|
|
318
318
|
export interface PostDoneWhenCriterionIdUnsatisfyResponse { criterion: unknown }
|
|
319
|
-
export interface
|
|
319
|
+
export interface PostFeedbackReceiptRequest { sha256: string; kind?: "bug" | "idea" }
|
|
320
|
+
export interface PostFeedbackReceiptResponse { ok: boolean; receipt: unknown; hub: unknown }
|
|
320
321
|
export interface PostFoundingPlanRequest { days?: Record<string, unknown>; passes?: number; advisors?: string; government?: string; expected_builders?: number; existing?: boolean }
|
|
321
322
|
export interface PostGithubRepoVisibilityRequest { repo: string; visibility: "public" | "private" }
|
|
322
323
|
export interface PostGithubRepoVisibilityResponse { ok: boolean; repo: unknown; private_deployable: boolean }
|
|
@@ -496,6 +497,8 @@ export interface PostSsoApplicantProfileRequest { client_id: string; client_secr
|
|
|
496
497
|
export interface PostSsoApplicantProfileResponse { profile: unknown; guild: unknown }
|
|
497
498
|
export interface PostSsoDevicePollRequest { device_code: string }
|
|
498
499
|
export interface PostSsoDeviceStartRequest { origin: string }
|
|
500
|
+
export interface PostSsoFeedbackDirectRequest { origin: string; receipt: string; message: string; kind?: string; context?: unknown }
|
|
501
|
+
export interface PostSsoFeedbackDirectResponse { ok: boolean; accepted: boolean }
|
|
499
502
|
export interface PostSsoFeedbackRequest { client_id: string; client_secret: string; github_id: StringifiableId; message: string; kind?: string; context?: unknown }
|
|
500
503
|
export interface PostSsoInvitesClearRequest { client_id: string; client_secret: string; github_login: string }
|
|
501
504
|
export interface PostSsoInvitesNotifyRequest { client_id: string; client_secret: string; github_login: string }
|
|
@@ -879,8 +882,10 @@ export interface BongosClient {
|
|
|
879
882
|
getDoneWhenPendingReview(args?: RequestArgs): Promise<GetDoneWhenPendingReviewResponse>;
|
|
880
883
|
};
|
|
881
884
|
"feedback": {
|
|
882
|
-
/** POST /feedback — rank: any-builder */
|
|
883
|
-
|
|
885
|
+
/** POST /feedback/receipt — rank: any-builder */
|
|
886
|
+
postFeedbackReceipt(args: RequestArgs & { body: PostFeedbackReceiptRequest }): Promise<PostFeedbackReceiptResponse>;
|
|
887
|
+
/** GET /feedback/receipt/{id} — rank: public */
|
|
888
|
+
getFeedbackReceiptId(args?: RequestArgs): Promise<ApiResponse>;
|
|
884
889
|
};
|
|
885
890
|
"founding": {
|
|
886
891
|
/** POST /founding/alive — rank: any-builder */
|
|
@@ -1619,6 +1624,8 @@ export interface BongosClient {
|
|
|
1619
1624
|
postSsoDeviceStart(args: RequestArgs & { body: PostSsoDeviceStartRequest }): Promise<ApiResponse>;
|
|
1620
1625
|
/** POST /sso/feedback — rank: public */
|
|
1621
1626
|
postSsoFeedback(args: RequestArgs & { body: PostSsoFeedbackRequest }): Promise<ApiResponse>;
|
|
1627
|
+
/** POST /sso/feedback/direct — rank: public */
|
|
1628
|
+
postSsoFeedbackDirect(args: RequestArgs & { body: PostSsoFeedbackDirectRequest }): Promise<PostSsoFeedbackDirectResponse>;
|
|
1622
1629
|
/** POST /sso/invites/clear — rank: public */
|
|
1623
1630
|
postSsoInvitesClear(args: RequestArgs & { body: PostSsoInvitesClearRequest }): Promise<ApiResponse>;
|
|
1624
1631
|
/** POST /sso/invites/notify — rank: public */
|
|
@@ -381,8 +381,10 @@ export function createClient(opts = {}) {
|
|
|
381
381
|
getDoneWhenPendingReview: (args) => request("GET", "/done-when/pending-review", { hasBody: false }, args),
|
|
382
382
|
},
|
|
383
383
|
"feedback": {
|
|
384
|
-
// POST /feedback — rank: any-builder — POST /feedback
|
|
385
|
-
|
|
384
|
+
// POST /feedback/receipt — rank: any-builder — POST /feedback/receipt
|
|
385
|
+
postFeedbackReceipt: (args) => request("POST", "/feedback/receipt", { hasBody: true }, args),
|
|
386
|
+
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
387
|
+
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
386
388
|
},
|
|
387
389
|
"founding": {
|
|
388
390
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
@@ -1121,6 +1123,8 @@ export function createClient(opts = {}) {
|
|
|
1121
1123
|
postSsoDeviceStart: (args) => request("POST", "/sso/device/start", { hasBody: true }, args),
|
|
1122
1124
|
// POST /sso/feedback — rank: public — POST /sso/feedback
|
|
1123
1125
|
postSsoFeedback: (args) => request("POST", "/sso/feedback", { hasBody: true }, args),
|
|
1126
|
+
// POST /sso/feedback/direct — rank: public — POST /sso/feedback/direct
|
|
1127
|
+
postSsoFeedbackDirect: (args) => request("POST", "/sso/feedback/direct", { hasBody: true }, args),
|
|
1124
1128
|
// POST /sso/invites/clear — rank: public — POST /sso/invites/clear
|
|
1125
1129
|
postSsoInvitesClear: (args) => request("POST", "/sso/invites/clear", { hasBody: true }, args),
|
|
1126
1130
|
// POST /sso/invites/notify — rank: public — POST /sso/invites/notify
|
package/docs/api/openapi.json
CHANGED
|
@@ -6000,14 +6000,14 @@
|
|
|
6000
6000
|
]
|
|
6001
6001
|
}
|
|
6002
6002
|
},
|
|
6003
|
-
"/feedback": {
|
|
6003
|
+
"/feedback/receipt": {
|
|
6004
6004
|
"post": {
|
|
6005
|
-
"operationId": "
|
|
6005
|
+
"operationId": "post_feedback_receipt",
|
|
6006
6006
|
"tags": [
|
|
6007
6007
|
"feedback"
|
|
6008
6008
|
],
|
|
6009
|
-
"summary": "POST /feedback",
|
|
6010
|
-
"description": "signed-in builder —
|
|
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/
|
|
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
|
-
"
|
|
29020
|
+
"PostFeedbackReceiptRequest": {
|
|
28940
29021
|
"type": "object",
|
|
28941
29022
|
"properties": {
|
|
28942
|
-
"
|
|
29023
|
+
"sha256": {
|
|
28943
29024
|
"type": "string",
|
|
28944
|
-
"maxLength":
|
|
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
|
-
"
|
|
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":
|
|
33438
|
-
"x-schema-count":
|
|
33573
|
+
"x-endpoint-count": 522,
|
|
33574
|
+
"x-schema-count": 564,
|
|
33439
33575
|
"x-undocumented-bodies": 12,
|
|
33440
|
-
"x-response-schemas":
|
|
33576
|
+
"x-response-schemas": 374,
|
|
33441
33577
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
33442
33578
|
}
|