@bongos/core 1.24.57 → 1.24.58
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 -48
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +0 -2
- package/clients/bongos-client/index.cjs +0 -2
- package/clients/bongos-client/index.d.ts +1 -3
- package/clients/bongos-client/index.mjs +0 -2
- package/docs/adr/0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md +45 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +1 -37
- package/docs/api-reference.md +2 -3
- package/docs/copy-inventory.md +38 -44
- package/docs/copy-registry.json +44 -108
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +4 -4
- package/modules/hall-ui/public/deploy-handoff.js +11 -3
- package/modules/hall-ui/public/deploy.js +10 -3
- package/modules/hall-ui/public/settings-software-update.js +4 -71
- package/modules/hall-ui/public/update-pill.js +6 -31
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/scripts/bongos/provision-core-upgrade.js +30 -1
- package/scripts/bongos/provision-units.js +18 -0
- package/scripts/hall-preview/server.js +0 -3
- package/src/bongos/routes/core-update.js +36 -76
- package/src/bongos/routes/feedback.js +1 -2
- package/src/module-api.js +1 -1
- package/tests/deploy_handoff.mjs +23 -2
- package/tests/deploy_page_projects.mjs +35 -3
- package/tests/provision_settings_apply.mjs +52 -0
- package/tests/software_update.mjs +35 -5
- package/tests/update_pill.mjs +9 -5
- package/src/bongos/upgrade-request.js +0 -158
- package/tests/upgrade_request.mjs +0 -348
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/bongos/package-core.js",
|
|
5
|
-
"core_version": "1.24.
|
|
6
|
-
"core_contract": "1.24.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.24.58",
|
|
6
|
+
"core_contract": "1.24.58",
|
|
7
|
+
"source_commit": "5d0373a2fc9f96cfacd4488757826a5ebd6942b4",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-11-07T14:
|
|
9
|
+
"built_at": "2026-11-07T14:15:06.231Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 638,
|
|
13
13
|
"agent_docs_stubbed": 32,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3897,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4568,
|
|
20
|
+
"tree_sha256": "e12981ebf9b882c4a0e83b648d1b5319525ddb38ab10765143743eef0b9a1f2e",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -332,12 +332,12 @@
|
|
|
332
332
|
{
|
|
333
333
|
"path": "clients/bongos-client/README.md",
|
|
334
334
|
"mode": "0000644",
|
|
335
|
-
"sha256": "
|
|
335
|
+
"sha256": "6669b8bc0f8302da25638519d1dd8d139260c0132c7a5a16747d63cd21d3383d"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
339
339
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
340
|
+
"sha256": "41d196d2203252be03a416fb271a9d88a61615e0a1d9babad0802e7e85151b44"
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -347,17 +347,17 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/index.cjs",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "5b76a04d9fba93c2900a1484cf997825804c4708c43228a6dbc541d3ea2c82f2"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/index.d.ts",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "77166efc6944d67f1ffe5b2bc9202ab72ae8331acdf341dffebe4cb034abe56d"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/index.mjs",
|
|
359
359
|
"mode": "0000644",
|
|
360
|
-
"sha256": "
|
|
360
|
+
"sha256": "25a84c2dfa874511575d8aca0f9102fb7c63c3e9ad7195907bd63f7d24e6a112"
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/package.json",
|
|
@@ -2449,20 +2449,25 @@
|
|
|
2449
2449
|
"mode": "0000644",
|
|
2450
2450
|
"sha256": "286df23c58b4d03f62b0ce1bca17bd15b1fc41a145d6493fb26a74d099a16ea3"
|
|
2451
2451
|
},
|
|
2452
|
+
{
|
|
2453
|
+
"path": "docs/adr/0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md",
|
|
2454
|
+
"mode": "0000644",
|
|
2455
|
+
"sha256": "72c24b0e5d9afcbb2c4dff2f359f79e086f49f38b6b8727456b7e4734002cec5"
|
|
2456
|
+
},
|
|
2452
2457
|
{
|
|
2453
2458
|
"path": "docs/adr/README.md",
|
|
2454
2459
|
"mode": "0000644",
|
|
2455
|
-
"sha256": "
|
|
2460
|
+
"sha256": "c960c4d3ebb30bd8bdc870eb5da41f57d3d7bbb6ba176f012452a75b7efdb525"
|
|
2456
2461
|
},
|
|
2457
2462
|
{
|
|
2458
2463
|
"path": "docs/api-reference.md",
|
|
2459
2464
|
"mode": "0000644",
|
|
2460
|
-
"sha256": "
|
|
2465
|
+
"sha256": "349d9ab67b126f0415285109bc80ee0099ef8aa5ca435a28b14f361ff8671282"
|
|
2461
2466
|
},
|
|
2462
2467
|
{
|
|
2463
2468
|
"path": "docs/api/openapi.json",
|
|
2464
2469
|
"mode": "0000644",
|
|
2465
|
-
"sha256": "
|
|
2470
|
+
"sha256": "eef94b4f6e03a937b12238548480a9a9b86d4703e43c9488c58dda8deb3b0fe7"
|
|
2466
2471
|
},
|
|
2467
2472
|
{
|
|
2468
2473
|
"path": "docs/architecture.md",
|
|
@@ -2487,12 +2492,12 @@
|
|
|
2487
2492
|
{
|
|
2488
2493
|
"path": "docs/copy-inventory.md",
|
|
2489
2494
|
"mode": "0000644",
|
|
2490
|
-
"sha256": "
|
|
2495
|
+
"sha256": "9f6c2622a044bc47c67ce6e1555af9a956f4189c2057ee80ba969744cd194aed"
|
|
2491
2496
|
},
|
|
2492
2497
|
{
|
|
2493
2498
|
"path": "docs/copy-registry.json",
|
|
2494
2499
|
"mode": "0000644",
|
|
2495
|
-
"sha256": "
|
|
2500
|
+
"sha256": "1503133709b601acaf90536389f65a6ba32725867e79ad210432538c641382e7"
|
|
2496
2501
|
},
|
|
2497
2502
|
{
|
|
2498
2503
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -3002,7 +3007,7 @@
|
|
|
3002
3007
|
{
|
|
3003
3008
|
"path": "docs/module-api-changelog.md",
|
|
3004
3009
|
"mode": "0000644",
|
|
3005
|
-
"sha256": "
|
|
3010
|
+
"sha256": "51ac2ca6bc7322d551ec3374877f213009191c23df9f967f5a7b0996a17fb7d3"
|
|
3006
3011
|
},
|
|
3007
3012
|
{
|
|
3008
3013
|
"path": "docs/modules-contract.md",
|
|
@@ -3092,7 +3097,7 @@
|
|
|
3092
3097
|
{
|
|
3093
3098
|
"path": "docs/page-readings.json",
|
|
3094
3099
|
"mode": "0000644",
|
|
3095
|
-
"sha256": "
|
|
3100
|
+
"sha256": "73b2e41788d1a41b8ccc2bdda733cf9cd136aeb44b7b5f972184dc807ff4e5a2"
|
|
3096
3101
|
},
|
|
3097
3102
|
{
|
|
3098
3103
|
"path": "docs/project-context.template.md",
|
|
@@ -6267,7 +6272,7 @@
|
|
|
6267
6272
|
{
|
|
6268
6273
|
"path": "modules/hall-ui/public/deploy-handoff.js",
|
|
6269
6274
|
"mode": "0000644",
|
|
6270
|
-
"sha256": "
|
|
6275
|
+
"sha256": "250b9e36ae9d5d0db02d7c9aaed94859c506e7c6a6180c9c799332b7416cc4f7"
|
|
6271
6276
|
},
|
|
6272
6277
|
{
|
|
6273
6278
|
"path": "modules/hall-ui/public/deploy.html",
|
|
@@ -6277,7 +6282,7 @@
|
|
|
6277
6282
|
{
|
|
6278
6283
|
"path": "modules/hall-ui/public/deploy.js",
|
|
6279
6284
|
"mode": "0000644",
|
|
6280
|
-
"sha256": "
|
|
6285
|
+
"sha256": "5c86121ff03d82c4052976b7add9b5248d20123753fd0ddb333709fec712aa29"
|
|
6281
6286
|
},
|
|
6282
6287
|
{
|
|
6283
6288
|
"path": "modules/hall-ui/public/deploy.states.json",
|
|
@@ -7002,7 +7007,7 @@
|
|
|
7002
7007
|
{
|
|
7003
7008
|
"path": "modules/hall-ui/public/settings-software-update.js",
|
|
7004
7009
|
"mode": "0000644",
|
|
7005
|
-
"sha256": "
|
|
7010
|
+
"sha256": "b075408f41ba786800ce0a21b6aae1ebe3e43119be1a208d5305784ba23803d4"
|
|
7006
7011
|
},
|
|
7007
7012
|
{
|
|
7008
7013
|
"path": "modules/hall-ui/public/settings-usage-reports.js",
|
|
@@ -7282,7 +7287,7 @@
|
|
|
7282
7287
|
{
|
|
7283
7288
|
"path": "modules/hall-ui/public/update-pill.js",
|
|
7284
7289
|
"mode": "0000644",
|
|
7285
|
-
"sha256": "
|
|
7290
|
+
"sha256": "62c03b8e1ac7b5597888c89395a5a6c763978db7a31ea585d00c0e1e04d1bfcb"
|
|
7286
7291
|
},
|
|
7287
7292
|
{
|
|
7288
7293
|
"path": "modules/hall-ui/public/vote-control.js",
|
|
@@ -11892,12 +11897,12 @@
|
|
|
11892
11897
|
{
|
|
11893
11898
|
"path": "package-lock.json",
|
|
11894
11899
|
"mode": "0000644",
|
|
11895
|
-
"sha256": "
|
|
11900
|
+
"sha256": "ff15a28e3b58b826fdf033ea0320275c687447782431dfe1e0932d36731af282"
|
|
11896
11901
|
},
|
|
11897
11902
|
{
|
|
11898
11903
|
"path": "package.json",
|
|
11899
11904
|
"mode": "0000644",
|
|
11900
|
-
"sha256": "
|
|
11905
|
+
"sha256": "8e6ce0901458e4035f4387b5bccff0893029342324492322e44f00a5be1689db"
|
|
11901
11906
|
},
|
|
11902
11907
|
{
|
|
11903
11908
|
"path": "public-docs/index.html",
|
|
@@ -11917,7 +11922,7 @@
|
|
|
11917
11922
|
{
|
|
11918
11923
|
"path": "release-notes.json",
|
|
11919
11924
|
"mode": "0000644",
|
|
11920
|
-
"sha256": "
|
|
11925
|
+
"sha256": "6fc3843a52303a6b7759157432db6166ef692a9d5fba2b51cb2d078788caa3f1"
|
|
11921
11926
|
},
|
|
11922
11927
|
{
|
|
11923
11928
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -12952,7 +12957,7 @@
|
|
|
12952
12957
|
{
|
|
12953
12958
|
"path": "scripts/bongos/provision-core-upgrade.js",
|
|
12954
12959
|
"mode": "0000644",
|
|
12955
|
-
"sha256": "
|
|
12960
|
+
"sha256": "0b20f0ffe3c099475edda3db0ef2fb25cc8f1ec8b213428942c393e0b5c9d565"
|
|
12956
12961
|
},
|
|
12957
12962
|
{
|
|
12958
12963
|
"path": "scripts/bongos/provision-disconnect.js",
|
|
@@ -13012,7 +13017,7 @@
|
|
|
13012
13017
|
{
|
|
13013
13018
|
"path": "scripts/bongos/provision-units.js",
|
|
13014
13019
|
"mode": "0000644",
|
|
13015
|
-
"sha256": "
|
|
13020
|
+
"sha256": "19d736382407853ab57ca4bcedc74272d47ad8b5c0a4aed4c1b0b23a84533846"
|
|
13016
13021
|
},
|
|
13017
13022
|
{
|
|
13018
13023
|
"path": "scripts/bongos/provision.js",
|
|
@@ -15257,7 +15262,7 @@
|
|
|
15257
15262
|
{
|
|
15258
15263
|
"path": "scripts/hall-preview/server.js",
|
|
15259
15264
|
"mode": "0000644",
|
|
15260
|
-
"sha256": "
|
|
15265
|
+
"sha256": "b97ba8be895dbc109eb091d59d56531711c1a379417768c521bca96f8e2f2f8a"
|
|
15261
15266
|
},
|
|
15262
15267
|
{
|
|
15263
15268
|
"path": "scripts/hall-preview/task-visual.js",
|
|
@@ -15687,12 +15692,12 @@
|
|
|
15687
15692
|
{
|
|
15688
15693
|
"path": "src/bongos/routes/core-update.js",
|
|
15689
15694
|
"mode": "0000644",
|
|
15690
|
-
"sha256": "
|
|
15695
|
+
"sha256": "fba9ac0bd6950ee87ef7cd1005f1e852f9346e6fa240e5e6e1e086781f226254"
|
|
15691
15696
|
},
|
|
15692
15697
|
{
|
|
15693
15698
|
"path": "src/bongos/routes/feedback.js",
|
|
15694
15699
|
"mode": "0000644",
|
|
15695
|
-
"sha256": "
|
|
15700
|
+
"sha256": "bf2fdd18f238a93cde23838da6f9bbed89f6d4aad13902bc6d86b18efb2099c3"
|
|
15696
15701
|
},
|
|
15697
15702
|
{
|
|
15698
15703
|
"path": "src/bongos/routes/github.js",
|
|
@@ -15824,11 +15829,6 @@
|
|
|
15824
15829
|
"mode": "0000644",
|
|
15825
15830
|
"sha256": "8aec44e5e47e94e4539475a109e999913dd4f3e9a0276ba0ff3b04bfd1c79b0e"
|
|
15826
15831
|
},
|
|
15827
|
-
{
|
|
15828
|
-
"path": "src/bongos/upgrade-request.js",
|
|
15829
|
-
"mode": "0000644",
|
|
15830
|
-
"sha256": "afa7ce2a38cc86bcf934902f65913fd03af58942da2d0777569fe71319900e63"
|
|
15831
|
-
},
|
|
15832
15832
|
{
|
|
15833
15833
|
"path": "src/brand-mark.js",
|
|
15834
15834
|
"mode": "0000644",
|
|
@@ -15872,7 +15872,7 @@
|
|
|
15872
15872
|
{
|
|
15873
15873
|
"path": "src/module-api.js",
|
|
15874
15874
|
"mode": "0000644",
|
|
15875
|
-
"sha256": "
|
|
15875
|
+
"sha256": "fda44df6daf88d610dcbfb9d9c9f98e4da9d00cc09759adebfe7e598daa845b4"
|
|
15876
15876
|
},
|
|
15877
15877
|
{
|
|
15878
15878
|
"path": "src/module-loader/catalog.js",
|
|
@@ -17387,7 +17387,7 @@
|
|
|
17387
17387
|
{
|
|
17388
17388
|
"path": "tests/deploy_handoff.mjs",
|
|
17389
17389
|
"mode": "0000644",
|
|
17390
|
-
"sha256": "
|
|
17390
|
+
"sha256": "248f615467d2162f89ec77a0dd30f6def8c91dc5d1487fb00a182878976ef647"
|
|
17391
17391
|
},
|
|
17392
17392
|
{
|
|
17393
17393
|
"path": "tests/deploy_instance.mjs",
|
|
@@ -17397,7 +17397,7 @@
|
|
|
17397
17397
|
{
|
|
17398
17398
|
"path": "tests/deploy_page_projects.mjs",
|
|
17399
17399
|
"mode": "0000644",
|
|
17400
|
-
"sha256": "
|
|
17400
|
+
"sha256": "7e0885c8fcf9d69bbfda03433323be29fccc000e78299ba55c413ae1444943c8"
|
|
17401
17401
|
},
|
|
17402
17402
|
{
|
|
17403
17403
|
"path": "tests/design_counts_ratchet.mjs",
|
|
@@ -20997,7 +20997,7 @@
|
|
|
20997
20997
|
{
|
|
20998
20998
|
"path": "tests/provision_settings_apply.mjs",
|
|
20999
20999
|
"mode": "0000644",
|
|
21000
|
-
"sha256": "
|
|
21000
|
+
"sha256": "1651459df066829006f209a34ded9e11181fe7f1ebf75bb68817e403ae1dcb08"
|
|
21001
21001
|
},
|
|
21002
21002
|
{
|
|
21003
21003
|
"path": "tests/provision_teardown_address.mjs",
|
|
@@ -22112,7 +22112,7 @@
|
|
|
22112
22112
|
{
|
|
22113
22113
|
"path": "tests/software_update.mjs",
|
|
22114
22114
|
"mode": "0000644",
|
|
22115
|
-
"sha256": "
|
|
22115
|
+
"sha256": "fa4eca1e1a69a50ad2a3ed4eb06342e50b39757561ae306dd5cd88dd08b812ba"
|
|
22116
22116
|
},
|
|
22117
22117
|
{
|
|
22118
22118
|
"path": "tests/sound_player.mjs",
|
|
@@ -22582,7 +22582,7 @@
|
|
|
22582
22582
|
{
|
|
22583
22583
|
"path": "tests/update_pill.mjs",
|
|
22584
22584
|
"mode": "0000644",
|
|
22585
|
-
"sha256": "
|
|
22585
|
+
"sha256": "6870e95062d1691e733f393a66c7392e5d7599503f498543eda6a5a9ea5a27f4"
|
|
22586
22586
|
},
|
|
22587
22587
|
{
|
|
22588
22588
|
"path": "tests/update_subscription_engine.mjs",
|
|
@@ -22634,11 +22634,6 @@
|
|
|
22634
22634
|
"mode": "0000644",
|
|
22635
22635
|
"sha256": "9268c4dbadc4b6fda3ac9505cf699e1fec7b9de6093cfa31c96d0b3a652b79bb"
|
|
22636
22636
|
},
|
|
22637
|
-
{
|
|
22638
|
-
"path": "tests/upgrade_request.mjs",
|
|
22639
|
-
"mode": "0000644",
|
|
22640
|
-
"sha256": "5ff095b7fba7e04ee1fee01ee3096a627b80f2100d0fcae94314efcf3928c4cb"
|
|
22641
|
-
},
|
|
22642
22637
|
{
|
|
22643
22638
|
"path": "tests/upkeep_home.mjs",
|
|
22644
22639
|
"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
|
+
- 685 operations across 85 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -1395,8 +1395,6 @@ function createClient(opts = {}) {
|
|
|
1395
1395
|
"softwareUpdate": {
|
|
1396
1396
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1397
1397
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1398
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1399
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1400
1398
|
},
|
|
1401
1399
|
"specialities": {
|
|
1402
1400
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -1394,8 +1394,6 @@ function createClient(opts = {}) {
|
|
|
1394
1394
|
"softwareUpdate": {
|
|
1395
1395
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1396
1396
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1397
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1398
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1399
1397
|
},
|
|
1400
1398
|
"specialities": {
|
|
1401
1399
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -194,7 +194,7 @@ export interface GetSessionsIdResponse { session: unknown }
|
|
|
194
194
|
export interface GetSessionsIdTranscriptResponse { transcript: unknown }
|
|
195
195
|
export interface GetSessionsMineResponse { sessions: unknown; count: unknown }
|
|
196
196
|
export interface GetSessionsSearchResponse { sessions: unknown; count: unknown; total: unknown; totals: unknown; limit: unknown; offset: unknown; session_types: unknown }
|
|
197
|
-
export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown;
|
|
197
|
+
export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown; held: unknown; history: unknown }
|
|
198
198
|
export interface GetSpecialitiesIdDocumentsResponse { documents: unknown }
|
|
199
199
|
export interface GetSpecialitiesIdResponse { speciality: unknown }
|
|
200
200
|
export interface GetSpecialitiesIdSkillsResponse { speciality: unknown; adopted: boolean; enabled: unknown; skills: unknown }
|
|
@@ -2051,8 +2051,6 @@ export interface BongosClient {
|
|
|
2051
2051
|
"softwareUpdate": {
|
|
2052
2052
|
/** GET /software-update — rank: any-builder */
|
|
2053
2053
|
getSoftwareUpdate(args?: RequestArgs): Promise<GetSoftwareUpdateResponse>;
|
|
2054
|
-
/** POST /software-update/request — rank: archon */
|
|
2055
|
-
postSoftwareUpdateRequest(args?: RequestArgs): Promise<ApiResponse>;
|
|
2056
2054
|
};
|
|
2057
2055
|
"specialities": {
|
|
2058
2056
|
/** GET /specialities — rank: any-builder */
|
|
@@ -1391,8 +1391,6 @@ export function createClient(opts = {}) {
|
|
|
1391
1391
|
"softwareUpdate": {
|
|
1392
1392
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1393
1393
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1394
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1395
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1396
1394
|
},
|
|
1397
1395
|
"specialities": {
|
|
1398
1396
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ADR 0398 — Every hosted project takes its own update, and nobody asks for one
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-11-07
|
|
5
|
+
- **Task:** [task 1005128](https://cloudbongos.com/builders#/task/1005128) (goal 1000090 — BONGOS-V2)
|
|
6
|
+
- **Deciders:** the owner, Lars. On 2026-11-07, looking at toast's Settings → Software update, which said "Ask for this upgrade": "There has to be a better way to deploy upgrades, asking the team for them is a bit brutal, if the update is generally available then they should be able to download it. Lets keep this the same for all accounts."
|
|
7
|
+
- **Amends:** [ADR 0340](0340-every-hall-takes-its-update-from-settings-and-deploy-is-the-platform-halls-page.md) D2 (how a hosted hall finds its door) and [ADR 0339](0339-a-projects-owner-upgrades-it-and-a-hosted-project-hands-off-to-the-hub-door.md) D3 (the hub's `/deploy` scope). Retires task 1004595's "Ask for this upgrade". Who may move a pin, and how the move runs, are unchanged.
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
A hosted project's owner already upgrades it themselves: the hub's door admits the owner (ADR 0339), and since task 1005041 the Update button takes the update in place. The button needs the hall to know where its door is. It learned that from the sign-in federation block or, since task 1004608, from `<PREFIX>_HUB_UPGRADE_URL` in its `web.env`.
|
|
12
|
+
|
|
13
|
+
Only a settings-apply ever wrote that line, and a settings-apply runs only when a setting changes. A project provisioned before task 1004608 (toast) never got it. Its hall fell to the `cli` answer and, because its name sat under the hub's domain, offered "Ask for this upgrade": a request filed in the maintainers' backlog for a move the owner was allowed to make.
|
|
14
|
+
|
|
15
|
+
## Decision
|
|
16
|
+
|
|
17
|
+
### D1 — No project offers to ask
|
|
18
|
+
|
|
19
|
+
The panel, the Update pill, `POST /software-update/request` and `src/bongos/upgrade-request.js` are gone. A viewer who may update sees the Update button (`local` or `hub`) or, on a server they run themselves, the `bongos upgrade` instruction (`cli`). Nothing else.
|
|
20
|
+
|
|
21
|
+
### D2 — A hosted hall always names its hub door
|
|
22
|
+
|
|
23
|
+
`updateDoor` gains a last fallback. When the hall has neither the federation block nor the line, and it answers on a name under its hub's own domain (the hub's own rule for "a project we host", which the ask used), its door is `<hub>/deploy?host=<that name>`. The hub is the feedback door's (`feedbackHub`), and the name comes from the project's own branding pack, never from a request header.
|
|
24
|
+
|
|
25
|
+
A self-hosted instance on its own domain stays `cli`: nobody at the hub can reach its server.
|
|
26
|
+
|
|
27
|
+
### D3 — The hub's door takes `?host=` as it takes `?project=`
|
|
28
|
+
|
|
29
|
+
`/deploy` and the hand-off window resolve `?host=` against the visitor's own projects by registered address (`domain`), exactly as they resolve a slug. It is a lookup, never a listing. The hand-off still accepts a message only from the project's registered origin, and the move route still checks ownership per request.
|
|
30
|
+
|
|
31
|
+
### D4 — Every core move writes the line
|
|
32
|
+
|
|
33
|
+
Before it runs, the core-upgrade leg writes `<PREFIX>_HUB_UPGRADE_URL` into the project's `web.env` when it is missing or wrong. The move restarts the service, so the new core reads it. This is best-effort: an unreadable file or a refused write is logged, and the move goes on. A project on its own domain gets the Update button from its next move onward, including automatic ones.
|
|
34
|
+
|
|
35
|
+
## Rejected
|
|
36
|
+
|
|
37
|
+
- **Keeping the ask as a fallback behind the button.** The owner asked for it to be the same for every account, and the ask was only ever reached because the address was missing. D2 and D4 remove that cause.
|
|
38
|
+
- **A sweep that re-applies settings to every tenant.** It restarts every hosted project once for a single env line. Riding the move restarts nothing extra.
|
|
39
|
+
- **Guessing the slug from the host.** A project on its own domain has no slug in its name, and a wrong guess opens another project's page. `?host=` matches the address the hub registered.
|
|
40
|
+
|
|
41
|
+
## Consequences
|
|
42
|
+
|
|
43
|
+
- **A hosted project gets this once it runs a core carrying it.** Toast runs 1.21.115, which is older, so its first move is made from the hub (`https://cloudbongos.com/deploy?project=toast`). After that its Settings carries the button.
|
|
44
|
+
- **The request history task 1004595 stored** (`software_update.request` in project settings) is no longer read. It is left in place and harms nothing.
|
|
45
|
+
- **Proof:** `tests/software_update.mjs` (the `?host=` door and every case that stays `cli`, and the source checks that the ask is gone), `tests/update_pill.mjs` (no ask plan; a `?host=` door draws the button), `tests/deploy_handoff.mjs` (`?host=` resolves by address, and an unknown or bare-slug host moves nothing), and `tests/provision_settings_apply.mjs` (the backfill patch, and a failed read or write never stopping the move).
|
package/docs/adr/README.md
CHANGED
|
@@ -513,3 +513,4 @@ These 20 numbers are each shared by exactly two files. They are **accepted histo
|
|
|
513
513
|
| 0394 | [**Market Watch searches the web through the Messages API on the project's own key, and runs from its own clock-anchored poller** ([task 1004934](https://cloudbongos.com/builders#/task/1004934) · goal 1000137). Not the grade port: the server image has no `claude` CLI, and a measured tool-enabled run costs the same ($0.106 per item). One Sonnet 5 call per item with bounded web search and fetch, on an owner-set key in Settings (the project pays the provider; Bongos holds no money); an hourly, ledger-due, resumable poller on the daily-checks pattern, not the abandoned cron-router; capped per item before it starts and fail closed; about $4–5 per weekly 40-item run.](0394-market-watch-searches-through-the-messages-api-on-the-projects-key-and-runs-from-its-own-poller.md) | modules / economy |
|
|
514
514
|
| 0395 | [**A task says what it needs, and each person's lists show only what they can do** ([task 1004950](https://cloudbongos.com/builders#/task/1004950)). `tasks.needs` ⊆ {owner, server} is its own set, not an `automation_tag` value (that one says whether work runs unattended). Capabilities are read fresh like rank: `owner` from the owner seat (founding builder fallback, the UAT reading), `server` from `builders.capability_grants`, set only by the owner. The recommend lists (claimable feed, optimizer, autonomous runner) show only tasks whose needs the viewer holds; the runner never holds owner. The claim refuses only `server` (`NEEDS_SERVER_ACCESS`, all three surfaces). Visibility elsewhere is unchanged; the board filters by need.](0395-a-task-says-what-it-needs-and-lists-show-only-what-you-can-do.md) | lifecycle / work tracking |
|
|
515
515
|
| 0397 | [**The payment rail is Stripe Connect, one connected account per project; J.P. Morgan Payments is the fallback** ([task 1004906](https://cloudbongos.com/builders#/task/1004906), goal 1000092). The owner chose Stripe on 2026-10-30. Each project holds its money in its own connected account and each payee has one, so Cloud Bongos holds nothing (ADR 0385). Every flow in the ADR 0385 map is named against a Stripe primitive; a processor adapter module is the only place that names Stripe, so the fallback replaces one adapter. The processor is the party that monitors the money it holds. Test mode first; no live key is created, and counsel items 1 to 4 still gate real money.](0397-the-payment-rail-is-stripe-connect-with-one-connected-account-per-project.md) | economy / payments |
|
|
516
|
+
| 0398 | [**Every hosted project takes its own update, and nobody asks for one** ([task 1005128](https://cloudbongos.com/builders#/task/1005128)). "Ask for this upgrade" is gone from every hall. A hosted hall with no upgrade address still names its hub door, by its own web address (`/deploy?host=`), which the hub resolves among the visitor's own projects; every core move writes the missing address into the project's settings. A self-hosted instance keeps the `bongos upgrade` instruction.](0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md) | upgrades / hosting |
|
package/docs/api/openapi.json
CHANGED
|
@@ -26626,40 +26626,6 @@
|
|
|
26626
26626
|
]
|
|
26627
26627
|
}
|
|
26628
26628
|
},
|
|
26629
|
-
"/software-update/request": {
|
|
26630
|
-
"post": {
|
|
26631
|
-
"operationId": "post_software_update_request",
|
|
26632
|
-
"tags": [
|
|
26633
|
-
"software-update"
|
|
26634
|
-
],
|
|
26635
|
-
"summary": "POST /software-update/request",
|
|
26636
|
-
"description": "POST /software-update/request — \"Ask for this upgrade\" (task 1004595). On a project the hub's operator runs, sends one request for the version this project is offered to the operator, through the direct feedback door, and remembers it so the page can say it is pending. The version is the server's own reading, never the caller's. Idempotent per version; a different version waits out a 24h cooldown (429). rank: core.pin.move — the same atom as the Update button the panel draws.\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `core.pin.move` (all required).",
|
|
26637
|
-
"x-rank": "archon",
|
|
26638
|
-
"x-source": "src/bongos/routes/core-update.js",
|
|
26639
|
-
"x-permissions": [
|
|
26640
|
-
"core.pin.move"
|
|
26641
|
-
],
|
|
26642
|
-
"responses": {
|
|
26643
|
-
"200": {
|
|
26644
|
-
"description": "Success."
|
|
26645
|
-
},
|
|
26646
|
-
"400": {
|
|
26647
|
-
"$ref": "#/components/responses/BadRequest"
|
|
26648
|
-
},
|
|
26649
|
-
"401": {
|
|
26650
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
26651
|
-
},
|
|
26652
|
-
"403": {
|
|
26653
|
-
"$ref": "#/components/responses/Forbidden"
|
|
26654
|
-
}
|
|
26655
|
-
},
|
|
26656
|
-
"security": [
|
|
26657
|
-
{
|
|
26658
|
-
"builderSession": []
|
|
26659
|
-
}
|
|
26660
|
-
]
|
|
26661
|
-
}
|
|
26662
|
-
},
|
|
26663
26629
|
"/specialities": {
|
|
26664
26630
|
"get": {
|
|
26665
26631
|
"operationId": "get_specialities",
|
|
@@ -34386,7 +34352,6 @@
|
|
|
34386
34352
|
"update": {},
|
|
34387
34353
|
"door": {},
|
|
34388
34354
|
"can_update": {},
|
|
34389
|
-
"ask": {},
|
|
34390
34355
|
"held": {},
|
|
34391
34356
|
"history": {}
|
|
34392
34357
|
},
|
|
@@ -34395,7 +34360,6 @@
|
|
|
34395
34360
|
"update",
|
|
34396
34361
|
"door",
|
|
34397
34362
|
"can_update",
|
|
34398
|
-
"ask",
|
|
34399
34363
|
"held",
|
|
34400
34364
|
"history"
|
|
34401
34365
|
]
|
|
@@ -43056,7 +43020,7 @@
|
|
|
43056
43020
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
43057
43021
|
}
|
|
43058
43022
|
},
|
|
43059
|
-
"x-endpoint-count":
|
|
43023
|
+
"x-endpoint-count": 685,
|
|
43060
43024
|
"x-schema-count": 723,
|
|
43061
43025
|
"x-undocumented-bodies": 12,
|
|
43062
43026
|
"x-response-schemas": 459,
|
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. 685 endpoints across 117 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`.
|
|
@@ -965,12 +965,11 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
965
965
|
| GET | `/api/bongos/sky` | `any-builder` | — | GET /sky, the whole project sky (task 1004230, ADR 0331). |
|
|
966
966
|
| GET | `/api/bongos/sky/mine` | `any-builder` | — | GET /sky/mine, every thought the SIGNED-IN builder filed with its state, size and descent, capped at 1000 (task 1004230). |
|
|
967
967
|
|
|
968
|
-
## `software-update` (
|
|
968
|
+
## `software-update` (1)
|
|
969
969
|
|
|
970
970
|
| Method | Path | Rank | Body | Description |
|
|
971
971
|
|---|---|---|---|---|
|
|
972
972
|
| GET | `/api/bongos/software-update` | `any-builder` | — | GET /software-update — Settings → Software update (task 1004296): this project's core, the newest release its channel allows, what the ve… |
|
|
973
|
-
| POST | `/api/bongos/software-update/request` | `archon` | — | POST /software-update/request — "Ask for this upgrade" (task 1004595). |
|
|
974
973
|
|
|
975
974
|
## `specialities` (15)
|
|
976
975
|
|