@bongos/core 1.23.4 → 1.23.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.bongos-core.json +67 -42
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +4 -0
  4. package/clients/bongos-client/index.cjs +4 -0
  5. package/clients/bongos-client/index.d.ts +9 -1
  6. package/clients/bongos-client/index.mjs +4 -0
  7. package/docs/adr/0356-a-recruit-invite-expires-30-days-after-it-is-sent-read-time.md +2 -1
  8. package/docs/api/openapi.json +204 -7
  9. package/docs/api-reference.md +4 -2
  10. package/docs/copy-inventory.md +26 -24
  11. package/docs/copy-registry.json +43 -25
  12. package/docs/module-api-changelog.md +4 -0
  13. package/docs/modules-contract.md +2 -0
  14. package/docs/page-readings.json +8 -8
  15. package/migrations/core_281_module_version_withdraw_note.sql +25 -0
  16. package/modules/government/catalog.js +1 -1
  17. package/modules/hall-ui/public/modules.js +10 -1
  18. package/modules/onboarding/routes/access-requests.js +10 -9
  19. package/package-lock.json +2 -2
  20. package/package.json +1 -1
  21. package/release-notes.json +16 -0
  22. package/scripts/bongos/login.js +13 -14
  23. package/scripts/bongos/module-store-cli.js +182 -0
  24. package/scripts/bongos/module.js +60 -134
  25. package/scripts/gds/module-store-cli.js +6 -0
  26. package/src/bongos/auth-admission.js +3 -3
  27. package/src/bongos/middleware/rate-limit.js +1 -1
  28. package/src/bongos/module-listing.js +12 -2
  29. package/src/bongos/module-store.js +90 -1
  30. package/src/bongos/route-rank-check.js +6 -0
  31. package/src/bongos/routes/auth.js +7 -11
  32. package/src/bongos/routes/modules.js +76 -3
  33. package/src/module-api.js +1 -1
  34. package/tests/account_existence_rate_limit.mjs +7 -3
  35. package/tests/application_lifecycle.mjs +4 -3
  36. package/tests/bongos_login.mjs +15 -4
  37. package/tests/hall_catalog_world.mjs +1 -1
  38. package/tests/invite_expiry_db.mjs +1 -1
  39. package/tests/module_store_cli.mjs +1 -1
  40. package/tests/module_store_price.mjs +207 -0
  41. package/tests/module_store_withdraw.mjs +201 -0
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.23.4",
6
- "core_contract": "1.23.4",
7
- "source_commit": "b78c52677b921b7b2a6f25834c77b7d516810aa9",
5
+ "core_version": "1.23.6",
6
+ "core_contract": "1.23.6",
7
+ "source_commit": "05ce1a9370fbfc0af9f835a707c5c9ee9988be52",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-10-26T21:43:52.539Z",
9
+ "built_at": "2026-10-26T23:35:18.876Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 616,
13
13
  "agent_docs_stubbed": 29,
14
- "functional_verbatim": 3552,
14
+ "functional_verbatim": 3557,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 4198,
20
- "tree_sha256": "e5ed2ca130fbbb98e21c941d9c51e72760f74f72e2d48d6d91a4e789bdd6ce10",
19
+ "file_count": 4203,
20
+ "tree_sha256": "4f3b55cbbaaa3543f5aff4f5f6e26626e2fb433745b649921fcea34837f302f2",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -317,12 +317,12 @@
317
317
  {
318
318
  "path": "clients/bongos-client/README.md",
319
319
  "mode": "0000644",
320
- "sha256": "8537c645efe282dc1ee9a620b555ac6bbd8919eaf8747c1be84df7c99007a48a"
320
+ "sha256": "627dcf2fadbf1ab61e7c6efcf6d343b8b6bdb99864dfb39e5941b3ebcb1cb03a"
321
321
  },
322
322
  {
323
323
  "path": "clients/bongos-client/bongos-client.global.js",
324
324
  "mode": "0000644",
325
- "sha256": "8554475255239e0e2a5c84f1287c09e93d54c4dab513248c13f243f5d21fda1d"
325
+ "sha256": "0741b0ffb53b7b7622370f516588ee2dc0977b242e86caf403c63d26b8d122d7"
326
326
  },
327
327
  {
328
328
  "path": "clients/bongos-client/examples/hello-world.mjs",
@@ -332,17 +332,17 @@
332
332
  {
333
333
  "path": "clients/bongos-client/index.cjs",
334
334
  "mode": "0000644",
335
- "sha256": "34b88b9a4038b95a62f4528a83aa5bfe25f504ab545417c8edeea2a2afbfef69"
335
+ "sha256": "6db6d05c604d48c3afa2915a30156dc48763795f4498467a75d026e49f1f407e"
336
336
  },
337
337
  {
338
338
  "path": "clients/bongos-client/index.d.ts",
339
339
  "mode": "0000644",
340
- "sha256": "a30cb8c16c64fd7b3eba677268411c31b0c98df4a207d5a60745bca5235d8c15"
340
+ "sha256": "433a4ae717283cb60453bb10c34b1626fc9f0cc696a81ab7b6a884b2708a7e15"
341
341
  },
342
342
  {
343
343
  "path": "clients/bongos-client/index.mjs",
344
344
  "mode": "0000644",
345
- "sha256": "29badc2ef299498e66224b7ee031be479d10cfcacd8a752c3e06eb05f1d1e64e"
345
+ "sha256": "3cb6d90344a0642f3be6ceb3385be63e71c8f7e0174bf3dbfc1d2196fac101ac"
346
346
  },
347
347
  {
348
348
  "path": "clients/bongos-client/package.json",
@@ -2242,7 +2242,7 @@
2242
2242
  {
2243
2243
  "path": "docs/adr/0356-a-recruit-invite-expires-30-days-after-it-is-sent-read-time.md",
2244
2244
  "mode": "0000644",
2245
- "sha256": "ccbad5d4326b069381db47ea3fc165f9a4020485e3d6ce346393a2f6711ce1f0"
2245
+ "sha256": "c9bffb1cc48a4f34a20571be61916a5d13f6f1d8bdb50c3c5071eb6ced68efba"
2246
2246
  },
2247
2247
  {
2248
2248
  "path": "docs/adr/0357-the-update-rule-set-on-deploy-is-the-one-the-sweep-follows.md",
@@ -2392,12 +2392,12 @@
2392
2392
  {
2393
2393
  "path": "docs/api-reference.md",
2394
2394
  "mode": "0000644",
2395
- "sha256": "fbad9b37dd44c344ef532638550d666cf94de9813c0df8d4f2e004e0b7f62582"
2395
+ "sha256": "4d024afe3537d84fede274feebe91e6d4c8cb668ae5bfbc6788dfdd9bede3f1f"
2396
2396
  },
2397
2397
  {
2398
2398
  "path": "docs/api/openapi.json",
2399
2399
  "mode": "0000644",
2400
- "sha256": "10545c86dc834e1c0654ff6da45caecded2e547a00818b221e16c9e60c16b8b5"
2400
+ "sha256": "c94977d1c916fc4e57bd0647463a431f2d5f7ef595803442475ce108c79841c3"
2401
2401
  },
2402
2402
  {
2403
2403
  "path": "docs/architecture.md",
@@ -2422,12 +2422,12 @@
2422
2422
  {
2423
2423
  "path": "docs/copy-inventory.md",
2424
2424
  "mode": "0000644",
2425
- "sha256": "fe7ddc06964ea4f6bf4515778376b3e02f19fff1047d2b3869cb25e8e03667f3"
2425
+ "sha256": "698489ed0ecdf125ef705bbcb953830453c22ae8632edb437d8f3ddd685d3561"
2426
2426
  },
2427
2427
  {
2428
2428
  "path": "docs/copy-registry.json",
2429
2429
  "mode": "0000644",
2430
- "sha256": "3bee89d2827b7e92f805aad5d6d296319c82700a4470024122797debb765c99a"
2430
+ "sha256": "aea042d0a416623e897295c7b959d0eeed8c4d2759d859e35e4715d5c18eb936"
2431
2431
  },
2432
2432
  {
2433
2433
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2937,12 +2937,12 @@
2937
2937
  {
2938
2938
  "path": "docs/module-api-changelog.md",
2939
2939
  "mode": "0000644",
2940
- "sha256": "3907ee1e7036c99afa1790df344933c6652b4d9ffe972715551ad9bdb2bb12d9"
2940
+ "sha256": "8d3fd9e42419ebfcd1642f42725dd24c60efc03a8aafc88c9f022ab90c0152d6"
2941
2941
  },
2942
2942
  {
2943
2943
  "path": "docs/modules-contract.md",
2944
2944
  "mode": "0000644",
2945
- "sha256": "ed7ab0d4799a935bb296457ebdba667c38dcfea5ebaec72e61968cd3ad91a6eb"
2945
+ "sha256": "a54fc56cc901d2580c71138906b4b27eb16529438dbfc3b293a1242cab783477"
2946
2946
  },
2947
2947
  {
2948
2948
  "path": "docs/onboarding/diagrams/01-task-lifecycle.mmd",
@@ -3027,7 +3027,7 @@
3027
3027
  {
3028
3028
  "path": "docs/page-readings.json",
3029
3029
  "mode": "0000644",
3030
- "sha256": "a7675f3e800076b5122d404884bb217f95120082d3720748b94422d8ece8d6d7"
3030
+ "sha256": "3fa8c79139ee97fb0bc2b7ab3ce5d194984797f294ba9cedb78e322e95d6fa8d"
3031
3031
  },
3032
3032
  {
3033
3033
  "path": "docs/project-context.template.md",
@@ -4194,6 +4194,11 @@
4194
4194
  "mode": "0000644",
4195
4195
  "sha256": "b795f6a5596ebd12a0fbcf8d98f40b24e12fb819ec5abe5d42ca592147db32bc"
4196
4196
  },
4197
+ {
4198
+ "path": "migrations/core_281_module_version_withdraw_note.sql",
4199
+ "mode": "0000644",
4200
+ "sha256": "ff4a3f2e7ba50bc891cfcfa146325f28731086ce4aeab4b1011dc0412f002c68"
4201
+ },
4197
4202
  {
4198
4203
  "path": "modules/agents/CLAUDE.md",
4199
4204
  "mode": "0000644",
@@ -5092,7 +5097,7 @@
5092
5097
  {
5093
5098
  "path": "modules/government/catalog.js",
5094
5099
  "mode": "0000644",
5095
- "sha256": "9a3d3fee34144d44b5af811fc8e81e7bec74559eae538cf1e6015a2d54321df3"
5100
+ "sha256": "fb54482dcb0771a3eb378fa27afb250c9f8f1f659862af05615c90d95b50d6d7"
5096
5101
  },
5097
5102
  {
5098
5103
  "path": "modules/government/charter.js",
@@ -6267,7 +6272,7 @@
6267
6272
  {
6268
6273
  "path": "modules/hall-ui/public/modules.js",
6269
6274
  "mode": "0000644",
6270
- "sha256": "6ca8722bbf65ad5aa275f8d26b6df5bff5ff25a5916df54139a365bf5b596d14"
6275
+ "sha256": "33841de9baea493a540f1b8361d8cb08c71ce599cb8da963930fc3d1d7ba5c13"
6271
6276
  },
6272
6277
  {
6273
6278
  "path": "modules/hall-ui/public/modules.states.json",
@@ -8207,7 +8212,7 @@
8207
8212
  {
8208
8213
  "path": "modules/onboarding/routes/access-requests.js",
8209
8214
  "mode": "0000644",
8210
- "sha256": "de63d8a97156b0079d91c945988baab73f82b50a0a2ed06f792749d21f6afc6d"
8215
+ "sha256": "c472b5060dfd0143275ff6769daac986a6cd46c7d722186653f9adaf641a83be"
8211
8216
  },
8212
8217
  {
8213
8218
  "path": "modules/onboarding/routes/onboarding.js",
@@ -10832,12 +10837,12 @@
10832
10837
  {
10833
10838
  "path": "package-lock.json",
10834
10839
  "mode": "0000644",
10835
- "sha256": "793a3d85e023eafb3f0eb63e7a1c1b10f07a66e331adfb63d06a05921ad2f451"
10840
+ "sha256": "d399eed08dca874f7e3a4f6daecaeebbff9d9d7d99896cfbc23c992786d0b9f5"
10836
10841
  },
10837
10842
  {
10838
10843
  "path": "package.json",
10839
10844
  "mode": "0000644",
10840
- "sha256": "db95c78d828b9fd2117b5a7b4e12d741fb21856022a6830b6cd286017a065f6f"
10845
+ "sha256": "91e4472ae55582eec26d9e0c1264e8fd5c4132441fb6bffdf10a3b90c1ddcdbb"
10841
10846
  },
10842
10847
  {
10843
10848
  "path": "public-docs/index.html",
@@ -10857,7 +10862,7 @@
10857
10862
  {
10858
10863
  "path": "release-notes.json",
10859
10864
  "mode": "0000644",
10860
- "sha256": "a491785c22b68e414bdf9668ca809f671a8927d06560aabfbc04ce3d56dfc131"
10865
+ "sha256": "20ffa719f32b7a90a464a880922c08e19de95ebee64d5703168ff7d2aa9db69c"
10861
10866
  },
10862
10867
  {
10863
10868
  "path": "scripts/bongos/CLAUDE.md",
@@ -11652,7 +11657,7 @@
11652
11657
  {
11653
11658
  "path": "scripts/bongos/login.js",
11654
11659
  "mode": "0000644",
11655
- "sha256": "2777903c4d5b5ad4549f87967d34c57b62a264f7990627735ca47d5a8e6b333d"
11660
+ "sha256": "0a13005b8a73dd31b46bdb6f7762f483654e85e060f37eb8e78d9a6088f7245c"
11656
11661
  },
11657
11662
  {
11658
11663
  "path": "scripts/bongos/main-audit.js",
@@ -11729,6 +11734,11 @@
11729
11734
  "mode": "0000644",
11730
11735
  "sha256": "0334f9d2e31559bbc661ae0be5404499719d76e670560fa5f4ba72d7c14d0ac7"
11731
11736
  },
11737
+ {
11738
+ "path": "scripts/bongos/module-store-cli.js",
11739
+ "mode": "0000644",
11740
+ "sha256": "9634332ab9995fbb906d856fbf575cad3ad83923e4e724e888af5fd25d82b047"
11741
+ },
11732
11742
  {
11733
11743
  "path": "scripts/bongos/module-test-runner.js",
11734
11744
  "mode": "0000644",
@@ -11747,7 +11757,7 @@
11747
11757
  {
11748
11758
  "path": "scripts/bongos/module.js",
11749
11759
  "mode": "0000644",
11750
- "sha256": "6fc19f18daa947837ee09d9d06010380144022ee6f637f3fd444f56cf558bfab"
11760
+ "sha256": "f771cd502f959a281f4aaf60b65b19c240c5a5f7828a030001f7f01fcc75b222"
11751
11761
  },
11752
11762
  {
11753
11763
  "path": "scripts/bongos/move-escalation.js",
@@ -13394,6 +13404,11 @@
13394
13404
  "mode": "0000644",
13395
13405
  "sha256": "053d6df274f015359f4eb52361aae55857f643672fc3746c941bfed348092b21"
13396
13406
  },
13407
+ {
13408
+ "path": "scripts/gds/module-store-cli.js",
13409
+ "mode": "0000644",
13410
+ "sha256": "f7060060ae2ad7f74d3ee43ae3ac7bffe45de976c2ccfbf3ca5e91aecb896b8f"
13411
+ },
13397
13412
  {
13398
13413
  "path": "scripts/gds/module-test-runner.js",
13399
13414
  "mode": "0000644",
@@ -14297,7 +14312,7 @@
14297
14312
  {
14298
14313
  "path": "src/bongos/auth-admission.js",
14299
14314
  "mode": "0000644",
14300
- "sha256": "e0e8a5b10571aa0248486e8ae6f556439e385938ca5cee9255a93df69f8ba549"
14315
+ "sha256": "1f60d40b8157a9dcc9fcff239123955553ddfe11bb671386f0a0ec4f8ae0ee75"
14301
14316
  },
14302
14317
  {
14303
14318
  "path": "src/bongos/auth-config.js",
@@ -14417,7 +14432,7 @@
14417
14432
  {
14418
14433
  "path": "src/bongos/middleware/rate-limit.js",
14419
14434
  "mode": "0000644",
14420
- "sha256": "8881220efc4b990a41fc2463dc663a5d2325a28284d2b654f5b3bc453178e3da"
14435
+ "sha256": "8191011bfa63fcfa1a77383fbab08abdfa4a4584ac641fdf382af5423b06b087"
14421
14436
  },
14422
14437
  {
14423
14438
  "path": "src/bongos/module-entitlements.js",
@@ -14427,7 +14442,7 @@
14427
14442
  {
14428
14443
  "path": "src/bongos/module-listing.js",
14429
14444
  "mode": "0000644",
14430
- "sha256": "3f7013b4e59f72fc89663461d6d5457e412624ae3d4c1df1d2a3b9a8d9168d02"
14445
+ "sha256": "ef63c8be3af54a23b36647b2402517fe2fca4c6c1b0ba5a75d07a85cd39abc92"
14431
14446
  },
14432
14447
  {
14433
14448
  "path": "src/bongos/module-overrides.js",
@@ -14452,7 +14467,7 @@
14452
14467
  {
14453
14468
  "path": "src/bongos/module-store.js",
14454
14469
  "mode": "0000644",
14455
- "sha256": "1f7fc7251a2b77c80da33b471fcb5ff180bbbd969407a0c636e9085b654dc525"
14470
+ "sha256": "75c7e86fc1c0c9d6cffaa63a4c6654fe5191dab919dd988dc04903ca84c84382"
14456
14471
  },
14457
14472
  {
14458
14473
  "path": "src/bongos/module-subcategories.js",
@@ -14537,7 +14552,7 @@
14537
14552
  {
14538
14553
  "path": "src/bongos/route-rank-check.js",
14539
14554
  "mode": "0000644",
14540
- "sha256": "249ff48a954c7e904d705e636766b92924203dae3a6c08f688cbc68d0734dcb4"
14555
+ "sha256": "456217f8086f0748d4bf64536cc304b0124dd4d94783b627cfc5d9ed25e3d8b4"
14541
14556
  },
14542
14557
  {
14543
14558
  "path": "src/bongos/routes.js",
@@ -14562,7 +14577,7 @@
14562
14577
  {
14563
14578
  "path": "src/bongos/routes/auth.js",
14564
14579
  "mode": "0000644",
14565
- "sha256": "dd63e8d821c0c9e0bb0cb2568f41b8df53d10c4fb3e691ef10d5ce798650b752"
14580
+ "sha256": "d5ad4455493abf3777e51b6d82a186b810275ab05f8959a7fc13213dcebe9c3a"
14566
14581
  },
14567
14582
  {
14568
14583
  "path": "src/bongos/routes/backup.js",
@@ -14622,7 +14637,7 @@
14622
14637
  {
14623
14638
  "path": "src/bongos/routes/modules.js",
14624
14639
  "mode": "0000644",
14625
- "sha256": "4a210c0d6fe7e5f29612c4b7616ed34c1805f69c7618062ebcc50d0586a320dc"
14640
+ "sha256": "e7e9c57d4b5c1513425c9349d477e5b1b07c5538cabc74f30d9f899c7962384e"
14626
14641
  },
14627
14642
  {
14628
14643
  "path": "src/bongos/routes/my-passkeys.js",
@@ -14712,7 +14727,7 @@
14712
14727
  {
14713
14728
  "path": "src/module-api.js",
14714
14729
  "mode": "0000644",
14715
- "sha256": "e9850d0157caab4215194a5e69e04420b0d9e3b97a8d1867f8f84e9087b88930"
14730
+ "sha256": "9c9c3ae365588e980585b171efb35ea63dcad8d21c8a6b8e3e5a9bf140d7dd34"
14716
14731
  },
14717
14732
  {
14718
14733
  "path": "src/module-loader/catalog.js",
@@ -14817,7 +14832,7 @@
14817
14832
  {
14818
14833
  "path": "tests/account_existence_rate_limit.mjs",
14819
14834
  "mode": "0000644",
14820
- "sha256": "41170e6fa3bc063770a39f4fe5b21e049ae91c8c4115b3b2152a7e464420fb6f"
14835
+ "sha256": "41b8175653a86b79a5dae1e0be041eb4a286720cb41cbcd069afe9bc78b172ac"
14821
14836
  },
14822
14837
  {
14823
14838
  "path": "tests/account_privacy_flags.mjs",
@@ -15032,7 +15047,7 @@
15032
15047
  {
15033
15048
  "path": "tests/application_lifecycle.mjs",
15034
15049
  "mode": "0000644",
15035
- "sha256": "239566c55a726433ed288dcdcb9728eaeb2d7803d8bbdd26b7bc77c68124334b"
15050
+ "sha256": "42a2fb6dae46ffc7b41ffca65be0014be65b46d73c5167b7299543f59387ee6a"
15036
15051
  },
15037
15052
  {
15038
15053
  "path": "tests/architect.mjs",
@@ -15397,7 +15412,7 @@
15397
15412
  {
15398
15413
  "path": "tests/bongos_login.mjs",
15399
15414
  "mode": "0000644",
15400
- "sha256": "4cbb034eea342befa92a3388f5e5c97abdee256e6c2b4681abd8c1f008ca2801"
15415
+ "sha256": "468694776fb15978ac7f716b7c7d434085a5da2331ffa28e274310195cf1e7a2"
15401
15416
  },
15402
15417
  {
15403
15418
  "path": "tests/branding.mjs",
@@ -17252,7 +17267,7 @@
17252
17267
  {
17253
17268
  "path": "tests/hall_catalog_world.mjs",
17254
17269
  "mode": "0000644",
17255
- "sha256": "843039f4e14492045c94c9ce803d22208d0e68d607330da6391e56d75d4c8186"
17270
+ "sha256": "201c7755757f250932472bec09cb36a1c036ac5762fe9f91db7554d8c4268df1"
17256
17271
  },
17257
17272
  {
17258
17273
  "path": "tests/hall_city.mjs",
@@ -17992,7 +18007,7 @@
17992
18007
  {
17993
18008
  "path": "tests/invite_expiry_db.mjs",
17994
18009
  "mode": "0000644",
17995
- "sha256": "8be6c683c443a6b0f6767fd68a93b22da73c011e009e5abae7872e8c61606054"
18010
+ "sha256": "711b2f2fdf012b9583edbac35f9bf8eac38425bfe794d8253871d2f2d3bfa034"
17996
18011
  },
17997
18012
  {
17998
18013
  "path": "tests/join_application_note.mjs",
@@ -18487,7 +18502,7 @@
18487
18502
  {
18488
18503
  "path": "tests/module_store_cli.mjs",
18489
18504
  "mode": "0000644",
18490
- "sha256": "cf4df707f62fa142f106822c44404603f8ec32213d61b6707818f5649c443275"
18505
+ "sha256": "7b57aafabc5d9c3fa568c88157e3049befde2abaa1d54c69ac69520d6cea6efd"
18491
18506
  },
18492
18507
  {
18493
18508
  "path": "tests/module_store_delist.mjs",
@@ -18509,6 +18524,11 @@
18509
18524
  "mode": "0000644",
18510
18525
  "sha256": "5f0cb9cb6e3faf90d342e1d9e1767699b677b8630d874f1c2af9cb7f713ef530"
18511
18526
  },
18527
+ {
18528
+ "path": "tests/module_store_price.mjs",
18529
+ "mode": "0000644",
18530
+ "sha256": "52fe692c1991fa33388b15ff5622f5207b5314fb05d0aa474543d888bda36e66"
18531
+ },
18512
18532
  {
18513
18533
  "path": "tests/module_store_publish.mjs",
18514
18534
  "mode": "0000644",
@@ -18534,6 +18554,11 @@
18534
18554
  "mode": "0000644",
18535
18555
  "sha256": "ad29d45c767e14f0dcef7ccd44107545fa3ab54182ad8b0cf7b51bf00243eac5"
18536
18556
  },
18557
+ {
18558
+ "path": "tests/module_store_withdraw.mjs",
18559
+ "mode": "0000644",
18560
+ "sha256": "a1fdcee205b8b8686d915d34ccd0a26debdb5673d957eade23e56bf7686ae638"
18561
+ },
18537
18562
  {
18538
18563
  "path": "tests/module_submissions.mjs",
18539
18564
  "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
- - 582 operations across 76 resource groups
8
+ - 584 operations across 76 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -1251,6 +1251,8 @@ function createClient(opts = {}) {
1251
1251
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1252
1252
  // GET /store/modules/{key}/listing — rank: any-builder — GET /store/modules/:key/listing
1253
1253
  getStoreModulesKeyListing: (args) => request("GET", "/store/modules/{key}/listing", { hasBody: false }, args),
1254
+ // POST /store/modules/{key}/price — rank: metic+archon — POST /store/modules/:key/price
1255
+ postStoreModulesKeyPrice: (args) => request("POST", "/store/modules/{key}/price", { hasBody: true }, args),
1254
1256
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1255
1257
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1256
1258
  // GET /store/modules/{key}/versions/{version}/channel — rank: any-builder — GET /store/modules/:key/versions/:version/channel
@@ -1267,6 +1269,8 @@ function createClient(opts = {}) {
1267
1269
  postStoreModulesKeyVersionsVersionRelease: (args) => request("POST", "/store/modules/{key}/versions/{version}/release", { hasBody: true }, args),
1268
1270
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1269
1271
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1272
+ // POST /store/modules/{key}/versions/{version}/withdraw — rank: metic+archon — POST /store/modules/:key/versions/:version/withdraw
1273
+ postStoreModulesKeyVersionsVersionWithdraw: (args) => request("POST", "/store/modules/{key}/versions/{version}/withdraw", { hasBody: true }, args),
1270
1274
  // GET /store/modules/latest — rank: any-builder — GET /store/modules/latest
1271
1275
  getStoreModulesLatest: (args) => request("GET", "/store/modules/latest", { hasBody: false }, args),
1272
1276
  // GET /store/subcategories — rank: any-builder — GET /store/subcategories
@@ -1250,6 +1250,8 @@ function createClient(opts = {}) {
1250
1250
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1251
1251
  // GET /store/modules/{key}/listing — rank: any-builder — GET /store/modules/:key/listing
1252
1252
  getStoreModulesKeyListing: (args) => request("GET", "/store/modules/{key}/listing", { hasBody: false }, args),
1253
+ // POST /store/modules/{key}/price — rank: metic+archon — POST /store/modules/:key/price
1254
+ postStoreModulesKeyPrice: (args) => request("POST", "/store/modules/{key}/price", { hasBody: true }, args),
1253
1255
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1254
1256
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1255
1257
  // GET /store/modules/{key}/versions/{version}/channel — rank: any-builder — GET /store/modules/:key/versions/:version/channel
@@ -1266,6 +1268,8 @@ function createClient(opts = {}) {
1266
1268
  postStoreModulesKeyVersionsVersionRelease: (args) => request("POST", "/store/modules/{key}/versions/{version}/release", { hasBody: true }, args),
1267
1269
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1268
1270
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1271
+ // POST /store/modules/{key}/versions/{version}/withdraw — rank: metic+archon — POST /store/modules/:key/versions/:version/withdraw
1272
+ postStoreModulesKeyVersionsVersionWithdraw: (args) => request("POST", "/store/modules/{key}/versions/{version}/withdraw", { hasBody: true }, args),
1269
1273
  // GET /store/modules/latest — rank: any-builder — GET /store/modules/latest
1270
1274
  getStoreModulesLatest: (args) => request("GET", "/store/modules/latest", { hasBody: false }, args),
1271
1275
  // GET /store/subcategories — rank: any-builder — GET /store/subcategories
@@ -184,7 +184,7 @@ export interface GetSpecialitiesResponse { specialities: unknown }
184
184
  export interface GetSsoPubkeyResponse { alg: unknown; format: unknown; public_key_b64: unknown }
185
185
  export interface GetStoreEntitlementsResponse { entitlements: unknown }
186
186
  export interface GetStoreModulesKeyVersionsVersionHowtoResponse { module_key: unknown; title: unknown; version: unknown; published_at: unknown; delisted: unknown; markdown: unknown; artifact_url: unknown }
187
- export interface GetStoreModulesLatestResponse { latest: unknown }
187
+ export interface GetStoreModulesLatestResponse { latest: unknown; withdrawn: unknown }
188
188
  export interface GetStoreUsageReportingResponse { enabled: unknown }
189
189
  export interface GetTaskRecommendationsForMeResponse { recommendations: unknown; count: unknown }
190
190
  export interface GetTaskRecommendationsMineResponse { recommendations: unknown; count: unknown }
@@ -562,6 +562,8 @@ export interface PostStoreModulesKeyAcquiredRequest { version: string }
562
562
  export interface PostStoreModulesKeyAcquiredResponse { ok: boolean; entitlement: unknown }
563
563
  export interface PostStoreModulesKeyDelistRequest { reason?: string }
564
564
  export interface PostStoreModulesKeyDelistResponse { ok: boolean; module_key: unknown; status: unknown; delisted_at: unknown }
565
+ export interface PostStoreModulesKeyPriceRequest { cents?: unknown; credits?: unknown }
566
+ export interface PostStoreModulesKeyPriceResponse { ok: boolean; module_key: unknown; previous: unknown; price: unknown }
565
567
  export interface PostStoreModulesKeyVersionsResponse { ok: boolean; created_module: unknown; version: unknown; channel: unknown; category: unknown }
566
568
  export interface PostStoreModulesKeyVersionsVersionErrorCountRequest { day: string; count: number }
567
569
  export interface PostStoreModulesKeyVersionsVersionInstallReportRequest { ok: boolean; error_code?: string }
@@ -569,6 +571,8 @@ export interface PostStoreModulesKeyVersionsVersionReassessRequest { reason?: st
569
571
  export interface PostStoreModulesKeyVersionsVersionReassessResponse { ok: boolean; queued: boolean; module_key: unknown; version: unknown; version_id: unknown }
570
572
  export interface PostStoreModulesKeyVersionsVersionReleaseRequest { reason?: string }
571
573
  export interface PostStoreModulesKeyVersionsVersionReleaseResponse { ok: boolean; module_key: unknown; version: unknown; channel: unknown; reason: unknown }
574
+ export interface PostStoreModulesKeyVersionsVersionWithdrawRequest { reason?: string }
575
+ export interface PostStoreModulesKeyVersionsVersionWithdrawResponse { ok: boolean; module_key: unknown; version: unknown; channel: unknown; reason: unknown }
572
576
  export interface PostStoreSubcategoriesIdApproveRequest { label?: string; sub_key?: string }
573
577
  export interface PostStoreSubcategoriesIdMergeRequest { into?: unknown }
574
578
  export interface PostStoreUsageReportingRequest { enabled: boolean }
@@ -1808,6 +1812,8 @@ export interface BongosClient {
1808
1812
  getStoreModulesKeyEntitlement(args?: RequestArgs): Promise<ApiResponse>;
1809
1813
  /** GET /store/modules/{key}/listing — rank: any-builder */
1810
1814
  getStoreModulesKeyListing(args?: RequestArgs): Promise<ApiResponse>;
1815
+ /** POST /store/modules/{key}/price — rank: metic+archon */
1816
+ postStoreModulesKeyPrice(args?: RequestArgs & { body?: PostStoreModulesKeyPriceRequest }): Promise<PostStoreModulesKeyPriceResponse>;
1811
1817
  /** POST /store/modules/{key}/versions — rank: metic+archon */
1812
1818
  postStoreModulesKeyVersions(args?: RequestArgs): Promise<PostStoreModulesKeyVersionsResponse>;
1813
1819
  /** GET /store/modules/{key}/versions/{version}/channel — rank: any-builder */
@@ -1824,6 +1830,8 @@ export interface BongosClient {
1824
1830
  postStoreModulesKeyVersionsVersionRelease(args?: RequestArgs & { body?: PostStoreModulesKeyVersionsVersionReleaseRequest }): Promise<PostStoreModulesKeyVersionsVersionReleaseResponse>;
1825
1831
  /** GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder */
1826
1832
  getStoreModulesKeyVersionsVersionTarball(args?: RequestArgs): Promise<ApiResponse>;
1833
+ /** POST /store/modules/{key}/versions/{version}/withdraw — rank: metic+archon */
1834
+ postStoreModulesKeyVersionsVersionWithdraw(args?: RequestArgs & { body?: PostStoreModulesKeyVersionsVersionWithdrawRequest }): Promise<PostStoreModulesKeyVersionsVersionWithdrawResponse>;
1827
1835
  /** GET /store/modules/latest — rank: any-builder */
1828
1836
  getStoreModulesLatest(args?: RequestArgs): Promise<GetStoreModulesLatestResponse>;
1829
1837
  /** GET /store/subcategories — rank: any-builder */
@@ -1247,6 +1247,8 @@ export function createClient(opts = {}) {
1247
1247
  getStoreModulesKeyEntitlement: (args) => request("GET", "/store/modules/{key}/entitlement", { hasBody: false }, args),
1248
1248
  // GET /store/modules/{key}/listing — rank: any-builder — GET /store/modules/:key/listing
1249
1249
  getStoreModulesKeyListing: (args) => request("GET", "/store/modules/{key}/listing", { hasBody: false }, args),
1250
+ // POST /store/modules/{key}/price — rank: metic+archon — POST /store/modules/:key/price
1251
+ postStoreModulesKeyPrice: (args) => request("POST", "/store/modules/{key}/price", { hasBody: true }, args),
1250
1252
  // POST /store/modules/{key}/versions — rank: metic+archon — POST /store/modules/:key/versions
1251
1253
  postStoreModulesKeyVersions: (args) => request("POST", "/store/modules/{key}/versions", { hasBody: true }, args),
1252
1254
  // GET /store/modules/{key}/versions/{version}/channel — rank: any-builder — GET /store/modules/:key/versions/:version/channel
@@ -1263,6 +1265,8 @@ export function createClient(opts = {}) {
1263
1265
  postStoreModulesKeyVersionsVersionRelease: (args) => request("POST", "/store/modules/{key}/versions/{version}/release", { hasBody: true }, args),
1264
1266
  // GET /store/modules/{key}/versions/{version}/tarball — rank: any-builder — GET /store/modules/:key/versions/:version/tarball
1265
1267
  getStoreModulesKeyVersionsVersionTarball: (args) => request("GET", "/store/modules/{key}/versions/{version}/tarball", { hasBody: false }, args),
1268
+ // POST /store/modules/{key}/versions/{version}/withdraw — rank: metic+archon — POST /store/modules/:key/versions/:version/withdraw
1269
+ postStoreModulesKeyVersionsVersionWithdraw: (args) => request("POST", "/store/modules/{key}/versions/{version}/withdraw", { hasBody: true }, args),
1266
1270
  // GET /store/modules/latest — rank: any-builder — GET /store/modules/latest
1267
1271
  getStoreModulesLatest: (args) => request("GET", "/store/modules/latest", { hasBody: false }, args),
1268
1272
  // GET /store/subcategories — rank: any-builder — GET /store/subcategories
@@ -5,6 +5,7 @@
5
5
  - **Task:** [task 1002969](https://cloudbongos.com/builders#/task/1002969) (goal 1000110)
6
6
  - **Builds on:** privacy spec D4 (`docs/specs/<redacted>.md`; the owner signed the 30 days), [ADR 0335](0335-an-invite-is-a-pre-approved-row-on-the-projects-own-instance.md) D2 (an invite is a `kind='invite'` row on the project's own instance), [ADR 0353](0353-a-hub-invite-is-a-notice-of-the-projects-own-invite.md) (the hub's `pending` row is a notice of that invite)
7
7
  - **Amends:** ADR 0335 D2.5 ("no admission path reads `kind`")
8
+ - **Amended by:** [ADR 0217](0217-rank-gates-inviting-not-viewing.md) D4, as built in [task 1003359](https://cloudbongos.com/builders#/task/1003359) — the public status probe answers `not_admitted`, not `expired`, for a lapsed invite, and `bongos login` no longer stops on it. In practice the CLI never saw `expired`: it files a request first, and that newer pending row is what the probe read.
8
9
  - **Decided with:** the owner split the original task on 2026-09-30. `seen_at` is [task 1004443](https://cloudbongos.com/builders#/task/1004443); the decline relay is [task 1004444](https://cloudbongos.com/builders#/task/1004444).
9
10
 
10
11
  ## Context
@@ -23,7 +24,7 @@ An invite writes an `invited` row, and the sign-in gate admits any login holding
23
24
  - The gate refuses it. The public "already approved?" check and the standing-invite probe no longer count it, so the invitee may apply and the recruiter can re-invite.
24
25
  - A re-invite writes a fresh row, which opens a fresh door. The expired row stays as history.
25
26
  - The queue marks it `expired` with `expires_at`. The outstanding-invite list keeps it so the sender knows to invite again, and drops it once a newer invite for that login is live. The hall's queue shows "Invite expired" and offers no rescind.
26
- - The public status probe answers `expired` (`admitted: false`), and `bongos login` stops waiting on it. An older CLI treats an unknown status as "wait" and times out, which is no worse than before.
27
+ - The public status probe answers `expired` (`admitted: false`), and `bongos login` stops waiting on it. An older CLI treats an unknown status as "wait" and times out, which is no worse than before. *(Superseded: it now answers `not_admitted` — see "Amended by" above.)*
27
28
  - A rescind that leaves only expired rows clears the hub notice.
28
29
 
29
30
  **D5 — The hub's notice follows the door.** `listPendingInvitesForAccount` hides a `pending` notice older than the same 30 days (its `joined_at` is when the project sent the notice). `inviteToProject` restamps `joined_at` only on a `pending` row that is already past the window, so a re-invite shows again. A re-send while the invite is live changes nothing, and a real membership is never touched.