@bongos/core 1.25.16 → 1.25.18
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 +200 -75
- package/bin/bongos.js +1 -0
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +24 -0
- package/clients/bongos-client/index.cjs +24 -0
- package/clients/bongos-client/index.d.ts +36 -2
- package/clients/bongos-client/index.mjs +24 -0
- package/docs/adr/0406-every-project-gets-a-sandbox-that-follows-main-and-live-moves-only-when-a-person-promotes.md +8 -0
- package/docs/adr/0408-a-genesis-stage-is-three-doors-onto-one-record.md +1 -0
- package/docs/api/openapi.json +761 -112
- package/docs/api-reference.md +23 -3
- package/docs/copy-inventory.md +118 -108
- package/docs/copy-registry.json +315 -172
- package/docs/file-map.md +2 -1
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-inventory.json +3 -0
- package/docs/page-readings.json +62 -62
- package/modules/app-host/CLAUDE.md +15 -0
- package/modules/app-host/module.json +20 -0
- package/modules/app-host/public/settings-widget.js +143 -0
- package/modules/app-host/routes/app-host.js +88 -0
- package/modules/government/charter-advice.js +103 -0
- package/modules/government/decision-rules.js +1 -0
- package/modules/government/presets.js +42 -0
- package/modules/government/recommendations.js +102 -7
- package/modules/government/routes/government.js +1 -0
- package/modules/lifecycle/first-read-catalog.js +62 -0
- package/modules/lifecycle/first-read-db.js +190 -0
- package/modules/lifecycle/first-read.js +330 -0
- package/modules/lifecycle/kickoff-checklist.js +12 -3
- package/modules/lifecycle/migrations/lifecycle_022_repo_maps.sql +44 -0
- package/modules/lifecycle/migrations/lifecycle_023_repo_map_dismissed.sql +19 -0
- package/modules/lifecycle/module.json +2 -1
- package/modules/lifecycle/routes/first-read.js +101 -0
- package/modules/onboarding/genesis-work.js +101 -4
- package/modules/onboarding/routes/genesis-work.js +2 -2
- package/modules/platform-identity/module.json +1 -1
- package/modules/platform-identity/routes/sso-app-status.js +65 -0
- package/modules/provisioning/module.json +1 -0
- package/modules/provisioning/pollers/app-liveness.js +23 -1
- package/modules/provisioning/render-sandbox.js +113 -0
- package/modules/provisioning/render-standup.js +3 -1
- package/modules/provisioning/routes/provisioning.js +4 -1
- package/modules/provisioning/routes/render-standup.js +49 -1
- package/modules/provisioning/seams.js +32 -1
- package/modules/provisioning/starter-bundles.js +1 -0
- package/modules/public-landing/public/assets/guide-core.js +475 -0
- package/modules/public-landing/public/assets/guide-hall.css +121 -0
- package/modules/public-landing/public/assets/guide-hall.js +164 -0
- package/modules/public-landing/public/assets/guide-scene.css +9 -0
- package/modules/public-landing/public/assets/guide-scene.js +58 -381
- package/modules/public-landing/public/index.html +46 -1
- package/modules/public-landing/public/projects.html +112 -6
- package/modules/ui-design/kit/serve.js +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +28 -0
- package/scripts/bongos/first-read.js +150 -0
- package/scripts/bongos/genesis.js +21 -1
- package/scripts/bongos/government-walk.js +4 -4
- package/scripts/bongos/provision-render-sandbox.js +171 -0
- package/scripts/bongos/provision-render.js +37 -2
- package/scripts/bongos/provision-teardown.js +1 -1
- package/scripts/bongos/publish-manifest.js +1 -0
- package/scripts/bongos/render-api.js +33 -3
- package/scripts/bongos/render-payload.js +39 -1
- package/scripts/bongos/seam-wiring-guard.js +3 -2
- package/scripts/gds/first-read.js +7 -0
- package/scripts/gds/provision-render-sandbox.js +6 -0
- package/scripts/hall-preview/server.js +2 -0
- package/src/bongos/auth-admission.js +64 -0
- package/src/bongos/auth.js +2 -1
- package/src/bongos/module-scope-map.js +4 -0
- package/src/bongos/routes/core-update.js +3 -16
- package/src/bongos/routes/modules.js +11 -0
- package/src/bongos/serve-internal.js +20 -6
- package/src/module-api.js +6 -1
- package/src/module-loader/loader.js +2 -2
- package/tests/app_host.mjs +413 -0
- package/tests/first_read.mjs +479 -0
- package/tests/genesis_work.mjs +74 -3
- package/tests/government_act_alone_buildings.mjs +2 -0
- package/tests/government_charter_advice.mjs +150 -0
- package/tests/landing_guide_hall.mjs +364 -0
- package/tests/landing_guide_scene.mjs +8 -5
- package/tests/module_api.mjs +1 -0
- package/tests/module_loader.mjs +1 -1
- package/tests/npm_release_where.mjs +13 -3
- package/tests/provisioning_app_status.mjs +3 -2
- package/tests/provisioning_render_route.mjs +1 -1
- package/tests/provisioning_teardown_intent.mjs +50 -0
- package/tests/render_api.mjs +5 -2
- package/tests/render_sandbox.mjs +447 -0
package/bin/bongos.js
CHANGED
|
@@ -82,6 +82,7 @@ const VERBS = {
|
|
|
82
82
|
status: { script: 'status.js', group: 'work', summary: 'Version / criterion progress (bongos status C8)', selfHelp: true },
|
|
83
83
|
recall: { script: 'recall.js', group: 'work', summary: 'Search the docs + project knowledge (bongos recall "x")' },
|
|
84
84
|
cost: { script: 'cost.js', group: 'work', summary: 'Log a cost entry' },
|
|
85
|
+
'first-read': { script: 'first-read.js', group: 'work', summary: 'First read-through of an existing project: check, submit and accept the repository map your own AI wrote' },
|
|
85
86
|
howto: { script: 'howto.js', group: 'work', summary: 'The how-to guide: show the unread steps for a moment (bongos howto moment first_open)' },
|
|
86
87
|
genesis: { script: 'genesis.js', group: 'work', summary: 'The founder\'s genesis answers: show, answer, or read them for planning (bongos genesis context)' },
|
|
87
88
|
|
|
@@ -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
|
+
- 729 operations across 88 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -154,6 +154,10 @@ function createClient(opts = {}) {
|
|
|
154
154
|
// GET /analytics/builder/{id} — rank: any-builder — GET /analytics/builder/:id
|
|
155
155
|
getAnalyticsBuilderId: (args) => request("GET", "/analytics/builder/{id}", { hasBody: false }, args),
|
|
156
156
|
},
|
|
157
|
+
"appHost": {
|
|
158
|
+
// GET /app-host — rank: any-builder — GET /app-host
|
|
159
|
+
getAppHost: (args) => request("GET", "/app-host", { hasBody: false }, args),
|
|
160
|
+
},
|
|
157
161
|
"artistGate": {
|
|
158
162
|
// GET /artist-gate — rank: any-builder — GET /artist-gate
|
|
159
163
|
getArtistGate: (args) => request("GET", "/artist-gate", { hasBody: false }, args),
|
|
@@ -468,6 +472,22 @@ function createClient(opts = {}) {
|
|
|
468
472
|
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
469
473
|
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
470
474
|
},
|
|
475
|
+
"firstRead": {
|
|
476
|
+
// GET /first-read/catalog — rank: any-builder — GET /first-read/catalog
|
|
477
|
+
getFirstReadCatalog: (args) => request("GET", "/first-read/catalog", { hasBody: false }, args),
|
|
478
|
+
// POST /first-read/maps — rank: metic+archon — POST /first-read/maps
|
|
479
|
+
postFirstReadMaps: (args) => request("POST", "/first-read/maps", { hasBody: true }, args),
|
|
480
|
+
// GET /first-read/maps/{id} — rank: metic+archon — GET /first-read/maps/:id
|
|
481
|
+
getFirstReadMapsId: (args) => request("GET", "/first-read/maps/{id}", { hasBody: false }, args),
|
|
482
|
+
// POST /first-read/maps/{id}/accept — rank: metic+archon — POST /first-read/maps/:id/accept
|
|
483
|
+
postFirstReadMapsIdAccept: (args) => request("POST", "/first-read/maps/{id}/accept", { hasBody: true }, args),
|
|
484
|
+
// POST /first-read/maps/{id}/dismiss — rank: metic+archon — POST /first-read/maps/:id/dismiss
|
|
485
|
+
postFirstReadMapsIdDismiss: (args) => request("POST", "/first-read/maps/{id}/dismiss", { hasBody: true }, args),
|
|
486
|
+
// POST /first-read/maps/{id}/reject — rank: metic+archon — POST /first-read/maps/:id/reject
|
|
487
|
+
postFirstReadMapsIdReject: (args) => request("POST", "/first-read/maps/{id}/reject", { hasBody: true }, args),
|
|
488
|
+
// GET /first-read/prompt — rank: any-builder — GET /first-read/prompt
|
|
489
|
+
getFirstReadPrompt: (args) => request("GET", "/first-read/prompt", { hasBody: false }, args),
|
|
490
|
+
},
|
|
471
491
|
"founding": {
|
|
472
492
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
473
493
|
postFoundingAlive: (args) => request("POST", "/founding/alive", { hasBody: true }, args),
|
|
@@ -1307,6 +1327,8 @@ function createClient(opts = {}) {
|
|
|
1307
1327
|
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
1308
1328
|
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
1309
1329
|
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
1330
|
+
// POST /provisioning/instances/{id}/render/sandbox — rank: any-builder — POST /provisioning/instances/:id/render/sandbox
|
|
1331
|
+
postProvisioningInstancesIdRenderSandbox: (args) => request("POST", "/provisioning/instances/{id}/render/sandbox", { hasBody: true }, args),
|
|
1310
1332
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
1311
1333
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
1312
1334
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -1501,6 +1523,8 @@ function createClient(opts = {}) {
|
|
|
1501
1523
|
"sso": {
|
|
1502
1524
|
// POST /sso/activity/rollup — rank: public — POST /sso/activity/rollup
|
|
1503
1525
|
postSsoActivityRollup: (args) => request("POST", "/sso/activity/rollup", { hasBody: true }, args),
|
|
1526
|
+
// POST /sso/app-status — rank: public — POST /sso/app-status
|
|
1527
|
+
postSsoAppStatus: (args) => request("POST", "/sso/app-status", { hasBody: true }, args),
|
|
1504
1528
|
// POST /sso/applicant-profile — rank: public — POST /sso/applicant-profile
|
|
1505
1529
|
postSsoApplicantProfile: (args) => request("POST", "/sso/applicant-profile", { hasBody: true }, args),
|
|
1506
1530
|
// GET /sso/authorize — rank: public — GET /sso/authorize
|
|
@@ -153,6 +153,10 @@ function createClient(opts = {}) {
|
|
|
153
153
|
// GET /analytics/builder/{id} — rank: any-builder — GET /analytics/builder/:id
|
|
154
154
|
getAnalyticsBuilderId: (args) => request("GET", "/analytics/builder/{id}", { hasBody: false }, args),
|
|
155
155
|
},
|
|
156
|
+
"appHost": {
|
|
157
|
+
// GET /app-host — rank: any-builder — GET /app-host
|
|
158
|
+
getAppHost: (args) => request("GET", "/app-host", { hasBody: false }, args),
|
|
159
|
+
},
|
|
156
160
|
"artistGate": {
|
|
157
161
|
// GET /artist-gate — rank: any-builder — GET /artist-gate
|
|
158
162
|
getArtistGate: (args) => request("GET", "/artist-gate", { hasBody: false }, args),
|
|
@@ -467,6 +471,22 @@ function createClient(opts = {}) {
|
|
|
467
471
|
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
468
472
|
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
469
473
|
},
|
|
474
|
+
"firstRead": {
|
|
475
|
+
// GET /first-read/catalog — rank: any-builder — GET /first-read/catalog
|
|
476
|
+
getFirstReadCatalog: (args) => request("GET", "/first-read/catalog", { hasBody: false }, args),
|
|
477
|
+
// POST /first-read/maps — rank: metic+archon — POST /first-read/maps
|
|
478
|
+
postFirstReadMaps: (args) => request("POST", "/first-read/maps", { hasBody: true }, args),
|
|
479
|
+
// GET /first-read/maps/{id} — rank: metic+archon — GET /first-read/maps/:id
|
|
480
|
+
getFirstReadMapsId: (args) => request("GET", "/first-read/maps/{id}", { hasBody: false }, args),
|
|
481
|
+
// POST /first-read/maps/{id}/accept — rank: metic+archon — POST /first-read/maps/:id/accept
|
|
482
|
+
postFirstReadMapsIdAccept: (args) => request("POST", "/first-read/maps/{id}/accept", { hasBody: true }, args),
|
|
483
|
+
// POST /first-read/maps/{id}/dismiss — rank: metic+archon — POST /first-read/maps/:id/dismiss
|
|
484
|
+
postFirstReadMapsIdDismiss: (args) => request("POST", "/first-read/maps/{id}/dismiss", { hasBody: true }, args),
|
|
485
|
+
// POST /first-read/maps/{id}/reject — rank: metic+archon — POST /first-read/maps/:id/reject
|
|
486
|
+
postFirstReadMapsIdReject: (args) => request("POST", "/first-read/maps/{id}/reject", { hasBody: true }, args),
|
|
487
|
+
// GET /first-read/prompt — rank: any-builder — GET /first-read/prompt
|
|
488
|
+
getFirstReadPrompt: (args) => request("GET", "/first-read/prompt", { hasBody: false }, args),
|
|
489
|
+
},
|
|
470
490
|
"founding": {
|
|
471
491
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
472
492
|
postFoundingAlive: (args) => request("POST", "/founding/alive", { hasBody: true }, args),
|
|
@@ -1306,6 +1326,8 @@ function createClient(opts = {}) {
|
|
|
1306
1326
|
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
1307
1327
|
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
1308
1328
|
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
1329
|
+
// POST /provisioning/instances/{id}/render/sandbox — rank: any-builder — POST /provisioning/instances/:id/render/sandbox
|
|
1330
|
+
postProvisioningInstancesIdRenderSandbox: (args) => request("POST", "/provisioning/instances/{id}/render/sandbox", { hasBody: true }, args),
|
|
1309
1331
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
1310
1332
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
1311
1333
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -1500,6 +1522,8 @@ function createClient(opts = {}) {
|
|
|
1500
1522
|
"sso": {
|
|
1501
1523
|
// POST /sso/activity/rollup — rank: public — POST /sso/activity/rollup
|
|
1502
1524
|
postSsoActivityRollup: (args) => request("POST", "/sso/activity/rollup", { hasBody: true }, args),
|
|
1525
|
+
// POST /sso/app-status — rank: public — POST /sso/app-status
|
|
1526
|
+
postSsoAppStatus: (args) => request("POST", "/sso/app-status", { hasBody: true }, args),
|
|
1503
1527
|
// POST /sso/applicant-profile — rank: public — POST /sso/applicant-profile
|
|
1504
1528
|
postSsoApplicantProfile: (args) => request("POST", "/sso/applicant-profile", { hasBody: true }, args),
|
|
1505
1529
|
// GET /sso/authorize — rank: public — GET /sso/authorize
|
|
@@ -75,6 +75,8 @@ export interface GetCoreUpgradesResponse { ok: boolean; running: unknown; limit:
|
|
|
75
75
|
export interface GetDiscordChannelsPlanResponse { ok: boolean; guild_id: unknown; op_count: unknown; ops: unknown; warnings: unknown }
|
|
76
76
|
export interface GetDiscordChannelsSnapshotResponse { ok: boolean; guild_id: unknown; config: unknown; warnings: unknown }
|
|
77
77
|
export interface GetDoneWhenPendingReviewResponse { criteria: unknown; count: unknown }
|
|
78
|
+
export interface GetFirstReadCatalogResponse { available: unknown; modules: unknown }
|
|
79
|
+
export interface GetFirstReadPromptResponse { schema: unknown; file: unknown; prompt: unknown; example: unknown; limits: unknown; catalog: unknown }
|
|
78
80
|
export interface GetFrontDoorGuideMineResponse { ok: boolean; conversation: unknown }
|
|
79
81
|
export interface GetGithubOrgsOrgResponse { org: unknown }
|
|
80
82
|
export interface GetGithubRepoResponse { ok: boolean; repo: unknown; private_deployable: boolean }
|
|
@@ -164,7 +166,7 @@ export interface GetProvisioningHealthResponse { module: unknown; ok: boolean; c
|
|
|
164
166
|
export interface GetProvisioningInstancesIdEnvManifestResponse { instance: unknown; env_vars: unknown; environments: unknown; values_held: boolean; note: unknown }
|
|
165
167
|
export interface GetProvisioningInstancesIdInviteSuggestionsResponse { suggested: unknown; seeking: unknown; reason: unknown; unavailable?: unknown }
|
|
166
168
|
export interface GetProvisioningInstancesIdLookResponse { ok: boolean; look: unknown; options: unknown; logo_max_bytes: unknown }
|
|
167
|
-
export interface GetProvisioningInstancesIdRenderResponse { ok: boolean; app: unknown; env_vars: unknown; values_held: boolean }
|
|
169
|
+
export interface GetProvisioningInstancesIdRenderResponse { ok: boolean; app: unknown; sandbox: unknown; env_vars: unknown; values_held: boolean }
|
|
168
170
|
export interface GetProvisioningInstancesIdResponse { instance: unknown; open_intent: unknown; github_app: unknown; github_setup: unknown }
|
|
169
171
|
export interface GetProvisioningInstancesIdSettingsResponse { ok: boolean; settings: unknown; planet: unknown; options: unknown }
|
|
170
172
|
export interface GetProvisioningInstancesResponse { instances: unknown }
|
|
@@ -389,6 +391,10 @@ export interface PostDoneWhenCriterionIdUnsatisfyRequest { reason?: string }
|
|
|
389
391
|
export interface PostDoneWhenCriterionIdUnsatisfyResponse { criterion: unknown }
|
|
390
392
|
export interface PostFeedbackReceiptRequest { sha256: string; kind?: "bug" | "idea" }
|
|
391
393
|
export interface PostFeedbackReceiptResponse { ok: boolean; receipt: unknown; hub: unknown }
|
|
394
|
+
export interface PostFirstReadMapsIdAcceptRequest { all?: boolean; items?: string[] }
|
|
395
|
+
export interface PostFirstReadMapsIdDismissRequest { items: string[] }
|
|
396
|
+
export interface PostFirstReadMapsRequest { map: Record<string, unknown> }
|
|
397
|
+
export interface PostFirstReadMapsResponse { map_id: unknown; status: unknown; items: unknown; next: unknown }
|
|
392
398
|
export interface PostFoundingPlanRequest { days?: Record<string, unknown>; passes?: number; advisors?: string; government?: string; expected_builders?: number; existing?: boolean }
|
|
393
399
|
export interface PostFrontDoorGuideConversationsIdAttachRequest { token: string }
|
|
394
400
|
export interface PostFrontDoorGuideConversationsIdAttachResponse { ok: boolean; conversation: unknown }
|
|
@@ -607,9 +613,11 @@ export interface PostProvisioningInstancesIdGithubAppRequest { account?: string;
|
|
|
607
613
|
export interface PostProvisioningInstancesIdGithubAppResponse { state: unknown; account: unknown; post_url: unknown; personal_url: unknown; org_url: unknown; org_login: unknown; manifest: unknown; redirect_url: unknown; expires_at: unknown }
|
|
608
614
|
export interface PostProvisioningInstancesIdRenderRequest { key: string; owner_id: string; mode: string; service_id?: string; web_plan?: string; db_plan?: string; region?: string; runtime?: string; build_command?: string; start_command?: string; database?: boolean }
|
|
609
615
|
export interface PostProvisioningInstancesIdRenderResponse { ok: boolean; queued: boolean; action: unknown; mode: unknown; with_setup: boolean; message: unknown }
|
|
616
|
+
export interface PostProvisioningInstancesIdRenderSandboxRequest { key: string }
|
|
617
|
+
export interface PostProvisioningInstancesIdRenderSandboxResponse { ok: boolean; queued: boolean; action: unknown; sandbox: boolean; message: unknown }
|
|
610
618
|
export interface PostProvisioningInstancesIdRepoPrivateResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
|
|
611
619
|
export interface PostProvisioningInstancesIdRestartResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
|
|
612
|
-
export interface PostProvisioningInstancesIdTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; superseded: unknown; message: unknown }
|
|
620
|
+
export interface PostProvisioningInstancesIdTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; superseded: unknown; sandbox_key_lent: unknown; message: unknown }
|
|
613
621
|
export interface PostProvisioningInstancesIdUpdateSubscriptionRequest { subscribed: boolean }
|
|
614
622
|
export interface PostProvisioningInstancesIdUpdateSubscriptionResponse { ok: boolean; update_subscribed: unknown; previous: unknown; changed: unknown }
|
|
615
623
|
export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; no_address?: boolean; tier?: string; onboard_mode?: string; type?: string; description?: string; detail?: Record<string, unknown>; modules?: string[]; terms_acknowledged?: boolean; demo?: Record<string, unknown>; ship_mode?: "auto" | "manual"; genesis?: boolean; test?: boolean }
|
|
@@ -652,6 +660,8 @@ export interface PostSpecialitiesRequest { name: string; discipline: string; sum
|
|
|
652
660
|
export interface PostSpecialitiesResponse { speciality: unknown }
|
|
653
661
|
export interface PostSsoActivityRollupRequest { client_id: string; client_secret: string; github_id: StringifiableId; credits?: number; tasks_shipped?: number; karma?: number; rank?: string; disciplines?: unknown; recent_ships?: unknown; crafts?: unknown }
|
|
654
662
|
export interface PostSsoActivityRollupResponse { ok: boolean }
|
|
663
|
+
export interface PostSsoAppStatusRequest { client_id: string; client_secret: string }
|
|
664
|
+
export interface PostSsoAppStatusResponse { ok: boolean; known: boolean; app: unknown; sandbox: unknown }
|
|
655
665
|
export interface PostSsoApplicantProfileRequest { client_id: string; client_secret: string; github_id: StringifiableId }
|
|
656
666
|
export interface PostSsoApplicantProfileResponse { profile: unknown; guild: unknown }
|
|
657
667
|
export interface PostSsoDevicePollRequest { device_code: string }
|
|
@@ -836,6 +846,10 @@ export interface BongosClient {
|
|
|
836
846
|
/** GET /analytics/builder/{id} — rank: any-builder */
|
|
837
847
|
getAnalyticsBuilderId(args?: RequestArgs): Promise<ApiResponse>;
|
|
838
848
|
};
|
|
849
|
+
"appHost": {
|
|
850
|
+
/** GET /app-host — rank: any-builder */
|
|
851
|
+
getAppHost(args?: RequestArgs): Promise<ApiResponse>;
|
|
852
|
+
};
|
|
839
853
|
"artistGate": {
|
|
840
854
|
/** GET /artist-gate — rank: any-builder */
|
|
841
855
|
getArtistGate(args?: RequestArgs): Promise<GetArtistGateResponse>;
|
|
@@ -1150,6 +1164,22 @@ export interface BongosClient {
|
|
|
1150
1164
|
/** GET /feedback/receipt/{id} — rank: public */
|
|
1151
1165
|
getFeedbackReceiptId(args?: RequestArgs): Promise<ApiResponse>;
|
|
1152
1166
|
};
|
|
1167
|
+
"firstRead": {
|
|
1168
|
+
/** GET /first-read/catalog — rank: any-builder */
|
|
1169
|
+
getFirstReadCatalog(args?: RequestArgs): Promise<GetFirstReadCatalogResponse>;
|
|
1170
|
+
/** POST /first-read/maps — rank: metic+archon */
|
|
1171
|
+
postFirstReadMaps(args: RequestArgs & { body: PostFirstReadMapsRequest }): Promise<PostFirstReadMapsResponse>;
|
|
1172
|
+
/** GET /first-read/maps/{id} — rank: metic+archon */
|
|
1173
|
+
getFirstReadMapsId(args?: RequestArgs): Promise<ApiResponse>;
|
|
1174
|
+
/** POST /first-read/maps/{id}/accept — rank: metic+archon */
|
|
1175
|
+
postFirstReadMapsIdAccept(args?: RequestArgs & { body?: PostFirstReadMapsIdAcceptRequest }): Promise<ApiResponse>;
|
|
1176
|
+
/** POST /first-read/maps/{id}/dismiss — rank: metic+archon */
|
|
1177
|
+
postFirstReadMapsIdDismiss(args: RequestArgs & { body: PostFirstReadMapsIdDismissRequest }): Promise<ApiResponse>;
|
|
1178
|
+
/** POST /first-read/maps/{id}/reject — rank: metic+archon */
|
|
1179
|
+
postFirstReadMapsIdReject(args?: RequestArgs): Promise<ApiResponse>;
|
|
1180
|
+
/** GET /first-read/prompt — rank: any-builder */
|
|
1181
|
+
getFirstReadPrompt(args?: RequestArgs): Promise<GetFirstReadPromptResponse>;
|
|
1182
|
+
};
|
|
1153
1183
|
"founding": {
|
|
1154
1184
|
/** POST /founding/alive — rank: any-builder */
|
|
1155
1185
|
postFoundingAlive(args?: RequestArgs): Promise<ApiResponse>;
|
|
@@ -1989,6 +2019,8 @@ export interface BongosClient {
|
|
|
1989
2019
|
getProvisioningInstancesIdRender(args?: RequestArgs): Promise<GetProvisioningInstancesIdRenderResponse>;
|
|
1990
2020
|
/** POST /provisioning/instances/{id}/render — rank: any-builder */
|
|
1991
2021
|
postProvisioningInstancesIdRender(args: RequestArgs & { body: PostProvisioningInstancesIdRenderRequest }): Promise<PostProvisioningInstancesIdRenderResponse>;
|
|
2022
|
+
/** POST /provisioning/instances/{id}/render/sandbox — rank: any-builder */
|
|
2023
|
+
postProvisioningInstancesIdRenderSandbox(args: RequestArgs & { body: PostProvisioningInstancesIdRenderSandboxRequest }): Promise<PostProvisioningInstancesIdRenderSandboxResponse>;
|
|
1992
2024
|
/** POST /provisioning/instances/{id}/repo-private — rank: any-builder */
|
|
1993
2025
|
postProvisioningInstancesIdRepoPrivate(args?: RequestArgs): Promise<PostProvisioningInstancesIdRepoPrivateResponse>;
|
|
1994
2026
|
/** POST /provisioning/instances/{id}/restart — rank: any-builder */
|
|
@@ -2183,6 +2215,8 @@ export interface BongosClient {
|
|
|
2183
2215
|
"sso": {
|
|
2184
2216
|
/** POST /sso/activity/rollup — rank: public */
|
|
2185
2217
|
postSsoActivityRollup(args: RequestArgs & { body: PostSsoActivityRollupRequest }): Promise<PostSsoActivityRollupResponse>;
|
|
2218
|
+
/** POST /sso/app-status — rank: public */
|
|
2219
|
+
postSsoAppStatus(args: RequestArgs & { body: PostSsoAppStatusRequest }): Promise<PostSsoAppStatusResponse>;
|
|
2186
2220
|
/** POST /sso/applicant-profile — rank: public */
|
|
2187
2221
|
postSsoApplicantProfile(args: RequestArgs & { body: PostSsoApplicantProfileRequest }): Promise<PostSsoApplicantProfileResponse>;
|
|
2188
2222
|
/** GET /sso/authorize — rank: public */
|
|
@@ -150,6 +150,10 @@ export function createClient(opts = {}) {
|
|
|
150
150
|
// GET /analytics/builder/{id} — rank: any-builder — GET /analytics/builder/:id
|
|
151
151
|
getAnalyticsBuilderId: (args) => request("GET", "/analytics/builder/{id}", { hasBody: false }, args),
|
|
152
152
|
},
|
|
153
|
+
"appHost": {
|
|
154
|
+
// GET /app-host — rank: any-builder — GET /app-host
|
|
155
|
+
getAppHost: (args) => request("GET", "/app-host", { hasBody: false }, args),
|
|
156
|
+
},
|
|
153
157
|
"artistGate": {
|
|
154
158
|
// GET /artist-gate — rank: any-builder — GET /artist-gate
|
|
155
159
|
getArtistGate: (args) => request("GET", "/artist-gate", { hasBody: false }, args),
|
|
@@ -464,6 +468,22 @@ export function createClient(opts = {}) {
|
|
|
464
468
|
// GET /feedback/receipt/{id} — rank: public — GET /feedback/receipt/:id
|
|
465
469
|
getFeedbackReceiptId: (args) => request("GET", "/feedback/receipt/{id}", { hasBody: false }, args),
|
|
466
470
|
},
|
|
471
|
+
"firstRead": {
|
|
472
|
+
// GET /first-read/catalog — rank: any-builder — GET /first-read/catalog
|
|
473
|
+
getFirstReadCatalog: (args) => request("GET", "/first-read/catalog", { hasBody: false }, args),
|
|
474
|
+
// POST /first-read/maps — rank: metic+archon — POST /first-read/maps
|
|
475
|
+
postFirstReadMaps: (args) => request("POST", "/first-read/maps", { hasBody: true }, args),
|
|
476
|
+
// GET /first-read/maps/{id} — rank: metic+archon — GET /first-read/maps/:id
|
|
477
|
+
getFirstReadMapsId: (args) => request("GET", "/first-read/maps/{id}", { hasBody: false }, args),
|
|
478
|
+
// POST /first-read/maps/{id}/accept — rank: metic+archon — POST /first-read/maps/:id/accept
|
|
479
|
+
postFirstReadMapsIdAccept: (args) => request("POST", "/first-read/maps/{id}/accept", { hasBody: true }, args),
|
|
480
|
+
// POST /first-read/maps/{id}/dismiss — rank: metic+archon — POST /first-read/maps/:id/dismiss
|
|
481
|
+
postFirstReadMapsIdDismiss: (args) => request("POST", "/first-read/maps/{id}/dismiss", { hasBody: true }, args),
|
|
482
|
+
// POST /first-read/maps/{id}/reject — rank: metic+archon — POST /first-read/maps/:id/reject
|
|
483
|
+
postFirstReadMapsIdReject: (args) => request("POST", "/first-read/maps/{id}/reject", { hasBody: true }, args),
|
|
484
|
+
// GET /first-read/prompt — rank: any-builder — GET /first-read/prompt
|
|
485
|
+
getFirstReadPrompt: (args) => request("GET", "/first-read/prompt", { hasBody: false }, args),
|
|
486
|
+
},
|
|
467
487
|
"founding": {
|
|
468
488
|
// POST /founding/alive — rank: any-builder — POST /founding/alive
|
|
469
489
|
postFoundingAlive: (args) => request("POST", "/founding/alive", { hasBody: true }, args),
|
|
@@ -1303,6 +1323,8 @@ export function createClient(opts = {}) {
|
|
|
1303
1323
|
getProvisioningInstancesIdRender: (args) => request("GET", "/provisioning/instances/{id}/render", { hasBody: false }, args),
|
|
1304
1324
|
// POST /provisioning/instances/{id}/render — rank: any-builder — POST /provisioning/instances/:id/render
|
|
1305
1325
|
postProvisioningInstancesIdRender: (args) => request("POST", "/provisioning/instances/{id}/render", { hasBody: true }, args),
|
|
1326
|
+
// POST /provisioning/instances/{id}/render/sandbox — rank: any-builder — POST /provisioning/instances/:id/render/sandbox
|
|
1327
|
+
postProvisioningInstancesIdRenderSandbox: (args) => request("POST", "/provisioning/instances/{id}/render/sandbox", { hasBody: true }, args),
|
|
1306
1328
|
// POST /provisioning/instances/{id}/repo-private — rank: any-builder — POST /provisioning/instances/:id/repo-private
|
|
1307
1329
|
postProvisioningInstancesIdRepoPrivate: (args) => request("POST", "/provisioning/instances/{id}/repo-private", { hasBody: true }, args),
|
|
1308
1330
|
// POST /provisioning/instances/{id}/restart — rank: any-builder — POST /provisioning/instances/:id/restart
|
|
@@ -1497,6 +1519,8 @@ export function createClient(opts = {}) {
|
|
|
1497
1519
|
"sso": {
|
|
1498
1520
|
// POST /sso/activity/rollup — rank: public — POST /sso/activity/rollup
|
|
1499
1521
|
postSsoActivityRollup: (args) => request("POST", "/sso/activity/rollup", { hasBody: true }, args),
|
|
1522
|
+
// POST /sso/app-status — rank: public — POST /sso/app-status
|
|
1523
|
+
postSsoAppStatus: (args) => request("POST", "/sso/app-status", { hasBody: true }, args),
|
|
1500
1524
|
// POST /sso/applicant-profile — rank: public — POST /sso/applicant-profile
|
|
1501
1525
|
postSsoApplicantProfile: (args) => request("POST", "/sso/applicant-profile", { hasBody: true }, args),
|
|
1502
1526
|
// GET /sso/authorize — rank: public — GET /sso/authorize
|
|
@@ -106,3 +106,11 @@ Each sibling task's description now opens with a dated note, *"Re-read against A
|
|
|
106
106
|
| [task 1005291](https://cloudbongos.com/builders#/task/1005291) | A read-only key is the floor; the gate is an outbound wrapper in the starter active under `BONGOS_SANDBOX=1`, with its limit said plainly; free plan blocks mail ports. |
|
|
107
107
|
| [task 1005292](https://cloudbongos.com/builders#/task/1005292) | Same rule over the release pin; a second instance takes every release and carries a throwaway test project; owner choice 2 and the patch auto-move question are asked here. |
|
|
108
108
|
| [task 1005293](https://cloudbongos.com/builders#/task/1005293) | Added checks: no live deploy after a ship, promote refuses without the key, the sandbox band shows, sandbox data is fake, and the lent key is confirmed read-only. |
|
|
109
|
+
|
|
110
|
+
## 10. Amendment — what setting it up found (2026-11-13, [task 1005289](https://cloudbongos.com/builders#/task/1005289))
|
|
111
|
+
|
|
112
|
+
- **A second database in one server is allowed.** Render's own page ([render.com/docs/postgresql-creating-connecting](https://render.com/docs/postgresql-creating-connecting), section "Adding multiple databases to a single instance", read 2026-11-13) says extra databases can be made in an instance, with plain SQL (`CREATE DATABASE`) over a psql session, and reached on the instance's same addresses with the new name as the last part. Render's API has no call for it, so the runner makes it with SQL over the server's external address. The page names no plan limit and no count limit. **Not yet tried on a real Render account** — no account was available to the session that built it; the walk ([task 1005293](https://cloudbongos.com/builders#/task/1005293)) is the first real run. Owner choice 1 in §6 therefore does not arise unless that run says otherwise; if the database stage fails, the sandbox runs with no database and says why, and nothing paid is bought in its place.
|
|
113
|
+
- **The database starts empty.** The app's own seed fills it (the starter's job under `BONGOS_SANDBOX=1`); the platform cannot know an app's tables.
|
|
114
|
+
- **The live service's switch to manual deploys is left to the promote task** ([task 1005290](https://cloudbongos.com/builders#/task/1005290)), so that live never stops updating before there is a button that moves it.
|
|
115
|
+
- **Teardown needs the owner's key to remove the sandbox**, typed on the teardown screen and used once. The Render client gains one delete, `deleteSandboxService`, which refuses anything not named `…-sandbox` on the free plan. Without the key the sandbox stays on the owner's account and the owner is told exactly what to remove.
|
|
116
|
+
|
|
@@ -58,4 +58,5 @@ every stage, not a strategize feature that charter then copies.
|
|
|
58
58
|
the hall version (task 1005285). Today a founder works a stage through their AI session
|
|
59
59
|
and `npx bongos genesis …`.
|
|
60
60
|
- Task 1005115 renders each stage's record as an editable document from this store.
|
|
61
|
+
- Charter adopted it (task 1005119): how decisions should go and the founder's principles. A question may declare `choices` (a closed answer, stored as its key) where another module reads the answer; the charter stage's read carries the government module's recommendation built from them.
|
|
61
62
|
- Scope adopted it with the project interview (task 1005114): six questions in three groups. `/goal-create` and `/planning-session` read the answers before planning, through `genesis.js context`.
|