@bongos/core 1.24.96 → 1.25.1
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 +60 -40
- 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 +131 -3
- package/docs/api-reference.md +4 -2
- package/docs/architecture.md +3 -1
- package/docs/module-api-changelog.md +4 -0
- package/migrations/core_298_card_step_up.sql +16 -0
- package/modules/economy/module.json +1 -1
- package/modules/economy/processor-stripe.js +292 -0
- package/modules/economy/routes/balances.js +4 -3
- package/modules/economy/routes/project-account.js +12 -1
- package/modules/economy/tests/processor_stripe.mjs +135 -0
- package/modules/government/routes/government.js +2 -2
- package/modules/render-deploy/routes/act.js +1 -1
- package/modules/render-deploy/routes/app.js +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +11 -0
- package/scripts/bongos/fitness.js +1 -1
- package/scripts/bongos/government-walk.js +2 -2
- package/src/bongos/passkeys.js +30 -0
- package/src/bongos/routes/auth.js +2 -2
- package/src/bongos/routes/builders.js +2 -1
- package/src/bongos/routes/module-payouts.js +4 -2
- package/src/bongos/routes/my-cash-outs.js +5 -3
- package/src/bongos/routes/my-passkeys.js +70 -0
- package/src/bongos/routes/payout-approvals.js +5 -3
- package/src/bongos/step-up.js +42 -0
- package/src/module-api.js +5 -1
- package/tests/government_act_alone_buildings.mjs +2 -1
- package/tests/government_treasury.mjs +2 -1
- package/tests/module_api.mjs +1 -0
- package/tests/my_passkeys.mjs +47 -1
- package/tests/rank_change_broadcast_port.mjs +2 -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.
|
|
6
|
-
"core_contract": "1.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.25.1",
|
|
6
|
+
"core_contract": "1.25.1",
|
|
7
|
+
"source_commit": "ab6188463865682dcca46f3680eb50a3227322d9",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-11-12T21:
|
|
9
|
+
"built_at": "2026-11-12T21:45:21.690Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 654,
|
|
13
13
|
"agent_docs_stubbed": 32,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3989,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4676,
|
|
20
|
+
"tree_sha256": "bdaeb36c9c1b8bff0272eae34c82d2a800abec3856f9eeebe36a61d0f35d6b3f",
|
|
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": "ed95879a40c6624dda1681930638ce528645de0de79003c4622e8edf97a9cfec"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
339
339
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
340
|
+
"sha256": "534f04acb46cdf1a13ebbaf15af37488b93daba3eef39ab05c827ebeeebc551f"
|
|
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": "d4a8ca745ce3c3aa7ee83e3b6dad2071d9bb31d82104002c0f8d62785a24fd8f"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/index.d.ts",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "e7ce03b5c6d9c370c9fa0380911a83c17945c3eb9535252b4d396da5675149cf"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/index.mjs",
|
|
359
359
|
"mode": "0000644",
|
|
360
|
-
"sha256": "
|
|
360
|
+
"sha256": "2f6c7c1de4f5fe6abb98aec6993ef7fa212f42dcf513b33f82213578765cc952"
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/package.json",
|
|
@@ -2497,17 +2497,17 @@
|
|
|
2497
2497
|
{
|
|
2498
2498
|
"path": "docs/api-reference.md",
|
|
2499
2499
|
"mode": "0000644",
|
|
2500
|
-
"sha256": "
|
|
2500
|
+
"sha256": "63bf723ba632d53f26bc2850623f0ce85d40fabcb65aadd693808663c5822ded"
|
|
2501
2501
|
},
|
|
2502
2502
|
{
|
|
2503
2503
|
"path": "docs/api/openapi.json",
|
|
2504
2504
|
"mode": "0000644",
|
|
2505
|
-
"sha256": "
|
|
2505
|
+
"sha256": "4b1c9bdd62f88e916be092ecffe6b70c90ac08fc709afa372ce992c88a2070f6"
|
|
2506
2506
|
},
|
|
2507
2507
|
{
|
|
2508
2508
|
"path": "docs/architecture.md",
|
|
2509
2509
|
"mode": "0000644",
|
|
2510
|
-
"sha256": "
|
|
2510
|
+
"sha256": "5d62f07bd68f7dcf24c9acf1cfb2be95df55e7d64c289844cdecab73bf1f5d49"
|
|
2511
2511
|
},
|
|
2512
2512
|
{
|
|
2513
2513
|
"path": "docs/branding-contract.md",
|
|
@@ -3087,7 +3087,7 @@
|
|
|
3087
3087
|
{
|
|
3088
3088
|
"path": "docs/module-api-changelog.md",
|
|
3089
3089
|
"mode": "0000644",
|
|
3090
|
-
"sha256": "
|
|
3090
|
+
"sha256": "5cbde19ec7bd628215e624bd4e1d5396d42b25d9db77c511e93884a79a00d062"
|
|
3091
3091
|
},
|
|
3092
3092
|
{
|
|
3093
3093
|
"path": "docs/modules-contract.md",
|
|
@@ -4444,6 +4444,11 @@
|
|
|
4444
4444
|
"mode": "0000644",
|
|
4445
4445
|
"sha256": "2d691d71a3ba7a5d18c528b64889f7df1fdd1c73616d457d4e75c07d5d08c599"
|
|
4446
4446
|
},
|
|
4447
|
+
{
|
|
4448
|
+
"path": "migrations/core_298_card_step_up.sql",
|
|
4449
|
+
"mode": "0000644",
|
|
4450
|
+
"sha256": "996b8ba5f3f9dba3debc29edfc826bfa73fe12d985e4991bbc599f1551f6cd67"
|
|
4451
|
+
},
|
|
4447
4452
|
{
|
|
4448
4453
|
"path": "modules/agents/CLAUDE.md",
|
|
4449
4454
|
"mode": "0000644",
|
|
@@ -5422,7 +5427,7 @@
|
|
|
5422
5427
|
{
|
|
5423
5428
|
"path": "modules/economy/module.json",
|
|
5424
5429
|
"mode": "0000644",
|
|
5425
|
-
"sha256": "
|
|
5430
|
+
"sha256": "2a7b1e569629692a7e6f65aa7a66c739568fd7cd9d590f83d7a55b88dba831ca"
|
|
5426
5431
|
},
|
|
5427
5432
|
{
|
|
5428
5433
|
"path": "modules/economy/outflow.js",
|
|
@@ -5439,6 +5444,11 @@
|
|
|
5439
5444
|
"mode": "0000644",
|
|
5440
5445
|
"sha256": "aba4b7c50850371c0314ff3ca30ed0511f95bd70ed947d306ec13b15d9beb0c8"
|
|
5441
5446
|
},
|
|
5447
|
+
{
|
|
5448
|
+
"path": "modules/economy/processor-stripe.js",
|
|
5449
|
+
"mode": "0000644",
|
|
5450
|
+
"sha256": "b711b1208c6d1f14d4f171bd35c0e79ed8c3ceea46403a01323771ed7c82f17f"
|
|
5451
|
+
},
|
|
5442
5452
|
{
|
|
5443
5453
|
"path": "modules/economy/project-account.js",
|
|
5444
5454
|
"mode": "0000644",
|
|
@@ -5457,7 +5467,7 @@
|
|
|
5457
5467
|
{
|
|
5458
5468
|
"path": "modules/economy/routes/balances.js",
|
|
5459
5469
|
"mode": "0000644",
|
|
5460
|
-
"sha256": "
|
|
5470
|
+
"sha256": "e012ff00a8270278813f1ca60a66ffce025e98371d961fb69ba09d053b9d7391"
|
|
5461
5471
|
},
|
|
5462
5472
|
{
|
|
5463
5473
|
"path": "modules/economy/routes/cost.js",
|
|
@@ -5482,7 +5492,7 @@
|
|
|
5482
5492
|
{
|
|
5483
5493
|
"path": "modules/economy/routes/project-account.js",
|
|
5484
5494
|
"mode": "0000644",
|
|
5485
|
-
"sha256": "
|
|
5495
|
+
"sha256": "32c3e606335a96bbf8d1c5d8ff1e816f4cda21bbf836ab97e7b1fa2c4ac0c435"
|
|
5486
5496
|
},
|
|
5487
5497
|
{
|
|
5488
5498
|
"path": "modules/economy/routes/reward.js",
|
|
@@ -5494,6 +5504,11 @@
|
|
|
5494
5504
|
"mode": "0000644",
|
|
5495
5505
|
"sha256": "45c9e5913328ee68277d2ae8ea42f0958fcfc2b9fb21792d82fab3c568997ba2"
|
|
5496
5506
|
},
|
|
5507
|
+
{
|
|
5508
|
+
"path": "modules/economy/tests/processor_stripe.mjs",
|
|
5509
|
+
"mode": "0000644",
|
|
5510
|
+
"sha256": "af2153d8c05aafca1a45dd92b0e041baf27a0d81d5410c105d57c2883345d013"
|
|
5511
|
+
},
|
|
5497
5512
|
{
|
|
5498
5513
|
"path": "modules/economy/user-balances.js",
|
|
5499
5514
|
"mode": "0000644",
|
|
@@ -5912,7 +5927,7 @@
|
|
|
5912
5927
|
{
|
|
5913
5928
|
"path": "modules/government/routes/government.js",
|
|
5914
5929
|
"mode": "0000644",
|
|
5915
|
-
"sha256": "
|
|
5930
|
+
"sha256": "059293fc06bda9db0ee5c7099251a90b7f7c7a8138c9e2cf7fcef14e0308ca0e"
|
|
5916
5931
|
},
|
|
5917
5932
|
{
|
|
5918
5933
|
"path": "modules/government/routes/rank-sync.js",
|
|
@@ -11277,12 +11292,12 @@
|
|
|
11277
11292
|
{
|
|
11278
11293
|
"path": "modules/render-deploy/routes/act.js",
|
|
11279
11294
|
"mode": "0000644",
|
|
11280
|
-
"sha256": "
|
|
11295
|
+
"sha256": "effe2bb4bc6e20d37e61a14c5ef72d6001f38a94fe95705528d3eb48c145ad64"
|
|
11281
11296
|
},
|
|
11282
11297
|
{
|
|
11283
11298
|
"path": "modules/render-deploy/routes/app.js",
|
|
11284
11299
|
"mode": "0000644",
|
|
11285
|
-
"sha256": "
|
|
11300
|
+
"sha256": "a93f5a07ea20ceb9ca1dcaf3c0ffb2433a736af16a8e9501dfdc02b70749596d"
|
|
11286
11301
|
},
|
|
11287
11302
|
{
|
|
11288
11303
|
"path": "modules/render-deploy/routes/history.js",
|
|
@@ -12202,12 +12217,12 @@
|
|
|
12202
12217
|
{
|
|
12203
12218
|
"path": "package-lock.json",
|
|
12204
12219
|
"mode": "0000644",
|
|
12205
|
-
"sha256": "
|
|
12220
|
+
"sha256": "91918d6ff38e731f24ee145f1ac45ad79aeae24a1f748d538fd229dc129d517e"
|
|
12206
12221
|
},
|
|
12207
12222
|
{
|
|
12208
12223
|
"path": "package.json",
|
|
12209
12224
|
"mode": "0000644",
|
|
12210
|
-
"sha256": "
|
|
12225
|
+
"sha256": "6d0090ccb1cf713ca96875e4acc6f4af8ab030650a847404825d78c8642c0abd"
|
|
12211
12226
|
},
|
|
12212
12227
|
{
|
|
12213
12228
|
"path": "public-docs/index.html",
|
|
@@ -12227,7 +12242,7 @@
|
|
|
12227
12242
|
{
|
|
12228
12243
|
"path": "release-notes.json",
|
|
12229
12244
|
"mode": "0000644",
|
|
12230
|
-
"sha256": "
|
|
12245
|
+
"sha256": "9a01a7a0d535adb2c9804def7bf85a89ef6343277e4d71d5891168d18fac0f2c"
|
|
12231
12246
|
},
|
|
12232
12247
|
{
|
|
12233
12248
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -12787,7 +12802,7 @@
|
|
|
12787
12802
|
{
|
|
12788
12803
|
"path": "scripts/bongos/fitness.js",
|
|
12789
12804
|
"mode": "0000644",
|
|
12790
|
-
"sha256": "
|
|
12805
|
+
"sha256": "f801186ca310c4eff0d218a203013d2882cfc255a6e5dbb85fa64cb2e9b1c5a4"
|
|
12791
12806
|
},
|
|
12792
12807
|
{
|
|
12793
12808
|
"path": "scripts/bongos/forwarder.js",
|
|
@@ -12907,7 +12922,7 @@
|
|
|
12907
12922
|
{
|
|
12908
12923
|
"path": "scripts/bongos/government-walk.js",
|
|
12909
12924
|
"mode": "0000644",
|
|
12910
|
-
"sha256": "
|
|
12925
|
+
"sha256": "3d628452d167bd71367f6a64ef5dd689865dd73c0d72a4ade08eb8b569de2dd9"
|
|
12911
12926
|
},
|
|
12912
12927
|
{
|
|
12913
12928
|
"path": "scripts/bongos/grade-correlation-audit.js",
|
|
@@ -15922,7 +15937,7 @@
|
|
|
15922
15937
|
{
|
|
15923
15938
|
"path": "src/bongos/passkeys.js",
|
|
15924
15939
|
"mode": "0000644",
|
|
15925
|
-
"sha256": "
|
|
15940
|
+
"sha256": "8852ecc1dd723459f6024d765f100ac7308605b9b18472aff6a3ce9963da3589"
|
|
15926
15941
|
},
|
|
15927
15942
|
{
|
|
15928
15943
|
"path": "src/bongos/path-match.js",
|
|
@@ -16022,7 +16037,7 @@
|
|
|
16022
16037
|
{
|
|
16023
16038
|
"path": "src/bongos/routes/auth.js",
|
|
16024
16039
|
"mode": "0000644",
|
|
16025
|
-
"sha256": "
|
|
16040
|
+
"sha256": "3ee96bc304119dc762492a32b55c840f86e68461a52ded65b7fd10f8d6c3cb5b"
|
|
16026
16041
|
},
|
|
16027
16042
|
{
|
|
16028
16043
|
"path": "src/bongos/routes/backup.js",
|
|
@@ -16032,7 +16047,7 @@
|
|
|
16032
16047
|
{
|
|
16033
16048
|
"path": "src/bongos/routes/builders.js",
|
|
16034
16049
|
"mode": "0000644",
|
|
16035
|
-
"sha256": "
|
|
16050
|
+
"sha256": "775ab4581124e9ccb0d4c195ade3147e65e301ca5c055fdeb3bf8fc68aa8b856"
|
|
16036
16051
|
},
|
|
16037
16052
|
{
|
|
16038
16053
|
"path": "src/bongos/routes/cli-commands.js",
|
|
@@ -16082,7 +16097,7 @@
|
|
|
16082
16097
|
{
|
|
16083
16098
|
"path": "src/bongos/routes/module-payouts.js",
|
|
16084
16099
|
"mode": "0000644",
|
|
16085
|
-
"sha256": "
|
|
16100
|
+
"sha256": "fd8f8869feb1185bd25323d32bde6829dd73a393465346fbc8e9f144d24dea4b"
|
|
16086
16101
|
},
|
|
16087
16102
|
{
|
|
16088
16103
|
"path": "src/bongos/routes/modules.js",
|
|
@@ -16092,12 +16107,12 @@
|
|
|
16092
16107
|
{
|
|
16093
16108
|
"path": "src/bongos/routes/my-cash-outs.js",
|
|
16094
16109
|
"mode": "0000644",
|
|
16095
|
-
"sha256": "
|
|
16110
|
+
"sha256": "3f51f9f6e7079f18739653cbdb74dd87e23fc8758c1ca309c5fce01cbed2c695"
|
|
16096
16111
|
},
|
|
16097
16112
|
{
|
|
16098
16113
|
"path": "src/bongos/routes/my-passkeys.js",
|
|
16099
16114
|
"mode": "0000644",
|
|
16100
|
-
"sha256": "
|
|
16115
|
+
"sha256": "a35d43b2450c8533b691b3ac4dc4fa62397279c24ef95698f078a4d48055a58e"
|
|
16101
16116
|
},
|
|
16102
16117
|
{
|
|
16103
16118
|
"path": "src/bongos/routes/my-payouts.js",
|
|
@@ -16117,7 +16132,7 @@
|
|
|
16117
16132
|
{
|
|
16118
16133
|
"path": "src/bongos/routes/payout-approvals.js",
|
|
16119
16134
|
"mode": "0000644",
|
|
16120
|
-
"sha256": "
|
|
16135
|
+
"sha256": "f70c1df7853ae8ddf7f73d06bb28480ac516d27ede9be0a34940de7f794d78c8"
|
|
16121
16136
|
},
|
|
16122
16137
|
{
|
|
16123
16138
|
"path": "src/bongos/routes/payout-gates.js",
|
|
@@ -16169,6 +16184,11 @@
|
|
|
16169
16184
|
"mode": "0000644",
|
|
16170
16185
|
"sha256": "4805e1c822f1a55cf38fec99af788cc3654f67f9aaa2830fbf853f75583c1244"
|
|
16171
16186
|
},
|
|
16187
|
+
{
|
|
16188
|
+
"path": "src/bongos/step-up.js",
|
|
16189
|
+
"mode": "0000644",
|
|
16190
|
+
"sha256": "1b5376c7d48788df1425ef7c9c4e530dd159a329a5515440d52b36ca53a661d5"
|
|
16191
|
+
},
|
|
16172
16192
|
{
|
|
16173
16193
|
"path": "src/bongos/task-needs.js",
|
|
16174
16194
|
"mode": "0000644",
|
|
@@ -16232,7 +16252,7 @@
|
|
|
16232
16252
|
{
|
|
16233
16253
|
"path": "src/module-api.js",
|
|
16234
16254
|
"mode": "0000644",
|
|
16235
|
-
"sha256": "
|
|
16255
|
+
"sha256": "39c65d85a20b2b575503327d65f70039e139827031595d85ded7b9228477ff8b"
|
|
16236
16256
|
},
|
|
16237
16257
|
{
|
|
16238
16258
|
"path": "src/module-loader/catalog.js",
|
|
@@ -18612,7 +18632,7 @@
|
|
|
18612
18632
|
{
|
|
18613
18633
|
"path": "tests/government_act_alone_buildings.mjs",
|
|
18614
18634
|
"mode": "0000644",
|
|
18615
|
-
"sha256": "
|
|
18635
|
+
"sha256": "12a31fab05c763cd26560ba507ded9a635d026b1e7ea0a8d04992061c222988c"
|
|
18616
18636
|
},
|
|
18617
18637
|
{
|
|
18618
18638
|
"path": "tests/government_agent_asks.mjs",
|
|
@@ -18887,7 +18907,7 @@
|
|
|
18887
18907
|
{
|
|
18888
18908
|
"path": "tests/government_treasury.mjs",
|
|
18889
18909
|
"mode": "0000644",
|
|
18890
|
-
"sha256": "
|
|
18910
|
+
"sha256": "c3beaf013144da2a9981115d013464c32915977e7a4227015eea1f0253a91d47"
|
|
18891
18911
|
},
|
|
18892
18912
|
{
|
|
18893
18913
|
"path": "tests/government_unanimous.mjs",
|
|
@@ -20477,7 +20497,7 @@
|
|
|
20477
20497
|
{
|
|
20478
20498
|
"path": "tests/module_api.mjs",
|
|
20479
20499
|
"mode": "0000644",
|
|
20480
|
-
"sha256": "
|
|
20500
|
+
"sha256": "6dc76d0fca798b72319b14fa26e8a4405c8705c063d4b850aaeb894caf51c6dd"
|
|
20481
20501
|
},
|
|
20482
20502
|
{
|
|
20483
20503
|
"path": "tests/module_api_lazy.mjs",
|
|
@@ -20742,7 +20762,7 @@
|
|
|
20742
20762
|
{
|
|
20743
20763
|
"path": "tests/my_passkeys.mjs",
|
|
20744
20764
|
"mode": "0000644",
|
|
20745
|
-
"sha256": "
|
|
20765
|
+
"sha256": "21c7c434e6dfef2810b0ea2480bffb37335d62a5b05b8b7c145168e582a116a0"
|
|
20746
20766
|
},
|
|
20747
20767
|
{
|
|
20748
20768
|
"path": "tests/my_projects_surface.mjs",
|
|
@@ -21762,7 +21782,7 @@
|
|
|
21762
21782
|
{
|
|
21763
21783
|
"path": "tests/rank_change_broadcast_port.mjs",
|
|
21764
21784
|
"mode": "0000644",
|
|
21765
|
-
"sha256": "
|
|
21785
|
+
"sha256": "7146017837c4bd5ca37ddb38826de1cb04124d8b8e796f1371c9c856c14c6fd8"
|
|
21766
21786
|
},
|
|
21767
21787
|
{
|
|
21768
21788
|
"path": "tests/rank_floor_wiring.mjs",
|
|
@@ -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
|
+
- 699 operations across 85 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -905,6 +905,10 @@ function createClient(opts = {}) {
|
|
|
905
905
|
patchMeModelAllocation: (args) => request("PATCH", "/me/model-allocation", { hasBody: true }, args),
|
|
906
906
|
// GET /me/passkeys — rank: any-builder — GET /me/passkeys
|
|
907
907
|
getMePasskeys: (args) => request("GET", "/me/passkeys", { hasBody: false }, args),
|
|
908
|
+
// POST /me/passkeys/authenticate/options — rank: any-builder — POST /me/passkeys/authenticate/options
|
|
909
|
+
postMePasskeysAuthenticateOptions: (args) => request("POST", "/me/passkeys/authenticate/options", { hasBody: true }, args),
|
|
910
|
+
// POST /me/passkeys/authenticate/verify — rank: any-builder — POST /me/passkeys/authenticate/verify
|
|
911
|
+
postMePasskeysAuthenticateVerify: (args) => request("POST", "/me/passkeys/authenticate/verify", { hasBody: true }, args),
|
|
908
912
|
// GET /me/passkeys/browser.js — rank: any-builder — GET /me/passkeys/browser.js
|
|
909
913
|
getMePasskeysBrowserJs: (args) => request("GET", "/me/passkeys/browser.js", { hasBody: false }, args),
|
|
910
914
|
// POST /me/passkeys/register/options — rank: any-builder — POST /me/passkeys/register/options
|
|
@@ -904,6 +904,10 @@ function createClient(opts = {}) {
|
|
|
904
904
|
patchMeModelAllocation: (args) => request("PATCH", "/me/model-allocation", { hasBody: true }, args),
|
|
905
905
|
// GET /me/passkeys — rank: any-builder — GET /me/passkeys
|
|
906
906
|
getMePasskeys: (args) => request("GET", "/me/passkeys", { hasBody: false }, args),
|
|
907
|
+
// POST /me/passkeys/authenticate/options — rank: any-builder — POST /me/passkeys/authenticate/options
|
|
908
|
+
postMePasskeysAuthenticateOptions: (args) => request("POST", "/me/passkeys/authenticate/options", { hasBody: true }, args),
|
|
909
|
+
// POST /me/passkeys/authenticate/verify — rank: any-builder — POST /me/passkeys/authenticate/verify
|
|
910
|
+
postMePasskeysAuthenticateVerify: (args) => request("POST", "/me/passkeys/authenticate/verify", { hasBody: true }, args),
|
|
907
911
|
// GET /me/passkeys/browser.js — rank: any-builder — GET /me/passkeys/browser.js
|
|
908
912
|
getMePasskeysBrowserJs: (args) => request("GET", "/me/passkeys/browser.js", { hasBody: false }, args),
|
|
909
913
|
// POST /me/passkeys/register/options — rank: any-builder — POST /me/passkeys/register/options
|
|
@@ -502,6 +502,9 @@ export interface PostMeGuardianCosignsRequest { approval_id?: StringifiableId; r
|
|
|
502
502
|
export interface PostMeGuardianCosignsResponse { cosigns: unknown }
|
|
503
503
|
export interface PostMeHowtoReadRequest { steps?: unknown[]; all?: boolean; how?: string }
|
|
504
504
|
export interface PostMeHowtoResetRequest { steps?: unknown[]; all?: boolean }
|
|
505
|
+
export interface PostMePasskeysAuthenticateOptionsResponse { options: unknown }
|
|
506
|
+
export interface PostMePasskeysAuthenticateVerifyRequest { response?: unknown }
|
|
507
|
+
export interface PostMePasskeysAuthenticateVerifyResponse { ok: boolean; valid_for_seconds: unknown }
|
|
505
508
|
export interface PostMePasskeysRegisterOptionsResponse { options: unknown }
|
|
506
509
|
export interface PostMePasskeysRegisterVerifyRequest { response?: unknown; nickname?: unknown }
|
|
507
510
|
export interface PostMePasskeysRegisterVerifyResponse { ok: boolean; credential_id: unknown }
|
|
@@ -1569,6 +1572,10 @@ export interface BongosClient {
|
|
|
1569
1572
|
patchMeModelAllocation(args?: RequestArgs): Promise<ApiResponse>;
|
|
1570
1573
|
/** GET /me/passkeys — rank: any-builder */
|
|
1571
1574
|
getMePasskeys(args?: RequestArgs): Promise<GetMePasskeysResponse>;
|
|
1575
|
+
/** POST /me/passkeys/authenticate/options — rank: any-builder */
|
|
1576
|
+
postMePasskeysAuthenticateOptions(args?: RequestArgs): Promise<PostMePasskeysAuthenticateOptionsResponse>;
|
|
1577
|
+
/** POST /me/passkeys/authenticate/verify — rank: any-builder */
|
|
1578
|
+
postMePasskeysAuthenticateVerify(args?: RequestArgs & { body?: PostMePasskeysAuthenticateVerifyRequest }): Promise<PostMePasskeysAuthenticateVerifyResponse>;
|
|
1572
1579
|
/** GET /me/passkeys/browser.js — rank: any-builder */
|
|
1573
1580
|
getMePasskeysBrowserJs(args?: RequestArgs): Promise<ApiResponse>;
|
|
1574
1581
|
/** POST /me/passkeys/register/options — rank: any-builder */
|
|
@@ -901,6 +901,10 @@ export function createClient(opts = {}) {
|
|
|
901
901
|
patchMeModelAllocation: (args) => request("PATCH", "/me/model-allocation", { hasBody: true }, args),
|
|
902
902
|
// GET /me/passkeys — rank: any-builder — GET /me/passkeys
|
|
903
903
|
getMePasskeys: (args) => request("GET", "/me/passkeys", { hasBody: false }, args),
|
|
904
|
+
// POST /me/passkeys/authenticate/options — rank: any-builder — POST /me/passkeys/authenticate/options
|
|
905
|
+
postMePasskeysAuthenticateOptions: (args) => request("POST", "/me/passkeys/authenticate/options", { hasBody: true }, args),
|
|
906
|
+
// POST /me/passkeys/authenticate/verify — rank: any-builder — POST /me/passkeys/authenticate/verify
|
|
907
|
+
postMePasskeysAuthenticateVerify: (args) => request("POST", "/me/passkeys/authenticate/verify", { hasBody: true }, args),
|
|
904
908
|
// GET /me/passkeys/browser.js — rank: any-builder — GET /me/passkeys/browser.js
|
|
905
909
|
getMePasskeysBrowserJs: (args) => request("GET", "/me/passkeys/browser.js", { hasBody: false }, args),
|
|
906
910
|
// POST /me/passkeys/register/options — rank: any-builder — POST /me/passkeys/register/options
|
package/docs/api/openapi.json
CHANGED
|
@@ -16855,6 +16855,105 @@
|
|
|
16855
16855
|
]
|
|
16856
16856
|
}
|
|
16857
16857
|
},
|
|
16858
|
+
"/me/passkeys/authenticate/options": {
|
|
16859
|
+
"post": {
|
|
16860
|
+
"operationId": "post_me_passkeys_authenticate_options",
|
|
16861
|
+
"tags": [
|
|
16862
|
+
"me"
|
|
16863
|
+
],
|
|
16864
|
+
"summary": "POST /me/passkeys/authenticate/options",
|
|
16865
|
+
"description": "POST /api/bongos/me/passkeys/authenticate/options — start a card check. rank: any-builder (own identity only). The challenge is bound to the caller.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
16866
|
+
"x-rank": "any-builder",
|
|
16867
|
+
"x-source": "src/bongos/routes/my-passkeys.js",
|
|
16868
|
+
"requestBody": {
|
|
16869
|
+
"required": false,
|
|
16870
|
+
"content": {
|
|
16871
|
+
"application/json": {
|
|
16872
|
+
"schema": {
|
|
16873
|
+
"type": "object",
|
|
16874
|
+
"additionalProperties": true
|
|
16875
|
+
}
|
|
16876
|
+
}
|
|
16877
|
+
},
|
|
16878
|
+
"x-validated": true
|
|
16879
|
+
},
|
|
16880
|
+
"responses": {
|
|
16881
|
+
"200": {
|
|
16882
|
+
"description": "Success.",
|
|
16883
|
+
"content": {
|
|
16884
|
+
"application/json": {
|
|
16885
|
+
"schema": {
|
|
16886
|
+
"$ref": "#/components/schemas/PostMePasskeysAuthenticateOptionsResponse"
|
|
16887
|
+
}
|
|
16888
|
+
}
|
|
16889
|
+
}
|
|
16890
|
+
},
|
|
16891
|
+
"400": {
|
|
16892
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
16893
|
+
},
|
|
16894
|
+
"401": {
|
|
16895
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
16896
|
+
},
|
|
16897
|
+
"403": {
|
|
16898
|
+
"$ref": "#/components/responses/Forbidden"
|
|
16899
|
+
}
|
|
16900
|
+
},
|
|
16901
|
+
"security": [
|
|
16902
|
+
{
|
|
16903
|
+
"builderSession": []
|
|
16904
|
+
}
|
|
16905
|
+
]
|
|
16906
|
+
}
|
|
16907
|
+
},
|
|
16908
|
+
"/me/passkeys/authenticate/verify": {
|
|
16909
|
+
"post": {
|
|
16910
|
+
"operationId": "post_me_passkeys_authenticate_verify",
|
|
16911
|
+
"tags": [
|
|
16912
|
+
"me"
|
|
16913
|
+
],
|
|
16914
|
+
"summary": "POST /me/passkeys/authenticate/verify",
|
|
16915
|
+
"description": "POST /api/bongos/me/passkeys/authenticate/verify — finish a card check. Body: { response } the browser's assertion. On success the CALLER'S session row is stamped; that stamp (never anything the client sends) is the step-up proof. rank: any-builder (own identity only).\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
16916
|
+
"x-rank": "any-builder",
|
|
16917
|
+
"x-source": "src/bongos/routes/my-passkeys.js",
|
|
16918
|
+
"requestBody": {
|
|
16919
|
+
"required": false,
|
|
16920
|
+
"content": {
|
|
16921
|
+
"application/json": {
|
|
16922
|
+
"schema": {
|
|
16923
|
+
"$ref": "#/components/schemas/PostMePasskeysAuthenticateVerifyRequest"
|
|
16924
|
+
}
|
|
16925
|
+
}
|
|
16926
|
+
},
|
|
16927
|
+
"x-validated": true
|
|
16928
|
+
},
|
|
16929
|
+
"responses": {
|
|
16930
|
+
"200": {
|
|
16931
|
+
"description": "Success.",
|
|
16932
|
+
"content": {
|
|
16933
|
+
"application/json": {
|
|
16934
|
+
"schema": {
|
|
16935
|
+
"$ref": "#/components/schemas/PostMePasskeysAuthenticateVerifyResponse"
|
|
16936
|
+
}
|
|
16937
|
+
}
|
|
16938
|
+
}
|
|
16939
|
+
},
|
|
16940
|
+
"400": {
|
|
16941
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
16942
|
+
},
|
|
16943
|
+
"401": {
|
|
16944
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
16945
|
+
},
|
|
16946
|
+
"403": {
|
|
16947
|
+
"$ref": "#/components/responses/Forbidden"
|
|
16948
|
+
}
|
|
16949
|
+
},
|
|
16950
|
+
"security": [
|
|
16951
|
+
{
|
|
16952
|
+
"builderSession": []
|
|
16953
|
+
}
|
|
16954
|
+
]
|
|
16955
|
+
}
|
|
16956
|
+
},
|
|
16858
16957
|
"/me/passkeys/browser.js": {
|
|
16859
16958
|
"get": {
|
|
16860
16959
|
"operationId": "get_me_passkeys_browser_js",
|
|
@@ -39768,6 +39867,35 @@
|
|
|
39768
39867
|
},
|
|
39769
39868
|
"additionalProperties": false
|
|
39770
39869
|
},
|
|
39870
|
+
"PostMePasskeysAuthenticateOptionsResponse": {
|
|
39871
|
+
"type": "object",
|
|
39872
|
+
"properties": {
|
|
39873
|
+
"options": {}
|
|
39874
|
+
},
|
|
39875
|
+
"required": [
|
|
39876
|
+
"options"
|
|
39877
|
+
]
|
|
39878
|
+
},
|
|
39879
|
+
"PostMePasskeysAuthenticateVerifyRequest": {
|
|
39880
|
+
"type": "object",
|
|
39881
|
+
"properties": {
|
|
39882
|
+
"response": {}
|
|
39883
|
+
},
|
|
39884
|
+
"additionalProperties": false
|
|
39885
|
+
},
|
|
39886
|
+
"PostMePasskeysAuthenticateVerifyResponse": {
|
|
39887
|
+
"type": "object",
|
|
39888
|
+
"properties": {
|
|
39889
|
+
"ok": {
|
|
39890
|
+
"type": "boolean"
|
|
39891
|
+
},
|
|
39892
|
+
"valid_for_seconds": {}
|
|
39893
|
+
},
|
|
39894
|
+
"required": [
|
|
39895
|
+
"ok",
|
|
39896
|
+
"valid_for_seconds"
|
|
39897
|
+
]
|
|
39898
|
+
},
|
|
39771
39899
|
"PostMePasskeysRegisterOptionsResponse": {
|
|
39772
39900
|
"type": "object",
|
|
39773
39901
|
"properties": {
|
|
@@ -43609,9 +43737,9 @@
|
|
|
43609
43737
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
43610
43738
|
}
|
|
43611
43739
|
},
|
|
43612
|
-
"x-endpoint-count":
|
|
43613
|
-
"x-schema-count":
|
|
43740
|
+
"x-endpoint-count": 699,
|
|
43741
|
+
"x-schema-count": 734,
|
|
43614
43742
|
"x-undocumented-bodies": 12,
|
|
43615
|
-
"x-response-schemas":
|
|
43743
|
+
"x-response-schemas": 464,
|
|
43616
43744
|
"x-generated-by": "scripts/bongos/gen-api-docs.js"
|
|
43617
43745
|
}
|
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. 699 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`.
|
|
@@ -568,7 +568,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
568
568
|
| PUT | `/api/bongos/market-watch/settings/key` | `metic+archon` | `key` | |
|
|
569
569
|
| DELETE | `/api/bongos/market-watch/settings/key` | `metic+archon` | — | |
|
|
570
570
|
|
|
571
|
-
## `me` (
|
|
571
|
+
## `me` (65)
|
|
572
572
|
|
|
573
573
|
| Method | Path | Rank | Body | Description |
|
|
574
574
|
|---|---|---|---|---|
|
|
@@ -609,6 +609,8 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
609
609
|
| GET | `/api/bongos/me/model-allocation` | `any-builder` | — | |
|
|
610
610
|
| PATCH | `/api/bongos/me/model-allocation` | `any-builder` | _undocumented_ | PATCH the model allocation. |
|
|
611
611
|
| GET | `/api/bongos/me/passkeys` | `any-builder` | — | GET /api/bongos/me/passkeys — the caller's registered cards. |
|
|
612
|
+
| POST | `/api/bongos/me/passkeys/authenticate/options` | `any-builder` | validated | POST /api/bongos/me/passkeys/authenticate/options — start a card check. |
|
|
613
|
+
| POST | `/api/bongos/me/passkeys/authenticate/verify` | `any-builder` | `response` | POST /api/bongos/me/passkeys/authenticate/verify — finish a card check. |
|
|
612
614
|
| GET | `/api/bongos/me/passkeys/browser.js` | `any-builder` | — | GET /api/bongos/me/passkeys/browser.js — the vetted @simplewebauthn/browser bundle, served same-origin so the page needs no CDN and no bu… |
|
|
613
615
|
| POST | `/api/bongos/me/passkeys/register/options` | `any-builder` | validated | POST /api/bongos/me/passkeys/register/options — start adding a card. |
|
|
614
616
|
| POST | `/api/bongos/me/passkeys/register/verify` | `any-builder` | `response`, `nickname` | POST /api/bongos/me/passkeys/register/verify — finish adding a card. |
|
package/docs/architecture.md
CHANGED
|
@@ -273,6 +273,8 @@ store_module_prices(id, module_key, price_cents, price_credits, set_by, set_at)
|
|
|
273
273
|
|
|
274
274
|
Passkey foundation (migration `core_277`, task 1004750, [ADR 0382](adr/0382-a-hardware-card-is-a-passkey-step-up-an-archon-switches-on-per-builder.md) D1/D6 — storage only; the ceremonies and routes are their own tasks; code in `src/bongos/passkeys.js`):
|
|
275
275
|
|
|
276
|
+
Card step-up gate (migration `core_298`, task 1004747, ADR 0382 D2/D5; code in `src/bongos/step-up.js`): `builders.require_card` (default false) + `builder_sessions.card_verified_at`, stamped only by `POST /me/passkeys/authenticate/verify`. `requireCardStepUp` (also `api.requireCardStepUp` for modules) refuses 403 `card_required` when the builder's flag is on and the session has no card tap in the last 10 minutes; it fails closed. Mounted on rank set, admin session revoke (the own-session panic button stays open), render-deploy act + PUT app, treasury pots/borrow answers. The Archon switch that sets the flag is task 1004748.
|
|
277
|
+
|
|
276
278
|
```
|
|
277
279
|
passkey_credentials(id, credential_id UNIQUE, builder_id FK, public_key bytea, sign_count,
|
|
278
280
|
transports[], aaguid, nickname, created_at, last_used_at)
|
|
@@ -322,7 +324,7 @@ payout_tax_details(id, builder_id, status collected|incomplete, collected_by pro
|
|
|
322
324
|
-- POST /payouts/ndas, POST /payouts/tax-details (payout.approve + web session).
|
|
323
325
|
```
|
|
324
326
|
|
|
325
|
-
Builder payouts (migration `
|
|
327
|
+
Builder payouts (migration `core_298`, task 1003183, [ADR 0397](adr/0397-the-payment-rail-is-stripe-connect-with-one-connected-account-per-project.md) D7 — a builder is paid for a task exactly once; `src/bongos/builder-payouts.js`, routes `GET`/`POST /payouts/builder-payouts` gated `payout.approve` plus the person's own web session for the POST; the `payout` movement is booked through the economy module's `economy.account` port in the same transaction. No processor adapter exists yet, so every payout is recorded owed and held `no_processor`):
|
|
326
328
|
|
|
327
329
|
```
|
|
328
330
|
builder_payouts_owed(id, builder_id FK, task_id FK, approval_id FK payout_approvals,
|
|
@@ -3440,5 +3440,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
3440
3440
|
landed since 1.24.94 with no explicit bump. run 43304959846. (task 1002620)
|
|
3441
3441
|
1.24.96 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3442
3442
|
landed since 1.24.95 with no explicit bump. run 43307125735. (task 1002620)
|
|
3443
|
+
1.25.0 — adds `requireCardStepUp`, the hardware-card step-up gate a module mounts
|
|
3444
|
+
after its permission gate (task 1004747, ADR 0382). Additive, so MINOR.
|
|
3445
|
+
1.25.1 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3446
|
+
landed since 1.25.0 with no explicit bump. run 43313162829. (task 1002620)
|
|
3443
3447
|
---------------------------------------------------------------------------
|
|
3444
3448
|
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- core_298 card step-up: the per-builder requirement flag and the per-session proof
|
|
2
|
+
-- Applied under task 1004747 (ADR 0382 D2, D4).
|
|
3
|
+
--
|
|
4
|
+
-- WHY. A builder who has a registered hardware card can be required to tap it before
|
|
5
|
+
-- the sensitive actions (rank changes, deploy, session revoke, payouts). The server
|
|
6
|
+
-- needs two things to keep: whether the requirement is on for a builder, and when a
|
|
7
|
+
-- given session last proved a card.
|
|
8
|
+
--
|
|
9
|
+
-- * builders.require_card default false: nothing changes for anybody until an
|
|
10
|
+
-- Archon switches it on (that switch is its own task). Read fresh per request.
|
|
11
|
+
-- * builder_sessions.card_verified_at set ONLY by the card verify route, on the
|
|
12
|
+
-- server-side session row. Nothing the client sends counts as proof, and a new
|
|
13
|
+
-- session starts with none.
|
|
14
|
+
|
|
15
|
+
ALTER TABLE builders ADD COLUMN IF NOT EXISTS require_card boolean NOT NULL DEFAULT false;
|
|
16
|
+
ALTER TABLE builder_sessions ADD COLUMN IF NOT EXISTS card_verified_at timestamptz;
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
"default": true,
|
|
9
9
|
"maintenance": { "status": "core-maintained" },
|
|
10
10
|
"contributes": { "migrations": true, "routes": ["cost", "credits", "earnings", "leaderboard", "project-account", "balances", "reward"], "pollers": ["ledger-check"] },
|
|
11
|
-
"provides": ["reward", "economy.account"],
|
|
11
|
+
"provides": ["reward", "economy.account", "economy.processor"],
|
|
12
12
|
"consumes": []
|
|
13
13
|
}
|