@bongos/core 1.25.21 → 1.25.22
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 +84 -44
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +8 -0
- package/clients/bongos-client/index.cjs +8 -0
- package/clients/bongos-client/index.d.ts +11 -0
- package/clients/bongos-client/index.mjs +8 -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/api/openapi.json +198 -3
- package/docs/api-reference.md +7 -3
- package/docs/copy-inventory.md +412 -407
- package/docs/copy-registry.json +548 -503
- package/docs/file-map.md +1 -0
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +349 -343
- package/modules/lifecycle/kickoff-checklist.js +1 -1
- package/modules/lifecycle/routes/pay-type-gates.js +7 -2
- package/modules/onboarding/project-facts.js +318 -0
- package/modules/onboarding/routes/genesis-work.js +16 -0
- package/modules/provisioning/project-facts.js +55 -0
- package/modules/provisioning/provisioning.js +4 -1
- package/modules/provisioning/render-sandbox.js +6 -0
- package/modules/public-landing/public/projects.html +191 -31
- package/package-lock.json +2 -2
- package/package.json +2 -1
- package/release-notes.json +14 -0
- package/scripts/bongos/genesis.js +38 -2
- package/scripts/bongos/init.js +13 -0
- package/scripts/bongos/package-core.js +2 -0
- package/scripts/bongos/provision-render-sandbox.js +5 -1
- package/scripts/bongos/render-payload.js +5 -2
- package/src/bongos/folder-upload.js +243 -0
- package/src/bongos/routes/github.js +109 -16
- package/src/bongos/routes.js +3 -0
- package/src/branding.js +4 -0
- package/src/module-api.js +1 -1
- package/src/sandbox/gate.js +164 -0
- package/src/sandbox/index.js +144 -0
- package/tests/folder_upload_project.mjs +396 -0
- package/tests/genesis_work_routes.mjs +25 -1
- package/tests/project_facts.mjs +158 -0
- package/tests/projects_hub.mjs +1 -1
- package/tests/provision_settings_apply.mjs +2 -1
- package/tests/provisioning_settings_env.mjs +2 -2
- package/tests/public_landing_projects.mjs +27 -5
- package/tests/render_sandbox.mjs +7 -4
- package/tests/sandbox_gate.mjs +182 -0
package/docs/api/openapi.json
CHANGED
|
@@ -8125,6 +8125,77 @@
|
|
|
8125
8125
|
]
|
|
8126
8126
|
}
|
|
8127
8127
|
},
|
|
8128
|
+
"/founding/facts": {
|
|
8129
|
+
"get": {
|
|
8130
|
+
"operationId": "get_founding_facts",
|
|
8131
|
+
"tags": [
|
|
8132
|
+
"founding"
|
|
8133
|
+
],
|
|
8134
|
+
"summary": "GET /founding/facts",
|
|
8135
|
+
"description": "The project's own facts and the legalize stage's options (task 1005129, ../project-facts.js): any builder reads them; the facts are the owner's to change, like every genesis write.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
8136
|
+
"x-rank": "any-builder",
|
|
8137
|
+
"x-source": "modules/onboarding/routes/genesis-work.js",
|
|
8138
|
+
"responses": {
|
|
8139
|
+
"200": {
|
|
8140
|
+
"description": "Success."
|
|
8141
|
+
},
|
|
8142
|
+
"400": {
|
|
8143
|
+
"$ref": "#/components/responses/BadRequest"
|
|
8144
|
+
},
|
|
8145
|
+
"401": {
|
|
8146
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
8147
|
+
},
|
|
8148
|
+
"403": {
|
|
8149
|
+
"$ref": "#/components/responses/Forbidden"
|
|
8150
|
+
}
|
|
8151
|
+
},
|
|
8152
|
+
"security": [
|
|
8153
|
+
{
|
|
8154
|
+
"builderSession": []
|
|
8155
|
+
}
|
|
8156
|
+
]
|
|
8157
|
+
},
|
|
8158
|
+
"put": {
|
|
8159
|
+
"operationId": "put_founding_facts",
|
|
8160
|
+
"tags": [
|
|
8161
|
+
"founding"
|
|
8162
|
+
],
|
|
8163
|
+
"summary": "PUT /founding/facts",
|
|
8164
|
+
"description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
8165
|
+
"x-rank": "any-builder",
|
|
8166
|
+
"x-source": "modules/onboarding/routes/genesis-work.js",
|
|
8167
|
+
"requestBody": {
|
|
8168
|
+
"required": true,
|
|
8169
|
+
"content": {
|
|
8170
|
+
"application/json": {
|
|
8171
|
+
"schema": {
|
|
8172
|
+
"$ref": "#/components/schemas/PutFoundingFactsRequest"
|
|
8173
|
+
}
|
|
8174
|
+
}
|
|
8175
|
+
},
|
|
8176
|
+
"x-validated": true
|
|
8177
|
+
},
|
|
8178
|
+
"responses": {
|
|
8179
|
+
"200": {
|
|
8180
|
+
"description": "Success."
|
|
8181
|
+
},
|
|
8182
|
+
"400": {
|
|
8183
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
8184
|
+
},
|
|
8185
|
+
"401": {
|
|
8186
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
8187
|
+
},
|
|
8188
|
+
"403": {
|
|
8189
|
+
"$ref": "#/components/responses/Forbidden"
|
|
8190
|
+
}
|
|
8191
|
+
},
|
|
8192
|
+
"security": [
|
|
8193
|
+
{
|
|
8194
|
+
"builderSession": []
|
|
8195
|
+
}
|
|
8196
|
+
]
|
|
8197
|
+
}
|
|
8198
|
+
},
|
|
8128
8199
|
"/founding/genesis": {
|
|
8129
8200
|
"get": {
|
|
8130
8201
|
"operationId": "get_founding_genesis",
|
|
@@ -8156,6 +8227,37 @@
|
|
|
8156
8227
|
]
|
|
8157
8228
|
}
|
|
8158
8229
|
},
|
|
8230
|
+
"/founding/legalize/options": {
|
|
8231
|
+
"get": {
|
|
8232
|
+
"operationId": "get_founding_legalize_options",
|
|
8233
|
+
"tags": [
|
|
8234
|
+
"founding"
|
|
8235
|
+
],
|
|
8236
|
+
"summary": "GET /founding/legalize/options",
|
|
8237
|
+
"description": "**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
8238
|
+
"x-rank": "any-builder",
|
|
8239
|
+
"x-source": "modules/onboarding/routes/genesis-work.js",
|
|
8240
|
+
"responses": {
|
|
8241
|
+
"200": {
|
|
8242
|
+
"description": "Success."
|
|
8243
|
+
},
|
|
8244
|
+
"400": {
|
|
8245
|
+
"$ref": "#/components/responses/BadRequest"
|
|
8246
|
+
},
|
|
8247
|
+
"401": {
|
|
8248
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
8249
|
+
},
|
|
8250
|
+
"403": {
|
|
8251
|
+
"$ref": "#/components/responses/Forbidden"
|
|
8252
|
+
}
|
|
8253
|
+
},
|
|
8254
|
+
"security": [
|
|
8255
|
+
{
|
|
8256
|
+
"builderSession": []
|
|
8257
|
+
}
|
|
8258
|
+
]
|
|
8259
|
+
}
|
|
8260
|
+
},
|
|
8159
8261
|
"/founding/plan": {
|
|
8160
8262
|
"post": {
|
|
8161
8263
|
"operationId": "post_founding_plan",
|
|
@@ -9454,6 +9556,55 @@
|
|
|
9454
9556
|
]
|
|
9455
9557
|
}
|
|
9456
9558
|
},
|
|
9559
|
+
"/github/repos/upload": {
|
|
9560
|
+
"post": {
|
|
9561
|
+
"operationId": "post_github_repos_upload",
|
|
9562
|
+
"tags": [
|
|
9563
|
+
"github"
|
|
9564
|
+
],
|
|
9565
|
+
"summary": "POST /github/repos/upload",
|
|
9566
|
+
"description": "create a project's repository FROM A FOLDER the person uploaded (task 1005282): papers, artwork or scaffolding, for someone with no repository. The whole upload is checked first (folder-upload.js: sizes, refused types, path safety), and a refusal comes back with each file's plain reason BEFORE the repo exists. Then the private repo is made exactly as POST /github/repos makes it, and the files go in as one commit on main, pushed with the caller's OWN token. The files are never read for meaning and never sent to an AI service. If the push fails after the repo was made, the same builder may retry into THAT repo (`into`), and no other.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
9567
|
+
"x-rank": "any-builder",
|
|
9568
|
+
"x-source": "src/bongos/routes/github.js",
|
|
9569
|
+
"requestBody": {
|
|
9570
|
+
"required": false,
|
|
9571
|
+
"content": {
|
|
9572
|
+
"application/json": {
|
|
9573
|
+
"schema": {
|
|
9574
|
+
"$ref": "#/components/schemas/PostGithubReposUploadRequest"
|
|
9575
|
+
}
|
|
9576
|
+
}
|
|
9577
|
+
},
|
|
9578
|
+
"x-validated": true
|
|
9579
|
+
},
|
|
9580
|
+
"responses": {
|
|
9581
|
+
"200": {
|
|
9582
|
+
"description": "Success.",
|
|
9583
|
+
"content": {
|
|
9584
|
+
"application/json": {
|
|
9585
|
+
"schema": {
|
|
9586
|
+
"$ref": "#/components/schemas/PostGithubReposUploadResponse"
|
|
9587
|
+
}
|
|
9588
|
+
}
|
|
9589
|
+
}
|
|
9590
|
+
},
|
|
9591
|
+
"400": {
|
|
9592
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
9593
|
+
},
|
|
9594
|
+
"401": {
|
|
9595
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9596
|
+
},
|
|
9597
|
+
"403": {
|
|
9598
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9599
|
+
}
|
|
9600
|
+
},
|
|
9601
|
+
"security": [
|
|
9602
|
+
{
|
|
9603
|
+
"builderSession": []
|
|
9604
|
+
}
|
|
9605
|
+
]
|
|
9606
|
+
}
|
|
9607
|
+
},
|
|
9457
9608
|
"/goal-task-relevance/pending": {
|
|
9458
9609
|
"get": {
|
|
9459
9610
|
"operationId": "get_goal_task_relevance_pending",
|
|
@@ -39980,6 +40131,38 @@
|
|
|
39980
40131
|
"repo"
|
|
39981
40132
|
]
|
|
39982
40133
|
},
|
|
40134
|
+
"PostGithubReposUploadRequest": {
|
|
40135
|
+
"type": "object",
|
|
40136
|
+
"properties": {
|
|
40137
|
+
"name": {
|
|
40138
|
+
"type": "string",
|
|
40139
|
+
"maxLength": 100
|
|
40140
|
+
},
|
|
40141
|
+
"org": {
|
|
40142
|
+
"type": "string",
|
|
40143
|
+
"maxLength": 39
|
|
40144
|
+
},
|
|
40145
|
+
"into": {
|
|
40146
|
+
"type": "string",
|
|
40147
|
+
"maxLength": 140
|
|
40148
|
+
},
|
|
40149
|
+
"files": {
|
|
40150
|
+
"type": "array"
|
|
40151
|
+
}
|
|
40152
|
+
},
|
|
40153
|
+
"additionalProperties": false
|
|
40154
|
+
},
|
|
40155
|
+
"PostGithubReposUploadResponse": {
|
|
40156
|
+
"type": "object",
|
|
40157
|
+
"properties": {
|
|
40158
|
+
"repo": {},
|
|
40159
|
+
"uploaded": {}
|
|
40160
|
+
},
|
|
40161
|
+
"required": [
|
|
40162
|
+
"repo",
|
|
40163
|
+
"uploaded"
|
|
40164
|
+
]
|
|
40165
|
+
},
|
|
39983
40166
|
"PostGoalTaskRelevanceIdDecideRequest": {
|
|
39984
40167
|
"type": "object",
|
|
39985
40168
|
"properties": {
|
|
@@ -45550,6 +45733,18 @@
|
|
|
45550
45733
|
},
|
|
45551
45734
|
"additionalProperties": false
|
|
45552
45735
|
},
|
|
45736
|
+
"PutFoundingFactsRequest": {
|
|
45737
|
+
"type": "object",
|
|
45738
|
+
"properties": {
|
|
45739
|
+
"facts": {
|
|
45740
|
+
"type": "object"
|
|
45741
|
+
}
|
|
45742
|
+
},
|
|
45743
|
+
"required": [
|
|
45744
|
+
"facts"
|
|
45745
|
+
],
|
|
45746
|
+
"additionalProperties": false
|
|
45747
|
+
},
|
|
45553
45748
|
"PutFoundingWorkStageAnswersQuestionRequest": {
|
|
45554
45749
|
"type": "object",
|
|
45555
45750
|
"properties": {
|
|
@@ -45995,9 +46190,9 @@
|
|
|
45995
46190
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
45996
46191
|
}
|
|
45997
46192
|
},
|
|
45998
|
-
"x-endpoint-count":
|
|
45999
|
-
"x-schema-count":
|
|
46193
|
+
"x-endpoint-count": 740,
|
|
46194
|
+
"x-schema-count": 767,
|
|
46000
46195
|
"x-undocumented-bodies": 12,
|
|
46001
|
-
"x-response-schemas":
|
|
46196
|
+
"x-response-schemas": 476,
|
|
46002
46197
|
"x-generated-by": "scripts/bongos/gen-api-docs.js"
|
|
46003
46198
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Bongos API reference
|
|
4
4
|
|
|
5
|
-
> **Generated from the live route files** — the route file is authoritative.
|
|
5
|
+
> **Generated from the live route files** — the route file is authoritative. 740 endpoints across 125 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`.
|
|
@@ -333,7 +333,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
333
333
|
| POST | `/api/bongos/first-read/maps/:id/reject` | `metic+archon` | — | .create — the owner's no. |
|
|
334
334
|
| GET | `/api/bongos/first-read/prompt` | `any-builder` | — | the prompt and the shape are instructions, not project data. |
|
|
335
335
|
|
|
336
|
-
## `founding` (
|
|
336
|
+
## `founding` (22)
|
|
337
337
|
|
|
338
338
|
| Method | Path | Rank | Body | Description |
|
|
339
339
|
|---|---|---|---|---|
|
|
@@ -341,7 +341,10 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
341
341
|
| GET | `/api/bongos/founding/builders` | `any-builder` | — | The founding mark (task 1004424): who joined while the project was founding, in join order, with the stage each joined at. |
|
|
342
342
|
| GET | `/api/bongos/founding/context` | `any-builder` | — | |
|
|
343
343
|
| PUT | `/api/bongos/founding/enabled` | `any-builder` | `enabled` | The Test features panel's genesis switch (task 1005036): a test project only, the owner's call. |
|
|
344
|
+
| GET | `/api/bongos/founding/facts` | `any-builder` | — | The project's own facts and the legalize stage's options (task 1005129, ../project-facts.js): any builder reads them; the facts are the o… |
|
|
345
|
+
| PUT | `/api/bongos/founding/facts` | `any-builder` | `facts` | |
|
|
344
346
|
| GET | `/api/bongos/founding/genesis` | `any-builder` | — | A project born through the startup flow enters genesis on its first founding read (founding-birth.js, task 1004506) — here and on GET /me… |
|
|
347
|
+
| GET | `/api/bongos/founding/legalize/options` | `any-builder` | — | |
|
|
345
348
|
| POST | `/api/bongos/founding/plan` | `any-builder` | `days`, `passes`, `advisors`, `government`, `expected_builders`, `existing` | The plan's ranges and vocabularies are genesis-home.js parsePlan's (one source); this schema only names the fields so an unknown one is r… |
|
|
346
349
|
| POST | `/api/bongos/founding/skip` | `any-builder` | — | Skip genesis: the owner opens the full hall from any stage, no sitting, no gate. |
|
|
347
350
|
| POST | `/api/bongos/founding/stages/:stage/close` | `any-builder` | — | task 1005121: one call. |
|
|
@@ -370,7 +373,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
370
373
|
| GET | `/api/bongos/front-door-guide/mine/handoff.md` | `any-builder` | — | my plan as the hand-off file (task 1005274), offered as a download on the creation page. |
|
|
371
374
|
| GET | `/api/bongos/front-door-guide/status` | `public` | — | the landing asks before it offers the chat. |
|
|
372
375
|
|
|
373
|
-
## `github` (
|
|
376
|
+
## `github` (9)
|
|
374
377
|
|
|
375
378
|
| Method | Path | Rank | Body | Description |
|
|
376
379
|
|---|---|---|---|---|
|
|
@@ -382,6 +385,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
382
385
|
| POST | `/api/bongos/github/repo/visibility` | `any-builder` | `repo`, `visibility` | flips one of the caller's repos PUBLIC, with their own credential. |
|
|
383
386
|
| GET | `/api/bongos/github/repos` | `any-builder` | — | acts only on the caller's OWN GitHub identity (the token they granted). |
|
|
384
387
|
| POST | `/api/bongos/github/repos` | `any-builder` | `name`, `org` | creates a repo in the caller's OWN account, or (task 1004651) under an organisation they name in `org`. |
|
|
388
|
+
| POST | `/api/bongos/github/repos/upload` | `any-builder` | `name`, `org`, `into`, `files` | create a project's repository FROM A FOLDER the person uploaded (task 1005282): papers, artwork or scaffolding, for someone with no repos… |
|
|
385
389
|
|
|
386
390
|
## `goal-task-relevance` (2)
|
|
387
391
|
|