@bongos/core 1.17.2 → 1.18.0
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 +426 -96
- package/.devcontainer/healthcheck.sh +0 -0
- package/.devcontainer/init-firewall.sh +0 -0
- package/.devcontainer/post-create.sh +0 -0
- package/GOVERNANCE.md +1 -1
- package/README.md +26 -22
- package/bin/bongos.js +0 -0
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +2 -0
- package/clients/bongos-client/index.cjs +2 -0
- package/clients/bongos-client/index.d.ts +4 -2
- package/clients/bongos-client/index.mjs +2 -0
- package/docker-entrypoint.sh +0 -0
- package/docs/adr/0139-platform-history-migration-to-cloudbongos.md +94 -0
- package/docs/adr/0140-cloudbongos-standalone-reprovision.md +43 -0
- package/docs/adr/README.md +3 -0
- package/docs/api/openapi.json +68 -370
- package/docs/api-reference.md +7 -18
- package/docs/file-map.md +7 -25
- package/docs/onboarding/diagrams/05-versioning.mmd +4 -6
- package/docs/onboarding/diagrams/assertions.json +5 -9
- package/modules/hall-ui/public/builders.js +132 -645
- package/modules/hall-ui/public/goal-inbox.js +67 -26
- package/modules/hall-ui/public/goals-page.js +102 -177
- package/modules/hall-ui/public/goals.css +183 -0
- package/modules/hall-ui/public/goals.html +35 -253
- package/modules/hall-ui/public/goals.js +7 -2
- package/modules/hall-ui/public/hall-kit.js +474 -0
- package/modules/hall-ui/public/hall-widgets.js +24 -20
- package/modules/hall-ui/public/instances-panel.js +24 -3
- package/modules/hall-ui/public/new-project-wizard.js +6 -5
- package/modules/hall-ui/public/settings.css +355 -0
- package/modules/hall-ui/public/settings.html +86 -414
- package/modules/hall-ui/public/settings.js +96 -35
- package/modules/hall-ui/public/style.css +156 -0
- package/modules/hall-ui/public/watch.css +184 -0
- package/modules/hall-ui/public/watch.html +111 -285
- package/modules/hall-ui/public/watch.js +59 -21
- package/modules/hall-ui/public/work.css +194 -0
- package/modules/hall-ui/public/work.html +46 -374
- package/modules/hall-ui/public/work.js +137 -102
- package/modules/lifecycle/criterion-suggest.js +80 -0
- package/modules/lifecycle/db.js +42 -5
- package/modules/lifecycle/routes/goals.js +26 -0
- package/modules/lifecycle/routes/tasks.js +21 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/create.html +83 -7
- package/public-landing/index.html +11 -76
- package/scripts/cron/style_guide_audit.sh +0 -0
- package/scripts/gds/api.js +0 -0
- package/scripts/gds/architect-audit.js +0 -0
- package/scripts/gds/audit-authorship.sh +0 -0
- package/scripts/gds/audit-replay.sh +0 -0
- package/scripts/gds/box.js +0 -0
- package/scripts/gds/capture.js +0 -0
- package/scripts/gds/conductor-dispatch.js +0 -0
- package/scripts/gds/coreB-carve-proof.sh +0 -0
- package/scripts/gds/db-backup-nightly.sh +0 -0
- package/scripts/gds/db-backup-offsite.sh +0 -0
- package/scripts/gds/doctor.js +0 -0
- package/scripts/gds/grade-smoke.js +0 -0
- package/scripts/gds/hooks/pre-push.js +0 -0
- package/scripts/gds/install-git-hooks.js +0 -0
- package/scripts/gds/main-audit.js +0 -0
- package/scripts/gds/oauth-secret.js +0 -0
- package/scripts/gds/onboarding-analyze.js +0 -0
- package/scripts/gds/onboarding-ship.js +0 -0
- package/scripts/gds/paste-token.js +0 -0
- package/scripts/gds/portability-smoke-art.sh +0 -0
- package/scripts/gds/portability-smoke-memory.sh +0 -0
- package/scripts/gds/provision.js +125 -4
- package/scripts/gds/push-main.js +0 -0
- package/scripts/gds/render-ideas.js +0 -0
- package/scripts/gds/security-baseline-check.sh +0 -0
- package/scripts/gds/session.js +0 -0
- package/scripts/gds/ship.js +11 -1
- package/scripts/gds/smoke-batch-claim.sh +0 -0
- package/scripts/gds/smoke-batch-release.sh +0 -0
- package/scripts/gds/smoke-box.sh +0 -0
- package/scripts/gds/smoke-claim-consistency.sh +0 -0
- package/scripts/gds/smoke-dependencies.sh +0 -0
- package/scripts/gds/smoke-write.sh +0 -0
- package/scripts/hall-preview/README.md +103 -0
- package/scripts/hall-preview/fixtures/access-requests.json +20 -0
- package/scripts/hall-preview/fixtures/achievements.json +76 -0
- package/scripts/hall-preview/fixtures/analytics__builder.json +251 -0
- package/scripts/hall-preview/fixtures/audit-log.json +68 -0
- package/scripts/hall-preview/fixtures/blockers__detail.json +12 -0
- package/scripts/hall-preview/fixtures/box__me.json +5 -0
- package/scripts/hall-preview/fixtures/boxes__cost-ledger.json +69 -0
- package/scripts/hall-preview/fixtures/builders__active-claims.json +1 -0
- package/scripts/hall-preview/fixtures/builders__directory.json +81 -0
- package/scripts/hall-preview/fixtures/builders__roster.json +48 -0
- package/scripts/hall-preview/fixtures/goals.json +502 -0
- package/scripts/hall-preview/fixtures/goals__25.json +96 -0
- package/scripts/hall-preview/fixtures/goals__26.json +67 -0
- package/scripts/hall-preview/fixtures/goals__3.json +103 -0
- package/scripts/hall-preview/fixtures/goals__35.json +49 -0
- package/scripts/hall-preview/fixtures/goals__conflicts.json +154 -0
- package/scripts/hall-preview/fixtures/goals__detail.json +96 -0
- package/scripts/hall-preview/fixtures/goals__inbox.json +5 -0
- package/scripts/hall-preview/fixtures/goals__requests.json +3 -0
- package/scripts/hall-preview/fixtures/grades__by-builder.json +32 -0
- package/scripts/hall-preview/fixtures/inbox.json +330 -0
- package/scripts/hall-preview/fixtures/inbox__detail.json +15 -0
- package/scripts/hall-preview/fixtures/instance.json +124 -0
- package/scripts/hall-preview/fixtures/leaderboard.json +184 -0
- package/scripts/hall-preview/fixtures/me.json +476 -0
- package/scripts/hall-preview/fixtures/me__art-key__own.json +6 -0
- package/scripts/hall-preview/fixtures/me__event-sound-prefs.json +209 -0
- package/scripts/hall-preview/fixtures/me__recent-ships.json +304 -0
- package/scripts/hall-preview/fixtures/me__render.json +5 -0
- package/scripts/hall-preview/fixtures/me__skill-prefs.json +143 -0
- package/scripts/hall-preview/fixtures/me__sound-prefs.json +67 -0
- package/scripts/hall-preview/fixtures/me__wandering.json +43 -0
- package/scripts/hall-preview/fixtures/override-requests.json +15 -0
- package/scripts/hall-preview/fixtures/provisioning__fleet.json +1 -0
- package/scripts/hall-preview/fixtures/provisioning__fleet__cost-ledger.json +1 -0
- package/scripts/hall-preview/fixtures/provisioning__instances.json +1 -0
- package/scripts/hall-preview/fixtures/public__analytics__ecosystem.json +516 -0
- package/scripts/hall-preview/fixtures/public__bounty-table.json +37 -0
- package/scripts/hall-preview/fixtures/public__cost-summary.json +742 -0
- package/scripts/hall-preview/fixtures/public__estimation-drift.json +41 -0
- package/scripts/hall-preview/fixtures/public__grades.json +50 -0
- package/scripts/hall-preview/fixtures/public__progress.json +124 -0
- package/scripts/hall-preview/fixtures/public__recent-shipped.json +426 -0
- package/scripts/hall-preview/fixtures/public__repo-health.json +160 -0
- package/scripts/hall-preview/fixtures/public__repo-info.json +5 -0
- package/scripts/hall-preview/fixtures/security__docs.json +10 -0
- package/scripts/hall-preview/fixtures/security__reports.json +31 -0
- package/scripts/hall-preview/fixtures/sessions__search.json +9 -0
- package/scripts/hall-preview/fixtures/tasks.json +2420 -0
- package/scripts/hall-preview/fixtures/tasks__claimable.json +2555 -0
- package/scripts/hall-preview/fixtures/tasks__detail.json +111 -0
- package/scripts/hall-preview/fixtures/tasks__peer-votes__feed.json +330 -0
- package/scripts/hall-preview/fixtures/versions.json +89 -0
- package/scripts/hall-preview/refresh-fixtures.js +77 -0
- package/scripts/hall-preview/server.js +195 -0
- package/scripts/migrate.sh +29 -4
- package/scripts/migrate_cost_ledger.sh +0 -0
- package/scripts/render-diagrams.sh +0 -0
- package/scripts/security/dep-audit.js +0 -0
- package/scripts/setup-builder.js +0 -0
- package/scripts/setup-builder.sh +0 -0
- package/scripts/snapshots/maybe-render-on-deploy.sh +0 -0
- package/src/bongos/optimizer.js +37 -2
- package/src/module-api.js +20 -1
- package/tests/criterion_suggest.mjs +106 -0
- package/tests/migrate_root_resolution.mjs +97 -0
- package/tests/provision.mjs +69 -0
package/docs/api/openapi.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
|
-
"title": "
|
|
4
|
+
"title": "Cloud Bongos — GDS API",
|
|
5
5
|
"version": "0.0.2",
|
|
6
6
|
"license": {
|
|
7
7
|
"name": "AGPL-3.0-or-later",
|
|
@@ -77,10 +77,6 @@
|
|
|
77
77
|
"name": "cost",
|
|
78
78
|
"description": "Endpoints under `/api/bongos/cost`."
|
|
79
79
|
},
|
|
80
|
-
{
|
|
81
|
-
"name": "demo",
|
|
82
|
-
"description": "Endpoints under `/api/bongos/demo`."
|
|
83
|
-
},
|
|
84
80
|
{
|
|
85
81
|
"name": "dependencies",
|
|
86
82
|
"description": "Endpoints under `/api/bongos/dependencies`."
|
|
@@ -3007,83 +3003,6 @@
|
|
|
3007
3003
|
]
|
|
3008
3004
|
}
|
|
3009
3005
|
},
|
|
3010
|
-
"/demo/health": {
|
|
3011
|
-
"get": {
|
|
3012
|
-
"operationId": "get_demo_health",
|
|
3013
|
-
"tags": [
|
|
3014
|
-
"demo"
|
|
3015
|
-
],
|
|
3016
|
-
"summary": "GET /demo/health",
|
|
3017
|
-
"description": "READ — liveness + the core version this module was mounted against. No rank gate beyond the requireBuilder the loader composes around every module route. rank: public\n\n**Rank:** `public` — No authentication — any caller.",
|
|
3018
|
-
"x-rank": "public",
|
|
3019
|
-
"x-source": "modules/demo/routes/demo.js",
|
|
3020
|
-
"responses": {
|
|
3021
|
-
"200": {
|
|
3022
|
-
"description": "Success.",
|
|
3023
|
-
"content": {
|
|
3024
|
-
"application/json": {
|
|
3025
|
-
"schema": {
|
|
3026
|
-
"$ref": "#/components/schemas/GetDemoHealthResponse"
|
|
3027
|
-
}
|
|
3028
|
-
}
|
|
3029
|
-
}
|
|
3030
|
-
},
|
|
3031
|
-
"400": {
|
|
3032
|
-
"$ref": "#/components/responses/BadRequest"
|
|
3033
|
-
}
|
|
3034
|
-
},
|
|
3035
|
-
"security": []
|
|
3036
|
-
}
|
|
3037
|
-
},
|
|
3038
|
-
"/demo/ping": {
|
|
3039
|
-
"post": {
|
|
3040
|
-
"operationId": "post_demo_ping",
|
|
3041
|
-
"tags": [
|
|
3042
|
-
"demo"
|
|
3043
|
-
],
|
|
3044
|
-
"summary": "POST /demo/ping",
|
|
3045
|
-
"description": "WRITE — EVERY module write route MUST be rank-gated (the BV1.R44 fitness check reds the build on an ungated module write route). `requireRank('metic', 'archon')` is Metic-and-above (the route-rank classifier records it as metic+archon). This records a ping into the module's own namespaced table (demo_pings) via the doorway pool.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).",
|
|
3046
|
-
"x-rank": "metic+archon",
|
|
3047
|
-
"x-source": "modules/demo/routes/demo.js",
|
|
3048
|
-
"requestBody": {
|
|
3049
|
-
"required": false,
|
|
3050
|
-
"content": {
|
|
3051
|
-
"application/json": {
|
|
3052
|
-
"schema": {
|
|
3053
|
-
"$ref": "#/components/schemas/PostDemoPingRequest"
|
|
3054
|
-
}
|
|
3055
|
-
}
|
|
3056
|
-
},
|
|
3057
|
-
"x-validated": true
|
|
3058
|
-
},
|
|
3059
|
-
"responses": {
|
|
3060
|
-
"200": {
|
|
3061
|
-
"description": "Success.",
|
|
3062
|
-
"content": {
|
|
3063
|
-
"application/json": {
|
|
3064
|
-
"schema": {
|
|
3065
|
-
"$ref": "#/components/schemas/PostDemoPingResponse"
|
|
3066
|
-
}
|
|
3067
|
-
}
|
|
3068
|
-
}
|
|
3069
|
-
},
|
|
3070
|
-
"400": {
|
|
3071
|
-
"$ref": "#/components/responses/ValidationFailed"
|
|
3072
|
-
},
|
|
3073
|
-
"401": {
|
|
3074
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
3075
|
-
},
|
|
3076
|
-
"403": {
|
|
3077
|
-
"$ref": "#/components/responses/Forbidden"
|
|
3078
|
-
}
|
|
3079
|
-
},
|
|
3080
|
-
"security": [
|
|
3081
|
-
{
|
|
3082
|
-
"builderSession": []
|
|
3083
|
-
}
|
|
3084
|
-
]
|
|
3085
|
-
}
|
|
3086
|
-
},
|
|
3087
3006
|
"/dependencies": {
|
|
3088
3007
|
"post": {
|
|
3089
3008
|
"operationId": "post_dependencies",
|
|
@@ -4589,6 +4508,58 @@
|
|
|
4589
4508
|
]
|
|
4590
4509
|
}
|
|
4591
4510
|
},
|
|
4511
|
+
"/goals/{id}/suggest-criteria": {
|
|
4512
|
+
"get": {
|
|
4513
|
+
"operationId": "get_goals_id_suggest_criteria",
|
|
4514
|
+
"tags": [
|
|
4515
|
+
"goals"
|
|
4516
|
+
],
|
|
4517
|
+
"summary": "GET /goals/:id/suggest-criteria",
|
|
4518
|
+
"description": "GET /goals/:id/suggest-criteria?title=&description=&limit= — task 2165. Rank THIS goal's unsatisfied criteria by lexical overlap with a candidate task, so a create flow can SUGGEST which done-when criterion to link (the author confirms/overrides — nothing is auto-linked). Read-only + advisory; rank: any-builder (same as GET /goals/:id).\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
4519
|
+
"x-rank": "any-builder",
|
|
4520
|
+
"x-source": "modules/lifecycle/routes/goals.js",
|
|
4521
|
+
"parameters": [
|
|
4522
|
+
{
|
|
4523
|
+
"name": "id",
|
|
4524
|
+
"in": "path",
|
|
4525
|
+
"required": true,
|
|
4526
|
+
"schema": {
|
|
4527
|
+
"type": "string"
|
|
4528
|
+
},
|
|
4529
|
+
"description": "Path parameter `id`."
|
|
4530
|
+
}
|
|
4531
|
+
],
|
|
4532
|
+
"responses": {
|
|
4533
|
+
"200": {
|
|
4534
|
+
"description": "Success.",
|
|
4535
|
+
"content": {
|
|
4536
|
+
"application/json": {
|
|
4537
|
+
"schema": {
|
|
4538
|
+
"$ref": "#/components/schemas/GetGoalsIdSuggestCriteriaResponse"
|
|
4539
|
+
}
|
|
4540
|
+
}
|
|
4541
|
+
}
|
|
4542
|
+
},
|
|
4543
|
+
"400": {
|
|
4544
|
+
"$ref": "#/components/responses/BadRequest"
|
|
4545
|
+
},
|
|
4546
|
+
"401": {
|
|
4547
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
4548
|
+
},
|
|
4549
|
+
"403": {
|
|
4550
|
+
"$ref": "#/components/responses/Forbidden"
|
|
4551
|
+
},
|
|
4552
|
+
"404": {
|
|
4553
|
+
"$ref": "#/components/responses/NotFound"
|
|
4554
|
+
}
|
|
4555
|
+
},
|
|
4556
|
+
"security": [
|
|
4557
|
+
{
|
|
4558
|
+
"builderSession": []
|
|
4559
|
+
}
|
|
4560
|
+
]
|
|
4561
|
+
}
|
|
4562
|
+
},
|
|
4592
4563
|
"/goals/{id}/tasks": {
|
|
4593
4564
|
"post": {
|
|
4594
4565
|
"operationId": "post_goals_id_tasks",
|
|
@@ -5423,182 +5394,6 @@
|
|
|
5423
5394
|
]
|
|
5424
5395
|
}
|
|
5425
5396
|
},
|
|
5426
|
-
"/me/art-key": {
|
|
5427
|
-
"get": {
|
|
5428
|
-
"operationId": "get_me_art_key",
|
|
5429
|
-
"tags": [
|
|
5430
|
-
"me"
|
|
5431
|
-
],
|
|
5432
|
-
"summary": "GET /me/art-key",
|
|
5433
|
-
"description": "Shared art key for newcomers (task 1281 / ADR 0068). Hands a SHARED Google AI Studio (Gemini) key to rank=xenos builders so their first art task works without their own key — we pay up front. The session-start sync (scripts/gds/fetch-art-key.js) calls this and writes/removes the local shared_gemini_api_key slot from the response. Thetes+ get a 200 with entitled:false (NOT a 403) — the sync needs an unambiguous \"remove the shared key\" signal it can tell apart from an auth failure, and the rank is the gate, not the route. The secret is attached ONLY when entitled && configured; the response is no-store and the key is never logged. Rank is read live from the DB (no caching, per ADR 0016). rank: any-builder — any authenticated builder may ask; `entitled` in the body is the server-enforced gate. A non-newcomer never receives the secret.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
5434
|
-
"x-rank": "any-builder",
|
|
5435
|
-
"x-source": "modules/art-pipeline/routes/art-key.js",
|
|
5436
|
-
"responses": {
|
|
5437
|
-
"200": {
|
|
5438
|
-
"description": "Success."
|
|
5439
|
-
},
|
|
5440
|
-
"400": {
|
|
5441
|
-
"$ref": "#/components/responses/BadRequest"
|
|
5442
|
-
},
|
|
5443
|
-
"401": {
|
|
5444
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
5445
|
-
},
|
|
5446
|
-
"403": {
|
|
5447
|
-
"$ref": "#/components/responses/Forbidden"
|
|
5448
|
-
}
|
|
5449
|
-
},
|
|
5450
|
-
"security": [
|
|
5451
|
-
{
|
|
5452
|
-
"builderSession": []
|
|
5453
|
-
}
|
|
5454
|
-
]
|
|
5455
|
-
}
|
|
5456
|
-
},
|
|
5457
|
-
"/me/art-key/own": {
|
|
5458
|
-
"get": {
|
|
5459
|
-
"operationId": "get_me_art_key_own",
|
|
5460
|
-
"tags": [
|
|
5461
|
-
"me"
|
|
5462
|
-
],
|
|
5463
|
-
"summary": "GET /me/art-key/own",
|
|
5464
|
-
"description": "Masked metadata for the browser: { set, last4, set_at, storage_configured }.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
5465
|
-
"x-rank": "any-builder",
|
|
5466
|
-
"x-source": "modules/art-pipeline/routes/art-key.js",
|
|
5467
|
-
"responses": {
|
|
5468
|
-
"200": {
|
|
5469
|
-
"description": "Success.",
|
|
5470
|
-
"content": {
|
|
5471
|
-
"application/json": {
|
|
5472
|
-
"schema": {
|
|
5473
|
-
"$ref": "#/components/schemas/GetMeArtKeyOwnResponse"
|
|
5474
|
-
}
|
|
5475
|
-
}
|
|
5476
|
-
}
|
|
5477
|
-
},
|
|
5478
|
-
"400": {
|
|
5479
|
-
"$ref": "#/components/responses/BadRequest"
|
|
5480
|
-
},
|
|
5481
|
-
"401": {
|
|
5482
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
5483
|
-
},
|
|
5484
|
-
"403": {
|
|
5485
|
-
"$ref": "#/components/responses/Forbidden"
|
|
5486
|
-
}
|
|
5487
|
-
},
|
|
5488
|
-
"security": [
|
|
5489
|
-
{
|
|
5490
|
-
"builderSession": []
|
|
5491
|
-
}
|
|
5492
|
-
]
|
|
5493
|
-
},
|
|
5494
|
-
"put": {
|
|
5495
|
-
"operationId": "put_me_art_key_own",
|
|
5496
|
-
"tags": [
|
|
5497
|
-
"me"
|
|
5498
|
-
],
|
|
5499
|
-
"summary": "PUT /me/art-key/own",
|
|
5500
|
-
"description": "Set or replace the builder's own key. Body: { key }. Validates the key with one cheap call to Google (catches typos), encrypts it, stores it. Returns the masked metadata — never the key.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
5501
|
-
"x-rank": "any-builder",
|
|
5502
|
-
"x-source": "modules/art-pipeline/routes/art-key.js",
|
|
5503
|
-
"requestBody": {
|
|
5504
|
-
"required": true,
|
|
5505
|
-
"content": {
|
|
5506
|
-
"application/json": {
|
|
5507
|
-
"schema": {
|
|
5508
|
-
"$ref": "#/components/schemas/PutMeArtKeyOwnRequest"
|
|
5509
|
-
}
|
|
5510
|
-
}
|
|
5511
|
-
},
|
|
5512
|
-
"x-validated": true
|
|
5513
|
-
},
|
|
5514
|
-
"responses": {
|
|
5515
|
-
"200": {
|
|
5516
|
-
"description": "Success."
|
|
5517
|
-
},
|
|
5518
|
-
"400": {
|
|
5519
|
-
"$ref": "#/components/responses/ValidationFailed"
|
|
5520
|
-
},
|
|
5521
|
-
"401": {
|
|
5522
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
5523
|
-
},
|
|
5524
|
-
"403": {
|
|
5525
|
-
"$ref": "#/components/responses/Forbidden"
|
|
5526
|
-
}
|
|
5527
|
-
},
|
|
5528
|
-
"security": [
|
|
5529
|
-
{
|
|
5530
|
-
"builderSession": []
|
|
5531
|
-
}
|
|
5532
|
-
]
|
|
5533
|
-
},
|
|
5534
|
-
"delete": {
|
|
5535
|
-
"operationId": "delete_me_art_key_own",
|
|
5536
|
-
"tags": [
|
|
5537
|
-
"me"
|
|
5538
|
-
],
|
|
5539
|
-
"summary": "DELETE /me/art-key/own",
|
|
5540
|
-
"description": "Remove the builder's own key (back to \"not set\"). The session-start sync then withdraws the managed local copy on its next run.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
5541
|
-
"x-rank": "any-builder",
|
|
5542
|
-
"x-source": "modules/art-pipeline/routes/art-key.js",
|
|
5543
|
-
"responses": {
|
|
5544
|
-
"200": {
|
|
5545
|
-
"description": "Success."
|
|
5546
|
-
},
|
|
5547
|
-
"400": {
|
|
5548
|
-
"$ref": "#/components/responses/BadRequest"
|
|
5549
|
-
},
|
|
5550
|
-
"401": {
|
|
5551
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
5552
|
-
},
|
|
5553
|
-
"403": {
|
|
5554
|
-
"$ref": "#/components/responses/Forbidden"
|
|
5555
|
-
}
|
|
5556
|
-
},
|
|
5557
|
-
"security": [
|
|
5558
|
-
{
|
|
5559
|
-
"builderSession": []
|
|
5560
|
-
}
|
|
5561
|
-
]
|
|
5562
|
-
}
|
|
5563
|
-
},
|
|
5564
|
-
"/me/art-key/storage-init": {
|
|
5565
|
-
"post": {
|
|
5566
|
-
"operationId": "post_me_art_key_storage_init",
|
|
5567
|
-
"tags": [
|
|
5568
|
-
"me"
|
|
5569
|
-
],
|
|
5570
|
-
"summary": "POST /me/art-key/storage-init",
|
|
5571
|
-
"description": "Archon-only: provision the server's secret-box master key so per-builder key storage can turn on (task 1398, blocker 41). Idempotent — NEVER overwrites an existing key. Lives under /me/art-key/* for client locality, but is a server-wide admin action — hence the requireRank('archon') gate.\n\n**Rank:** `archon` — Archon only (the single owner — ratification, infra, rank changes).",
|
|
5572
|
-
"x-rank": "archon",
|
|
5573
|
-
"x-source": "modules/art-pipeline/routes/art-key.js",
|
|
5574
|
-
"responses": {
|
|
5575
|
-
"200": {
|
|
5576
|
-
"description": "Success.",
|
|
5577
|
-
"content": {
|
|
5578
|
-
"application/json": {
|
|
5579
|
-
"schema": {
|
|
5580
|
-
"$ref": "#/components/schemas/PostMeArtKeyStorageInitResponse"
|
|
5581
|
-
}
|
|
5582
|
-
}
|
|
5583
|
-
}
|
|
5584
|
-
},
|
|
5585
|
-
"400": {
|
|
5586
|
-
"$ref": "#/components/responses/BadRequest"
|
|
5587
|
-
},
|
|
5588
|
-
"401": {
|
|
5589
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
5590
|
-
},
|
|
5591
|
-
"403": {
|
|
5592
|
-
"$ref": "#/components/responses/Forbidden"
|
|
5593
|
-
}
|
|
5594
|
-
},
|
|
5595
|
-
"security": [
|
|
5596
|
-
{
|
|
5597
|
-
"builderSession": []
|
|
5598
|
-
}
|
|
5599
|
-
]
|
|
5600
|
-
}
|
|
5601
|
-
},
|
|
5602
5397
|
"/me/disciplines": {
|
|
5603
5398
|
"patch": {
|
|
5604
5399
|
"operationId": "patch_me_disciplines",
|
|
@@ -8464,14 +8259,7 @@
|
|
|
8464
8259
|
},
|
|
8465
8260
|
"responses": {
|
|
8466
8261
|
"200": {
|
|
8467
|
-
"description": "Success."
|
|
8468
|
-
"content": {
|
|
8469
|
-
"application/json": {
|
|
8470
|
-
"schema": {
|
|
8471
|
-
"$ref": "#/components/schemas/PostTasksResponse"
|
|
8472
|
-
}
|
|
8473
|
-
}
|
|
8474
|
-
}
|
|
8262
|
+
"description": "Success."
|
|
8475
8263
|
},
|
|
8476
8264
|
"400": {
|
|
8477
8265
|
"$ref": "#/components/responses/ValidationFailed"
|
|
@@ -10411,21 +10199,6 @@
|
|
|
10411
10199
|
"stale_hours"
|
|
10412
10200
|
]
|
|
10413
10201
|
},
|
|
10414
|
-
"GetDemoHealthResponse": {
|
|
10415
|
-
"type": "object",
|
|
10416
|
-
"properties": {
|
|
10417
|
-
"module": {},
|
|
10418
|
-
"ok": {
|
|
10419
|
-
"type": "boolean"
|
|
10420
|
-
},
|
|
10421
|
-
"coreVersion": {}
|
|
10422
|
-
},
|
|
10423
|
-
"required": [
|
|
10424
|
-
"module",
|
|
10425
|
-
"ok",
|
|
10426
|
-
"coreVersion"
|
|
10427
|
-
]
|
|
10428
|
-
},
|
|
10429
10202
|
"GetDiscordChannelsPlanResponse": {
|
|
10430
10203
|
"type": "object",
|
|
10431
10204
|
"properties": {
|
|
@@ -10497,6 +10270,17 @@
|
|
|
10497
10270
|
"dependencies"
|
|
10498
10271
|
]
|
|
10499
10272
|
},
|
|
10273
|
+
"GetGoalsIdSuggestCriteriaResponse": {
|
|
10274
|
+
"type": "object",
|
|
10275
|
+
"properties": {
|
|
10276
|
+
"goal_id": {},
|
|
10277
|
+
"suggestions": {}
|
|
10278
|
+
},
|
|
10279
|
+
"required": [
|
|
10280
|
+
"goal_id",
|
|
10281
|
+
"suggestions"
|
|
10282
|
+
]
|
|
10283
|
+
},
|
|
10500
10284
|
"GetGoalsResponse": {
|
|
10501
10285
|
"type": "object",
|
|
10502
10286
|
"properties": {
|
|
@@ -10579,21 +10363,6 @@
|
|
|
10579
10363
|
"unlocked"
|
|
10580
10364
|
]
|
|
10581
10365
|
},
|
|
10582
|
-
"GetMeArtKeyOwnResponse": {
|
|
10583
|
-
"type": "object",
|
|
10584
|
-
"properties": {
|
|
10585
|
-
"set": {},
|
|
10586
|
-
"last4": {},
|
|
10587
|
-
"set_at": {},
|
|
10588
|
-
"storage_configured": {}
|
|
10589
|
-
},
|
|
10590
|
-
"required": [
|
|
10591
|
-
"set",
|
|
10592
|
-
"last4",
|
|
10593
|
-
"set_at",
|
|
10594
|
-
"storage_configured"
|
|
10595
|
-
]
|
|
10596
|
-
},
|
|
10597
10366
|
"GetMeDisplayNameResponse": {
|
|
10598
10367
|
"type": "object",
|
|
10599
10368
|
"properties": {
|
|
@@ -12258,30 +12027,6 @@
|
|
|
12258
12027
|
"recorded_at": {}
|
|
12259
12028
|
}
|
|
12260
12029
|
},
|
|
12261
|
-
"PostDemoPingRequest": {
|
|
12262
|
-
"type": "object",
|
|
12263
|
-
"properties": {
|
|
12264
|
-
"note": {
|
|
12265
|
-
"type": "string"
|
|
12266
|
-
}
|
|
12267
|
-
},
|
|
12268
|
-
"additionalProperties": false
|
|
12269
|
-
},
|
|
12270
|
-
"PostDemoPingResponse": {
|
|
12271
|
-
"type": "object",
|
|
12272
|
-
"properties": {
|
|
12273
|
-
"module": {},
|
|
12274
|
-
"ok": {
|
|
12275
|
-
"type": "boolean"
|
|
12276
|
-
},
|
|
12277
|
-
"ping": {}
|
|
12278
|
-
},
|
|
12279
|
-
"required": [
|
|
12280
|
-
"module",
|
|
12281
|
-
"ok",
|
|
12282
|
-
"ping"
|
|
12283
|
-
]
|
|
12284
|
-
},
|
|
12285
12030
|
"PostDependenciesResponse": {
|
|
12286
12031
|
"type": "object",
|
|
12287
12032
|
"properties": {
|
|
@@ -12992,23 +12737,6 @@
|
|
|
12992
12737
|
"linked"
|
|
12993
12738
|
]
|
|
12994
12739
|
},
|
|
12995
|
-
"PostMeArtKeyStorageInitResponse": {
|
|
12996
|
-
"type": "object",
|
|
12997
|
-
"properties": {
|
|
12998
|
-
"ok": {
|
|
12999
|
-
"type": "boolean"
|
|
13000
|
-
},
|
|
13001
|
-
"created": {},
|
|
13002
|
-
"reason": {},
|
|
13003
|
-
"storage_configured": {}
|
|
13004
|
-
},
|
|
13005
|
-
"required": [
|
|
13006
|
-
"ok",
|
|
13007
|
-
"created",
|
|
13008
|
-
"reason",
|
|
13009
|
-
"storage_configured"
|
|
13010
|
-
]
|
|
13011
|
-
},
|
|
13012
12740
|
"PostMemoryBuildersBuilderIdBfgWriteRequest": {
|
|
13013
12741
|
"type": "object",
|
|
13014
12742
|
"properties": {
|
|
@@ -13752,23 +13480,6 @@
|
|
|
13752
13480
|
],
|
|
13753
13481
|
"additionalProperties": false
|
|
13754
13482
|
},
|
|
13755
|
-
"PostTasksResponse": {
|
|
13756
|
-
"type": "object",
|
|
13757
|
-
"properties": {
|
|
13758
|
-
"task": {},
|
|
13759
|
-
"needs_migration": {},
|
|
13760
|
-
"criteria": {},
|
|
13761
|
-
"idempotent": {
|
|
13762
|
-
"type": "boolean"
|
|
13763
|
-
},
|
|
13764
|
-
"credits_reward": {}
|
|
13765
|
-
},
|
|
13766
|
-
"required": [
|
|
13767
|
-
"task",
|
|
13768
|
-
"needs_migration",
|
|
13769
|
-
"criteria"
|
|
13770
|
-
]
|
|
13771
|
-
},
|
|
13772
13483
|
"PostVersionsIdDoneWhenRequest": {
|
|
13773
13484
|
"type": "object",
|
|
13774
13485
|
"properties": {
|
|
@@ -13857,19 +13568,6 @@
|
|
|
13857
13568
|
"criteria"
|
|
13858
13569
|
]
|
|
13859
13570
|
},
|
|
13860
|
-
"PutMeArtKeyOwnRequest": {
|
|
13861
|
-
"type": "object",
|
|
13862
|
-
"properties": {
|
|
13863
|
-
"key": {
|
|
13864
|
-
"type": "string",
|
|
13865
|
-
"maxLength": 400
|
|
13866
|
-
}
|
|
13867
|
-
},
|
|
13868
|
-
"required": [
|
|
13869
|
-
"key"
|
|
13870
|
-
],
|
|
13871
|
-
"additionalProperties": false
|
|
13872
|
-
},
|
|
13873
13571
|
"PutTasksIdDependenciesRequest": {
|
|
13874
13572
|
"type": "object",
|
|
13875
13573
|
"properties": {
|
|
@@ -14021,9 +13719,9 @@
|
|
|
14021
13719
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
14022
13720
|
}
|
|
14023
13721
|
},
|
|
14024
|
-
"x-endpoint-count":
|
|
14025
|
-
"x-schema-count":
|
|
13722
|
+
"x-endpoint-count": 223,
|
|
13723
|
+
"x-schema-count": 244,
|
|
14026
13724
|
"x-undocumented-bodies": 8,
|
|
14027
|
-
"x-response-schemas":
|
|
13725
|
+
"x-response-schemas": 166,
|
|
14028
13726
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
14029
13727
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GDS 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. 223 endpoints across 36 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/<redacted>.md)): `public` < `any-builder` < `metic+archon` < `archon`.
|
|
@@ -145,13 +145,6 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
145
145
|
|---|---|---|---|---|
|
|
146
146
|
| POST | `/api/bongos/cost` | `any-builder` | `task_id`, `amount_usd`, `category`, `description`, `source`, `source_ref`, `recorded_at`, `fresh_input_usd`, `cache_read_usd`, `cache_write_usd`, `output_usd`, `builder_id`, `skill_name` | log cost on own claim (idempotent via source/source_ref). |
|
|
147
147
|
|
|
148
|
-
## `demo` (2)
|
|
149
|
-
|
|
150
|
-
| Method | Path | Rank | Body | Description |
|
|
151
|
-
|---|---|---|---|---|
|
|
152
|
-
| GET | `/api/bongos/demo/health` | `public` | — | READ — liveness + the core version this module was mounted against. |
|
|
153
|
-
| POST | `/api/bongos/demo/ping` | `metic+archon` | `note` | WRITE — EVERY module write route MUST be rank-gated (the BV1.R44 fitness check reds the build on an ungated module write route). |
|
|
154
|
-
|
|
155
148
|
## `dependencies` (2)
|
|
156
149
|
|
|
157
150
|
| Method | Path | Rank | Body | Description |
|
|
@@ -181,7 +174,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
181
174
|
| GET | `/api/bongos/gate-approvals` | `archon` | — | GET /gate-approvals — open PRs awaiting owner approval (gate-review red), with the verdict + per-file reasons + changed files + diff link. |
|
|
182
175
|
| POST | `/api/bongos/gate-approvals/:pr/approve` | `archon` | — | POST /gate-approvals/:pr/approve — record owner approval for a stuck gate PR and re-run the gate-review check so it clears. |
|
|
183
176
|
|
|
184
|
-
## `goals` (
|
|
177
|
+
## `goals` (24)
|
|
185
178
|
|
|
186
179
|
| Method | Path | Rank | Body | Description |
|
|
187
180
|
|---|---|---|---|---|
|
|
@@ -203,6 +196,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
203
196
|
| POST | `/api/bongos/goals/:id/requests/:reqId/respond` | `any-builder` | `action` | POST /goals/:id/requests/:reqId/respond { action: approve\|deny } — an owner\| manager\|Archon resolves a pending join-request (task 1952). |
|
|
204
197
|
| POST | `/api/bongos/goals/:id/requests/:reqId/withdraw` | `any-builder` | — | POST /goals/:id/requests/:reqId/withdraw — the requester cancels their OWN pending join-request (task 1953): the symmetric self-served mi… |
|
|
205
198
|
| POST | `/api/bongos/goals/:id/scope` | `metic+archon` | `add` | POST /goals/:id/scope — "ask to widen": add module(s) to a goal's scope_modules (ADR 0086 §4 / BV1.R64). |
|
|
199
|
+
| GET | `/api/bongos/goals/:id/suggest-criteria` | `any-builder` | — | GET /goals/:id/suggest-criteria?title=&description=&limit= — task 2165. |
|
|
206
200
|
| POST | `/api/bongos/goals/:id/tasks` | `any-builder` | `title`, `description`, `touches`, `est_minutes`, `priority`, `kind`, `discipline`, `value_summary`, `parent_task_id` | POST /goals/:id/tasks — bounded task authoring within a goal's scope (BV1.R60 / ADR 0086 §3). |
|
|
207
201
|
| POST | `/api/bongos/goals/:id/transfer` | `any-builder` | `builder_id` | POST /goals/:id/transfer — hand the goal to a new owner (task 1735). |
|
|
208
202
|
| PATCH | `/api/bongos/goals/:id/visibility` | `any-builder` | `visibility` | PATCH /goals/:id/visibility — make a goal public\|private (task 1952 / ADR 0112). |
|
|
@@ -219,7 +213,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
219
213
|
|
|
220
214
|
| Method | Path | Rank | Body | Description |
|
|
221
215
|
|---|---|---|---|---|
|
|
222
|
-
| GET | `/api/bongos/healthz` | `public` | — | liveness probe; status.
|
|
216
|
+
| GET | `/api/bongos/healthz` | `public` | — | liveness probe; status.amazonprimea.com hits this anonymously. |
|
|
223
217
|
|
|
224
218
|
## `inbox` (4)
|
|
225
219
|
|
|
@@ -262,18 +256,13 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
262
256
|
| POST | `/api/bongos/llm-cache/lookup` | `metic+archon` | `cache_key`, `tokens_saved_est` | POST /llm-cache/lookup — hit/miss + atomic hit_count bump. |
|
|
263
257
|
| POST | `/api/bongos/llm-cache/store` | `metic+archon` | `spec`, `result_stdout`, `result_cost_usd` | POST /llm-cache/store — upsert a freshly-produced result. |
|
|
264
258
|
|
|
265
|
-
## `me` (
|
|
259
|
+
## `me` (21)
|
|
266
260
|
|
|
267
261
|
| Method | Path | Rank | Body | Description |
|
|
268
262
|
|---|---|---|---|---|
|
|
269
263
|
| GET | `/api/bongos/me` | `any-builder` | — | PMS-V2 task 188: response now also carries `unlocked` (server-joined achievement metadata) + `locked_with_progress` (server-computed huma… |
|
|
270
264
|
| GET | `/api/bongos/me/achievements` | `any-builder` | — | The builder's unlocked achievements (joined to achievement metadata). |
|
|
271
265
|
| POST | `/api/bongos/me/anthropic-link` | `any-builder` | `anthropic_email`, `anthropic_user_id` | V3.R10 (task 235), criterion C3 — link the authed builder's Anthropic account. |
|
|
272
|
-
| GET | `/api/bongos/me/art-key` | `any-builder` | — | Shared art key for newcomers (task 1281 / ADR 0068). |
|
|
273
|
-
| GET | `/api/bongos/me/art-key/own` | `any-builder` | — | Masked metadata for the browser: { set, last4, set_at, storage_configured }. |
|
|
274
|
-
| PUT | `/api/bongos/me/art-key/own` | `any-builder` | `key` | Set or replace the builder's own key. |
|
|
275
|
-
| DELETE | `/api/bongos/me/art-key/own` | `any-builder` | — | Remove the builder's own key (back to "not set"). |
|
|
276
|
-
| POST | `/api/bongos/me/art-key/storage-init` | `archon` | — | Archon-only: provision the server's secret-box master key so per-builder key storage can turn on (task 1398, blocker 41). |
|
|
277
266
|
| PATCH | `/api/bongos/me/disciplines` | `any-builder` | `preferred_disciplines` | Self-service edit of the authenticated builder's preferred disciplines (migrations 027 + 086 / V3.R80). |
|
|
278
267
|
| GET | `/api/bongos/me/display-name` | `any-builder` | — | Per-builder DISPLAY NAME (task 1669). |
|
|
279
268
|
| PATCH | `/api/bongos/me/display-name` | `any-builder` | _undocumented_ | PATCH the display name. |
|
|
@@ -360,7 +349,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
360
349
|
| GET | `/api/bongos/public/repo-info` | `public` | — | GitHub URL bases for the deployed checkout (V3.R13-followup-2 task 411). |
|
|
361
350
|
| GET | `/api/bongos/public/tasks/:id` | `public` | — | Single-task resolver for "#NNN" deep links. |
|
|
362
351
|
| GET | `/api/bongos/public/uptime` | `public` | — | Uptime: current status + 90-day history bucketed by hour. |
|
|
363
|
-
| GET | `/api/bongos/public/versions` | `public` | — | read-only surface for status.
|
|
352
|
+
| GET | `/api/bongos/public/versions` | `public` | — | read-only surface for status.amazonprimea.com. |
|
|
364
353
|
|
|
365
354
|
## `search` (2)
|
|
366
355
|
|
|
@@ -430,7 +419,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/<redacted>
|
|
|
430
419
|
|---|---|---|---|---|
|
|
431
420
|
| GET | `/api/bongos/versions` | `public` | — | read-only version list; mirrors /public/versions. |
|
|
432
421
|
| POST | `/api/bongos/versions` | `archon` | `id`, `name`, `status`, `done_when`, `scope_doc_path`, `criteria` | POST /versions — create a version + its done-when criteria in one call. |
|
|
433
|
-
| GET | `/api/bongos/versions/:id/done-when` | `public` | — | Public: status.
|
|
422
|
+
| GET | `/api/bongos/versions/:id/done-when` | `public` | — | Public: status.amazonprimea.com fetches this every 60s alongside other public/* surfaces. |
|
|
434
423
|
| POST | `/api/bongos/versions/:id/done-when` | `archon` | `criterion_id`, `criterion_md`, `goal_id`, `sort_order` | Auth (Archon): create a done-when criterion at RUNTIME. |
|
|
435
424
|
| GET | `/api/bongos/versions/:id/progress` | `public` | — | Per-criterion progress rollup: each done-when criterion → the tasks that gate it (task_criteria, migration 055) → live statuses → what re… |
|
|
436
425
|
| GET | `/api/bongos/versions/close-suggestions` | `public` | — | Close-flow gate suggestions for every version still 'building'. |
|