@bongos/core 1.24.90 → 1.24.92
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 -38
- package/.claude/skills/builder-reauth/SKILL.md +23 -25
- package/clients/bongos-client/index.d.ts +2 -1
- package/docs/adr/0396-google-sign-in-a-stand-in-login-and-a-browser-approved-cli-sign-in.md +8 -0
- package/docs/api/openapi.json +22 -2
- package/docs/api-reference.md +1 -1
- package/docs/copy-inventory.md +7 -7
- package/docs/copy-registry.json +7 -7
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +35 -35
- package/modules/hall-ui/public/city.css +6 -2
- package/modules/hall-ui/public/city.js +44 -2
- package/modules/hall-ui/public/shell-game.css +23 -13
- package/modules/hall-ui/public/shell-game.js +5 -4
- package/modules/hall-ui/public/visor.js +18 -3
- package/modules/hall-ui/records/start-screen.md +2 -0
- package/modules/hall-ui/records/visor.md +7 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +14 -0
- package/scripts/bongos/cli-lib.js +7 -6
- package/scripts/bongos/login.js +14 -3
- package/scripts/bongos/plain-cards.js +1 -1
- package/scripts/bongos/reauth.js +100 -50
- package/src/bongos/routes/auth-google.js +5 -3
- package/src/bongos/routes/auth.js +3 -3
- package/src/bongos/sign-in-pages.js +1 -2
- package/src/module-api.js +1 -1
- package/tests/cli_reauth_browser.mjs +157 -0
- package/tests/hall_city.mjs +41 -1
- package/tests/hall_city_living.mjs +2 -0
- package/tests/hall_start_screen.mjs +2 -1
- package/tests/hall_visor.mjs +27 -1
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.92",
|
|
6
|
+
"core_contract": "1.24.92",
|
|
7
|
+
"source_commit": "5c483e2ab47fc0cca7356e60e6cc00e055dba066",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-11-
|
|
9
|
+
"built_at": "2026-11-12T20:04:52.110Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 650,
|
|
13
13
|
"agent_docs_stubbed": 32,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3965,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4648,
|
|
20
|
+
"tree_sha256": "4efb5396f6e0daf17115f129bef70f7f252a5ba802e08886aa949d036aab5353",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
{
|
|
83
83
|
"path": ".claude/skills/builder-reauth/SKILL.md",
|
|
84
84
|
"mode": "0000644",
|
|
85
|
-
"sha256": "
|
|
85
|
+
"sha256": "66a2755314dbf7e4ede87854b8a47730f0603196ab79498f85b5a8ba175e155d"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"path": ".claude/skills/builder-redteam/SKILL.md",
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/index.d.ts",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "61118835fbddfe0f7a64113ccc4b9e2f79ea095b4c7bef0b079250a83871f652"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/index.mjs",
|
|
@@ -2442,7 +2442,7 @@
|
|
|
2442
2442
|
{
|
|
2443
2443
|
"path": "docs/adr/0396-google-sign-in-a-stand-in-login-and-a-browser-approved-cli-sign-in.md",
|
|
2444
2444
|
"mode": "0000644",
|
|
2445
|
-
"sha256": "
|
|
2445
|
+
"sha256": "fc77036762aa8daa9820f22f0d75dfaa63c1de282efe9124cfbc31fdc2d45cf7"
|
|
2446
2446
|
},
|
|
2447
2447
|
{
|
|
2448
2448
|
"path": "docs/adr/0397-the-payment-rail-is-stripe-connect-with-one-connected-account-per-project.md",
|
|
@@ -2487,12 +2487,12 @@
|
|
|
2487
2487
|
{
|
|
2488
2488
|
"path": "docs/api-reference.md",
|
|
2489
2489
|
"mode": "0000644",
|
|
2490
|
-
"sha256": "
|
|
2490
|
+
"sha256": "dd3ab48cc4735ba7af87f656b299ede977c38623318350b6b32191538c6f8b52"
|
|
2491
2491
|
},
|
|
2492
2492
|
{
|
|
2493
2493
|
"path": "docs/api/openapi.json",
|
|
2494
2494
|
"mode": "0000644",
|
|
2495
|
-
"sha256": "
|
|
2495
|
+
"sha256": "8004732e03a7d1cead9cba35155c8336015e23f509fcd2b1ef13fbf887a549ec"
|
|
2496
2496
|
},
|
|
2497
2497
|
{
|
|
2498
2498
|
"path": "docs/architecture.md",
|
|
@@ -2517,12 +2517,12 @@
|
|
|
2517
2517
|
{
|
|
2518
2518
|
"path": "docs/copy-inventory.md",
|
|
2519
2519
|
"mode": "0000644",
|
|
2520
|
-
"sha256": "
|
|
2520
|
+
"sha256": "daec3c74bc27e603c5ded55ed72be5e4c82cd31efc5b9363a7755eb91b97f56c"
|
|
2521
2521
|
},
|
|
2522
2522
|
{
|
|
2523
2523
|
"path": "docs/copy-registry.json",
|
|
2524
2524
|
"mode": "0000644",
|
|
2525
|
-
"sha256": "
|
|
2525
|
+
"sha256": "2a1347d59793c3b152b0179523fbcff57a5edacb3ac043bfad321d50d38f7bc4"
|
|
2526
2526
|
},
|
|
2527
2527
|
{
|
|
2528
2528
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -3037,7 +3037,7 @@
|
|
|
3037
3037
|
{
|
|
3038
3038
|
"path": "docs/module-api-changelog.md",
|
|
3039
3039
|
"mode": "0000644",
|
|
3040
|
-
"sha256": "
|
|
3040
|
+
"sha256": "88e6ca24e358d295f74a7dd741f610062d3f44043b617d5a06c83f55164090d7"
|
|
3041
3041
|
},
|
|
3042
3042
|
{
|
|
3043
3043
|
"path": "docs/modules-contract.md",
|
|
@@ -3122,7 +3122,7 @@
|
|
|
3122
3122
|
{
|
|
3123
3123
|
"path": "docs/page-readings.json",
|
|
3124
3124
|
"mode": "0000644",
|
|
3125
|
-
"sha256": "
|
|
3125
|
+
"sha256": "46fa6c491c705c13c961d1efbe3453ca2afd1d56f0b230f6024435f6b605f072"
|
|
3126
3126
|
},
|
|
3127
3127
|
{
|
|
3128
3128
|
"path": "docs/project-context.template.md",
|
|
@@ -6222,7 +6222,7 @@
|
|
|
6222
6222
|
{
|
|
6223
6223
|
"path": "modules/hall-ui/public/city.css",
|
|
6224
6224
|
"mode": "0000644",
|
|
6225
|
-
"sha256": "
|
|
6225
|
+
"sha256": "4696bb120ec74640555ad747711986e96dea49c658e782f77f1042b9f70a0ecd"
|
|
6226
6226
|
},
|
|
6227
6227
|
{
|
|
6228
6228
|
"path": "modules/hall-ui/public/city.html",
|
|
@@ -6232,7 +6232,7 @@
|
|
|
6232
6232
|
{
|
|
6233
6233
|
"path": "modules/hall-ui/public/city.js",
|
|
6234
6234
|
"mode": "0000644",
|
|
6235
|
-
"sha256": "
|
|
6235
|
+
"sha256": "3ad52ec95501913a0a4bbb8378c33e3e1f8459d4b233b96c88db012d1f68a66b"
|
|
6236
6236
|
},
|
|
6237
6237
|
{
|
|
6238
6238
|
"path": "modules/hall-ui/public/city.states.json",
|
|
@@ -7172,12 +7172,12 @@
|
|
|
7172
7172
|
{
|
|
7173
7173
|
"path": "modules/hall-ui/public/shell-game.css",
|
|
7174
7174
|
"mode": "0000644",
|
|
7175
|
-
"sha256": "
|
|
7175
|
+
"sha256": "72c68b09d2736d3d7c844eca2766dee3fa22e65531c6ad2d9ebb5e10fc74c307"
|
|
7176
7176
|
},
|
|
7177
7177
|
{
|
|
7178
7178
|
"path": "modules/hall-ui/public/shell-game.js",
|
|
7179
7179
|
"mode": "0000644",
|
|
7180
|
-
"sha256": "
|
|
7180
|
+
"sha256": "8bdeb71a631a2e303608dfa45a7d38ed083c6b25aad14e55024e6b8ba534897f"
|
|
7181
7181
|
},
|
|
7182
7182
|
{
|
|
7183
7183
|
"path": "modules/hall-ui/public/shell-trail.js",
|
|
@@ -7442,7 +7442,7 @@
|
|
|
7442
7442
|
{
|
|
7443
7443
|
"path": "modules/hall-ui/public/visor.js",
|
|
7444
7444
|
"mode": "0000644",
|
|
7445
|
-
"sha256": "
|
|
7445
|
+
"sha256": "862ab2d430e0fc42bed3e757af5a07e672022803f098c3acc7582a62592f5ac1"
|
|
7446
7446
|
},
|
|
7447
7447
|
{
|
|
7448
7448
|
"path": "modules/hall-ui/public/vote-control.js",
|
|
@@ -7732,7 +7732,7 @@
|
|
|
7732
7732
|
{
|
|
7733
7733
|
"path": "modules/hall-ui/records/start-screen.md",
|
|
7734
7734
|
"mode": "0000644",
|
|
7735
|
-
"sha256": "
|
|
7735
|
+
"sha256": "974f95a4486cfa02b77d59c537332759bb3beea9facd208ab7b0f565f3c731b4"
|
|
7736
7736
|
},
|
|
7737
7737
|
{
|
|
7738
7738
|
"path": "modules/hall-ui/records/studio.md",
|
|
@@ -7752,7 +7752,7 @@
|
|
|
7752
7752
|
{
|
|
7753
7753
|
"path": "modules/hall-ui/records/visor.md",
|
|
7754
7754
|
"mode": "0000644",
|
|
7755
|
-
"sha256": "
|
|
7755
|
+
"sha256": "a8d42170b6a0b27e8f75f3866c936c72f06c35a8ef44ae2bc7d034c213736d26"
|
|
7756
7756
|
},
|
|
7757
7757
|
{
|
|
7758
7758
|
"path": "modules/hall-ui/records/welcome-tower.md",
|
|
@@ -12102,12 +12102,12 @@
|
|
|
12102
12102
|
{
|
|
12103
12103
|
"path": "package-lock.json",
|
|
12104
12104
|
"mode": "0000644",
|
|
12105
|
-
"sha256": "
|
|
12105
|
+
"sha256": "0991d22207637a766189c9d741ee4e8c166d315554259886978355b181da37be"
|
|
12106
12106
|
},
|
|
12107
12107
|
{
|
|
12108
12108
|
"path": "package.json",
|
|
12109
12109
|
"mode": "0000644",
|
|
12110
|
-
"sha256": "
|
|
12110
|
+
"sha256": "1de1dbdb758d263abd1d822870f785231ec5f9dae3e115345741911f5c325a17"
|
|
12111
12111
|
},
|
|
12112
12112
|
{
|
|
12113
12113
|
"path": "public-docs/index.html",
|
|
@@ -12127,7 +12127,7 @@
|
|
|
12127
12127
|
{
|
|
12128
12128
|
"path": "release-notes.json",
|
|
12129
12129
|
"mode": "0000644",
|
|
12130
|
-
"sha256": "
|
|
12130
|
+
"sha256": "28d81c1f519f6dcfdf35231190bf317d97a1920e15930f92a98fafcc20e47027"
|
|
12131
12131
|
},
|
|
12132
12132
|
{
|
|
12133
12133
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -12417,7 +12417,7 @@
|
|
|
12417
12417
|
{
|
|
12418
12418
|
"path": "scripts/bongos/cli-lib.js",
|
|
12419
12419
|
"mode": "0000644",
|
|
12420
|
-
"sha256": "
|
|
12420
|
+
"sha256": "49a35fbc1523b75e922ed79ff473e833a8cae915d46d36981b8993eb522571be"
|
|
12421
12421
|
},
|
|
12422
12422
|
{
|
|
12423
12423
|
"path": "scripts/bongos/client-baseurl-guard.js",
|
|
@@ -12937,7 +12937,7 @@
|
|
|
12937
12937
|
{
|
|
12938
12938
|
"path": "scripts/bongos/login.js",
|
|
12939
12939
|
"mode": "0000644",
|
|
12940
|
-
"sha256": "
|
|
12940
|
+
"sha256": "c6e9232bae6700d8e4bebfd11796b00ee850ae78da5ae689dcc109366bb46600"
|
|
12941
12941
|
},
|
|
12942
12942
|
{
|
|
12943
12943
|
"path": "scripts/bongos/main-audit.js",
|
|
@@ -13127,7 +13127,7 @@
|
|
|
13127
13127
|
{
|
|
13128
13128
|
"path": "scripts/bongos/plain-cards.js",
|
|
13129
13129
|
"mode": "0000644",
|
|
13130
|
-
"sha256": "
|
|
13130
|
+
"sha256": "755fdb4f7596c114a888fbdaf540e82bccd184b6ae7b4bf01d8163b3f0b9ed0e"
|
|
13131
13131
|
},
|
|
13132
13132
|
{
|
|
13133
13133
|
"path": "scripts/bongos/portability-smoke-art.sh",
|
|
@@ -13292,7 +13292,7 @@
|
|
|
13292
13292
|
{
|
|
13293
13293
|
"path": "scripts/bongos/reauth.js",
|
|
13294
13294
|
"mode": "0000644",
|
|
13295
|
-
"sha256": "
|
|
13295
|
+
"sha256": "5d62a84e7f2e35ab6fa37c5fd7b37bd9baf48b7bc984591a01c8850665746f88"
|
|
13296
13296
|
},
|
|
13297
13297
|
{
|
|
13298
13298
|
"path": "scripts/bongos/recall.js",
|
|
@@ -15912,7 +15912,7 @@
|
|
|
15912
15912
|
{
|
|
15913
15913
|
"path": "src/bongos/routes/auth-google.js",
|
|
15914
15914
|
"mode": "0000644",
|
|
15915
|
-
"sha256": "
|
|
15915
|
+
"sha256": "7d42cf2a68ebf6d852cc63fdfb8774867221b880025669d5f9a29ac20f26bd9d"
|
|
15916
15916
|
},
|
|
15917
15917
|
{
|
|
15918
15918
|
"path": "src/bongos/routes/auth-link.js",
|
|
@@ -15922,7 +15922,7 @@
|
|
|
15922
15922
|
{
|
|
15923
15923
|
"path": "src/bongos/routes/auth.js",
|
|
15924
15924
|
"mode": "0000644",
|
|
15925
|
-
"sha256": "
|
|
15925
|
+
"sha256": "438f7feeb87eb85b4aaca2bf20e0304d95822a8e77c92f9c2a042a90dd0bb03d"
|
|
15926
15926
|
},
|
|
15927
15927
|
{
|
|
15928
15928
|
"path": "src/bongos/routes/backup.js",
|
|
@@ -16062,7 +16062,7 @@
|
|
|
16062
16062
|
{
|
|
16063
16063
|
"path": "src/bongos/sign-in-pages.js",
|
|
16064
16064
|
"mode": "0000644",
|
|
16065
|
-
"sha256": "
|
|
16065
|
+
"sha256": "8f93a2b576e4f2b2bdaf8feec2a8c6c4b23f31be4c071f119a4ca56f39e5fa6c"
|
|
16066
16066
|
},
|
|
16067
16067
|
{
|
|
16068
16068
|
"path": "src/bongos/software-update.js",
|
|
@@ -16132,7 +16132,7 @@
|
|
|
16132
16132
|
{
|
|
16133
16133
|
"path": "src/module-api.js",
|
|
16134
16134
|
"mode": "0000644",
|
|
16135
|
-
"sha256": "
|
|
16135
|
+
"sha256": "d01b0c8ee350427a447cb9f10713e5abbf76d49f57702e7dee8942a8c2de39e1"
|
|
16136
16136
|
},
|
|
16137
16137
|
{
|
|
16138
16138
|
"path": "src/module-loader/catalog.js",
|
|
@@ -17174,6 +17174,11 @@
|
|
|
17174
17174
|
"mode": "0000644",
|
|
17175
17175
|
"sha256": "79c57041a871f9700682ac96cebf5d07fe393cc274b5549e8659cad34f44cee1"
|
|
17176
17176
|
},
|
|
17177
|
+
{
|
|
17178
|
+
"path": "tests/cli_reauth_browser.mjs",
|
|
17179
|
+
"mode": "0000644",
|
|
17180
|
+
"sha256": "758964ef9d4d5d1921162aab1e86a4fb07fe7347aca5866391c8dd33ce67d94d"
|
|
17181
|
+
},
|
|
17177
17182
|
{
|
|
17178
17183
|
"path": "tests/cli_sessions.mjs",
|
|
17179
17184
|
"mode": "0000644",
|
|
@@ -19027,7 +19032,7 @@
|
|
|
19027
19032
|
{
|
|
19028
19033
|
"path": "tests/hall_city.mjs",
|
|
19029
19034
|
"mode": "0000644",
|
|
19030
|
-
"sha256": "
|
|
19035
|
+
"sha256": "5483169cd2c06f4782662148aa8bd7381db888c6c2052f63b92582d8c80677ac"
|
|
19031
19036
|
},
|
|
19032
19037
|
{
|
|
19033
19038
|
"path": "tests/hall_city_card_words.mjs",
|
|
@@ -19037,7 +19042,7 @@
|
|
|
19037
19042
|
{
|
|
19038
19043
|
"path": "tests/hall_city_living.mjs",
|
|
19039
19044
|
"mode": "0000644",
|
|
19040
|
-
"sha256": "
|
|
19045
|
+
"sha256": "a8d7ef26e5f647dac6fb03d3759968585ef0146a03de6c8e2897c0943c6db1ee"
|
|
19041
19046
|
},
|
|
19042
19047
|
{
|
|
19043
19048
|
"path": "tests/hall_city_rewording.mjs",
|
|
@@ -19307,7 +19312,7 @@
|
|
|
19307
19312
|
{
|
|
19308
19313
|
"path": "tests/hall_start_screen.mjs",
|
|
19309
19314
|
"mode": "0000644",
|
|
19310
|
-
"sha256": "
|
|
19315
|
+
"sha256": "2bd3eb149849acd71eb004177e6afd0541157e274453951c4903b21e9d61f5b5"
|
|
19311
19316
|
},
|
|
19312
19317
|
{
|
|
19313
19318
|
"path": "tests/hall_states_regex_escapes.mjs",
|
|
@@ -19387,7 +19392,7 @@
|
|
|
19387
19392
|
{
|
|
19388
19393
|
"path": "tests/hall_visor.mjs",
|
|
19389
19394
|
"mode": "0000644",
|
|
19390
|
-
"sha256": "
|
|
19395
|
+
"sha256": "059033debd304e748ec9b79b127ff3c188b474d7e81570c8cbe8dea9a8cec1b6"
|
|
19391
19396
|
},
|
|
19392
19397
|
{
|
|
19393
19398
|
"path": "tests/hall_work_history_id.mjs",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: builder-reauth
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
4
|
+
Sign the CLI back in with one browser click. Triggers: "/builder-reauth", "re-auth", "sign me back in", "refresh my session", "re-issue my CLI token", or any /builder-* failing with "Bongos CLI session is no longer valid".
|
|
5
5
|
plain: >-
|
|
6
6
|
Signs your assistant back in when its sign-in to the project has expired.
|
|
7
7
|
reach-for: >-
|
|
@@ -10,7 +10,7 @@ cost: >-
|
|
|
10
10
|
Free. It replaces your saved sign-in and changes nothing else.
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
You are
|
|
13
|
+
You are signing the current builder's command line back in to Bongos. CLI sessions **do not expire** — since [ADR 0294](../../../docs/adr/0294-cli-sessions-do-not-expire.md) a session lasts until it is revoked. So a rejected session means something killed it: the builder (or an Archon) revoked it, a demotion swept it, or an auth-changing deploy invalidated it. This skill gets them back in with **one Approve click in their browser** — nothing to copy, nothing to paste, and the token never passes through the chat (task 1005118).
|
|
14
14
|
|
|
15
15
|
## Why there is no expiry (so you can explain it if asked)
|
|
16
16
|
|
|
@@ -18,42 +18,40 @@ There used to be a 24h idle TTL, for auth-token hygiene (GDS-V3 criterion **C9**
|
|
|
18
18
|
|
|
19
19
|
What actually bounds a leaked token is **revocation**, and it is faster than any clock: the builder kills it themselves from Settings → Active sessions or "Sign out everywhere" ([ADR 0206](../../../docs/adr/0206-own-scoped-session-revocation-no-absolute-ceiling.md)). Rank changes were never the TTL's job either — demotion calls `revokeAllSessionsForBuilder` synchronously and rank is read fresh from the DB on every request ([ADR 0016](../../../docs/adr/0016-trust-boundary-server-enforced-permissions.md)).
|
|
20
20
|
|
|
21
|
-
## The flow (
|
|
21
|
+
## The flow (one click)
|
|
22
22
|
|
|
23
|
-
1. **
|
|
23
|
+
1. **Say what is about to happen, in one line**, before running anything: a page will open in their browser; they check the code and click **Approve**, and you carry on by yourself.
|
|
24
|
+
|
|
25
|
+
2. **Run the helper with a long timeout** — it waits for the click (up to ten minutes):
|
|
24
26
|
```bash
|
|
25
27
|
node scripts/bongos/reauth.js
|
|
26
28
|
```
|
|
27
|
-
|
|
28
|
-
- **Exit
|
|
29
|
-
- **Exit
|
|
29
|
+
Give the Bash call `timeout: 600000`. The helper checks the current session first; if it is broken it asks the instance for its own approval page (`approve_in_browser`), opens it with the code filled in, waits for the click, and saves the new session itself.
|
|
30
|
+
- **Exit 0** → signed in. Either the session was already working (say so — do NOT re-sign-in a working session) or the approval just landed. Relay who they are signed in as, then re-run whatever `/builder-*` command they were trying.
|
|
31
|
+
- **Exit 10** → not signed in: they pressed Cancel, the page ran out, or the account is not let in. The helper says which and prints the fallback below. Offer to run it again once; if that also fails, use the fallback.
|
|
32
|
+
- **Exit 2** → the instance was unreachable (network). The session may be fine; let them retry once they are back online.
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
- Open `https://example.com/builders/settings` (the helper tries to open it automatically; if not, give them the link).
|
|
33
|
-
- They are already signed in there via the browser cookie. Under the **"CLI Access"** section, click **"Re-issue CLI token"**.
|
|
34
|
-
- Click **"Copy"** — it copies a one-line command of the form `bongos paste-token <token>`.
|
|
35
|
-
- Ask them to **paste that one line back into the chat**.
|
|
34
|
+
3. **If the page says they are not signed in** in the browser, it shows a **Continue with GitHub** button (and Google where the instance offers it). They sign in there and land straight back on the Approve page — the helper is still waiting.
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
## Fallback — the copied line (no browser on this machine)
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
Only when the one-click path cannot work — a remote/SSH machine with no browser, or the click path failed twice — run `node scripts/bongos/reauth.js --paste` and relay its click-path: Settings → **CLI Access** → **Re-issue CLI token** → **Copy**, then paste the `bongos paste-token <token>` line back into the chat and run it exactly as given. `paste-token.js` verifies the token before writing and preserves `gemini_api_key`. This path puts the token in the chat, so never echo it beyond running that one command, and never write it anywhere yourself.
|
|
40
39
|
|
|
41
40
|
## Edge cases
|
|
42
41
|
|
|
43
|
-
- **
|
|
44
|
-
- **No session file at all (fresh machine).** The helper
|
|
45
|
-
- **
|
|
46
|
-
- **Fallback — terminal Device Flow.** If the browser path is unavailable for any reason, `node scripts/bongos/setup.js --force` re-auths via GitHub Device Flow (terminal code entry). Slower and not UI-first; use only when the hall route can't be used.
|
|
42
|
+
- **An instance older than task 1005118** ignores the browser-approval ask and answers GitHub's own device flow: the helper prints a code and opens github.com/login/device. Relay the code; the person types it there and approves. It still finishes by itself.
|
|
43
|
+
- **No session file at all (fresh machine).** The helper runs the same browser approval. A brand-new builder who has never signed in anywhere uses `/builder-setup` instead.
|
|
44
|
+
- **Several projects on one machine.** The helper signs in to the project the active session names (or `BONGOS_API_BASE`). Saving goes through the per-instance store (ADR 0269), so other projects' sign-ins are kept.
|
|
47
45
|
|
|
48
46
|
## Constraints
|
|
49
47
|
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **`
|
|
48
|
+
- **Don't re-sign-in a working session.** If the helper says the sign-in is working, stop.
|
|
49
|
+
- **Never ask for or accept a token in chat** on the one-click path — there is none to handle. Only the fallback carries one.
|
|
50
|
+
- **`BONGOS_API_BASE`** overrides the instance (for local dev `BONGOS_API_BASE=http://localhost:3000`).
|
|
53
51
|
|
|
54
52
|
## Files this skill touches
|
|
55
53
|
|
|
56
|
-
- Runs: `node scripts/bongos/reauth.js` (detect
|
|
57
|
-
- Runs: `bongos paste-token <token>`
|
|
58
|
-
-
|
|
59
|
-
- Calls: `GET /api/bongos/me`; the
|
|
54
|
+
- Runs: `node scripts/bongos/reauth.js` (detect, browser approval, save) — `--paste` for the fallback
|
|
55
|
+
- Runs (fallback only): `bongos paste-token <token>`
|
|
56
|
+
- Writes (via `saveSession`): the active session file and the per-instance store under `~/.config/cloudbongos/`
|
|
57
|
+
- Calls: `GET /api/bongos/me`, `POST /api/bongos/auth/device/start` + `/auth/device/poll`; the browser page is `/api/bongos/auth/device`
|
|
@@ -322,6 +322,7 @@ export interface PostAuthDeviceApproveRequest { user_code: string; decision: "ap
|
|
|
322
322
|
export interface PostAuthDeviceExchangeRequest { assertion: string }
|
|
323
323
|
export interface PostAuthDeviceExchangeResponse { token: unknown; builder: unknown }
|
|
324
324
|
export interface PostAuthDevicePollRequest { device_code: string }
|
|
325
|
+
export interface PostAuthDeviceStartRequest { approve_in_browser?: boolean }
|
|
325
326
|
export interface PostAuthDiscordUnlinkResponse { ok: boolean; unlinked: unknown }
|
|
326
327
|
export interface PostAuthLogoutResponse { ok: boolean }
|
|
327
328
|
export interface PostAuthRevokeAllRequest { builder_id?: StringifiableId }
|
|
@@ -839,7 +840,7 @@ export interface BongosClient {
|
|
|
839
840
|
/** POST /auth/device/poll — rank: public */
|
|
840
841
|
postAuthDevicePoll(args: RequestArgs & { body: PostAuthDevicePollRequest }): Promise<ApiResponse>;
|
|
841
842
|
/** POST /auth/device/start — rank: public */
|
|
842
|
-
postAuthDeviceStart(args?: RequestArgs): Promise<ApiResponse>;
|
|
843
|
+
postAuthDeviceStart(args?: RequestArgs & { body?: PostAuthDeviceStartRequest }): Promise<ApiResponse>;
|
|
843
844
|
/** GET /auth/discord/callback — rank: any-builder */
|
|
844
845
|
getAuthDiscordCallback(args?: RequestArgs): Promise<ApiResponse>;
|
|
845
846
|
/** GET /auth/discord/start — rank: any-builder */
|
|
@@ -58,3 +58,11 @@ Credits, ranks and community pages needed no change: the hub's check-in and roll
|
|
|
58
58
|
- **Removing.** Never the last way in. And never GitHub from an account born with it: that account's key is its GitHub id, so a GitHub sign-in would still reach it and the removal would be a lie. A person who joined with Google may remove a linked GitHub, and then shows their stand-in again from their next sign-in.
|
|
59
59
|
- **Every GitHub sign-in on the hub finds the person first** (the ADR 0393 carry-over, closed): the web and device sign-ins ask the hub who the GitHub id reaches and use that key. A project's command-line sign-in (`/sso/device/poll`) cannot tell whether the project takes a minted key, so for a GitHub account linked to someone who joined with Google it says to sign in in the browser.
|
|
60
60
|
- **Matching emails suggest, never join.** This amends decision 3's "emails are never looked up" in one place only: on a first Google sign-in, if another account's GitHub way in shows the address Google verified, the person is offered "Sign in with GitHub" (then link Google from the account page) or "Make a new account with Google". Only the provider's name crosses; no account is named or joined. The hub keeps the GitHub address it sees at sign-in (GitHub's public address) for this alone.
|
|
61
|
+
|
|
62
|
+
## Amendment — every re-sign-in is approved in the browser (task 1005118)
|
|
63
|
+
|
|
64
|
+
Decision 6 sent the terminal to the approval page only where Google is offered. A returning builder whose CLI session was revoked then had a four-step way back on every other instance: Settings → Re-issue CLI token → Copy → paste a `bongos paste-token <token>` line into the chat, which put a live bearer in the chat history.
|
|
65
|
+
|
|
66
|
+
So `/auth/device/start` now also answers with the approval page when the CLI asks for it (`{ "approve_in_browser": true }`), Google or not, and `scripts/bongos/reauth.js` asks. The browser is usually already signed in, so the way back is one Approve click and the token never leaves the server-to-terminal poll. On a GitHub-only instance the page's sign-in step offers GitHub alone.
|
|
67
|
+
|
|
68
|
+
A plain start is unchanged: a first sign-in on a GitHub-only instance keeps GitHub's device flow, because its `not_approved` answer is what `bongos login` turns into an access request. An older instance ignores the ask and answers GitHub's flow, which the CLI runs as before. The paste path stays as the fallback for a machine with no browser (`reauth.js --paste`).
|
package/docs/api/openapi.json
CHANGED
|
@@ -2040,12 +2040,23 @@
|
|
|
2040
2040
|
"description": "/auth/device — CLI flow rank: public — auth flow itself; identity establishment, not authorization.\n\n**Rank:** `public` — No authentication — any caller.",
|
|
2041
2041
|
"x-rank": "public",
|
|
2042
2042
|
"x-source": "src/bongos/routes/auth.js",
|
|
2043
|
+
"requestBody": {
|
|
2044
|
+
"required": false,
|
|
2045
|
+
"content": {
|
|
2046
|
+
"application/json": {
|
|
2047
|
+
"schema": {
|
|
2048
|
+
"$ref": "#/components/schemas/PostAuthDeviceStartRequest"
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
2052
|
+
"x-validated": true
|
|
2053
|
+
},
|
|
2043
2054
|
"responses": {
|
|
2044
2055
|
"200": {
|
|
2045
2056
|
"description": "Success."
|
|
2046
2057
|
},
|
|
2047
2058
|
"400": {
|
|
2048
|
-
"$ref": "#/components/responses/
|
|
2059
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
2049
2060
|
}
|
|
2050
2061
|
},
|
|
2051
2062
|
"security": []
|
|
@@ -36584,6 +36595,15 @@
|
|
|
36584
36595
|
],
|
|
36585
36596
|
"additionalProperties": false
|
|
36586
36597
|
},
|
|
36598
|
+
"PostAuthDeviceStartRequest": {
|
|
36599
|
+
"type": "object",
|
|
36600
|
+
"properties": {
|
|
36601
|
+
"approve_in_browser": {
|
|
36602
|
+
"type": "boolean"
|
|
36603
|
+
}
|
|
36604
|
+
},
|
|
36605
|
+
"additionalProperties": false
|
|
36606
|
+
},
|
|
36587
36607
|
"PostAuthDiscordUnlinkResponse": {
|
|
36588
36608
|
"type": "object",
|
|
36589
36609
|
"properties": {
|
|
@@ -43542,7 +43562,7 @@
|
|
|
43542
43562
|
}
|
|
43543
43563
|
},
|
|
43544
43564
|
"x-endpoint-count": 696,
|
|
43545
|
-
"x-schema-count":
|
|
43565
|
+
"x-schema-count": 731,
|
|
43546
43566
|
"x-undocumented-bodies": 12,
|
|
43547
43567
|
"x-response-schemas": 462,
|
|
43548
43568
|
"x-generated-by": "scripts/bongos/gen-api-docs.js"
|
package/docs/api-reference.md
CHANGED
|
@@ -88,7 +88,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
88
88
|
| POST | `/api/bongos/auth/device/approve` | `any-builder` | `user_code`, `decision` | (own identity only) — mints a CLI session for the signed-in person themselves, from their browser cookie, never from a bearer (the /auth/… |
|
|
89
89
|
| POST | `/api/bongos/auth/device/exchange` | `public` | `assertion` | POST /auth/device/exchange — CLI federation (ADR 0141 §1). |
|
|
90
90
|
| POST | `/api/bongos/auth/device/poll` | `public` | `device_code` | auth flow; the device code itself is the bearer. |
|
|
91
|
-
| POST | `/api/bongos/auth/device/start` | `public` |
|
|
91
|
+
| POST | `/api/bongos/auth/device/start` | `public` | `approve_in_browser` | /auth/device — CLI flow rank: public — auth flow itself; identity establishment, not authorization. |
|
|
92
92
|
| GET | `/api/bongos/auth/discord/callback` | `any-builder` | — | completes the link to the caller's own identity. |
|
|
93
93
|
| GET | `/api/bongos/auth/discord/start` | `any-builder` | — | /auth/discord — account-linking OAuth (Phase 3 F2, ADR 0033 §2). |
|
|
94
94
|
| POST | `/api/bongos/auth/discord/unlink` | `any-builder` | — | unlink your OWN Discord. |
|
package/docs/copy-inventory.md
CHANGED
|
@@ -316,9 +316,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
316
316
|
| `4df46e2be815` | certain | Clear the key? | `modules/hall-ui/public/market-watch-settings.js:218` |
|
|
317
317
|
| `593dda3178eb` | certain | Click to copy | `modules/hall-ui/public/copy-on-click.js:137` |
|
|
318
318
|
| `34624d39ff29` | certain | Clone the project to your machine and run | `modules/hall-ui/public/setup-gate.js:34` |
|
|
319
|
-
| `3a426bad2c49` | certain | Close actions | `modules/hall-ui/public/visor.js:
|
|
319
|
+
| `3a426bad2c49` | certain | Close actions | `modules/hall-ui/public/visor.js:232` |
|
|
320
320
|
| `70f6a704d504` | certain | Close it | `modules/hall-ui/public/copy-desk.html:140` |
|
|
321
|
-
| `053e576ba9a3` | certain | Close options | `modules/hall-ui/public/shell-game.js:
|
|
321
|
+
| `053e576ba9a3` | certain | Close options | `modules/hall-ui/public/shell-game.js:454` |
|
|
322
322
|
| `d12a2fb5730d` | certain | Close this flag | `modules/hall-ui/public/copy-desk.html:116` |
|
|
323
323
|
| `9b9c2abeae90` | certain | Close this stage | `modules/hall-ui/public/genesis-home.js:220` |
|
|
324
324
|
| `e6f1842afde1` | certain | Close transcript | `modules/hall-ui/public/watch.html:222` |
|
|
@@ -603,7 +603,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
603
603
|
| `6dd3c797943b` | certain | How Claude should engage you in it | `modules/hall-ui/public/speciality-tools.js:614` |
|
|
604
604
|
| `d50901b479f6` | certain | How Claude talks to you, wandering, session cards and your specialities are set on | `modules/hall-ui/public/settings.html:304` |
|
|
605
605
|
| `5c442fe0f174` | certain | How do you want to pay? | `modules/hall-ui/public/ai-studio.js:351` |
|
|
606
|
-
| `1e8da0baf421` | certain | How do you want to see it? | `modules/hall-ui/public/shell-game.js:
|
|
606
|
+
| `1e8da0baf421` | certain | How do you want to see it? | `modules/hall-ui/public/shell-game.js:165` |
|
|
607
607
|
| `0bab9286ea38` | certain | How each builder's shipped work has been graded over the past thirty days. | `modules/hall-ui/public/watch.html:75` |
|
|
608
608
|
| `fb7489e8b67c` | certain | How it has changed | `modules/hall-ui/public/government.js:1017` |
|
|
609
609
|
| `1afadcefd6ea` | certain | How many passes | `modules/hall-ui/public/genesis-home.js:116` |
|
|
@@ -699,7 +699,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
699
699
|
| `7d6eaa8d4514` | certain | Kinds of work shipped | `modules/hall-ui/public/profile-own.js:366` |
|
|
700
700
|
| `81f62e066dbf` | certain | Last 14 days: {…} / 10 average across {…} graded work{…} ({…} passed). | `modules/hall-ui/public/profile-own.js:186` |
|
|
701
701
|
| `13bae4dfb28e` | certain | Last claimed by | `modules/hall-ui/public/task.js:694` |
|
|
702
|
-
| `352e1a9eb78e` | certain | Last time | `modules/hall-ui/public/shell-game.js:
|
|
702
|
+
| `352e1a9eb78e` | certain | Last time | `modules/hall-ui/public/shell-game.js:147` |
|
|
703
703
|
| `165c5f26ef60` | certain | Last try | `modules/hall-ui/public/money.js:90` |
|
|
704
704
|
| `9e8828d602bc` | certain | Lay your thoughts over the project map. | `modules/hall-ui/public/goal-map.html:76` |
|
|
705
705
|
| `0f467c1359d7` | certain | Leaderboard place | `modules/hall-ui/public/hall-render.js:470` |
|
|
@@ -1410,7 +1410,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1410
1410
|
| `74bc22f38140` | certain | The platform confirmed this request came from the account it names. | `modules/hall-ui/public/watch.js:411` |
|
|
1411
1411
|
| `6c3d88de42de` | certain | The primer | `modules/hall-ui/public/primer.html:37` |
|
|
1412
1412
|
| `dea378cd4837` | certain | The primer did not load | `modules/hall-ui/public/primer.html:83` |
|
|
1413
|
-
| `08ec02eb31fb` | certain | The project city building up, week by week | `modules/hall-ui/public/shell-game.js:
|
|
1413
|
+
| `08ec02eb31fb` | certain | The project city building up, week by week | `modules/hall-ui/public/shell-game.js:181` |
|
|
1414
1414
|
| `ca10fbab561e` | certain | The project this week | `modules/hall-ui/public/home-city.js:324` |
|
|
1415
1415
|
| `dc2d6fd0350a` | certain | The project’s life so far | `modules/hall-ui/public/genesis-home.js:156` |
|
|
1416
1416
|
| `169a03d777a1` | certain | The rank above yours is {…}. | `modules/hall-ui/public/profile-own.js:101` |
|
|
@@ -1486,7 +1486,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1486
1486
|
| `9a685b01e2c6` | certain | This page opens at a higher rank. | `modules/hall-ui/public/watch.html:237` |
|
|
1487
1487
|
| `e7a289134dc3` | certain | This page shows no words the reader could find. | `modules/hall-ui/public/tweak-editor.js:246` |
|
|
1488
1488
|
| `d4b3b5556986` | certain | This page's reference docs | `modules/hall-ui/public/page-notes.js:166` |
|
|
1489
|
-
| `79e4a934b434` | certain | This place | `modules/hall-ui/public/visor.js:
|
|
1489
|
+
| `79e4a934b434` | certain | This place | `modules/hall-ui/public/visor.js:234` |
|
|
1490
1490
|
| `5bdcbec770dd` | certain | This project has no slash commands yet. | `modules/hall-ui/public/commands.js:37` |
|
|
1491
1491
|
| `f53b83bfbe54` | certain | This project has no watch rules yet. | `modules/hall-ui/public/market-watch-rules.js:62` |
|
|
1492
1492
|
| `e97b2d549f10` | certain | This project is hosted on {…}, and that is where it is taken offline or removed. Both links below open this pr | `modules/hall-ui/public/project-settings.js:412` |
|
|
@@ -1689,7 +1689,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1689
1689
|
| `beba7e576ea8` | certain | Your agents | `modules/hall-ui/public/settings.html:303` |
|
|
1690
1690
|
| `7d26333b5fb0` | certain | Your asks | `modules/hall-ui/public/collab.html:79` |
|
|
1691
1691
|
| `2e699f8709b5` | certain | Your balance is under {…}. | `modules/hall-ui/public/ai-studio.js:348` |
|
|
1692
|
-
| `a1f290d92800` | certain | Your browser kept this tab open. Close it to quit. | `modules/hall-ui/public/shell-game.js:
|
|
1692
|
+
| `a1f290d92800` | certain | Your browser kept this tab open. Close it to quit. | `modules/hall-ui/public/shell-game.js:295` |
|
|
1693
1693
|
| `3812b4d8106f` | certain | Your changes to this page | `modules/hall-ui/public/paintbrush.js:150` |
|
|
1694
1694
|
| `7e5697ffbfc4` | certain | Your character | `modules/hall-ui/public/craft-mode.js:660` |
|
|
1695
1695
|
| `791f72bb7b35` | certain | Your character could not be saved. Reload and try again. | `modules/hall-ui/public/craft-mode.js:928` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -5208,7 +5208,7 @@
|
|
|
5208
5208
|
"surface": "builders-hall",
|
|
5209
5209
|
"text": "Close actions",
|
|
5210
5210
|
"file": "modules/hall-ui/public/visor.js",
|
|
5211
|
-
"line":
|
|
5211
|
+
"line": 232,
|
|
5212
5212
|
"origin": "js-markup",
|
|
5213
5213
|
"confidence": "certain"
|
|
5214
5214
|
},
|
|
@@ -5226,7 +5226,7 @@
|
|
|
5226
5226
|
"surface": "builders-hall",
|
|
5227
5227
|
"text": "Close options",
|
|
5228
5228
|
"file": "modules/hall-ui/public/shell-game.js",
|
|
5229
|
-
"line":
|
|
5229
|
+
"line": 454,
|
|
5230
5230
|
"origin": "js-markup",
|
|
5231
5231
|
"confidence": "certain"
|
|
5232
5232
|
},
|
|
@@ -7791,7 +7791,7 @@
|
|
|
7791
7791
|
"surface": "builders-hall",
|
|
7792
7792
|
"text": "How do you want to see it?",
|
|
7793
7793
|
"file": "modules/hall-ui/public/shell-game.js",
|
|
7794
|
-
"line":
|
|
7794
|
+
"line": 165,
|
|
7795
7795
|
"origin": "js-markup",
|
|
7796
7796
|
"confidence": "certain"
|
|
7797
7797
|
},
|
|
@@ -8655,7 +8655,7 @@
|
|
|
8655
8655
|
"surface": "builders-hall",
|
|
8656
8656
|
"text": "Last time",
|
|
8657
8657
|
"file": "modules/hall-ui/public/shell-game.js",
|
|
8658
|
-
"line":
|
|
8658
|
+
"line": 147,
|
|
8659
8659
|
"origin": "js-markup",
|
|
8660
8660
|
"confidence": "certain"
|
|
8661
8661
|
},
|
|
@@ -15054,7 +15054,7 @@
|
|
|
15054
15054
|
"surface": "builders-hall",
|
|
15055
15055
|
"text": "The project city building up, week by week",
|
|
15056
15056
|
"file": "modules/hall-ui/public/shell-game.js",
|
|
15057
|
-
"line":
|
|
15057
|
+
"line": 181,
|
|
15058
15058
|
"origin": "js-markup",
|
|
15059
15059
|
"confidence": "certain"
|
|
15060
15060
|
},
|
|
@@ -15738,7 +15738,7 @@
|
|
|
15738
15738
|
"surface": "builders-hall",
|
|
15739
15739
|
"text": "This place",
|
|
15740
15740
|
"file": "modules/hall-ui/public/visor.js",
|
|
15741
|
-
"line":
|
|
15741
|
+
"line": 234,
|
|
15742
15742
|
"origin": "js-markup",
|
|
15743
15743
|
"confidence": "certain"
|
|
15744
15744
|
},
|
|
@@ -17565,7 +17565,7 @@
|
|
|
17565
17565
|
"surface": "builders-hall",
|
|
17566
17566
|
"text": "Your browser kept this tab open. Close it to quit.",
|
|
17567
17567
|
"file": "modules/hall-ui/public/shell-game.js",
|
|
17568
|
-
"line":
|
|
17568
|
+
"line": 295,
|
|
17569
17569
|
"origin": "js-text-assign",
|
|
17570
17570
|
"confidence": "certain"
|
|
17571
17571
|
},
|
|
@@ -3430,5 +3430,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
3430
3430
|
landed since 1.24.88 with no explicit bump. run 43213545598. (task 1002620)
|
|
3431
3431
|
1.24.90 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3432
3432
|
landed since 1.24.89 with no explicit bump. run 43217068783. (task 1002620)
|
|
3433
|
+
1.24.92 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3434
|
+
landed since 1.24.90 with no explicit bump. run 43296447627. (task 1002620)
|
|
3433
3435
|
---------------------------------------------------------------------------
|
|
3434
3436
|
```
|