@bongos/core 1.21.93 → 1.21.95

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 (37) hide show
  1. package/.bongos-core.json +63 -38
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +6 -0
  4. package/clients/bongos-client/index.cjs +6 -0
  5. package/clients/bongos-client/index.d.ts +9 -2
  6. package/clients/bongos-client/index.mjs +6 -0
  7. package/docs/api/openapi.json +112 -9
  8. package/docs/api-reference.md +6 -3
  9. package/docs/copy-inventory.md +354 -354
  10. package/docs/copy-registry.json +420 -420
  11. package/docs/design/project-startup-direction.md +15 -0
  12. package/docs/module-api-changelog.md +4 -0
  13. package/docs/page-readings.json +963 -992
  14. package/modules/provisioning/github-setup.js +129 -0
  15. package/modules/provisioning/module.json +2 -1
  16. package/modules/provisioning/provisioning.js +3 -0
  17. package/modules/provisioning/routes/callback-page.js +83 -8
  18. package/modules/provisioning/routes/github-setup.js +221 -0
  19. package/modules/provisioning/routes/provisioning.js +11 -45
  20. package/modules/public-landing/public/projects.html +207 -66
  21. package/package-lock.json +2 -2
  22. package/package.json +1 -1
  23. package/release-notes.json +12 -0
  24. package/scripts/gds/oauth-secret.js +4 -2
  25. package/scripts/gds/provision-github-setup.js +148 -0
  26. package/scripts/gds/provision.js +19 -5
  27. package/src/module-api.js +1 -1
  28. package/tests/github_handback_any_device.mjs +340 -0
  29. package/tests/github_one_trip.mjs +297 -0
  30. package/tests/projects_hub.mjs +6 -2
  31. package/tests/projects_hub_dns_ready.mjs +2 -1
  32. package/tests/projects_hub_pre_uat.mjs +17 -9
  33. package/tests/provision.mjs +51 -9
  34. package/tests/provisioning_callback_page.mjs +3 -2
  35. package/tests/provisioning_github_app_routes.mjs +103 -12
  36. package/tests/wizard_draft_resume.mjs +4 -0
  37. package/tests/wizard_github_feedback.mjs +9 -5
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/gds/package-core.js",
5
- "core_version": "1.21.93",
6
- "core_contract": "1.21.93",
7
- "source_commit": "4c275841c75ef2bebdaed532f3b5e57c7a789d90",
5
+ "core_version": "1.21.95",
6
+ "core_contract": "1.21.95",
7
+ "source_commit": "1895cbf114f5a8932e751d9208a592dfbbf99ff8",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-10-09T07:16:47.997Z",
9
+ "built_at": "2026-10-09T08:47:23.210Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 590,
13
13
  "agent_docs_stubbed": 28,
14
- "functional_verbatim": 3008,
14
+ "functional_verbatim": 3013,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 3627,
20
- "tree_sha256": "49bb2f826dddbdaabbcfe2ace12bc326ab12234fc2ce4514883ad7aa6ca0e018",
19
+ "file_count": 3632,
20
+ "tree_sha256": "82e713c766d3a2684a614b15ca98c09c047238193da0dc6be4ab5f95b9dbb975",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -312,12 +312,12 @@
312
312
  {
313
313
  "path": "clients/bongos-client/README.md",
314
314
  "mode": "0000644",
315
- "sha256": "dcf1cdc17f4d1d51341528d4048705d4be394f6187e1c643f8380f264ba8a6a4"
315
+ "sha256": "ddef69b1dc2ff76269e9f84955ca554ec70f1f18aeb502e408bf20920f694669"
316
316
  },
317
317
  {
318
318
  "path": "clients/bongos-client/bongos-client.global.js",
319
319
  "mode": "0000644",
320
- "sha256": "d61265ccb120da7888b3b46af4cfdf1ce237a254c585e66066c9c3c514cd508e"
320
+ "sha256": "35ac01d598a9ba76e928f115f5de99e952128d37de311e3bab548d9a74bfe53a"
321
321
  },
322
322
  {
323
323
  "path": "clients/bongos-client/examples/hello-world.mjs",
@@ -327,17 +327,17 @@
327
327
  {
328
328
  "path": "clients/bongos-client/index.cjs",
329
329
  "mode": "0000644",
330
- "sha256": "75047820355916932baf6b8bb75c22d4f2a6550231dd13f007b5747c78709d23"
330
+ "sha256": "0793d04a2a43eef50144bc607927c7b3560af4948877926edf24aa3d781e7323"
331
331
  },
332
332
  {
333
333
  "path": "clients/bongos-client/index.d.ts",
334
334
  "mode": "0000644",
335
- "sha256": "f07e2e8d492facff691af7f75f3aa79e0b2eedb10dcf64a85a50ff9ae65b0e87"
335
+ "sha256": "c4708244379cd28709caf48d817266b184ffe18a65f9590bc62c2b1aeb71d824"
336
336
  },
337
337
  {
338
338
  "path": "clients/bongos-client/index.mjs",
339
339
  "mode": "0000644",
340
- "sha256": "527bd7e60247b932b85793d9cf27e1e2e907f99646ae8642d3b560fed63338b3"
340
+ "sha256": "e143421ec34b742f29a21690b81ed8fdf2b01a7c87d380fcea43a56dbba42465"
341
341
  },
342
342
  {
343
343
  "path": "clients/bongos-client/package.json",
@@ -2317,12 +2317,12 @@
2317
2317
  {
2318
2318
  "path": "docs/api-reference.md",
2319
2319
  "mode": "0000644",
2320
- "sha256": "d8b883f06a11a6b7fceab24a610d5ff7a51b3608c39bb776a4c50c27c8a26d2b"
2320
+ "sha256": "3b3f6ed65d2c90fa08c7a2000862c7c9ffd8b7625420f377b52d132d9b17d8d3"
2321
2321
  },
2322
2322
  {
2323
2323
  "path": "docs/api/openapi.json",
2324
2324
  "mode": "0000644",
2325
- "sha256": "ec3d2d57bebe8ba74b74fb8e47f36f411729099b662feeaf9ac5c6590ba94c79"
2325
+ "sha256": "8704ce350de56a1b955a41296cb7fa053128d2b4fc8a76e156a4e8578afef6a3"
2326
2326
  },
2327
2327
  {
2328
2328
  "path": "docs/architecture.md",
@@ -2347,12 +2347,12 @@
2347
2347
  {
2348
2348
  "path": "docs/copy-inventory.md",
2349
2349
  "mode": "0000644",
2350
- "sha256": "d866d91fd677266103f6ca61042cb1ad2d4e2912545259764cf5caa27f9aaa39"
2350
+ "sha256": "d9eb86aa5d3c208883783df0deef2ad776e403fa5896a422d88adc5e11079e6d"
2351
2351
  },
2352
2352
  {
2353
2353
  "path": "docs/copy-registry.json",
2354
2354
  "mode": "0000644",
2355
- "sha256": "33e0605886cc8554d1fed3ed4904ec9e2c2ea5a926f1adc0eed689d395a18953"
2355
+ "sha256": "d5af39196ca0a235dcb225c0966f2df4d930417c109298f86e03429cdc4d7a91"
2356
2356
  },
2357
2357
  {
2358
2358
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2432,7 +2432,7 @@
2432
2432
  {
2433
2433
  "path": "docs/design/project-startup-direction.md",
2434
2434
  "mode": "0000644",
2435
- "sha256": "8cac194bfa4e7e0cfa6785ff72fd141980eb2abed6497ce56e42585c2f4a918c"
2435
+ "sha256": "1fc48632ac7af6d55bc62cf0207affb597956c2243febe1faa0b39e22bdef829"
2436
2436
  },
2437
2437
  {
2438
2438
  "path": "docs/design/projects-hub-direction-v2.md",
@@ -2862,7 +2862,7 @@
2862
2862
  {
2863
2863
  "path": "docs/module-api-changelog.md",
2864
2864
  "mode": "0000644",
2865
- "sha256": "63e2775e1139816091d9e9629b5e2b1d16a2862ad7caaacfa817cee89eb90809"
2865
+ "sha256": "4b50f866b73e605791b602d3d0dd212aeebc0b406f1f8579a8f3f4625fb9a8f2"
2866
2866
  },
2867
2867
  {
2868
2868
  "path": "docs/modules-contract.md",
@@ -2952,7 +2952,7 @@
2952
2952
  {
2953
2953
  "path": "docs/page-readings.json",
2954
2954
  "mode": "0000644",
2955
- "sha256": "3ec786d4af42a799f66a9cb11c8fc5cb6ebb2c0d1e5479a6437a6b511f96a5ee"
2955
+ "sha256": "998e448cf903b275a9c44c0f326197963e83929626cce5dc506e980148690b98"
2956
2956
  },
2957
2957
  {
2958
2958
  "path": "docs/project-context.template.md",
@@ -8264,6 +8264,11 @@
8264
8264
  "mode": "0000644",
8265
8265
  "sha256": "82b9f7ee39820735ca4d0f55b12fd72903b9909d3c9f0abedb684dcc98ac77c6"
8266
8266
  },
8267
+ {
8268
+ "path": "modules/provisioning/github-setup.js",
8269
+ "mode": "0000644",
8270
+ "sha256": "e97ee19b2ba5e607557d0794e528f2e7e19d68cbe6e208ab88af7a9dba92d06b"
8271
+ },
8267
8272
  {
8268
8273
  "path": "modules/provisioning/look.js",
8269
8274
  "mode": "0000644",
@@ -8457,7 +8462,7 @@
8457
8462
  {
8458
8463
  "path": "modules/provisioning/module.json",
8459
8464
  "mode": "0000644",
8460
- "sha256": "6faff6cecb10f65437819c8dc79e22dc8d2317b5cfe3c107d4b803e2a3760c13"
8465
+ "sha256": "6ae32503a3950dffd68187a02a9918bdfb51582e715f552c4c421fbea55c9f8c"
8461
8466
  },
8462
8467
  {
8463
8468
  "path": "modules/provisioning/onboard-plan.js",
@@ -8507,7 +8512,7 @@
8507
8512
  {
8508
8513
  "path": "modules/provisioning/provisioning.js",
8509
8514
  "mode": "0000644",
8510
- "sha256": "436287030388ae105372d864460e50ca6380bb5a5ea3d9d6d140e9b2345feae6"
8515
+ "sha256": "b45bcb38497d8999ea0e5e3d0844785a7514a829cfd6cbb58c9b3167ccce37f9"
8511
8516
  },
8512
8517
  {
8513
8518
  "path": "modules/provisioning/public-refusal.js",
@@ -8547,7 +8552,7 @@
8547
8552
  {
8548
8553
  "path": "modules/provisioning/routes/callback-page.js",
8549
8554
  "mode": "0000644",
8550
- "sha256": "2fede95d3be1859e99df1f1e616be6a7744b15379ae9c2b800bf4b1014997f32"
8555
+ "sha256": "a84b6fce647c0902e7c90f5c85185d8ca2939d49fb67650bcca013eed3c90daa"
8551
8556
  },
8552
8557
  {
8553
8558
  "path": "modules/provisioning/routes/core-upgrade.js",
@@ -8569,6 +8574,11 @@
8569
8574
  "mode": "0000644",
8570
8575
  "sha256": "dbc156fa4cb2c74132a8034c481ec676f818f4f19139cb10d7d5d669e2e4bbd9"
8571
8576
  },
8577
+ {
8578
+ "path": "modules/provisioning/routes/github-setup.js",
8579
+ "mode": "0000644",
8580
+ "sha256": "652c1aafba1e38ae46b02b54d3e6cfa8c18a0ceadcf8a94ea67d664d773cce85"
8581
+ },
8572
8582
  {
8573
8583
  "path": "modules/provisioning/routes/look.js",
8574
8584
  "mode": "0000644",
@@ -8577,7 +8587,7 @@
8577
8587
  {
8578
8588
  "path": "modules/provisioning/routes/provisioning.js",
8579
8589
  "mode": "0000644",
8580
- "sha256": "9a2d62d388e0b6051ea222d5254bb8e0bd986702f52b9cdda32475ba2a508d67"
8590
+ "sha256": "a4ab4c1f5c98f5fe85489f0f2f7e23e6897c178b62f2bcc9b2d9e5502fd26458"
8581
8591
  },
8582
8592
  {
8583
8593
  "path": "modules/provisioning/routes/render-standup.js",
@@ -9327,7 +9337,7 @@
9327
9337
  {
9328
9338
  "path": "modules/public-landing/public/projects.html",
9329
9339
  "mode": "0000644",
9330
- "sha256": "48bdc97c32c116c89fe9461b49cc2814bd6b43d5ba3f89673e625555d01e2d98"
9340
+ "sha256": "99b6553bb9756a91713c0842510d0dc8545111d0366fd59237968df21e69bf99"
9331
9341
  },
9332
9342
  {
9333
9343
  "path": "modules/public-landing/public/projects.probes.json",
@@ -10107,12 +10117,12 @@
10107
10117
  {
10108
10118
  "path": "package-lock.json",
10109
10119
  "mode": "0000644",
10110
- "sha256": "c5cb988b5bb2255930679a818cdcc5cf278646176ef15bbd2dc113f36698af02"
10120
+ "sha256": "8a3f6a8660b0f20118070b8adaad21cbbd3866e6a272720b94c2719fafe53b77"
10111
10121
  },
10112
10122
  {
10113
10123
  "path": "package.json",
10114
10124
  "mode": "0000644",
10115
- "sha256": "4e05f7203accb56a762ab83c6ad71a8c91dcf58218665625ae993c3825f13da7"
10125
+ "sha256": "256622b8d3de980cdb9dc368b115d0259af8e192f43d3757fcbc399ea053b00b"
10116
10126
  },
10117
10127
  {
10118
10128
  "path": "public-docs/index.html",
@@ -10132,7 +10142,7 @@
10132
10142
  {
10133
10143
  "path": "release-notes.json",
10134
10144
  "mode": "0000644",
10135
- "sha256": "ccf38aea55687532ade59d10785095bc50b266095c37901865b3e7db6777e16f"
10145
+ "sha256": "f0933c625fe42e498bad837a26383cbd38181bb7dba0f02d33457789fdbac345"
10136
10146
  },
10137
10147
  {
10138
10148
  "path": "scripts/cron/style_guide_audit.sh",
@@ -11042,7 +11052,7 @@
11042
11052
  {
11043
11053
  "path": "scripts/gds/oauth-secret.js",
11044
11054
  "mode": "0000644",
11045
- "sha256": "39e8a37e623a8a5746fd83c9a572f1a5435e93afe5e0bd185f8760b4ef9ad31a"
11055
+ "sha256": "34863bef7688e5a0341fea4bd869cfa4e606ac02ce1b08e4fb7fd1089e1e7be3"
11046
11056
  },
11047
11057
  {
11048
11058
  "path": "scripts/gds/onboard.js",
@@ -11144,6 +11154,11 @@
11144
11154
  "mode": "0000644",
11145
11155
  "sha256": "43aabd985e5ec2b2eff12b5d624158c3240e7777887705228945fedf691d95c3"
11146
11156
  },
11157
+ {
11158
+ "path": "scripts/gds/provision-github-setup.js",
11159
+ "mode": "0000644",
11160
+ "sha256": "aa0927e26143328727f3c752f2ebb337a840ae76bf699bc10930cb6182c51146"
11161
+ },
11147
11162
  {
11148
11163
  "path": "scripts/gds/provision-net.js",
11149
11164
  "mode": "0000644",
@@ -11192,7 +11207,7 @@
11192
11207
  {
11193
11208
  "path": "scripts/gds/provision.js",
11194
11209
  "mode": "0000644",
11195
- "sha256": "f58a7db598467d02e496688f71327a2c39b0e680a4b3c24fc0d7dd6346e07c8b"
11210
+ "sha256": "4f4857e34141db1d78cfec4b0b7f735658893aba946f53348c2430fe852b2a93"
11196
11211
  },
11197
11212
  {
11198
11213
  "path": "scripts/gds/publish-credential-check.js",
@@ -12397,7 +12412,7 @@
12397
12412
  {
12398
12413
  "path": "src/module-api.js",
12399
12414
  "mode": "0000644",
12400
- "sha256": "93548f4008e232c69ca994b86cb82c971d7b3830271e28b5251d60e6a958e777"
12415
+ "sha256": "5cabb78f9a62e76cbe3b084a14f0f4a50c5dc73b9c359cded8b13c64c5158f38"
12401
12416
  },
12402
12417
  {
12403
12418
  "path": "src/module-loader/catalog.js",
@@ -14019,6 +14034,16 @@
14019
14034
  "mode": "0000644",
14020
14035
  "sha256": "79208b90f1b785af56ab057c858e96cea4e67ebf247858457addedce55e71b06"
14021
14036
  },
14037
+ {
14038
+ "path": "tests/github_handback_any_device.mjs",
14039
+ "mode": "0000644",
14040
+ "sha256": "7c264331e939bda95029e4448534734a236a59c7b46e44e34bed7a0f13577cd3"
14041
+ },
14042
+ {
14043
+ "path": "tests/github_one_trip.mjs",
14044
+ "mode": "0000644",
14045
+ "sha256": "b04dbcd87504e696367a03db39c0a3c0ae9b647039ab25b354c89884c74d2ba5"
14046
+ },
14022
14047
  {
14023
14048
  "path": "tests/github_push_ancestry.mjs",
14024
14049
  "mode": "0000644",
@@ -16372,7 +16397,7 @@
16372
16397
  {
16373
16398
  "path": "tests/projects_hub.mjs",
16374
16399
  "mode": "0000644",
16375
- "sha256": "635f36dc6f0134a901307d58f6706a864c31fcf1f0950c9f8cbcf434163b928d"
16400
+ "sha256": "2183ec464cc6ab88d95bb7416a75aef72b674e05677cc6698e4dcb50fde366fb"
16376
16401
  },
16377
16402
  {
16378
16403
  "path": "tests/projects_hub_app_status.mjs",
@@ -16392,7 +16417,7 @@
16392
16417
  {
16393
16418
  "path": "tests/projects_hub_dns_ready.mjs",
16394
16419
  "mode": "0000644",
16395
- "sha256": "867a98a8f9c51d2f5ad24cafbf3bcf49118690edb8fbe96a29f44d6e164b27db"
16420
+ "sha256": "532af0a1c9e4961888b1ba1dae29af053c43dc166c14962d2318b04d1baa6d3c"
16396
16421
  },
16397
16422
  {
16398
16423
  "path": "tests/projects_hub_look.mjs",
@@ -16407,7 +16432,7 @@
16407
16432
  {
16408
16433
  "path": "tests/projects_hub_pre_uat.mjs",
16409
16434
  "mode": "0000644",
16410
- "sha256": "99cee166dc5f2a1656bcf78461c420d321d3f1915d2fea163042cd069bf94c33"
16435
+ "sha256": "e580ed2ea20556cc60f4160ace7316e8691b30f020c0701e783811ae0f134860"
16411
16436
  },
16412
16437
  {
16413
16438
  "path": "tests/projects_hub_render_connect.mjs",
@@ -16452,7 +16477,7 @@
16452
16477
  {
16453
16478
  "path": "tests/provision.mjs",
16454
16479
  "mode": "0000644",
16455
- "sha256": "4ffddc6128eb9860d6b48493c4d9b6fd9e108f7c0e656f003bbbe32866b97675"
16480
+ "sha256": "64ffc593089622c6901669a29eee6a0d75ae6b47cbfc0729e2c8eae09e8386e1"
16456
16481
  },
16457
16482
  {
16458
16483
  "path": "tests/provision_account_identity.mjs",
@@ -16512,7 +16537,7 @@
16512
16537
  {
16513
16538
  "path": "tests/provisioning_callback_page.mjs",
16514
16539
  "mode": "0000644",
16515
- "sha256": "8886fae6d241f2360c5948d9a243821d6ac20d0021d14ea6477ebf0651e4a712"
16540
+ "sha256": "464edbf5d2095148cf2bc37af1abc22b228eeaf5bd25f39d5d604bae10778688"
16516
16541
  },
16517
16542
  {
16518
16543
  "path": "tests/provisioning_capacity.mjs",
@@ -16572,7 +16597,7 @@
16572
16597
  {
16573
16598
  "path": "tests/provisioning_github_app_routes.mjs",
16574
16599
  "mode": "0000644",
16575
- "sha256": "a223db1dfa5a34f28b5303dd672b39a1dbfa20dc88801c5c4b0941c846c004c3"
16600
+ "sha256": "c8969d3782cbc6d9b3b4c776cdf8c3f2e0bc5282d6cb7af3a82c5164034416a1"
16576
16601
  },
16577
16602
  {
16578
16603
  "path": "tests/provisioning_look.mjs",
@@ -18072,7 +18097,7 @@
18072
18097
  {
18073
18098
  "path": "tests/wizard_draft_resume.mjs",
18074
18099
  "mode": "0000644",
18075
- "sha256": "df40c0f2dfae806de973b782e9f693353801881659a39de88ef008de16b9905c"
18100
+ "sha256": "0d87008084384aad7592579f3b9f3e4476e5af12fa7826d1dd77f995b33319b4"
18076
18101
  },
18077
18102
  {
18078
18103
  "path": "tests/wizard_front_door.mjs",
@@ -18082,7 +18107,7 @@
18082
18107
  {
18083
18108
  "path": "tests/wizard_github_feedback.mjs",
18084
18109
  "mode": "0000644",
18085
- "sha256": "c22b6d452db01032541444c5782618af5e4b3d960fcf58692d22f0ad893f793c"
18110
+ "sha256": "153932c97b0cfb95c01c19787d7543ce80efe2ef8a8ab813e67c0376b4eb508b"
18086
18111
  },
18087
18112
  {
18088
18113
  "path": "tests/wizard_intent_resume.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
- - 533 operations across 76 resource groups
8
+ - 536 operations across 76 resource groups
9
9
 
10
10
  ## Use it from your project
11
11
 
@@ -895,6 +895,12 @@ function createClient(opts = {}) {
895
895
  getProvisioningFleetCostLedger: (args) => request("GET", "/provisioning/fleet/cost-ledger", { hasBody: false }, args),
896
896
  // GET /provisioning/github-app/callback — rank: public — GET /provisioning/github-app/callback
897
897
  getProvisioningGithubAppCallback: (args) => request("GET", "/provisioning/github-app/callback", { hasBody: false }, args),
898
+ // GET /provisioning/github-app/resume — rank: any-builder — GET /provisioning/github-app/resume
899
+ getProvisioningGithubAppResume: (args) => request("GET", "/provisioning/github-app/resume", { hasBody: false }, args),
900
+ // GET /provisioning/github-app/return — rank: public — GET /provisioning/github-app/return
901
+ getProvisioningGithubAppReturn: (args) => request("GET", "/provisioning/github-app/return", { hasBody: false }, args),
902
+ // GET /provisioning/github-app/setup — rank: public — GET /provisioning/github-app/setup
903
+ getProvisioningGithubAppSetup: (args) => request("GET", "/provisioning/github-app/setup", { hasBody: false }, args),
898
904
  // GET /provisioning/github-app/status — rank: public — GET /provisioning/github-app/status
899
905
  getProvisioningGithubAppStatus: (args) => request("GET", "/provisioning/github-app/status", { hasBody: false }, args),
900
906
  // GET /provisioning/health — rank: public — GET /provisioning/health
@@ -894,6 +894,12 @@ function createClient(opts = {}) {
894
894
  getProvisioningFleetCostLedger: (args) => request("GET", "/provisioning/fleet/cost-ledger", { hasBody: false }, args),
895
895
  // GET /provisioning/github-app/callback — rank: public — GET /provisioning/github-app/callback
896
896
  getProvisioningGithubAppCallback: (args) => request("GET", "/provisioning/github-app/callback", { hasBody: false }, args),
897
+ // GET /provisioning/github-app/resume — rank: any-builder — GET /provisioning/github-app/resume
898
+ getProvisioningGithubAppResume: (args) => request("GET", "/provisioning/github-app/resume", { hasBody: false }, args),
899
+ // GET /provisioning/github-app/return — rank: public — GET /provisioning/github-app/return
900
+ getProvisioningGithubAppReturn: (args) => request("GET", "/provisioning/github-app/return", { hasBody: false }, args),
901
+ // GET /provisioning/github-app/setup — rank: public — GET /provisioning/github-app/setup
902
+ getProvisioningGithubAppSetup: (args) => request("GET", "/provisioning/github-app/setup", { hasBody: false }, args),
897
903
  // GET /provisioning/github-app/status — rank: public — GET /provisioning/github-app/status
898
904
  getProvisioningGithubAppStatus: (args) => request("GET", "/provisioning/github-app/status", { hasBody: false }, args),
899
905
  // GET /provisioning/health — rank: public — GET /provisioning/health
@@ -132,13 +132,14 @@ export interface GetProjectSettingsShipModeResponse { mode: unknown; chosen: unk
132
132
  export interface GetProjectsFeaturedResponse { projects: unknown; page: PageInfo }
133
133
  export interface GetProjectsResponse { projects: unknown }
134
134
  export interface GetProvisioningFleetResponse { instances: unknown; capacity: unknown }
135
- export interface GetProvisioningGithubAppStatusResponse { ok: boolean; status: unknown; failure: unknown; ready: unknown; terminal: unknown; domain: unknown; instance_status: unknown; app_slug: unknown }
135
+ export interface GetProvisioningGithubAppResumeResponse { ok: boolean; project: unknown }
136
+ export interface GetProvisioningGithubAppStatusResponse { ok: boolean; status: unknown; failure: unknown; ready: unknown; terminal: unknown; domain: unknown; instance_status: unknown; app_slug: unknown; checklist: unknown; install_url: unknown; repo: unknown; verifying: unknown }
136
137
  export interface GetProvisioningHealthResponse { module: unknown; ok: boolean; coreVersion: unknown }
137
138
  export interface GetProvisioningInstancesIdEnvManifestResponse { instance: unknown; env_vars: unknown; environments: unknown; values_held: boolean; note: unknown }
138
139
  export interface GetProvisioningInstancesIdInviteSuggestionsResponse { suggested: unknown; seeking: unknown; reason: unknown; unavailable?: unknown }
139
140
  export interface GetProvisioningInstancesIdLookResponse { ok: boolean; look: unknown; options: unknown; logo_max_bytes: unknown }
140
141
  export interface GetProvisioningInstancesIdRenderResponse { ok: boolean; app: unknown; env_vars: unknown; values_held: boolean }
141
- export interface GetProvisioningInstancesIdResponse { instance: unknown; open_intent: unknown; github_app: unknown }
142
+ export interface GetProvisioningInstancesIdResponse { instance: unknown; open_intent: unknown; github_app: unknown; github_setup: unknown }
142
143
  export interface GetProvisioningInstancesIdSettingsResponse { ok: boolean; settings: unknown; planet: unknown; options: unknown }
143
144
  export interface GetProvisioningInstancesResponse { instances: unknown }
144
145
  export interface GetProvisioningOnboardPlanResponse { mode: unknown; steps: unknown }
@@ -1402,6 +1403,12 @@ export interface BongosClient {
1402
1403
  getProvisioningFleetCostLedger(args?: RequestArgs): Promise<ApiResponse>;
1403
1404
  /** GET /provisioning/github-app/callback — rank: public */
1404
1405
  getProvisioningGithubAppCallback(args?: RequestArgs): Promise<ApiResponse>;
1406
+ /** GET /provisioning/github-app/resume — rank: any-builder */
1407
+ getProvisioningGithubAppResume(args?: RequestArgs): Promise<GetProvisioningGithubAppResumeResponse>;
1408
+ /** GET /provisioning/github-app/return — rank: public */
1409
+ getProvisioningGithubAppReturn(args?: RequestArgs): Promise<ApiResponse>;
1410
+ /** GET /provisioning/github-app/setup — rank: public */
1411
+ getProvisioningGithubAppSetup(args?: RequestArgs): Promise<ApiResponse>;
1405
1412
  /** GET /provisioning/github-app/status — rank: public */
1406
1413
  getProvisioningGithubAppStatus(args?: RequestArgs): Promise<GetProvisioningGithubAppStatusResponse>;
1407
1414
  /** GET /provisioning/health — rank: public */
@@ -891,6 +891,12 @@ export function createClient(opts = {}) {
891
891
  getProvisioningFleetCostLedger: (args) => request("GET", "/provisioning/fleet/cost-ledger", { hasBody: false }, args),
892
892
  // GET /provisioning/github-app/callback — rank: public — GET /provisioning/github-app/callback
893
893
  getProvisioningGithubAppCallback: (args) => request("GET", "/provisioning/github-app/callback", { hasBody: false }, args),
894
+ // GET /provisioning/github-app/resume — rank: any-builder — GET /provisioning/github-app/resume
895
+ getProvisioningGithubAppResume: (args) => request("GET", "/provisioning/github-app/resume", { hasBody: false }, args),
896
+ // GET /provisioning/github-app/return — rank: public — GET /provisioning/github-app/return
897
+ getProvisioningGithubAppReturn: (args) => request("GET", "/provisioning/github-app/return", { hasBody: false }, args),
898
+ // GET /provisioning/github-app/setup — rank: public — GET /provisioning/github-app/setup
899
+ getProvisioningGithubAppSetup: (args) => request("GET", "/provisioning/github-app/setup", { hasBody: false }, args),
894
900
  // GET /provisioning/github-app/status — rank: public — GET /provisioning/github-app/status
895
901
  getProvisioningGithubAppStatus: (args) => request("GET", "/provisioning/github-app/status", { hasBody: false }, args),
896
902
  // GET /provisioning/health — rank: public — GET /provisioning/health
@@ -16460,6 +16460,86 @@
16460
16460
  "security": []
16461
16461
  }
16462
16462
  },
16463
+ "/provisioning/github-app/resume": {
16464
+ "get": {
16465
+ "operationId": "get_provisioning_github_app_resume",
16466
+ "tags": [
16467
+ "provisioning"
16468
+ ],
16469
+ "summary": "GET /provisioning/github-app/resume",
16470
+ "description": "GET /provisioning/github-app/resume[?id=<n>] — the project page's \"which project am I connecting?\" read when its tab remembers nothing (task 1004650): a hand-back on another device, a fresh tab, a cleared browser. With an id: that project, if the caller owns it. Without: the caller's newest project whose GitHub checklist is not connected yet, made or last tried within a week — so opening the create page later resumes part 03 from the server's view. Either way { project: null } when there is none; never the state token. rank: any authenticated builder (requireBuilder), own projects only — no Archon override.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
16471
+ "x-rank": "any-builder",
16472
+ "x-source": "modules/provisioning/routes/github-setup.js",
16473
+ "responses": {
16474
+ "200": {
16475
+ "description": "Success.",
16476
+ "content": {
16477
+ "application/json": {
16478
+ "schema": {
16479
+ "$ref": "#/components/schemas/GetProvisioningGithubAppResumeResponse"
16480
+ }
16481
+ }
16482
+ }
16483
+ },
16484
+ "400": {
16485
+ "$ref": "#/components/responses/BadRequest"
16486
+ },
16487
+ "401": {
16488
+ "$ref": "#/components/responses/Unauthorized"
16489
+ },
16490
+ "403": {
16491
+ "$ref": "#/components/responses/Forbidden"
16492
+ }
16493
+ },
16494
+ "security": [
16495
+ {
16496
+ "builderSession": []
16497
+ }
16498
+ ]
16499
+ }
16500
+ },
16501
+ "/provisioning/github-app/return": {
16502
+ "get": {
16503
+ "operationId": "get_provisioning_github_app_return",
16504
+ "tags": [
16505
+ "provisioning"
16506
+ ],
16507
+ "summary": "GET /provisioning/github-app/return",
16508
+ "description": "GET /provisioning/github-app/return?state=<> — where the callback and setup pages send the founder back (task 1004650). The SERVER resolves the one-time state to the project it was minted for and 302s that project's signed-in OWNER to its part 03 (/projects?view=new&id=<id>), so the hand-back works from any tab, window or device — nothing in browser storage is read. Not signed in → through the web sign-in and back here. Signed in as anyone else, an unknown or malformed state, or a gone project → one refusal page that names no project (no oracle about which). The state stays single-use where it matters: only the manifest callback's code exchange consumes it, and this route changes nothing — it reveals a project's page only to the person who already owns it. rank: public — as a GATE: it is a browser redirect, so no middleware 401s a signed-out visitor (they are sent through sign-in instead). WHO lands is decided in-handler from the live session: the project's own owner, no Archon override, and nobody else ever learns which project the state names. It reveals no secret and writes nothing.\n\n**Rank:** `public` — No authentication — any caller.",
16509
+ "x-rank": "public",
16510
+ "x-source": "modules/provisioning/routes/github-setup.js",
16511
+ "responses": {
16512
+ "200": {
16513
+ "description": "Success."
16514
+ },
16515
+ "400": {
16516
+ "$ref": "#/components/responses/BadRequest"
16517
+ }
16518
+ },
16519
+ "security": []
16520
+ }
16521
+ },
16522
+ "/provisioning/github-app/setup": {
16523
+ "get": {
16524
+ "operationId": "get_provisioning_github_app_setup",
16525
+ "tags": [
16526
+ "provisioning"
16527
+ ],
16528
+ "summary": "GET /provisioning/github-app/setup",
16529
+ "description": "GET /provisioning/github-app/setup?installation_id=&setup_action=&state= — the App's setup_url (task 1004649). GitHub sends the founder's BROWSER here after they install the app (or change its repos), carrying the state we put on the install link. GitHub's own docs warn the installation_id can be spoofed, so this route trusts NOTHING it is handed: it records only that an install was REPORTED for the attempt — which makes the runner ask GitHub, with the app's own key, whether the app really is on the repo — and hands the founder back to the project page. A missing or unknown state gets the same way back, without the attempt. rank: public — a browser redirect with no session; no secret revealed, no authority changed, the only write an audit row.\n\n**Rank:** `public` — No authentication — any caller.",
16530
+ "x-rank": "public",
16531
+ "x-source": "modules/provisioning/routes/github-setup.js",
16532
+ "responses": {
16533
+ "200": {
16534
+ "description": "Success."
16535
+ },
16536
+ "400": {
16537
+ "$ref": "#/components/responses/BadRequest"
16538
+ }
16539
+ },
16540
+ "security": []
16541
+ }
16542
+ },
16463
16543
  "/provisioning/github-app/status": {
16464
16544
  "get": {
16465
16545
  "operationId": "get_provisioning_github_app_status",
@@ -16467,9 +16547,9 @@
16467
16547
  "provisioning"
16468
16548
  ],
16469
16549
  "summary": "GET /provisioning/github-app/status",
16470
- "description": "GET /provisioning/github-app/status?state=<> — the PUBLIC progress read the onboarding setup checklist polls (task 1004548) to know when setup is done + where to send the owner. Same public-by-state model as the callback: the unguessable, single-use `state` token is the only key, and the response reveals only the manifest lifecycle status + the instance's own (already-public) domain — never a secret. Per-IP rate-limited because the page polls it every ~3s. `ready` is true iff the manifest reached 'done' (creds placed + /healthz verified) — the setup checklist then opens https://<domain>. rank: public — no session, no mutation, no secret; an unknown state is a 404 no-op.\n\n**Rank:** `public` — No authentication — any caller.",
16550
+ "description": "GET /provisioning/github-app/status?state=<> — the PUBLIC progress read (task 1004548; the checklist since task 1004649). Reveals the manifest lifecycle status, the instance's own (already-public) domain and repo, the App's public slug, and the four-step checklist with the one-trip install link — never a secret. `ready` is true iff sign-in is verified (the auto-open signal). `terminal` now waits for the install too: a finished sign-in with the app not yet installed is not the end of the trip. rank: public — no session, no mutation, no secret; an unknown state is a 404 no-op.\n\n**Rank:** `public` — No authentication — any caller.",
16471
16551
  "x-rank": "public",
16472
- "x-source": "modules/provisioning/routes/provisioning.js",
16552
+ "x-source": "modules/provisioning/routes/github-setup.js",
16473
16553
  "responses": {
16474
16554
  "200": {
16475
16555
  "description": "Success.",
@@ -26752,6 +26832,19 @@
26752
26832
  "capacity"
26753
26833
  ]
26754
26834
  },
26835
+ "GetProvisioningGithubAppResumeResponse": {
26836
+ "type": "object",
26837
+ "properties": {
26838
+ "ok": {
26839
+ "type": "boolean"
26840
+ },
26841
+ "project": {}
26842
+ },
26843
+ "required": [
26844
+ "ok",
26845
+ "project"
26846
+ ]
26847
+ },
26755
26848
  "GetProvisioningGithubAppStatusResponse": {
26756
26849
  "type": "object",
26757
26850
  "properties": {
@@ -26764,7 +26857,11 @@
26764
26857
  "terminal": {},
26765
26858
  "domain": {},
26766
26859
  "instance_status": {},
26767
- "app_slug": {}
26860
+ "app_slug": {},
26861
+ "checklist": {},
26862
+ "install_url": {},
26863
+ "repo": {},
26864
+ "verifying": {}
26768
26865
  },
26769
26866
  "required": [
26770
26867
  "ok",
@@ -26774,7 +26871,11 @@
26774
26871
  "terminal",
26775
26872
  "domain",
26776
26873
  "instance_status",
26777
- "app_slug"
26874
+ "app_slug",
26875
+ "checklist",
26876
+ "install_url",
26877
+ "repo",
26878
+ "verifying"
26778
26879
  ]
26779
26880
  },
26780
26881
  "GetProvisioningHealthResponse": {
@@ -26866,12 +26967,14 @@
26866
26967
  "properties": {
26867
26968
  "instance": {},
26868
26969
  "open_intent": {},
26869
- "github_app": {}
26970
+ "github_app": {},
26971
+ "github_setup": {}
26870
26972
  },
26871
26973
  "required": [
26872
26974
  "instance",
26873
26975
  "open_intent",
26874
- "github_app"
26976
+ "github_app",
26977
+ "github_setup"
26875
26978
  ]
26876
26979
  },
26877
26980
  "GetProvisioningInstancesIdSettingsResponse": {
@@ -34222,9 +34325,9 @@
34222
34325
  "description": "A required dependency/feature is not configured or is temporarily down."
34223
34326
  }
34224
34327
  },
34225
- "x-endpoint-count": 533,
34226
- "x-schema-count": 574,
34328
+ "x-endpoint-count": 536,
34329
+ "x-schema-count": 575,
34227
34330
  "x-undocumented-bodies": 12,
34228
- "x-response-schemas": 380,
34331
+ "x-response-schemas": 381,
34229
34332
  "x-generated-by": "scripts/gds/gen-api-docs.js"
34230
34333
  }
@@ -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. 533 endpoints across 94 route files.
5
+ > **Generated from the live route files** — the route file is authoritative. 536 endpoints across 95 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`.
@@ -636,7 +636,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
636
636
  | POST | `/api/bongos/projects/invite` | `metic+archon` | `client_id`, `github_login` | own-or-metic in effect: where to invite a builder into a project, asked by a `project.curate` holder OR the project's OWN OWNER (task 100… |
637
637
  | POST | `/api/bongos/projects/invite-guild` | `metic+archon` | `client_id`, `guild` | own-or-metic in effect, the SAME gate as POST /projects/invite above and for the same reasons (a non-inviter gets that route's unchanged … |
638
638
 
639
- ## `provisioning` (42)
639
+ ## `provisioning` (45)
640
640
 
641
641
  | Method | Path | Rank | Body | Description |
642
642
  |---|---|---|---|---|
@@ -644,7 +644,10 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
644
644
  | GET | `/api/bongos/provisioning/fleet` | `metic+archon` | — | GET /provisioning/fleet — the full instance roster across all owners. |
645
645
  | GET | `/api/bongos/provisioning/fleet/cost-ledger` | `metic+archon` | — | GET /provisioning/fleet/cost-ledger — per-instance monthly cost to us + estimated cost to its owner, with totals. |
646
646
  | GET | `/api/bongos/provisioning/github-app/callback` | `public` | — | GET /provisioning/github-app/callback?code=&state= — GitHub redirects the owner's BROWSER here after they approve the App Manifest (task … |
647
- | GET | `/api/bongos/provisioning/github-app/status` | `public` | — | GET /provisioning/github-app/status?state=<> — the PUBLIC progress read the onboarding setup checklist polls (task 1004548) to know when … |
647
+ | GET | `/api/bongos/provisioning/github-app/resume` | `any-builder` | — | GET /provisioning/github-app/resume[?id=<n>] — the project page's "which project am I connecting?" read when its tab remembers nothing (t… |
648
+ | GET | `/api/bongos/provisioning/github-app/return` | `public` | — | GET /provisioning/github-app/return?state=<> — where the callback and setup pages send the founder back (task 1004650). |
649
+ | GET | `/api/bongos/provisioning/github-app/setup` | `public` | — | GET /provisioning/github-app/setup?installation_id=&setup_action=&state= — the App's setup_url (task 1004649). |
650
+ | GET | `/api/bongos/provisioning/github-app/status` | `public` | — | GET /provisioning/github-app/status?state=<> — the PUBLIC progress read (task 1004548; the checklist since task 1004649). |
648
651
  | GET | `/api/bongos/provisioning/health` | `public` | — | GET /provisioning/health — liveness + the core version this module mounted against. |
649
652
  | GET | `/api/bongos/provisioning/instances` | `any-builder` | — | GET /provisioning/instances — the caller's own instances + each open intent. |
650
653
  | POST | `/api/bongos/provisioning/instances` | `any-builder` | `slug`, `target_ref`, `hosting_shape`, `domain`, `no_address`, `tier`, `onboard_mode`, `type`, `description`, `detail`, `modules`, `terms_acknowledged`, `demo`, `ship_mode` | POST /provisioning/instances — request a new instance. |