@bongos/core 1.19.298 → 1.19.299
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 +45 -25
- 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 +7 -0
- package/clients/bongos-client/index.mjs +4 -0
- package/docs/api/openapi.json +127 -3
- package/docs/api-reference.md +4 -2
- package/docs/copy-inventory.md +28 -13
- package/docs/copy-registry.json +162 -17
- package/docs/file-map.md +1 -1
- package/modules/dev-box/app/src/vendor/bongos-client.cjs +4 -0
- package/modules/hall-ui/public/ideas.css +120 -0
- package/modules/hall-ui/public/ideas.html +95 -0
- package/modules/hall-ui/public/ideas.js +335 -0
- package/modules/hall-ui/public/shell.js +8 -0
- package/modules/ideas/routes/inbox.js +90 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/bongos/serve-internal.js +6 -1
- package/src/module-api.js +3 -1
- package/tests/hall_nav.mjs +6 -1
- package/tests/idea_hall_composer.mjs +246 -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.299",
|
|
6
|
+
"core_contract": "1.19.299",
|
|
7
|
+
"source_commit": "d591d374828ca13a2d6a3669ba194a33d25f7c82",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-22T21:42:14.117Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 322,
|
|
13
13
|
"agent_docs_stubbed": 22,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 1405,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 1749,
|
|
20
|
+
"tree_sha256": "19e6ca4bdb8b1113057e5390e82e3e12947e0d43b2dbae6b81b4c07811ae6dc4",
|
|
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": "162edc8df3b6354b06337ad981f473ea798151002d6c2eda728b25c0545ea70c"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "f8df65df7eaaccb15fe2a1aeda1c690e377cecc3617b408c4ff8a71f4c79edea"
|
|
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": "53dec4d0e2958ddb66fe794b74cdc0bb8823fa7d8a5da90a4c2dd731a1bb0e04"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"path": "clients/bongos-client/index.d.ts",
|
|
369
369
|
"mode": "0000644",
|
|
370
|
-
"sha256": "
|
|
370
|
+
"sha256": "85041b30fb2113ca5b3684ae961e67dc2bd5dfdb152064b151af3f0a93a29f31"
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"path": "clients/bongos-client/index.mjs",
|
|
374
374
|
"mode": "0000644",
|
|
375
|
-
"sha256": "
|
|
375
|
+
"sha256": "f01af61309e843cf15fc8b5c4cb01e8383927890ea1734d91a2ed490424d2d77"
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1417,12 +1417,12 @@
|
|
|
1417
1417
|
{
|
|
1418
1418
|
"path": "docs/api-reference.md",
|
|
1419
1419
|
"mode": "0000644",
|
|
1420
|
-
"sha256": "
|
|
1420
|
+
"sha256": "d545aada2bc0127be904c5df12c393c3ab8756f84ef86cc7bcee1348074769f9"
|
|
1421
1421
|
},
|
|
1422
1422
|
{
|
|
1423
1423
|
"path": "docs/api/openapi.json",
|
|
1424
1424
|
"mode": "0000644",
|
|
1425
|
-
"sha256": "
|
|
1425
|
+
"sha256": "828558b3bd6cc8d7c9c720eef962e098e4f886ab33360833b2c6d3946acbd1d1"
|
|
1426
1426
|
},
|
|
1427
1427
|
{
|
|
1428
1428
|
"path": "docs/architecture.md",
|
|
@@ -1447,12 +1447,12 @@
|
|
|
1447
1447
|
{
|
|
1448
1448
|
"path": "docs/copy-inventory.md",
|
|
1449
1449
|
"mode": "0000644",
|
|
1450
|
-
"sha256": "
|
|
1450
|
+
"sha256": "10fff8940c3533b2da9e5cd034ee3b85e8f8924615450a037c5dc1118cc515fc"
|
|
1451
1451
|
},
|
|
1452
1452
|
{
|
|
1453
1453
|
"path": "docs/copy-registry.json",
|
|
1454
1454
|
"mode": "0000644",
|
|
1455
|
-
"sha256": "
|
|
1455
|
+
"sha256": "de5de5aa328f46061c7ee63d2fdea8117141fb18331324f1560cb3344f982a14"
|
|
1456
1456
|
},
|
|
1457
1457
|
{
|
|
1458
1458
|
"path": "docs/design-contract.md",
|
|
@@ -1557,7 +1557,7 @@
|
|
|
1557
1557
|
{
|
|
1558
1558
|
"path": "docs/file-map.md",
|
|
1559
1559
|
"mode": "0000644",
|
|
1560
|
-
"sha256": "
|
|
1560
|
+
"sha256": "fe7af041ba95eb5bdf58b92dcedbe8c7694a1ea8128d980cff566edb6cf32352"
|
|
1561
1561
|
},
|
|
1562
1562
|
{
|
|
1563
1563
|
"path": "docs/handoff-template.md",
|
|
@@ -2812,7 +2812,7 @@
|
|
|
2812
2812
|
{
|
|
2813
2813
|
"path": "modules/dev-box/app/src/vendor/bongos-client.cjs",
|
|
2814
2814
|
"mode": "0000644",
|
|
2815
|
-
"sha256": "
|
|
2815
|
+
"sha256": "53dec4d0e2958ddb66fe794b74cdc0bb8823fa7d8a5da90a4c2dd731a1bb0e04"
|
|
2816
2816
|
},
|
|
2817
2817
|
{
|
|
2818
2818
|
"path": "modules/dev-box/app/test/unit.mjs",
|
|
@@ -3469,6 +3469,21 @@
|
|
|
3469
3469
|
"mode": "0000644",
|
|
3470
3470
|
"sha256": "7a102f4fd675910b0c80416c3ed05397d38f977e647fffb00c593732d05a3712"
|
|
3471
3471
|
},
|
|
3472
|
+
{
|
|
3473
|
+
"path": "modules/hall-ui/public/ideas.css",
|
|
3474
|
+
"mode": "0000644",
|
|
3475
|
+
"sha256": "ee6e640e9e23a7e724a3876171fe20ca9d758458f90bb443968f761d296500f1"
|
|
3476
|
+
},
|
|
3477
|
+
{
|
|
3478
|
+
"path": "modules/hall-ui/public/ideas.html",
|
|
3479
|
+
"mode": "0000644",
|
|
3480
|
+
"sha256": "ad1ef56e043b2c1a93996b93ff098c4ca9555cdcb063df6387ba1d2c92a825e1"
|
|
3481
|
+
},
|
|
3482
|
+
{
|
|
3483
|
+
"path": "modules/hall-ui/public/ideas.js",
|
|
3484
|
+
"mode": "0000644",
|
|
3485
|
+
"sha256": "b3910cd9e1c77e9402f75522a1972c7ed59da784d9bc64a991072465414cb999"
|
|
3486
|
+
},
|
|
3472
3487
|
{
|
|
3473
3488
|
"path": "modules/hall-ui/public/index.html",
|
|
3474
3489
|
"mode": "0000644",
|
|
@@ -3637,7 +3652,7 @@
|
|
|
3637
3652
|
{
|
|
3638
3653
|
"path": "modules/hall-ui/public/shell.js",
|
|
3639
3654
|
"mode": "0000644",
|
|
3640
|
-
"sha256": "
|
|
3655
|
+
"sha256": "cc9fd3033b528ca2e5761054219653926341a6c10ee27ab10b42779cfc3b46a3"
|
|
3641
3656
|
},
|
|
3642
3657
|
{
|
|
3643
3658
|
"path": "modules/hall-ui/public/style.css",
|
|
@@ -3752,7 +3767,7 @@
|
|
|
3752
3767
|
{
|
|
3753
3768
|
"path": "modules/ideas/routes/inbox.js",
|
|
3754
3769
|
"mode": "0000644",
|
|
3755
|
-
"sha256": "
|
|
3770
|
+
"sha256": "33a5eadf8400285304e3a1958f25ca104b67c7c5a8c1ac59698cff64b4c70589"
|
|
3756
3771
|
},
|
|
3757
3772
|
{
|
|
3758
3773
|
"path": "modules/ideas/routing.js",
|
|
@@ -4547,12 +4562,12 @@
|
|
|
4547
4562
|
{
|
|
4548
4563
|
"path": "package-lock.json",
|
|
4549
4564
|
"mode": "0000644",
|
|
4550
|
-
"sha256": "
|
|
4565
|
+
"sha256": "407f202c0d8cd88cf0f622c4873b9feb1931ceb1dd273723862f8ccd19ec4142"
|
|
4551
4566
|
},
|
|
4552
4567
|
{
|
|
4553
4568
|
"path": "package.json",
|
|
4554
4569
|
"mode": "0000644",
|
|
4555
|
-
"sha256": "
|
|
4570
|
+
"sha256": "ddf2bb2fee835a734a8e1ec4524c33590958b44f82f86a814e953d8ee59b110d"
|
|
4556
4571
|
},
|
|
4557
4572
|
{
|
|
4558
4573
|
"path": "public-docs/index.html",
|
|
@@ -6172,7 +6187,7 @@
|
|
|
6172
6187
|
{
|
|
6173
6188
|
"path": "src/bongos/serve-internal.js",
|
|
6174
6189
|
"mode": "0000644",
|
|
6175
|
-
"sha256": "
|
|
6190
|
+
"sha256": "f54837753cf2b432634f044f84f8f198b39b1a18bf48c3ffb3df27f2c3a37cd2"
|
|
6176
6191
|
},
|
|
6177
6192
|
{
|
|
6178
6193
|
"path": "src/bongos/stealth-gate.js",
|
|
@@ -6207,7 +6222,7 @@
|
|
|
6207
6222
|
{
|
|
6208
6223
|
"path": "src/module-api.js",
|
|
6209
6224
|
"mode": "0000644",
|
|
6210
|
-
"sha256": "
|
|
6225
|
+
"sha256": "e714212ca02e064dd7778d83523dcf96f8bfdb8a93f86b87ecde046c8dbba994"
|
|
6211
6226
|
},
|
|
6212
6227
|
{
|
|
6213
6228
|
"path": "src/module-loader/catalog.js",
|
|
@@ -7437,7 +7452,7 @@
|
|
|
7437
7452
|
{
|
|
7438
7453
|
"path": "tests/hall_nav.mjs",
|
|
7439
7454
|
"mode": "0000644",
|
|
7440
|
-
"sha256": "
|
|
7455
|
+
"sha256": "59de791cd5497e7d73e3d34841f5e816efe36bc34d1580f3e9afbae3055f2f5c"
|
|
7441
7456
|
},
|
|
7442
7457
|
{
|
|
7443
7458
|
"path": "tests/hall_page_gate_map.mjs",
|
|
@@ -7519,6 +7534,11 @@
|
|
|
7519
7534
|
"mode": "0000644",
|
|
7520
7535
|
"sha256": "07cacc97990f0e775342f8b30171c87128e0acb1abd38d64c683c3f257927ebd"
|
|
7521
7536
|
},
|
|
7537
|
+
{
|
|
7538
|
+
"path": "tests/idea_hall_composer.mjs",
|
|
7539
|
+
"mode": "0000644",
|
|
7540
|
+
"sha256": "cf3071e8180dbb1bdacbafb7a1b40569691afe32b053db0f8de908a5726ca8fe"
|
|
7541
|
+
},
|
|
7522
7542
|
{
|
|
7523
7543
|
"path": "tests/idea_quick_guard.mjs",
|
|
7524
7544
|
"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
|
+
- 300 operations across 47 resource groups
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
@@ -417,8 +417,12 @@ function createClient(opts = {}) {
|
|
|
417
417
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
418
418
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
419
419
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
420
|
+
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
421
|
+
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
420
422
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
|
421
423
|
getInboxSparks: (args) => request("GET", "/inbox/sparks", { hasBody: false }, args),
|
|
424
|
+
// GET /inbox/template — rank: any-builder — GET /inbox/template
|
|
425
|
+
getInboxTemplate: (args) => request("GET", "/inbox/template", { hasBody: false }, args),
|
|
422
426
|
},
|
|
423
427
|
"instance": {
|
|
424
428
|
// GET /instance — rank: public — GET /instance
|
|
@@ -416,8 +416,12 @@ function createClient(opts = {}) {
|
|
|
416
416
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
417
417
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
418
418
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
419
|
+
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
420
|
+
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
419
421
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
|
420
422
|
getInboxSparks: (args) => request("GET", "/inbox/sparks", { hasBody: false }, args),
|
|
423
|
+
// GET /inbox/template — rank: any-builder — GET /inbox/template
|
|
424
|
+
getInboxTemplate: (args) => request("GET", "/inbox/template", { hasBody: false }, args),
|
|
421
425
|
},
|
|
422
426
|
"instance": {
|
|
423
427
|
// GET /instance — rank: public — GET /instance
|
|
@@ -51,6 +51,7 @@ export interface GetInboxAwaitingNodResponse { awaiting: unknown; count: unknown
|
|
|
51
51
|
export interface GetInboxIdResponse { idea: unknown }
|
|
52
52
|
export interface GetInboxResponse { ideas: unknown; open_count: unknown }
|
|
53
53
|
export interface GetInboxSparksResponse { sparks: unknown; count: unknown }
|
|
54
|
+
export interface GetInboxTemplateResponse { template: unknown }
|
|
54
55
|
export interface GetLeaderboardResponse { leaderboard: unknown; page: unknown }
|
|
55
56
|
export interface GetLearningsResponse { learnings: unknown }
|
|
56
57
|
export interface GetMeAchievementsResponse { unlocked: unknown }
|
|
@@ -251,6 +252,8 @@ export interface PostInboxIdRatifyRequest { notes_md?: string }
|
|
|
251
252
|
export interface PostInboxIdResubmitRequest { field_values: Record<string, unknown>; template_key?: string }
|
|
252
253
|
export interface PostInboxIdSparkResponse { idea: unknown; sparked: boolean; unchanged: boolean }
|
|
253
254
|
export interface PostInboxRequest { title: string; body_md?: string; kind?: string; suggested_version?: string; suggested_priority?: number; goal_id?: number; grade?: string; template_key?: string; field_values?: Record<string, unknown> }
|
|
255
|
+
export interface PostInboxScoreRequest { field_values: Record<string, unknown>; template_key?: string }
|
|
256
|
+
export interface PostInboxScoreResponse { score: unknown; fields: unknown; template_key: unknown }
|
|
254
257
|
export interface PostLearningsRequest { title: string; body_md: string; tags?: string[]; related_files?: string[]; source?: string; source_ref?: string; task_id?: number }
|
|
255
258
|
export interface PostLearningsResponse { skipped?: boolean; reason?: unknown; learning?: unknown }
|
|
256
259
|
export interface PostLlmCacheLookupRequest { cache_key?: unknown; tokens_saved_est?: unknown }
|
|
@@ -681,8 +684,12 @@ export interface BongosClient {
|
|
|
681
684
|
postInboxIdSpark(args?: RequestArgs): Promise<PostInboxIdSparkResponse>;
|
|
682
685
|
/** GET /inbox/awaiting-nod — rank: metic+archon */
|
|
683
686
|
getInboxAwaitingNod(args?: RequestArgs): Promise<GetInboxAwaitingNodResponse>;
|
|
687
|
+
/** POST /inbox/score — rank: any-builder */
|
|
688
|
+
postInboxScore(args: RequestArgs & { body: PostInboxScoreRequest }): Promise<PostInboxScoreResponse>;
|
|
684
689
|
/** GET /inbox/sparks — rank: any-builder */
|
|
685
690
|
getInboxSparks(args?: RequestArgs): Promise<GetInboxSparksResponse>;
|
|
691
|
+
/** GET /inbox/template — rank: any-builder */
|
|
692
|
+
getInboxTemplate(args?: RequestArgs): Promise<GetInboxTemplateResponse>;
|
|
686
693
|
};
|
|
687
694
|
"instance": {
|
|
688
695
|
/** GET /instance — rank: public */
|
|
@@ -413,8 +413,12 @@ export function createClient(opts = {}) {
|
|
|
413
413
|
postInboxIdSpark: (args) => request("POST", "/inbox/{id}/spark", { hasBody: true }, args),
|
|
414
414
|
// GET /inbox/awaiting-nod — rank: metic+archon — GET /inbox/awaiting-nod
|
|
415
415
|
getInboxAwaitingNod: (args) => request("GET", "/inbox/awaiting-nod", { hasBody: false }, args),
|
|
416
|
+
// POST /inbox/score — rank: any-builder — POST /inbox/score
|
|
417
|
+
postInboxScore: (args) => request("POST", "/inbox/score", { hasBody: true }, args),
|
|
416
418
|
// GET /inbox/sparks — rank: any-builder — GET /inbox/sparks
|
|
417
419
|
getInboxSparks: (args) => request("GET", "/inbox/sparks", { hasBody: false }, args),
|
|
420
|
+
// GET /inbox/template — rank: any-builder — GET /inbox/template
|
|
421
|
+
getInboxTemplate: (args) => request("GET", "/inbox/template", { hasBody: false }, args),
|
|
418
422
|
},
|
|
419
423
|
"instance": {
|
|
420
424
|
// GET /instance — rank: public — GET /instance
|
package/docs/api/openapi.json
CHANGED
|
@@ -6307,6 +6307,55 @@
|
|
|
6307
6307
|
]
|
|
6308
6308
|
}
|
|
6309
6309
|
},
|
|
6310
|
+
"/inbox/score": {
|
|
6311
|
+
"post": {
|
|
6312
|
+
"operationId": "post_inbox_score",
|
|
6313
|
+
"tags": [
|
|
6314
|
+
"inbox"
|
|
6315
|
+
],
|
|
6316
|
+
"summary": "POST /inbox/score",
|
|
6317
|
+
"description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6318
|
+
"x-rank": "any-builder",
|
|
6319
|
+
"x-source": "modules/ideas/routes/inbox.js",
|
|
6320
|
+
"requestBody": {
|
|
6321
|
+
"required": true,
|
|
6322
|
+
"content": {
|
|
6323
|
+
"application/json": {
|
|
6324
|
+
"schema": {
|
|
6325
|
+
"$ref": "#/components/schemas/PostInboxScoreRequest"
|
|
6326
|
+
}
|
|
6327
|
+
}
|
|
6328
|
+
},
|
|
6329
|
+
"x-validated": true
|
|
6330
|
+
},
|
|
6331
|
+
"responses": {
|
|
6332
|
+
"200": {
|
|
6333
|
+
"description": "Success.",
|
|
6334
|
+
"content": {
|
|
6335
|
+
"application/json": {
|
|
6336
|
+
"schema": {
|
|
6337
|
+
"$ref": "#/components/schemas/PostInboxScoreResponse"
|
|
6338
|
+
}
|
|
6339
|
+
}
|
|
6340
|
+
}
|
|
6341
|
+
},
|
|
6342
|
+
"400": {
|
|
6343
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
6344
|
+
},
|
|
6345
|
+
"401": {
|
|
6346
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
6347
|
+
},
|
|
6348
|
+
"403": {
|
|
6349
|
+
"$ref": "#/components/responses/Forbidden"
|
|
6350
|
+
}
|
|
6351
|
+
},
|
|
6352
|
+
"security": [
|
|
6353
|
+
{
|
|
6354
|
+
"builderSession": []
|
|
6355
|
+
}
|
|
6356
|
+
]
|
|
6357
|
+
}
|
|
6358
|
+
},
|
|
6310
6359
|
"/inbox/sparks": {
|
|
6311
6360
|
"get": {
|
|
6312
6361
|
"operationId": "get_inbox_sparks",
|
|
@@ -6345,6 +6394,44 @@
|
|
|
6345
6394
|
]
|
|
6346
6395
|
}
|
|
6347
6396
|
},
|
|
6397
|
+
"/inbox/template": {
|
|
6398
|
+
"get": {
|
|
6399
|
+
"operationId": "get_inbox_template",
|
|
6400
|
+
"tags": [
|
|
6401
|
+
"inbox"
|
|
6402
|
+
],
|
|
6403
|
+
"summary": "GET /inbox/template",
|
|
6404
|
+
"description": "----------------------------------------------------------------------- The two reads the hall's Full Idea composer is built from (task 1002928 / BV1.R152, goal 1000062). The done-when says the live meter must reflect THE REAL SCORER, \"not a second copy of the rules\". A browser cannot require() this module — completeness.js and templates.js are CJS and templates.js reaches inbox.js for DEFAULT_TEMPLATE_KEY, which reaches the pool — so the choice is between re-implementing the arithmetic in page JS and asking the server. These two routes are that ask, and they are why the composer contains no rules at all: GET /inbox/template → what the five fields ARE (so the FORM is rendered from the R141 declaration, not from five <textarea> elements hand-written into the HTML — a hard-coded form is the same \"second copy\" defect as a hard-coded scorer, one step earlier, and it would silently ignore a per-project template (R156)). POST /inbox/score → what it is WORTH right now (the R142 scorer itself, per-field, in template order). BOTH ARE PURE. No DB read, no write, no idea id: they describe and score a payload the caller already holds. That is what makes a debounced call on every keystroke reasonable, and why scoring carries no rank beyond sign-in — it tells you nothing you did not just type. DECLARED BEFORE `GET /inbox/:id`, and for GET /inbox/template that ordering is LOAD-BEARING: Express matches in declaration order, so with `:id` first the literal \"/inbox/template\" binds id='template' and parseId 400s it. Same trap as /inbox/sparks and /inbox/awaiting-nod above. rank: any-builder — filing a Full Idea is open to every role by the goal's own settled decision (\"no permission gate on Full Ideas; completeness scoring and triage do the filtering\"), so describing and scoring one must be too. Deliberately NOT pinned in route-rank-check: neither has a gate to protect.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
6405
|
+
"x-rank": "any-builder",
|
|
6406
|
+
"x-source": "modules/ideas/routes/inbox.js",
|
|
6407
|
+
"responses": {
|
|
6408
|
+
"200": {
|
|
6409
|
+
"description": "Success.",
|
|
6410
|
+
"content": {
|
|
6411
|
+
"application/json": {
|
|
6412
|
+
"schema": {
|
|
6413
|
+
"$ref": "#/components/schemas/GetInboxTemplateResponse"
|
|
6414
|
+
}
|
|
6415
|
+
}
|
|
6416
|
+
}
|
|
6417
|
+
},
|
|
6418
|
+
"400": {
|
|
6419
|
+
"$ref": "#/components/responses/BadRequest"
|
|
6420
|
+
},
|
|
6421
|
+
"401": {
|
|
6422
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
6423
|
+
},
|
|
6424
|
+
"403": {
|
|
6425
|
+
"$ref": "#/components/responses/Forbidden"
|
|
6426
|
+
}
|
|
6427
|
+
},
|
|
6428
|
+
"security": [
|
|
6429
|
+
{
|
|
6430
|
+
"builderSession": []
|
|
6431
|
+
}
|
|
6432
|
+
]
|
|
6433
|
+
}
|
|
6434
|
+
},
|
|
6348
6435
|
"/inbox/{id}": {
|
|
6349
6436
|
"get": {
|
|
6350
6437
|
"operationId": "get_inbox_id",
|
|
@@ -14133,6 +14220,15 @@
|
|
|
14133
14220
|
"count"
|
|
14134
14221
|
]
|
|
14135
14222
|
},
|
|
14223
|
+
"GetInboxTemplateResponse": {
|
|
14224
|
+
"type": "object",
|
|
14225
|
+
"properties": {
|
|
14226
|
+
"template": {}
|
|
14227
|
+
},
|
|
14228
|
+
"required": [
|
|
14229
|
+
"template"
|
|
14230
|
+
]
|
|
14231
|
+
},
|
|
14136
14232
|
"GetLeaderboardResponse": {
|
|
14137
14233
|
"type": "object",
|
|
14138
14234
|
"properties": {
|
|
@@ -17157,6 +17253,34 @@
|
|
|
17157
17253
|
],
|
|
17158
17254
|
"additionalProperties": false
|
|
17159
17255
|
},
|
|
17256
|
+
"PostInboxScoreRequest": {
|
|
17257
|
+
"type": "object",
|
|
17258
|
+
"properties": {
|
|
17259
|
+
"field_values": {
|
|
17260
|
+
"type": "object"
|
|
17261
|
+
},
|
|
17262
|
+
"template_key": {
|
|
17263
|
+
"type": "string"
|
|
17264
|
+
}
|
|
17265
|
+
},
|
|
17266
|
+
"required": [
|
|
17267
|
+
"field_values"
|
|
17268
|
+
],
|
|
17269
|
+
"additionalProperties": false
|
|
17270
|
+
},
|
|
17271
|
+
"PostInboxScoreResponse": {
|
|
17272
|
+
"type": "object",
|
|
17273
|
+
"properties": {
|
|
17274
|
+
"score": {},
|
|
17275
|
+
"fields": {},
|
|
17276
|
+
"template_key": {}
|
|
17277
|
+
},
|
|
17278
|
+
"required": [
|
|
17279
|
+
"score",
|
|
17280
|
+
"fields",
|
|
17281
|
+
"template_key"
|
|
17282
|
+
]
|
|
17283
|
+
},
|
|
17160
17284
|
"PostLearningsRequest": {
|
|
17161
17285
|
"type": "object",
|
|
17162
17286
|
"properties": {
|
|
@@ -18828,9 +18952,9 @@
|
|
|
18828
18952
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
18829
18953
|
}
|
|
18830
18954
|
},
|
|
18831
|
-
"x-endpoint-count":
|
|
18832
|
-
"x-schema-count":
|
|
18955
|
+
"x-endpoint-count": 300,
|
|
18956
|
+
"x-schema-count": 334,
|
|
18833
18957
|
"x-undocumented-bodies": 8,
|
|
18834
|
-
"x-response-schemas":
|
|
18958
|
+
"x-response-schemas": 223,
|
|
18835
18959
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
18836
18960
|
}
|
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. 300 endpoints across 47 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`.
|
|
@@ -258,7 +258,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
258
258
|
|---|---|---|---|---|
|
|
259
259
|
| GET | `/api/bongos/healthz` | `public` | — | liveness probe; status.example.com hits this anonymously. |
|
|
260
260
|
|
|
261
|
-
## `inbox` (
|
|
261
|
+
## `inbox` (14)
|
|
262
262
|
|
|
263
263
|
| Method | Path | Rank | Body | Description |
|
|
264
264
|
|---|---|---|---|---|
|
|
@@ -273,7 +273,9 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
273
273
|
| 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". |
|
|
274
274
|
| DELETE | `/api/bongos/inbox/:id/spark` | `any-builder` | — | Withdraw the Big Idea Spark mark — the reversibility half of R144. |
|
|
275
275
|
| GET | `/api/bongos/inbox/awaiting-nod` | `metic+archon` | — | GET /inbox/awaiting-nod — the NOD QUEUE (task 1003066, BV1.R05). |
|
|
276
|
+
| POST | `/api/bongos/inbox/score` | `any-builder` | `field_values`, `template_key` | |
|
|
276
277
|
| GET | `/api/bongos/inbox/sparks` | `any-builder` | — | GET /inbox/sparks — THE SPARK QUEUE (task 1002921 / BV1.R145, goal 1000062). |
|
|
278
|
+
| GET | `/api/bongos/inbox/template` | `any-builder` | — | ----------------------------------------------------------------------- The two reads the hall's Full Idea composer is built from (task 1… |
|
|
277
279
|
|
|
278
280
|
## `instance` (1)
|
|
279
281
|
|