@bongos/core 1.20.80 → 1.20.82
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 +98 -53
- 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 +12 -0
- package/clients/bongos-client/index.mjs +8 -0
- package/docs/api/openapi.json +245 -4
- package/docs/api-reference.md +7 -3
- package/docs/copy-inventory.md +84 -71
- package/docs/copy-registry.json +271 -145
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-inventory.json +2 -1
- package/docs/page-readings.json +139 -119
- package/modules/autonomy/cadence.js +3 -0
- package/modules/autonomy/db.js +136 -0
- package/modules/autonomy/fence.js +88 -3
- package/modules/autonomy/migrations/autonomy_005_builder_scope.sql +55 -0
- package/modules/autonomy/routes/autonomy.js +123 -3
- package/modules/economy/earnings.js +117 -0
- package/modules/economy/module.json +1 -1
- package/modules/economy/routes/earnings.js +47 -0
- package/modules/government/catalog.js +9 -1
- package/modules/government/migrations/government_022_autonomy_run.sql +38 -0
- package/modules/hall-ui/public/gate.css +49 -0
- package/modules/hall-ui/public/gate.html +8 -7
- package/modules/hall-ui/public/gate.js +272 -115
- package/modules/hall-ui/public/profile-charts.js +206 -104
- package/modules/hall-ui/public/profile.css +23 -0
- package/modules/hall-ui/public/profile.js +3 -3
- package/modules/hall-ui/public/profile.states.json +8 -4
- package/modules/hall-ui/public/settings-autobongos.js +156 -0
- package/modules/hall-ui/public/settings.html +19 -0
- package/modules/hall-ui/public/settings.js +1 -0
- package/modules/hall-ui/records/profile-roles.md +21 -0
- package/modules/lifecycle/db-goals.js +6 -0
- package/modules/lifecycle/db-versions.js +3 -0
- package/modules/lifecycle/done-when.js +4 -0
- package/modules/lifecycle/goal-close-sweep.js +34 -0
- package/modules/provisioning/app-status.js +17 -4
- package/modules/public-landing/public/projects.html +7 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +28 -0
- package/scripts/hall-preview/server.js +4 -0
- package/src/module-api.js +1 -1
- package/tests/auto_satisfy_criteria.mjs +8 -6
- package/tests/autonomy_builder_scope.mjs +474 -0
- package/tests/autonomy_fence_priority.mjs +7 -3
- package/tests/autonomy_runner_identity.mjs +1 -1
- package/tests/criterion_goal_attach.mjs +5 -1
- package/tests/goal_close_cancels_requests.mjs +82 -0
- package/tests/goal_closure_invariants.mjs +5 -2
- package/tests/hall_profile_world.mjs +57 -58
- package/tests/profile_earnings.mjs +237 -0
- package/tests/projects_hub_app_status.mjs +17 -0
- package/tests/provisioning_app_status.mjs +25 -1
|
@@ -165,6 +165,8 @@ export function createClient(opts = {}) {
|
|
|
165
165
|
getAuthWebStart: (args) => request("GET", "/auth/web/start", { hasBody: false }, args),
|
|
166
166
|
},
|
|
167
167
|
"autonomy": {
|
|
168
|
+
// POST /autonomy/builders/{builderId}/pause — rank: archon — POST /autonomy/builders/:builderId/pause
|
|
169
|
+
postAutonomyBuildersBuilderIdPause: (args) => request("POST", "/autonomy/builders/{builderId}/pause", { hasBody: true }, args),
|
|
168
170
|
// GET /autonomy/fence — rank: any-builder — GET /autonomy/fence
|
|
169
171
|
getAutonomyFence: (args) => request("GET", "/autonomy/fence", { hasBody: false }, args),
|
|
170
172
|
// POST /autonomy/fence — rank: archon — POST /autonomy/fence
|
|
@@ -177,10 +179,14 @@ export function createClient(opts = {}) {
|
|
|
177
179
|
postAutonomyFencePriority: (args) => request("POST", "/autonomy/fence/priority", { hasBody: true }, args),
|
|
178
180
|
// POST /autonomy/heartbeat — rank: any-builder — POST /autonomy/heartbeat
|
|
179
181
|
postAutonomyHeartbeat: (args) => request("POST", "/autonomy/heartbeat", { hasBody: true }, args),
|
|
182
|
+
// PUT /autonomy/me/goals — rank: metic+archon — PUT /autonomy/me/goals
|
|
183
|
+
putAutonomyMeGoals: (args) => request("PUT", "/autonomy/me/goals", { hasBody: true }, args),
|
|
180
184
|
// GET /autonomy/precheck — rank: metic+archon — GET /autonomy/precheck
|
|
181
185
|
getAutonomyPrecheck: (args) => request("GET", "/autonomy/precheck", { hasBody: false }, args),
|
|
182
186
|
// GET /autonomy/runners — rank: any-builder — GET /autonomy/runners
|
|
183
187
|
getAutonomyRunners: (args) => request("GET", "/autonomy/runners", { hasBody: false }, args),
|
|
188
|
+
// GET /autonomy/runners/all — rank: archon — GET /autonomy/runners/all
|
|
189
|
+
getAutonomyRunnersAll: (args) => request("GET", "/autonomy/runners/all", { hasBody: false }, args),
|
|
184
190
|
// GET /autonomy/runs — rank: metic+archon — GET /autonomy/runs
|
|
185
191
|
getAutonomyRuns: (args) => request("GET", "/autonomy/runs", { hasBody: false }, args),
|
|
186
192
|
},
|
|
@@ -211,6 +217,8 @@ export function createClient(opts = {}) {
|
|
|
211
217
|
"builders": {
|
|
212
218
|
// GET /builders/{builderId}/credits — rank: metic+archon — GET /builders/:builderId/credits
|
|
213
219
|
getBuildersBuilderIdCredits: (args) => request("GET", "/builders/{builderId}/credits", { hasBody: false }, args),
|
|
220
|
+
// GET /builders/{builderId}/earnings — rank: any-builder — GET /builders/:builderId/earnings
|
|
221
|
+
getBuildersBuilderIdEarnings: (args) => request("GET", "/builders/{builderId}/earnings", { hasBody: false }, args),
|
|
214
222
|
// GET /builders/{id}/active-claims — rank: metic+archon — GET /builders/:id/active-claims
|
|
215
223
|
getBuildersIdActiveClaims: (args) => request("GET", "/builders/{id}/active-claims", { hasBody: false }, args),
|
|
216
224
|
// GET /builders/{id}/activity — rank: any-builder — GET /builders/:id/activity
|
package/docs/api/openapi.json
CHANGED
|
@@ -1728,6 +1728,65 @@
|
|
|
1728
1728
|
"security": []
|
|
1729
1729
|
}
|
|
1730
1730
|
},
|
|
1731
|
+
"/autonomy/builders/{builderId}/pause": {
|
|
1732
|
+
"post": {
|
|
1733
|
+
"operationId": "post_autonomy_builders_builderId_pause",
|
|
1734
|
+
"tags": [
|
|
1735
|
+
"autonomy"
|
|
1736
|
+
],
|
|
1737
|
+
"summary": "POST /autonomy/builders/:builderId/pause",
|
|
1738
|
+
"description": "The owner pauses or resumes ONE builder's runner without throwing the master switch. Same atom as the kill switch: stopping a machine is the same act whether it is everyone's or one person's, and the paused builder must not be able to lift it (autonomy.run does not reach this route).\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `autonomy.fence.manage` (all required).",
|
|
1739
|
+
"x-rank": "archon",
|
|
1740
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1741
|
+
"x-permissions": [
|
|
1742
|
+
"autonomy.fence.manage"
|
|
1743
|
+
],
|
|
1744
|
+
"parameters": [
|
|
1745
|
+
{
|
|
1746
|
+
"name": "builderId",
|
|
1747
|
+
"in": "path",
|
|
1748
|
+
"required": true,
|
|
1749
|
+
"schema": {
|
|
1750
|
+
"type": "string"
|
|
1751
|
+
},
|
|
1752
|
+
"description": "Path parameter `builderId`."
|
|
1753
|
+
}
|
|
1754
|
+
],
|
|
1755
|
+
"requestBody": {
|
|
1756
|
+
"required": true,
|
|
1757
|
+
"content": {
|
|
1758
|
+
"application/json": {
|
|
1759
|
+
"schema": {
|
|
1760
|
+
"$ref": "#/components/schemas/PostAutonomyBuildersBuilderIdPauseRequest"
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
"x-validated": true
|
|
1765
|
+
},
|
|
1766
|
+
"responses": {
|
|
1767
|
+
"200": {
|
|
1768
|
+
"description": "Success."
|
|
1769
|
+
},
|
|
1770
|
+
"400": {
|
|
1771
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
1772
|
+
},
|
|
1773
|
+
"401": {
|
|
1774
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1775
|
+
},
|
|
1776
|
+
"403": {
|
|
1777
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1778
|
+
},
|
|
1779
|
+
"404": {
|
|
1780
|
+
"$ref": "#/components/responses/NotFound"
|
|
1781
|
+
}
|
|
1782
|
+
},
|
|
1783
|
+
"security": [
|
|
1784
|
+
{
|
|
1785
|
+
"builderSession": []
|
|
1786
|
+
}
|
|
1787
|
+
]
|
|
1788
|
+
}
|
|
1789
|
+
},
|
|
1731
1790
|
"/autonomy/fence": {
|
|
1732
1791
|
"get": {
|
|
1733
1792
|
"operationId": "get_autonomy_fence",
|
|
@@ -1735,7 +1794,7 @@
|
|
|
1735
1794
|
"autonomy"
|
|
1736
1795
|
],
|
|
1737
1796
|
"summary": "GET /autonomy/fence",
|
|
1738
|
-
"description": "The runner's own read, every iteration. ANY-BUILDER on purpose: learning that you must stop should never require an elevated session, because the failure mode of \"could not read the fence\" is a machine that keeps going. The body carries no secret — it is a boolean, a reason string and a list of goal ids.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
1797
|
+
"description": "The runner's own read, every iteration. ANY-BUILDER on purpose: learning that you must stop should never require an elevated session, because the failure mode of \"could not read the fence\" is a machine that keeps going. The body carries no secret — it is a boolean, a reason string and a list of goal ids. THE CALLER'S fence, not the project's (task 1004501). The top-level `enabled` and `goals` are what THIS builder's runner may do: the project switch, then `autonomy.run`, then the owner's pause on this builder, and the allowlist narrowed to their own picks (fence.js effectiveFence). Computing it here keeps the runner dumb and means a runner that predates this change is narrowed too. The unnarrowed project fence rides along as `project` for the owner's page.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
1739
1798
|
"x-rank": "any-builder",
|
|
1740
1799
|
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
1741
1800
|
"responses": {
|
|
@@ -1996,6 +2055,58 @@
|
|
|
1996
2055
|
]
|
|
1997
2056
|
}
|
|
1998
2057
|
},
|
|
2058
|
+
"/autonomy/me/goals": {
|
|
2059
|
+
"put": {
|
|
2060
|
+
"operationId": "put_autonomy_me_goals",
|
|
2061
|
+
"tags": [
|
|
2062
|
+
"autonomy"
|
|
2063
|
+
],
|
|
2064
|
+
"summary": "PUT /autonomy/me/goals",
|
|
2065
|
+
"description": "A builder picks which allowlisted goals THEIR runner works. Replaces the whole list; `[]` means \"my runner takes no work\". Keyed by the session, never the body, so nobody can set another builder's picks. Behind `autonomy.run`: a builder who may not run a runner has nothing to scope. A goal not on the project allowlist is refused with 409 and nothing is written — the pick can narrow the project fence and never widen it.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `autonomy.run` (all required).",
|
|
2066
|
+
"x-rank": "metic+archon",
|
|
2067
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
2068
|
+
"x-permissions": [
|
|
2069
|
+
"autonomy.run"
|
|
2070
|
+
],
|
|
2071
|
+
"requestBody": {
|
|
2072
|
+
"required": true,
|
|
2073
|
+
"content": {
|
|
2074
|
+
"application/json": {
|
|
2075
|
+
"schema": {
|
|
2076
|
+
"$ref": "#/components/schemas/PutAutonomyMeGoalsRequest"
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2079
|
+
},
|
|
2080
|
+
"x-validated": true
|
|
2081
|
+
},
|
|
2082
|
+
"responses": {
|
|
2083
|
+
"200": {
|
|
2084
|
+
"description": "Success.",
|
|
2085
|
+
"content": {
|
|
2086
|
+
"application/json": {
|
|
2087
|
+
"schema": {
|
|
2088
|
+
"$ref": "#/components/schemas/PutAutonomyMeGoalsResponse"
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
}
|
|
2092
|
+
},
|
|
2093
|
+
"400": {
|
|
2094
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
2095
|
+
},
|
|
2096
|
+
"401": {
|
|
2097
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
2098
|
+
},
|
|
2099
|
+
"403": {
|
|
2100
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2101
|
+
}
|
|
2102
|
+
},
|
|
2103
|
+
"security": [
|
|
2104
|
+
{
|
|
2105
|
+
"builderSession": []
|
|
2106
|
+
}
|
|
2107
|
+
]
|
|
2108
|
+
}
|
|
2109
|
+
},
|
|
1999
2110
|
"/autonomy/precheck": {
|
|
2000
2111
|
"get": {
|
|
2001
2112
|
"operationId": "get_autonomy_precheck",
|
|
@@ -2068,6 +2179,47 @@
|
|
|
2068
2179
|
]
|
|
2069
2180
|
}
|
|
2070
2181
|
},
|
|
2182
|
+
"/autonomy/runners/all": {
|
|
2183
|
+
"get": {
|
|
2184
|
+
"operationId": "get_autonomy_runners_all",
|
|
2185
|
+
"tags": [
|
|
2186
|
+
"autonomy"
|
|
2187
|
+
],
|
|
2188
|
+
"summary": "GET /autonomy/runners/all",
|
|
2189
|
+
"description": "The owner's view of every builder's runners: who, which goals they picked, whether they are paused, and each runner's health — the server's verdict, as GET /autonomy/runners attaches it. Owner-only: a heartbeat names a machine and its hostname, which is each builder's own business (task 1003905), and the owner is the one person who needs every row to run the fence.\n\n**Rank:** `archon` — Archon only (rank and identity management + the escalation keys — the trust boundary).\n\n**Permissions:** `autonomy.fence.manage` (all required).",
|
|
2190
|
+
"x-rank": "archon",
|
|
2191
|
+
"x-source": "modules/autonomy/routes/autonomy.js",
|
|
2192
|
+
"x-permissions": [
|
|
2193
|
+
"autonomy.fence.manage"
|
|
2194
|
+
],
|
|
2195
|
+
"responses": {
|
|
2196
|
+
"200": {
|
|
2197
|
+
"description": "Success.",
|
|
2198
|
+
"content": {
|
|
2199
|
+
"application/json": {
|
|
2200
|
+
"schema": {
|
|
2201
|
+
"$ref": "#/components/schemas/GetAutonomyRunnersAllResponse"
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
},
|
|
2206
|
+
"400": {
|
|
2207
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2208
|
+
},
|
|
2209
|
+
"401": {
|
|
2210
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
2211
|
+
},
|
|
2212
|
+
"403": {
|
|
2213
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2214
|
+
}
|
|
2215
|
+
},
|
|
2216
|
+
"security": [
|
|
2217
|
+
{
|
|
2218
|
+
"builderSession": []
|
|
2219
|
+
}
|
|
2220
|
+
]
|
|
2221
|
+
}
|
|
2222
|
+
},
|
|
2071
2223
|
"/autonomy/runs": {
|
|
2072
2224
|
"get": {
|
|
2073
2225
|
"operationId": "get_autonomy_runs",
|
|
@@ -2717,6 +2869,51 @@
|
|
|
2717
2869
|
]
|
|
2718
2870
|
}
|
|
2719
2871
|
},
|
|
2872
|
+
"/builders/{builderId}/earnings": {
|
|
2873
|
+
"get": {
|
|
2874
|
+
"operationId": "get_builders_builderId_earnings",
|
|
2875
|
+
"tags": [
|
|
2876
|
+
"builders"
|
|
2877
|
+
],
|
|
2878
|
+
"summary": "GET /builders/:builderId/earnings",
|
|
2879
|
+
"description": "any signed-in builder may read any builder's earnings by kind, as the profile's other signed-in sections are; a stranger gets the sign-in line. The param names the builder (`:builderId`), the credits route's convention, because this route deliberately reads someone else.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
2880
|
+
"x-rank": "any-builder",
|
|
2881
|
+
"x-source": "modules/economy/routes/earnings.js",
|
|
2882
|
+
"parameters": [
|
|
2883
|
+
{
|
|
2884
|
+
"name": "builderId",
|
|
2885
|
+
"in": "path",
|
|
2886
|
+
"required": true,
|
|
2887
|
+
"schema": {
|
|
2888
|
+
"type": "string"
|
|
2889
|
+
},
|
|
2890
|
+
"description": "Path parameter `builderId`."
|
|
2891
|
+
}
|
|
2892
|
+
],
|
|
2893
|
+
"responses": {
|
|
2894
|
+
"200": {
|
|
2895
|
+
"description": "Success."
|
|
2896
|
+
},
|
|
2897
|
+
"400": {
|
|
2898
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2899
|
+
},
|
|
2900
|
+
"401": {
|
|
2901
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
2902
|
+
},
|
|
2903
|
+
"403": {
|
|
2904
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2905
|
+
},
|
|
2906
|
+
"404": {
|
|
2907
|
+
"$ref": "#/components/responses/NotFound"
|
|
2908
|
+
}
|
|
2909
|
+
},
|
|
2910
|
+
"security": [
|
|
2911
|
+
{
|
|
2912
|
+
"builderSession": []
|
|
2913
|
+
}
|
|
2914
|
+
]
|
|
2915
|
+
}
|
|
2916
|
+
},
|
|
2720
2917
|
"/builders/{id}/active-claims": {
|
|
2721
2918
|
"get": {
|
|
2722
2919
|
"operationId": "get_builders_id_active_claims",
|
|
@@ -23362,6 +23559,15 @@
|
|
|
23362
23559
|
"admitted"
|
|
23363
23560
|
]
|
|
23364
23561
|
},
|
|
23562
|
+
"GetAutonomyRunnersAllResponse": {
|
|
23563
|
+
"type": "object",
|
|
23564
|
+
"properties": {
|
|
23565
|
+
"builders": {}
|
|
23566
|
+
},
|
|
23567
|
+
"required": [
|
|
23568
|
+
"builders"
|
|
23569
|
+
]
|
|
23570
|
+
},
|
|
23365
23571
|
"GetAutonomyRunnersResponse": {
|
|
23366
23572
|
"type": "object",
|
|
23367
23573
|
"properties": {
|
|
@@ -26391,6 +26597,22 @@
|
|
|
26391
26597
|
"revoked"
|
|
26392
26598
|
]
|
|
26393
26599
|
},
|
|
26600
|
+
"PostAutonomyBuildersBuilderIdPauseRequest": {
|
|
26601
|
+
"type": "object",
|
|
26602
|
+
"properties": {
|
|
26603
|
+
"paused": {
|
|
26604
|
+
"type": "boolean"
|
|
26605
|
+
},
|
|
26606
|
+
"reason": {
|
|
26607
|
+
"type": "string",
|
|
26608
|
+
"maxLength": 500
|
|
26609
|
+
}
|
|
26610
|
+
},
|
|
26611
|
+
"required": [
|
|
26612
|
+
"paused"
|
|
26613
|
+
],
|
|
26614
|
+
"additionalProperties": false
|
|
26615
|
+
},
|
|
26394
26616
|
"PostAutonomyFenceGoalsRequest": {
|
|
26395
26617
|
"type": "object",
|
|
26396
26618
|
"properties": {
|
|
@@ -31015,6 +31237,25 @@
|
|
|
31015
31237
|
"criteria"
|
|
31016
31238
|
]
|
|
31017
31239
|
},
|
|
31240
|
+
"PutAutonomyMeGoalsRequest": {
|
|
31241
|
+
"type": "object",
|
|
31242
|
+
"properties": {
|
|
31243
|
+
"goal_ids": {}
|
|
31244
|
+
},
|
|
31245
|
+
"required": [
|
|
31246
|
+
"goal_ids"
|
|
31247
|
+
],
|
|
31248
|
+
"additionalProperties": false
|
|
31249
|
+
},
|
|
31250
|
+
"PutAutonomyMeGoalsResponse": {
|
|
31251
|
+
"type": "object",
|
|
31252
|
+
"properties": {
|
|
31253
|
+
"goals": {}
|
|
31254
|
+
},
|
|
31255
|
+
"required": [
|
|
31256
|
+
"goals"
|
|
31257
|
+
]
|
|
31258
|
+
},
|
|
31018
31259
|
"PutCopyDeskPagesPageIdDraftRequest": {
|
|
31019
31260
|
"type": "object",
|
|
31020
31261
|
"properties": {
|
|
@@ -31351,9 +31592,9 @@
|
|
|
31351
31592
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
31352
31593
|
}
|
|
31353
31594
|
},
|
|
31354
|
-
"x-endpoint-count":
|
|
31355
|
-
"x-schema-count":
|
|
31595
|
+
"x-endpoint-count": 494,
|
|
31596
|
+
"x-schema-count": 524,
|
|
31356
31597
|
"x-undocumented-bodies": 12,
|
|
31357
|
-
"x-response-schemas":
|
|
31598
|
+
"x-response-schemas": 349,
|
|
31358
31599
|
"x-generated-by": "scripts/gds/gen-api-docs.js"
|
|
31359
31600
|
}
|
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. 494 endpoints across 92 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`.
|
|
@@ -81,18 +81,21 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
81
81
|
| GET | `/api/bongos/auth/web/handoff` | `public` | — | GET /auth/web/handoff?code=&return= — the far side of the one-time session handoff (task 1004357). |
|
|
82
82
|
| GET | `/api/bongos/auth/web/start` | `public` | — | /auth/web — browser flow (used by the /builders page). |
|
|
83
83
|
|
|
84
|
-
## `autonomy` (
|
|
84
|
+
## `autonomy` (12)
|
|
85
85
|
|
|
86
86
|
| Method | Path | Rank | Body | Description |
|
|
87
87
|
|---|---|---|---|---|
|
|
88
|
+
| POST | `/api/bongos/autonomy/builders/:builderId/pause` | `archon` | `paused`, `reason` | The owner pauses or resumes ONE builder's runner without throwing the master switch. |
|
|
88
89
|
| GET | `/api/bongos/autonomy/fence` | `any-builder` | — | The runner's own read, every iteration. |
|
|
89
90
|
| POST | `/api/bongos/autonomy/fence` | `archon` | `enabled`, `reason` | The kill switch. |
|
|
90
91
|
| POST | `/api/bongos/autonomy/fence/goals` | `archon` | `goal_id`, `note` | Add a goal to the allowlist. |
|
|
91
92
|
| DELETE | `/api/bongos/autonomy/fence/goals/:goalId` | `archon` | — | Revoke one. |
|
|
92
93
|
| POST | `/api/bongos/autonomy/fence/priority` | `archon` | `goal_id` | The priority goal (task 1004453): which allowlisted goal the runner works first. |
|
|
93
94
|
| POST | `/api/bongos/autonomy/heartbeat` | `any-builder` | `host`, `pid`, `started_at`, `mode`, `consecutive_failures`, `last_event`, `working_task_id`, `working_goal_id`, `head`, `disk_head`, `main_head`, `claude_account` | The runner's check-in, once per loop. |
|
|
95
|
+
| PUT | `/api/bongos/autonomy/me/goals` | `metic+archon` | `goal_ids` | A builder picks which allowlisted goals THEIR runner works. |
|
|
94
96
|
| GET | `/api/bongos/autonomy/precheck` | `metic+archon` | — | |
|
|
95
97
|
| GET | `/api/bongos/autonomy/runners` | `any-builder` | — | What the hall renders: the CALLER'S OWN runners, with the pure verdict attached so the page and any future alert cannot disagree about wh… |
|
|
98
|
+
| GET | `/api/bongos/autonomy/runners/all` | `archon` | — | The owner's view of every builder's runners: who, which goals they picked, whether they are paused, and each runner's health — the server… |
|
|
96
99
|
| GET | `/api/bongos/autonomy/runs` | `metic+archon` | — | The gate's past decisions — did a routine fire, and what did it decide, and why (task 1002669). |
|
|
97
100
|
|
|
98
101
|
## `backup` (2)
|
|
@@ -119,11 +122,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
119
122
|
|---|---|---|---|---|
|
|
120
123
|
| GET | `/api/bongos/bug-attachments/:name` | `any-builder` | — | GET /api/bongos/bug-attachments/:name — stream one stored image. |
|
|
121
124
|
|
|
122
|
-
## `builders` (
|
|
125
|
+
## `builders` (12)
|
|
123
126
|
|
|
124
127
|
| Method | Path | Rank | Body | Description |
|
|
125
128
|
|---|---|---|---|---|
|
|
126
129
|
| GET | `/api/bongos/builders/:builderId/credits` | `metic+archon` | — | GET /builders/:builderId/credits — another builder's ledger. |
|
|
130
|
+
| GET | `/api/bongos/builders/:builderId/earnings` | `any-builder` | — | any signed-in builder may read any builder's earnings by kind, as the profile's other signed-in sections are; a stranger gets the sign-in… |
|
|
127
131
|
| GET | `/api/bongos/builders/:id/active-claims` | `metic+archon` | — | GET /builders/:id/active-claims — V3.R14 (task 238). |
|
|
128
132
|
| GET | `/api/bongos/builders/:id/activity` | `any-builder` | — | GET /builders/:id/activity — the profile's PER-CRAFT activity log (task 1003281, goal 1000072, criterion legibility-activity-by-role). |
|
|
129
133
|
| PATCH | `/api/bongos/builders/:id/budget` | `metic+archon` | `monthly_budget_usd` | PATCH /builders/:id/budget — set or clear a builder's monthly spend ceiling (V3.R84 task 302, criterion C3). |
|