@bongos/core 1.19.381 → 1.19.382
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 +43 -28
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +4 -0
- package/clients/bongos-client/index.cjs +4 -0
- package/clients/bongos-client/index.d.ts +6 -0
- package/clients/bongos-client/index.mjs +4 -0
- package/docs/api/openapi.json +141 -3
- package/docs/api-reference.md +5 -3
- package/docs/copy-inventory.md +14 -9
- package/docs/copy-registry.json +87 -42
- package/migrations/core_228_idea_inbox_captured_by_idx.sql +61 -0
- package/modules/dev-box/app/src/vendor/bongos-client.cjs +4 -0
- package/modules/hall-ui/public/hall-kit.js +67 -6
- package/modules/hall-ui/public/profile.html +34 -2
- package/modules/hall-ui/public/profile.js +279 -0
- package/modules/ideas/inbox.js +98 -0
- package/modules/ideas/routes/inbox.js +39 -0
- package/modules/lifecycle/activity.js +205 -0
- package/modules/lifecycle/lifecycle.js +7 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/hall-preview/server.js +13 -3
- package/src/bongos/routes/builders.js +67 -0
- package/src/module-api.js +3 -1
- package/tests/profile_activity.mjs +625 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.382",
|
|
6
|
+
"core_contract": "1.19.382",
|
|
7
|
+
"source_commit": "e25777564172174924d9ee444d920a7c1b6dee44",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-27T16:42:17.638Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 336,
|
|
13
13
|
"agent_docs_stubbed": 22,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1598,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1956,
|
|
20
|
+
"tree_sha256": "0f3a95aa9c80905da7b7ec21e7cf6edfa3208ae622fe0674fcdb36cbc9319dd5",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -347,12 +347,12 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/README.md",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "838e52897ec1b7642d7cc9d3955c0a8b123caa2bc17bf323422eed7b5f2c9322"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "c04c5b4959c3bd6ddf7247a5f9b2ff07078384af505ece4de7932b1108bafd50"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -362,17 +362,17 @@
|
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/index.cjs",
|
|
364
364
|
"mode": "0000644",
|
|
365
|
-
"sha256": "
|
|
365
|
+
"sha256": "0d92a14fe49b6d9b82aa8611c83d23c89dccdf22f68802c129624b924cb6daf6"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"path": "clients/bongos-client/index.d.ts",
|
|
369
369
|
"mode": "0000644",
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "4b36b46a77832a0f4fb56f627691e396e519ba886addcb9624db2301d67d5006"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "clients/bongos-client/index.mjs",
|
|
374
374
|
"mode": "0000644",
|
|
375
|
-
"sha256": "
|
|
375
|
+
"sha256": "d0cee5f3378977180a8b7de8ef657a5fd258f81e183074dbd02220f169d7cd49"
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1477,12 +1477,12 @@
|
|
|
1477
1477
|
{
|
|
1478
1478
|
"path": "docs/api-reference.md",
|
|
1479
1479
|
"mode": "0000644",
|
|
1480
|
-
"sha256": "
|
|
1480
|
+
"sha256": "01f4d002d3ea1b02c204b48674125deae8e0ffabdd77384852cc51348ecbd18b"
|
|
1481
1481
|
},
|
|
1482
1482
|
{
|
|
1483
1483
|
"path": "docs/api/openapi.json",
|
|
1484
1484
|
"mode": "0000644",
|
|
1485
|
-
"sha256": "
|
|
1485
|
+
"sha256": "246192acc035ea58448701176e6f98f6d2f0a01cf27930efcbc58c019291cd3e"
|
|
1486
1486
|
},
|
|
1487
1487
|
{
|
|
1488
1488
|
"path": "docs/architecture.md",
|
|
@@ -1507,12 +1507,12 @@
|
|
|
1507
1507
|
{
|
|
1508
1508
|
"path": "docs/copy-inventory.md",
|
|
1509
1509
|
"mode": "0000644",
|
|
1510
|
-
"sha256": "
|
|
1510
|
+
"sha256": "80311a873183c3480b49014b5b7a2f6ae9383348941e529c9a9e61a21cf4d6e3"
|
|
1511
1511
|
},
|
|
1512
1512
|
{
|
|
1513
1513
|
"path": "docs/copy-registry.json",
|
|
1514
1514
|
"mode": "0000644",
|
|
1515
|
-
"sha256": "
|
|
1515
|
+
"sha256": "02d3c0b762c635d55febb7510d6aebdbb56213eb2841bd703b5eff1a044aa5e7"
|
|
1516
1516
|
},
|
|
1517
1517
|
{
|
|
1518
1518
|
"path": "docs/design-contract.md",
|
|
@@ -2674,6 +2674,11 @@
|
|
|
2674
2674
|
"mode": "0000644",
|
|
2675
2675
|
"sha256": "b3fbc5d91adf6c6021859bdd8050015c0449360eb33d70c71fdeda0cc1276dd3"
|
|
2676
2676
|
},
|
|
2677
|
+
{
|
|
2678
|
+
"path": "migrations/core_228_idea_inbox_captured_by_idx.sql",
|
|
2679
|
+
"mode": "0000644",
|
|
2680
|
+
"sha256": "031f739e4e22e2bf9fa3480147f4b0f280d4ed8610d71d8d8a828a83b9cabca2"
|
|
2681
|
+
},
|
|
2677
2682
|
{
|
|
2678
2683
|
"path": "modules/agents/migrations/agents_001_definitions.sql",
|
|
2679
2684
|
"mode": "0000644",
|
|
@@ -3057,7 +3062,7 @@
|
|
|
3057
3062
|
{
|
|
3058
3063
|
"path": "modules/dev-box/app/src/vendor/bongos-client.cjs",
|
|
3059
3064
|
"mode": "0000644",
|
|
3060
|
-
"sha256": "
|
|
3065
|
+
"sha256": "0d92a14fe49b6d9b82aa8611c83d23c89dccdf22f68802c129624b924cb6daf6"
|
|
3061
3066
|
},
|
|
3062
3067
|
{
|
|
3063
3068
|
"path": "modules/dev-box/app/test/unit.mjs",
|
|
@@ -3757,7 +3762,7 @@
|
|
|
3757
3762
|
{
|
|
3758
3763
|
"path": "modules/hall-ui/public/hall-kit.js",
|
|
3759
3764
|
"mode": "0000644",
|
|
3760
|
-
"sha256": "
|
|
3765
|
+
"sha256": "e392af98c2d310bfe80ccc560895dc2729abbe416087fcc7609d22dd4593484c"
|
|
3761
3766
|
},
|
|
3762
3767
|
{
|
|
3763
3768
|
"path": "modules/hall-ui/public/hall-render.js",
|
|
@@ -3912,12 +3917,12 @@
|
|
|
3912
3917
|
{
|
|
3913
3918
|
"path": "modules/hall-ui/public/profile.html",
|
|
3914
3919
|
"mode": "0000644",
|
|
3915
|
-
"sha256": "
|
|
3920
|
+
"sha256": "437a1d29edb129f2c21aaa842a57e06058e4355c14c8b0deba6576c83672a90d"
|
|
3916
3921
|
},
|
|
3917
3922
|
{
|
|
3918
3923
|
"path": "modules/hall-ui/public/profile.js",
|
|
3919
3924
|
"mode": "0000644",
|
|
3920
|
-
"sha256": "
|
|
3925
|
+
"sha256": "d1e73a781b88743c5cfe21452d738989e631d30f12e38a2589a6519fc7b4b81e"
|
|
3921
3926
|
},
|
|
3922
3927
|
{
|
|
3923
3928
|
"path": "modules/hall-ui/public/ranks.html",
|
|
@@ -4072,7 +4077,7 @@
|
|
|
4072
4077
|
{
|
|
4073
4078
|
"path": "modules/ideas/inbox.js",
|
|
4074
4079
|
"mode": "0000644",
|
|
4075
|
-
"sha256": "
|
|
4080
|
+
"sha256": "72b69185c90131cc8004ad28f24e9d5bfb7eaf4cc01b8d13ad898019a6f58f39"
|
|
4076
4081
|
},
|
|
4077
4082
|
{
|
|
4078
4083
|
"path": "modules/ideas/migrations/ideas_001_grades.sql",
|
|
@@ -4112,7 +4117,7 @@
|
|
|
4112
4117
|
{
|
|
4113
4118
|
"path": "modules/ideas/routes/inbox.js",
|
|
4114
4119
|
"mode": "0000644",
|
|
4115
|
-
"sha256": "
|
|
4120
|
+
"sha256": "a092eea43d9030eb55a23b60bd1ad5673132b83a3a2649961413cd505fd685ef"
|
|
4116
4121
|
},
|
|
4117
4122
|
{
|
|
4118
4123
|
"path": "modules/ideas/routing.js",
|
|
@@ -4129,6 +4134,11 @@
|
|
|
4129
4134
|
"mode": "0000644",
|
|
4130
4135
|
"sha256": "7cb9dac9cb87b679e1ae50e4112b3a7928a38ebb9902c8947a74d17bec4d9009"
|
|
4131
4136
|
},
|
|
4137
|
+
{
|
|
4138
|
+
"path": "modules/lifecycle/activity.js",
|
|
4139
|
+
"mode": "0000644",
|
|
4140
|
+
"sha256": "38bbb1b0f0992c655cd48f95476fbbdac11381bb929999b6da0f68fbbf802b16"
|
|
4141
|
+
},
|
|
4132
4142
|
{
|
|
4133
4143
|
"path": "modules/lifecycle/claim-eligibility.js",
|
|
4134
4144
|
"mode": "0000644",
|
|
@@ -4302,7 +4312,7 @@
|
|
|
4302
4312
|
{
|
|
4303
4313
|
"path": "modules/lifecycle/lifecycle.js",
|
|
4304
4314
|
"mode": "0000644",
|
|
4305
|
-
"sha256": "
|
|
4315
|
+
"sha256": "2d683f62f6813d7894dd54657a70b027cf686dfa76879541adc84544f03d4b51"
|
|
4306
4316
|
},
|
|
4307
4317
|
{
|
|
4308
4318
|
"path": "modules/lifecycle/merge-lock.js",
|
|
@@ -5077,12 +5087,12 @@
|
|
|
5077
5087
|
{
|
|
5078
5088
|
"path": "package-lock.json",
|
|
5079
5089
|
"mode": "0000644",
|
|
5080
|
-
"sha256": "
|
|
5090
|
+
"sha256": "b29fad739b5ae1c818f7974aaffa1a2c9cdcd468a96fdd5cf557e669539a26ea"
|
|
5081
5091
|
},
|
|
5082
5092
|
{
|
|
5083
5093
|
"path": "package.json",
|
|
5084
5094
|
"mode": "0000644",
|
|
5085
|
-
"sha256": "
|
|
5095
|
+
"sha256": "d0986bb5a781bc56402c86519e1c293f7672c0b52938574913356eceba838dfb"
|
|
5086
5096
|
},
|
|
5087
5097
|
{
|
|
5088
5098
|
"path": "public-docs/index.html",
|
|
@@ -6627,7 +6637,7 @@
|
|
|
6627
6637
|
{
|
|
6628
6638
|
"path": "scripts/hall-preview/server.js",
|
|
6629
6639
|
"mode": "0000644",
|
|
6630
|
-
"sha256": "
|
|
6640
|
+
"sha256": "eb2c9bde186fcd050c41d68697945f46b9d891e545cc65f81db71b647a7cb3d9"
|
|
6631
6641
|
},
|
|
6632
6642
|
{
|
|
6633
6643
|
"path": "scripts/migrate.sh",
|
|
@@ -6887,7 +6897,7 @@
|
|
|
6887
6897
|
{
|
|
6888
6898
|
"path": "src/bongos/routes/builders.js",
|
|
6889
6899
|
"mode": "0000644",
|
|
6890
|
-
"sha256": "
|
|
6900
|
+
"sha256": "a5250b0ff33a42087c2546ab74b68cc7decdd3a08fda7a2f0ad56bcbf51837cd"
|
|
6891
6901
|
},
|
|
6892
6902
|
{
|
|
6893
6903
|
"path": "src/bongos/routes/github.js",
|
|
@@ -6987,7 +6997,7 @@
|
|
|
6987
6997
|
{
|
|
6988
6998
|
"path": "src/module-api.js",
|
|
6989
6999
|
"mode": "0000644",
|
|
6990
|
-
"sha256": "
|
|
7000
|
+
"sha256": "9a9f751f0b8da59f2e74a6ee3ea8f57c3ddbd0be971b97d5c654d7ef02d6b322"
|
|
6991
7001
|
},
|
|
6992
7002
|
{
|
|
6993
7003
|
"path": "src/module-loader/catalog.js",
|
|
@@ -8944,6 +8954,11 @@
|
|
|
8944
8954
|
"mode": "0000644",
|
|
8945
8955
|
"sha256": "3c85d28ecc55e375988f3e55aee993c8c84220889678262d8207146c2772f3f5"
|
|
8946
8956
|
},
|
|
8957
|
+
{
|
|
8958
|
+
"path": "tests/profile_activity.mjs",
|
|
8959
|
+
"mode": "0000644",
|
|
8960
|
+
"sha256": "013df2528c4998588c1d3f89a9a25f8fa1e912b8abc2d8e95c26c250869a386f"
|
|
8961
|
+
},
|
|
8947
8962
|
{
|
|
8948
8963
|
"path": "tests/profile_fields.mjs",
|
|
8949
8964
|
"mode": "0000644",
|
|
@@ -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
|
+
- 324 operations across 52 resource groups
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
@@ -223,6 +223,8 @@ function createClient(opts = {}) {
|
|
|
223
223
|
"builders": {
|
|
224
224
|
// GET /builders/{id}/active-claims — rank: metic+archon — GET /builders/:id/active-claims
|
|
225
225
|
getBuildersIdActiveClaims: (args) => request("GET", "/builders/{id}/active-claims", { hasBody: false }, args),
|
|
226
|
+
// GET /builders/{id}/activity — rank: any-builder — GET /builders/:id/activity
|
|
227
|
+
getBuildersIdActivity: (args) => request("GET", "/builders/{id}/activity", { hasBody: false }, args),
|
|
226
228
|
// PATCH /builders/{id}/budget — rank: metic+archon — PATCH /builders/:id/budget
|
|
227
229
|
patchBuildersIdBudget: (args) => request("PATCH", "/builders/{id}/budget", { hasBody: true }, args),
|
|
228
230
|
// GET /builders/{id}/onboarding — rank: public — GET /builders/:id/onboarding
|
|
@@ -441,6 +443,8 @@ function createClient(opts = {}) {
|
|
|
441
443
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
442
444
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
443
445
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
446
|
+
// GET /inbox/by-builder/{id} — rank: any-builder — GET /inbox/by-builder/:id
|
|
447
|
+
getInboxByBuilderId: (args) => request("GET", "/inbox/by-builder/{id}", { hasBody: false }, args),
|
|
444
448
|
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
445
449
|
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
446
450
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
|
@@ -222,6 +222,8 @@ function createClient(opts = {}) {
|
|
|
222
222
|
"builders": {
|
|
223
223
|
// GET /builders/{id}/active-claims — rank: metic+archon — GET /builders/:id/active-claims
|
|
224
224
|
getBuildersIdActiveClaims: (args) => request("GET", "/builders/{id}/active-claims", { hasBody: false }, args),
|
|
225
|
+
// GET /builders/{id}/activity — rank: any-builder — GET /builders/:id/activity
|
|
226
|
+
getBuildersIdActivity: (args) => request("GET", "/builders/{id}/activity", { hasBody: false }, args),
|
|
225
227
|
// PATCH /builders/{id}/budget — rank: metic+archon — PATCH /builders/:id/budget
|
|
226
228
|
patchBuildersIdBudget: (args) => request("PATCH", "/builders/{id}/budget", { hasBody: true }, args),
|
|
227
229
|
// GET /builders/{id}/onboarding — rank: public — GET /builders/:id/onboarding
|
|
@@ -440,6 +442,8 @@ function createClient(opts = {}) {
|
|
|
440
442
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
441
443
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
442
444
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
445
|
+
// GET /inbox/by-builder/{id} — rank: any-builder — GET /inbox/by-builder/:id
|
|
446
|
+
getInboxByBuilderId: (args) => request("GET", "/inbox/by-builder/{id}", { hasBody: false }, args),
|
|
443
447
|
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
444
448
|
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
445
449
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
|
@@ -31,6 +31,7 @@ export interface GetBoxTerminalResponse { state: unknown; url: unknown; credenti
|
|
|
31
31
|
export interface GetBoxesResponse { boxes: unknown }
|
|
32
32
|
export interface GetBuildersDirectoryResponse { builders: unknown }
|
|
33
33
|
export interface GetBuildersIdActiveClaimsResponse { builder_id: unknown; claims: unknown; stale_hours: unknown }
|
|
34
|
+
export interface GetBuildersIdActivityResponse { builder_id: unknown; section: unknown; role: unknown; rows: unknown; total: unknown }
|
|
34
35
|
export interface GetBuildersIdOnboardingResponse { builder_id: unknown; onboarding: unknown }
|
|
35
36
|
export interface GetBuildersIdProfileResponse { builder: unknown; shipped_count: unknown; recent_ships: unknown; achievements: unknown; cross_project?: unknown }
|
|
36
37
|
export interface GetBuildersMePendingRankChangeResponse { change: unknown; greeting?: unknown }
|
|
@@ -55,6 +56,7 @@ export interface GetHealthzResponse { ok: boolean; auth_configured: unknown }
|
|
|
55
56
|
export interface GetHelpRequestsForMeResponse { help_requests: unknown; count: unknown; crafts: unknown }
|
|
56
57
|
export interface GetHelpRequestsMineResponse { help_requests: unknown; count: unknown }
|
|
57
58
|
export interface GetInboxAwaitingNodResponse { awaiting: unknown; count: unknown }
|
|
59
|
+
export interface GetInboxByBuilderIdResponse { builder_id: unknown; ideas: unknown; total: unknown; limit: unknown; offset: unknown }
|
|
58
60
|
export interface GetInboxIdResponse { idea: unknown }
|
|
59
61
|
export interface GetInboxResponse { ideas: unknown; open_count: unknown }
|
|
60
62
|
export interface GetInboxSparksResponse { sparks: unknown; count: unknown }
|
|
@@ -513,6 +515,8 @@ export interface BongosClient {
|
|
|
513
515
|
"builders": {
|
|
514
516
|
/** GET /builders/{id}/active-claims — rank: metic+archon */
|
|
515
517
|
getBuildersIdActiveClaims(args?: RequestArgs): Promise<GetBuildersIdActiveClaimsResponse>;
|
|
518
|
+
/** GET /builders/{id}/activity — rank: any-builder */
|
|
519
|
+
getBuildersIdActivity(args?: RequestArgs): Promise<GetBuildersIdActivityResponse>;
|
|
516
520
|
/** PATCH /builders/{id}/budget — rank: metic+archon */
|
|
517
521
|
patchBuildersIdBudget(args?: RequestArgs & { body?: PatchBuildersIdBudgetRequest }): Promise<PatchBuildersIdBudgetResponse>;
|
|
518
522
|
/** GET /builders/{id}/onboarding — rank: public */
|
|
@@ -731,6 +735,8 @@ export interface BongosClient {
|
|
|
731
735
|
postInboxIdSpark(args?: RequestArgs): Promise<PostInboxIdSparkResponse>;
|
|
732
736
|
/** GET /inbox/awaiting-nod — rank: metic+archon */
|
|
733
737
|
getInboxAwaitingNod(args?: RequestArgs): Promise<GetInboxAwaitingNodResponse>;
|
|
738
|
+
/** GET /inbox/by-builder/{id} — rank: any-builder */
|
|
739
|
+
getInboxByBuilderId(args?: RequestArgs): Promise<GetInboxByBuilderIdResponse>;
|
|
734
740
|
/** POST /inbox/score — rank: any-builder */
|
|
735
741
|
postInboxScore(args: RequestArgs & { body: PostInboxScoreRequest }): Promise<PostInboxScoreResponse>;
|
|
736
742
|
/** GET /inbox/sparks — rank: any-builder */
|
|
@@ -219,6 +219,8 @@ export function createClient(opts = {}) {
|
|
|
219
219
|
"builders": {
|
|
220
220
|
// GET /builders/{id}/active-claims — rank: metic+archon — GET /builders/:id/active-claims
|
|
221
221
|
getBuildersIdActiveClaims: (args) => request("GET", "/builders/{id}/active-claims", { hasBody: false }, args),
|
|
222
|
+
// GET /builders/{id}/activity — rank: any-builder — GET /builders/:id/activity
|
|
223
|
+
getBuildersIdActivity: (args) => request("GET", "/builders/{id}/activity", { hasBody: false }, args),
|
|
222
224
|
// PATCH /builders/{id}/budget — rank: metic+archon — PATCH /builders/:id/budget
|
|
223
225
|
patchBuildersIdBudget: (args) => request("PATCH", "/builders/{id}/budget", { hasBody: true }, args),
|
|
224
226
|
// GET /builders/{id}/onboarding — rank: public — GET /builders/:id/onboarding
|
|
@@ -437,6 +439,8 @@ export function createClient(opts = {}) {
|
|
|
437
439
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
438
440
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
439
441
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
442
|
+
// GET /inbox/by-builder/{id} — rank: any-builder — GET /inbox/by-builder/:id
|
|
443
|
+
getInboxByBuilderId: (args) => request("GET", "/inbox/by-builder/{id}", { hasBody: false }, args),
|
|
440
444
|
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
441
445
|
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
442
446
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
package/docs/api/openapi.json
CHANGED
|
@@ -2676,6 +2676,58 @@
|
|
|
2676
2676
|
]
|
|
2677
2677
|
}
|
|
2678
2678
|
},
|
|
2679
|
+
"/builders/{id}/activity": {
|
|
2680
|
+
"get": {
|
|
2681
|
+
"operationId": "get_builders_id_activity",
|
|
2682
|
+
"tags": [
|
|
2683
|
+
"builders"
|
|
2684
|
+
],
|
|
2685
|
+
"summary": "GET /builders/:id/activity",
|
|
2686
|
+
"description": "GET /builders/:id/activity — the profile's PER-CRAFT activity log (task 1003281, goal 1000072, criterion legibility-activity-by-role). WHAT IT ADDS OVER /profile. The profile answers \"how much has this person shipped\" — one count and the last five works, craft-blind. A person's artist track record is a different question from their engineer one, so this route serves ONE section (`tasks` or `goals`) for ONE craft, paged. It EXTENDS the profile surface rather than forking it: the page is the same page, the identity band and the achievement shelf are unchanged, and this fills the ledger below them. The third section of that log — the IDEA TRAIL — is served by the ideas module's GET /inbox/by-builder/:id, because an idea is its domain's row, not a lifecycle one. ONE SECTION PER CALL, not all three in one payload: each ledger pages independently, and a single response carrying three page windows would need three limit/offset pairs on one query string to say anything at all. rank: any-builder, NOT owner-only — a track record is a thing other people read; that is what makes the profile a portfolio rather than a dashboard, and it is the same posture /profile, /builders/roster and the leaderboard already take toward the same rows. The per-viewer filtering that DOES matter is the private-goal wall below, and it is applied to the DATA, not to the caller. But, unlike /profile directly above, this read IS gated to a sign-in. The goals half is viewer-dependent: a private goal's title is exactly what ADR 0112 says a non-member must not learn, so the read needs to know who is asking. Serving it publicly would mean either leaking private goals or silently omitting the viewer's own — both worse than a sign-in. The tasks half is the same already-public shipped-work data /profile returns.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
2687
|
+
"x-rank": "any-builder",
|
|
2688
|
+
"x-source": "src/bongos/routes/builders.js",
|
|
2689
|
+
"parameters": [
|
|
2690
|
+
{
|
|
2691
|
+
"name": "id",
|
|
2692
|
+
"in": "path",
|
|
2693
|
+
"required": true,
|
|
2694
|
+
"schema": {
|
|
2695
|
+
"type": "string"
|
|
2696
|
+
},
|
|
2697
|
+
"description": "Path parameter `id`."
|
|
2698
|
+
}
|
|
2699
|
+
],
|
|
2700
|
+
"responses": {
|
|
2701
|
+
"200": {
|
|
2702
|
+
"description": "Success.",
|
|
2703
|
+
"content": {
|
|
2704
|
+
"application/json": {
|
|
2705
|
+
"schema": {
|
|
2706
|
+
"$ref": "#/components/schemas/GetBuildersIdActivityResponse"
|
|
2707
|
+
}
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
},
|
|
2711
|
+
"400": {
|
|
2712
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2713
|
+
},
|
|
2714
|
+
"401": {
|
|
2715
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
2716
|
+
},
|
|
2717
|
+
"403": {
|
|
2718
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2719
|
+
},
|
|
2720
|
+
"404": {
|
|
2721
|
+
"$ref": "#/components/responses/NotFound"
|
|
2722
|
+
}
|
|
2723
|
+
},
|
|
2724
|
+
"security": [
|
|
2725
|
+
{
|
|
2726
|
+
"builderSession": []
|
|
2727
|
+
}
|
|
2728
|
+
]
|
|
2729
|
+
}
|
|
2730
|
+
},
|
|
2679
2731
|
"/builders/{id}/budget": {
|
|
2680
2732
|
"patch": {
|
|
2681
2733
|
"operationId": "patch_builders_id_budget",
|
|
@@ -6778,6 +6830,58 @@
|
|
|
6778
6830
|
]
|
|
6779
6831
|
}
|
|
6780
6832
|
},
|
|
6833
|
+
"/inbox/by-builder/{id}": {
|
|
6834
|
+
"get": {
|
|
6835
|
+
"operationId": "get_inbox_by_builder_id",
|
|
6836
|
+
"tags": [
|
|
6837
|
+
"inbox"
|
|
6838
|
+
],
|
|
6839
|
+
"summary": "GET /inbox/by-builder/:id",
|
|
6840
|
+
"description": "THE IDEA TRAIL: every idea one builder filed, newest first, with what became of each (task 1003281, goal 1000072, criterion legibility-activity-by-role). Backs the ideator view of the profile's activity log; the tasks and goals halves of that log are served by the core GET /builders/:id/activity, because they are lifecycle rows, not ideas. WHY IT IS A LIST ROUTE AND NOT A FIELD ON THE PROFILE: the trail is paged. A prolific filer's trail is long, and the criterion asks for \"every idea you submitted\", so it cannot be a top-N attached to another response. Gated to any signed-in builder, matching GET /inbox/:id directly below: idea TITLES and triage notes are builder-visible, not world-visible, and the public profile route deliberately carries none of them. The viewer's rank rides into the read so the skill-friction gate holds here as it does on every other idea list. DECLARED BEFORE `GET /inbox/:id` DELIBERATELY — the fourth route in this file to need that. `/inbox/by-builder/41` would otherwise bind `:id='by-builder'` and parseId would 400 the whole trail. tests/profile_activity.mjs pins the relative order.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6841
|
+
"x-rank": "any-builder",
|
|
6842
|
+
"x-source": "modules/ideas/routes/inbox.js",
|
|
6843
|
+
"parameters": [
|
|
6844
|
+
{
|
|
6845
|
+
"name": "id",
|
|
6846
|
+
"in": "path",
|
|
6847
|
+
"required": true,
|
|
6848
|
+
"schema": {
|
|
6849
|
+
"type": "string"
|
|
6850
|
+
},
|
|
6851
|
+
"description": "Path parameter `id`."
|
|
6852
|
+
}
|
|
6853
|
+
],
|
|
6854
|
+
"responses": {
|
|
6855
|
+
"200": {
|
|
6856
|
+
"description": "Success.",
|
|
6857
|
+
"content": {
|
|
6858
|
+
"application/json": {
|
|
6859
|
+
"schema": {
|
|
6860
|
+
"$ref": "#/components/schemas/GetInboxByBuilderIdResponse"
|
|
6861
|
+
}
|
|
6862
|
+
}
|
|
6863
|
+
}
|
|
6864
|
+
},
|
|
6865
|
+
"400": {
|
|
6866
|
+
"$ref": "#/components/responses/BadRequest"
|
|
6867
|
+
},
|
|
6868
|
+
"401": {
|
|
6869
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
6870
|
+
},
|
|
6871
|
+
"403": {
|
|
6872
|
+
"$ref": "#/components/responses/Forbidden"
|
|
6873
|
+
},
|
|
6874
|
+
"404": {
|
|
6875
|
+
"$ref": "#/components/responses/NotFound"
|
|
6876
|
+
}
|
|
6877
|
+
},
|
|
6878
|
+
"security": [
|
|
6879
|
+
{
|
|
6880
|
+
"builderSession": []
|
|
6881
|
+
}
|
|
6882
|
+
]
|
|
6883
|
+
}
|
|
6884
|
+
},
|
|
6781
6885
|
"/inbox/score": {
|
|
6782
6886
|
"post": {
|
|
6783
6887
|
"operationId": "post_inbox_score",
|
|
@@ -14986,6 +15090,23 @@
|
|
|
14986
15090
|
"stale_hours"
|
|
14987
15091
|
]
|
|
14988
15092
|
},
|
|
15093
|
+
"GetBuildersIdActivityResponse": {
|
|
15094
|
+
"type": "object",
|
|
15095
|
+
"properties": {
|
|
15096
|
+
"builder_id": {},
|
|
15097
|
+
"section": {},
|
|
15098
|
+
"role": {},
|
|
15099
|
+
"rows": {},
|
|
15100
|
+
"total": {}
|
|
15101
|
+
},
|
|
15102
|
+
"required": [
|
|
15103
|
+
"builder_id",
|
|
15104
|
+
"section",
|
|
15105
|
+
"role",
|
|
15106
|
+
"rows",
|
|
15107
|
+
"total"
|
|
15108
|
+
]
|
|
15109
|
+
},
|
|
14989
15110
|
"GetBuildersIdOnboardingResponse": {
|
|
14990
15111
|
"type": "object",
|
|
14991
15112
|
"properties": {
|
|
@@ -15272,6 +15393,23 @@
|
|
|
15272
15393
|
"count"
|
|
15273
15394
|
]
|
|
15274
15395
|
},
|
|
15396
|
+
"GetInboxByBuilderIdResponse": {
|
|
15397
|
+
"type": "object",
|
|
15398
|
+
"properties": {
|
|
15399
|
+
"builder_id": {},
|
|
15400
|
+
"ideas": {},
|
|
15401
|
+
"total": {},
|
|
15402
|
+
"limit": {},
|
|
15403
|
+
"offset": {}
|
|
15404
|
+
},
|
|
15405
|
+
"required": [
|
|
15406
|
+
"builder_id",
|
|
15407
|
+
"ideas",
|
|
15408
|
+
"total",
|
|
15409
|
+
"limit",
|
|
15410
|
+
"offset"
|
|
15411
|
+
]
|
|
15412
|
+
},
|
|
15275
15413
|
"GetInboxIdResponse": {
|
|
15276
15414
|
"type": "object",
|
|
15277
15415
|
"properties": {
|
|
@@ -20310,9 +20448,9 @@
|
|
|
20310
20448
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
20311
20449
|
}
|
|
20312
20450
|
},
|
|
20313
|
-
"x-endpoint-count":
|
|
20314
|
-
"x-schema-count":
|
|
20451
|
+
"x-endpoint-count": 324,
|
|
20452
|
+
"x-schema-count": 359,
|
|
20315
20453
|
"x-undocumented-bodies": 9,
|
|
20316
|
-
"x-response-schemas":
|
|
20454
|
+
"x-response-schemas": 242,
|
|
20317
20455
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
20318
20456
|
}
|
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. 324 endpoints across 52 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`.
|
|
@@ -119,11 +119,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
119
119
|
|---|---|---|---|---|
|
|
120
120
|
| GET | `/api/bongos/bug-attachments/:name` | `any-builder` | — | GET /api/bongos/bug-attachments/:name — stream one stored image. |
|
|
121
121
|
|
|
122
|
-
## `builders` (
|
|
122
|
+
## `builders` (10)
|
|
123
123
|
|
|
124
124
|
| Method | Path | Rank | Body | Description |
|
|
125
125
|
|---|---|---|---|---|
|
|
126
126
|
| GET | `/api/bongos/builders/:id/active-claims` | `metic+archon` | — | GET /builders/:id/active-claims — V3.R14 (task 238). |
|
|
127
|
+
| GET | `/api/bongos/builders/:id/activity` | `any-builder` | — | GET /builders/:id/activity — the profile's PER-CRAFT activity log (task 1003281, goal 1000072, criterion legibility-activity-by-role). |
|
|
127
128
|
| PATCH | `/api/bongos/builders/:id/budget` | `metic+archon` | `monthly_budget_usd` | PATCH /builders/:id/budget — set or clear a builder's monthly spend ceiling (V3.R84 task 302, criterion C3). |
|
|
128
129
|
| GET | `/api/bongos/builders/:id/onboarding` | `public` | — | GET /builders/:id/onboarding — V3.R75 (task 294) onboarding checklist read. |
|
|
129
130
|
| GET | `/api/bongos/builders/:id/profile` | `public` | — | GET /builders/:id/profile — the viewable builder profile page's read (task 1467, goal 25 "bx-identity"). |
|
|
@@ -278,7 +279,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
278
279
|
| GET | `/api/bongos/help-requests/for-me` | `any-builder` | — | The addressed read — C01's answer to "and fires a notification". |
|
|
279
280
|
| GET | `/api/bongos/help-requests/mine` | `any-builder` | — | your own asks, so you can settle them. |
|
|
280
281
|
|
|
281
|
-
## `inbox` (
|
|
282
|
+
## `inbox` (15)
|
|
282
283
|
|
|
283
284
|
| Method | Path | Rank | Body | Description |
|
|
284
285
|
|---|---|---|---|---|
|
|
@@ -293,6 +294,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
293
294
|
| POST | `/api/bongos/inbox/:id/spark` | `any-builder` | — | Mark a Quick Idea as a Big Idea Spark — "I have the spark but not the full picture, someone develop this". |
|
|
294
295
|
| DELETE | `/api/bongos/inbox/:id/spark` | `any-builder` | — | Withdraw the Big Idea Spark mark — the reversibility half of R144. |
|
|
295
296
|
| GET | `/api/bongos/inbox/awaiting-nod` | `metic+archon` | — | GET /inbox/awaiting-nod — the NOD QUEUE (task 1003066, BV1.R05). |
|
|
297
|
+
| GET | `/api/bongos/inbox/by-builder/:id` | `any-builder` | — | THE IDEA TRAIL: every idea one builder filed, newest first, with what became of each (task 1003281, goal 1000072, criterion legibility-ac… |
|
|
296
298
|
| POST | `/api/bongos/inbox/score` | `any-builder` | `field_values`, `template_key` | |
|
|
297
299
|
| GET | `/api/bongos/inbox/sparks` | `any-builder` | — | GET /inbox/sparks — THE SPARK QUEUE (task 1002921 / BV1.R145, goal 1000062). |
|
|
298
300
|
| GET | `/api/bongos/inbox/template` | `any-builder` | — | ----------------------------------------------------------------------- The two reads the hall's Full Idea composer is built from (task 1… |
|