@bongos/core 1.18.19 → 1.19.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/.bongos-core.json +547 -197
  2. package/.claude/skills/builder-box/SKILL.md +1 -1
  3. package/.claude/skills/builder-claim/SKILL.md +1 -1
  4. package/.claude/skills/goal-create/SKILL.md +1 -1
  5. package/.claude/skills/idea-triage/SKILL.md +1 -1
  6. package/.claude/skills/planning-session/SKILL.md +5 -5
  7. package/.claude/skills/scan-before-install/SKILL.md +165 -0
  8. package/bin/bongos.js +33 -7
  9. package/clients/bongos-client/README.md +1 -1
  10. package/clients/bongos-client/bongos-client.global.js +63 -41
  11. package/clients/bongos-client/index.cjs +63 -41
  12. package/clients/bongos-client/index.d.ts +78 -44
  13. package/clients/bongos-client/index.mjs +63 -41
  14. package/docs/adr/0020-security-model-public-stub.md +1 -1
  15. package/docs/adr/0097-one-active-claim-per-session-and-worktree-binding.md +2 -0
  16. package/docs/adr/0137-upstream-publish-policy-manual-owner-gated.md +1 -1
  17. package/docs/adr/0144-devbox-rehome-onto-cloudbongos-plane.md +1 -1
  18. package/docs/adr/0151-governance-permissions-as-atom-ranks-as-roles.md +2 -1
  19. package/docs/adr/0155-adopt-private-repo-widen-oauth-scope.md +51 -0
  20. package/docs/adr/0156-user-set-display-name-wins.md +62 -0
  21. package/docs/adr/0157-archon-is-rank-and-identity-only.md +93 -0
  22. package/docs/adr/0158-choke-point-verdict-taxonomy.md +174 -0
  23. package/docs/adr/0159-merge-gate-reconciliation.md +88 -0
  24. package/docs/adr/0160-main-audit-repo-verifiable-caller.md +77 -0
  25. package/docs/adr/0161-publish-on-merge.md +34 -0
  26. package/docs/adr/README.md +9 -0
  27. package/docs/api/openapi.json +1209 -233
  28. package/docs/api-reference.md +61 -46
  29. package/docs/architecture.md +1 -1
  30. package/docs/canonical-permissions.md +61 -16
  31. package/docs/design/vanilla-hall-ui-redesign-scope.md +1 -1
  32. package/docs/file-map.md +4 -1
  33. package/docs/onboarding/diagrams/assertions.json +3 -3
  34. package/docs/recipes/core-release-pipeline.md +181 -0
  35. package/docs/recipes/packaging-the-core.md +2 -0
  36. package/docs/recipes/parallel-goal-waves.md +1 -3
  37. package/docs/recipes/private-npm-distribution.md +6 -2
  38. package/docs/recipes/upgrading-the-core.md +2 -0
  39. package/migrations/core_197_display_name_source.sql +56 -0
  40. package/migrations/core_204_rekey_active_claim_per_session_worktree.sql +77 -0
  41. package/migrations/core_205_versions_track_default.sql +28 -0
  42. package/modules/autonomy/routes/autonomy.js +1 -1
  43. package/modules/builder-settings/db.js +7 -1
  44. package/modules/dev-box/app/src/vendor/bongos-client.cjs +63 -41
  45. package/modules/dev-box/routes/box.js +11 -9
  46. package/modules/discord/auth.js +3 -1
  47. package/modules/discord/routes/discord.js +8 -2
  48. package/modules/discord/ship-broadcast.js +48 -1
  49. package/modules/governance/catalog.js +70 -20
  50. package/modules/governance/db.js +102 -0
  51. package/modules/governance/migrations/governance_006_version_create.sql +38 -0
  52. package/modules/governance/migrations/governance_007_delegate_archon_ops_to_metic.sql +72 -0
  53. package/modules/governance/routes/governance.js +235 -6
  54. package/modules/grading/grader-workers/index.js +18 -9
  55. package/modules/hall-ui/public/gate.js +6 -2
  56. package/modules/hall-ui/public/goals-page.js +6 -2
  57. package/modules/hall-ui/public/governance.css +100 -0
  58. package/modules/hall-ui/public/governance.html +77 -0
  59. package/modules/hall-ui/public/governance.js +353 -0
  60. package/modules/hall-ui/public/harbor.js +14 -8
  61. package/modules/hall-ui/public/instances-panel.js +3 -1
  62. package/modules/hall-ui/public/new-project-wizard.js +6 -0
  63. package/modules/hall-ui/public/people.html +51 -0
  64. package/modules/hall-ui/public/people.js +100 -0
  65. package/modules/hall-ui/public/profile.html +2 -1
  66. package/modules/hall-ui/public/profile.js +9 -3
  67. package/modules/hall-ui/public/sessions.js +4 -2
  68. package/modules/hall-ui/public/shell.js +28 -7
  69. package/modules/hall-ui/public/task-detail.js +6 -3
  70. package/modules/hall-ui/public/watch.js +17 -9
  71. package/modules/ideas/blockers.js +44 -7
  72. package/modules/ideas/routes/blockers.js +12 -7
  73. package/modules/ideas/routes/inbox.js +2 -2
  74. package/modules/lifecycle/db.js +84 -17
  75. package/modules/lifecycle/github-push.js +37 -10
  76. package/modules/lifecycle/publish-reconciler.js +128 -31
  77. package/modules/lifecycle/routes/claims.js +10 -4
  78. package/modules/lifecycle/routes/dependencies.js +2 -2
  79. package/modules/lifecycle/routes/done-when.js +4 -4
  80. package/modules/lifecycle/routes/gate-approvals.js +9 -3
  81. package/modules/lifecycle/routes/goals.js +5 -5
  82. package/modules/lifecycle/routes/tasks.js +99 -69
  83. package/modules/lifecycle/routes/versions.js +13 -2
  84. package/modules/lifecycle/ship-card.js +38 -7
  85. package/modules/memory/routes/memory.js +2 -2
  86. package/modules/onboarding/routes/access-requests.js +3 -3
  87. package/modules/platform-identity/routes/projects.js +10 -6
  88. package/modules/platform-identity/routes/scouting.js +2 -2
  89. package/modules/provisioning/migrations/provisioning_004_onboard_mode.sql +30 -0
  90. package/modules/provisioning/provisioning.js +24 -6
  91. package/modules/provisioning/routes/provisioning.js +24 -6
  92. package/modules/security/artifact-scan/aggregate.js +133 -0
  93. package/modules/security/artifact-scan/detectors/capabilities.js +53 -0
  94. package/modules/security/artifact-scan/detectors/config-obfuscation.js +41 -0
  95. package/modules/security/artifact-scan/detectors/credentials.js +112 -0
  96. package/modules/security/artifact-scan/detectors/dependencies.js +115 -0
  97. package/modules/security/artifact-scan/detectors/hooks.js +116 -0
  98. package/modules/security/artifact-scan/detectors/injection.js +118 -0
  99. package/modules/security/artifact-scan/detectors/mcp.js +102 -0
  100. package/modules/security/artifact-scan/detectors/network.js +67 -0
  101. package/modules/security/artifact-scan/detectors/npm-lifecycle.js +67 -0
  102. package/modules/security/artifact-scan/detectors/permissions.js +91 -0
  103. package/modules/security/artifact-scan/detectors/shared.js +219 -0
  104. package/modules/security/artifact-scan/fence-local.js +99 -0
  105. package/modules/security/artifact-scan/fetch.js +330 -0
  106. package/modules/security/artifact-scan/floor.js +319 -0
  107. package/modules/security/artifact-scan/limits.js +66 -0
  108. package/modules/security/artifact-scan/manifest.js +203 -0
  109. package/modules/security/artifact-scan/mirror.js +158 -0
  110. package/modules/security/artifact-scan/quarantine.js +149 -0
  111. package/modules/security/artifact-scan/rebuild-spec.js +120 -0
  112. package/modules/security/artifact-scan/report.js +155 -0
  113. package/modules/security/artifact-scan/sanitize.js +317 -0
  114. package/modules/security/migrations/security_001_tool_scans.sql +145 -0
  115. package/modules/security/module.json +2 -2
  116. package/modules/security/routes/reports.js +11 -7
  117. package/modules/security/routes/scans.js +115 -0
  118. package/modules/security/scan-store.js +214 -0
  119. package/modules/security/tests/aggregate.mjs +283 -0
  120. package/modules/security/tests/artifact_scan.mjs +591 -0
  121. package/modules/security/tests/floor.mjs +549 -0
  122. package/modules/security/tests/mirror.mjs +350 -0
  123. package/modules/security/tests/sanitize_rebuild.mjs +499 -0
  124. package/modules/security/tests/scan_store.mjs +250 -0
  125. package/modules/security/tests/tool_scans_migration.mjs +116 -0
  126. package/modules/sessions/routes/sessions.js +6 -5
  127. package/package-lock.json +2 -2
  128. package/package.json +1 -1
  129. package/public-landing/create.html +13 -3
  130. package/scripts/gds/abandon.js +1 -1
  131. package/scripts/gds/audit-authorship.sh +6 -0
  132. package/scripts/gds/box.js +1 -1
  133. package/scripts/gds/bump-version.js +76 -0
  134. package/scripts/gds/claim.js +15 -0
  135. package/scripts/gds/cli-lib.js +16 -4
  136. package/scripts/gds/gating.js +28 -13
  137. package/scripts/gds/gen-api-docs.js +1 -1
  138. package/scripts/gds/goal.js +234 -0
  139. package/scripts/gds/init.js +77 -15
  140. package/scripts/gds/main-audit.js +80 -11
  141. package/scripts/gds/mirror-redact.js +6 -0
  142. package/scripts/gds/newcomer-floor.js +2 -2
  143. package/scripts/gds/provision.js +230 -94
  144. package/scripts/gds/run-unit-tests.js +9 -1
  145. package/scripts/gds/sandbox-stage.js +66 -9
  146. package/scripts/gds/search-ingest-md.js +1 -0
  147. package/scripts/gds/sequence.js +67 -8
  148. package/scripts/gds/ship.js +183 -50
  149. package/scripts/hall-preview/server.js +1 -1
  150. package/scripts/migrate.sh +5 -5
  151. package/src/bongos/auth.js +129 -27
  152. package/src/bongos/db-kernel.js +66 -5
  153. package/src/bongos/db.js +6 -7
  154. package/src/bongos/github-repos.js +19 -7
  155. package/src/bongos/goal-scope-check.js +1 -1
  156. package/src/bongos/module-scope-map.js +3 -1
  157. package/src/bongos/permission-path-check.js +1 -1
  158. package/src/bongos/route-rank-check.js +73 -30
  159. package/src/bongos/routes/audit-log.js +4 -2
  160. package/src/bongos/routes/auth.js +8 -4
  161. package/src/bongos/routes/backup.js +7 -4
  162. package/src/bongos/routes/builders.js +23 -11
  163. package/src/bongos/routes/github.js +15 -4
  164. package/src/bongos/routes/llm-cache.js +5 -2
  165. package/src/bongos/routes/modules.js +9 -5
  166. package/src/bongos/routes/security.js +21 -12
  167. package/src/bongos/serve-internal.js +22 -7
  168. package/src/module-api.js +96 -13
  169. package/src/platform-server.js +14 -0
  170. package/tests/api_client.mjs +18 -2
  171. package/tests/api_path_404.mjs +3 -0
  172. package/tests/art_stage.mjs +2 -1
  173. package/tests/atlas.mjs +32 -4
  174. package/tests/auth_admission_gate.mjs +17 -5
  175. package/tests/auth_error_brand.mjs +41 -21
  176. package/tests/auth_resolve_failure.mjs +155 -0
  177. package/tests/blocker_link.mjs +88 -0
  178. package/tests/bongos_cli.mjs +91 -0
  179. package/tests/bongos_downloads.mjs +2 -1
  180. package/tests/box_dns_repoint.mjs +2 -0
  181. package/tests/box_ship_permissions.mjs +2 -0
  182. package/tests/box_terminal_ssrf.mjs +23 -17
  183. package/tests/bump_version.mjs +71 -0
  184. package/tests/claim_error_surface.mjs +23 -0
  185. package/tests/claude_materialize.mjs +4 -0
  186. package/tests/cli_box_scope.mjs +40 -0
  187. package/tests/cloud_bongos_pack.mjs +34 -4
  188. package/tests/conductor.mjs +2 -1
  189. package/tests/criterion_authoring_gate.mjs +28 -5
  190. package/tests/currency_label.mjs +10 -1
  191. package/tests/deploy_instance.mjs +2 -0
  192. package/tests/devbox_downloads.mjs +2 -1
  193. package/tests/display_name.mjs +95 -6
  194. package/tests/eviction_policy.mjs +2 -1
  195. package/tests/file_map.mjs +10 -0
  196. package/tests/first_admin_bootstrap.mjs +10 -2
  197. package/tests/first_run_engine_check.mjs +2 -1
  198. package/tests/fitness.mjs +26 -6
  199. package/tests/gate_approvals.mjs +15 -2
  200. package/tests/github_push_land_proof.mjs +50 -4
  201. package/tests/github_repos_helpers.mjs +30 -5
  202. package/tests/github_token_store.mjs +23 -0
  203. package/tests/goal_abuse_matrix.mjs +13 -3
  204. package/tests/goal_cli.mjs +89 -0
  205. package/tests/governance_abuse_matrix.mjs +386 -0
  206. package/tests/governance_fold.mjs +156 -0
  207. package/tests/governance_fold_bench.mjs +50 -0
  208. package/tests/governance_live_proof.mjs +201 -0
  209. package/tests/governance_page_gates.mjs +21 -9
  210. package/tests/governance_parity.mjs +11 -2
  211. package/tests/governance_require_permission.mjs +125 -1
  212. package/tests/governance_routes.mjs +334 -0
  213. package/tests/grader.mjs +7 -3
  214. package/tests/hall_nav.mjs +14 -4
  215. package/tests/helpers.mjs +73 -0
  216. package/tests/hook_core_resolve.mjs +2 -1
  217. package/tests/host_topology_skips.mjs +97 -0
  218. package/tests/infra_exec_paths.mjs +14 -4
  219. package/tests/init.mjs +147 -0
  220. package/tests/known_failing_ratchet.mjs +89 -0
  221. package/tests/lifecycle-card.mjs +2 -1
  222. package/tests/main_audit.mjs +72 -1
  223. package/tests/memory_isolation.mjs +56 -9
  224. package/tests/migrate_root_resolution.mjs +1 -1
  225. package/tests/mirror_redact.mjs +19 -0
  226. package/tests/module_api.mjs +3 -1
  227. package/tests/module_loader.mjs +4 -0
  228. package/tests/modules.mjs +35 -7
  229. package/tests/modules_route.mjs +29 -5
  230. package/tests/onboarding_observability.mjs +49 -11
  231. package/tests/onboarding_route_signals.mjs +1 -0
  232. package/tests/one_active_claim_per_session.mjs +80 -0
  233. package/tests/patch_gate_ordering.mjs +102 -0
  234. package/tests/pre_compact.mjs +2 -1
  235. package/tests/preview_server.mjs +2 -1
  236. package/tests/profile_route.mjs +1 -0
  237. package/tests/provision.mjs +170 -0
  238. package/tests/provisioning_onboard_mode.mjs +180 -0
  239. package/tests/publish_manifest.mjs +16 -3
  240. package/tests/publish_reconciler.mjs +181 -10
  241. package/tests/rank_tier_single_source.mjs +205 -0
  242. package/tests/recall_hints.mjs +2 -1
  243. package/tests/repo_map.mjs +4 -0
  244. package/tests/route_permission_check.mjs +14 -5
  245. package/tests/rubric_fixtures.mjs +3 -0
  246. package/tests/run_routine_two_root.mjs +2 -0
  247. package/tests/sandbox_stage.mjs +69 -7
  248. package/tests/search_ingest.mjs +7 -0
  249. package/tests/security_docs.mjs +28 -6
  250. package/tests/sequence.mjs +64 -0
  251. package/tests/session-cards.mjs +2 -1
  252. package/tests/session_start_freshness.mjs +2 -1
  253. package/tests/ship_broadcast_server.mjs +63 -1
  254. package/tests/ship_card.mjs +66 -0
  255. package/tests/ship_ci_deploy.mjs +66 -1
  256. package/tests/ship_smoke_gate.mjs +76 -0
  257. package/tests/versions_route.mjs +15 -0
  258. package/tests/workflow_exec_paths.mjs +16 -4
  259. package/tests/worktree_guard.mjs +2 -1
@@ -7,6 +7,8 @@ export declare const DEFAULT_BASE_URL: string;
7
7
  export interface ApiErrorObject { code: string; message: string; details?: unknown }
8
8
  export interface DeleteBoxSshKeyIdResponse { ok: boolean; deleted: unknown }
9
9
  export interface DeleteDependenciesResponse { ok: boolean }
10
+ export interface DeleteGovernanceAssignmentsBuilderIdRoleKeyResponse { ok: boolean; builder_id: unknown; role_key: unknown; removed: unknown }
11
+ export interface DeleteGovernanceRolesRoleKeyPermissionsPermissionKeyResponse { ok: boolean; role_key: unknown; permission_key: unknown; removed: unknown }
10
12
  export interface DeleteMemoryFileResponse { deleted: boolean; builder_id: unknown; path: unknown }
11
13
  export interface DeleteTasksIdCriteriaCriterionIdResponse { ok: boolean; removed: unknown }
12
14
  export interface DeleteTasksIdDependenciesDepIdResponse { ok: boolean; removed: unknown }
@@ -39,6 +41,9 @@ export interface GetGoalsIdRequestsResponse { requests: unknown }
39
41
  export interface GetGoalsIdResponse { goal: unknown; members: unknown; criteria: unknown; dependencies: unknown }
40
42
  export interface GetGoalsIdSuggestCriteriaResponse { goal_id: unknown; suggestions: unknown }
41
43
  export interface GetGoalsResponse { goals: unknown }
44
+ export interface GetGovernanceAssignmentsResponse { assignments: unknown }
45
+ export interface GetGovernancePermissionsResponse { permissions: unknown; principals: unknown }
46
+ export interface GetGovernanceRolesResponse { roles: unknown }
42
47
  export interface GetGradesByBuilderResponse { window_days: unknown; builders: unknown }
43
48
  export interface GetHealthzResponse { ok: boolean; auth_configured: unknown }
44
49
  export interface GetInboxIdResponse { idea: unknown }
@@ -87,6 +92,7 @@ export interface GetScoutingResponse { builders: unknown }
87
92
  export interface GetSecurityDocsResponse { docs: unknown }
88
93
  export interface GetSecurityDocsSlugResponse { doc: unknown }
89
94
  export interface GetSecurityReportsResponse { reports: unknown; bounty_table: unknown; statuses: unknown }
95
+ export interface GetSecurityScansResponse { scans: unknown }
90
96
  export interface GetSessionsIdResponse { session: unknown }
91
97
  export interface GetSessionsMineResponse { sessions: unknown; count: unknown }
92
98
  export interface GetSessionsSearchResponse { sessions: unknown; count: unknown; total: unknown; totals: unknown; limit: unknown; offset: unknown }
@@ -147,7 +153,7 @@ export interface PostAuthRevokeRequest { session_id?: StringifiableId }
147
153
  export interface PostAuthRevokeResponse { ok: boolean; revoked: unknown }
148
154
  export interface PostBackupTriggerResponse { ok: boolean; message: unknown; started_at: unknown }
149
155
  export interface PostBlockersIdLinkRequest { task_id: StringifiableId }
150
- export interface PostBlockersIdLinkResponse { ok: boolean }
156
+ export interface PostBlockersIdLinkResponse { ok: boolean; blocked: unknown }
151
157
  export interface PostBlockersIdResolveRequest { resolution_note?: string }
152
158
  export interface PostBlockersRequest { title: string; body_md?: string; source?: string; source_ref?: string }
153
159
  export interface PostBlockersResponse { skipped?: boolean; reason?: unknown; blocker?: unknown }
@@ -210,6 +216,9 @@ export interface PostGoalsReorderRequest { version_id: string; ordered_ids: numb
210
216
  export interface PostGoalsReorderResponse { ok: boolean; goals: unknown }
211
217
  export interface PostGoalsRequest { version_id: string; title: string; description?: string; scope_modules?: string[]; succeeds_goal_id?: number }
212
218
  export interface PostGoalsResponse { ok: boolean; goal: unknown; succeeds_goal_id: unknown }
219
+ export interface PostGovernanceAssignmentsRequest { builder_id: number; role_key: string }
220
+ export interface PostGovernanceRolesRequest { role_key: string; label: string; description?: string }
221
+ export interface PostGovernanceRolesResponse { role: unknown }
213
222
  export interface PostInboxIdRatifyRequest { notes_md?: string }
214
223
  export interface PostInboxRequest { title: string; body_md?: string; kind?: string; suggested_version?: string; suggested_priority?: number }
215
224
  export interface PostInboxResponse { idea: unknown; open_count: unknown; kind_auto: unknown }
@@ -241,7 +250,7 @@ export interface PostProvisioningInstancesIdForceTeardownResponse { ok: boolean;
241
250
  export interface PostProvisioningInstancesIdGithubAppRequest { account?: string }
242
251
  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 }
243
252
  export interface PostProvisioningInstancesIdTeardownResponse { ok: boolean; queued: unknown; action: unknown; status: unknown; message: unknown }
244
- export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; tier?: string }
253
+ export interface PostProvisioningInstancesRequest { slug: string; target_ref?: string; hosting_shape?: string; domain?: string; tier?: string; onboard_mode?: string }
245
254
  export interface PostSearchMarkRequest { chunk_id?: StringifiableId; useful?: unknown }
246
255
  export interface PostSearchRequest { expand?: unknown; q?: string; source_kind?: string; limit?: unknown }
247
256
  export interface PostSearchResponse { expand?: unknown; chunk?: unknown; query?: unknown; count?: unknown; total_full_tokens?: unknown; results?: unknown }
@@ -255,6 +264,8 @@ export interface PostSecurityReportsIdLinkFixRequest { task_id: StringifiableId
255
264
  export interface PostSecurityReportsIdLinkFixResponse { report: unknown }
256
265
  export interface PostSecurityReportsRequest { target: string; severity: string; title: string; description?: string; repro_steps_md?: string }
257
266
  export interface PostSecurityReportsResponse { ok: boolean; report: unknown; bounty_table: unknown }
267
+ export interface PostSecurityScansRequest { target_url: string; artifact_kind: string; resolved_sha?: string; content_hash?: string; file_count?: number; total_bytes?: number; tier: string; verdict?: string; completion: string; abort_code?: string; findings_critical?: number; findings_high?: number; findings_medium?: number; findings_low?: number; findings_summary?: unknown[]; action_taken?: string; engine_version: string }
268
+ export interface PostSecurityScansResponse { ok: boolean; scan: unknown }
258
269
  export interface PostSessionOptimizeRequest { mode?: string; time_budget_min?: unknown; max_parallel?: unknown }
259
270
  export interface PostSessionsRequest { session_id: string; task_ids?: number[]; total_tokens?: number; duration_seconds?: number; started_at?: string; ended_at?: string; detail?: unknown[]; metrics?: Record<string, unknown>; model_usage?: Record<string, unknown> }
260
271
  export interface PostSessionsResponse { skipped?: boolean; reason?: unknown; session?: unknown; token_reward?: unknown }
@@ -287,8 +298,9 @@ export interface PostTasksNewcomerRestockResponse { ok: boolean; stamped: unknow
287
298
  export interface PostTasksRequest { version_id: string; title: string; description?: string; status?: string; touches?: string[]; est_minutes?: number; est_cost_usd?: number; manual_degree?: number; priority?: number; automation_tag?: string; credits_reward?: number; source?: string; source_ref?: string; value_summary?: string; kind?: string; discipline?: string; parallel_safe?: unknown; newcomer_friendly?: boolean; security_sensitive?: boolean; requires_rank?: string; auto_detect_touches?: boolean; criterion_ids?: unknown[]; module_key?: string; goal_id?: number }
288
299
  export interface PostVersionsIdDoneWhenRequest { criterion_id: string; criterion_md: string; goal_id?: number; sort_order?: number }
289
300
  export interface PostVersionsIdDoneWhenResponse { ok: boolean; criterion: unknown }
290
- export interface PostVersionsRequest { id: string; name: string; status?: string; done_when?: string; scope_doc_path?: string; criteria?: unknown[] }
301
+ export interface PostVersionsRequest { id: string; name: string; status?: string; track?: string; done_when?: string; scope_doc_path?: string; criteria?: unknown[] }
291
302
  export interface PostVersionsResponse { version: unknown; criteria: unknown }
303
+ export interface PutGovernanceRolesRoleKeyPermissionsPermissionKeyResponse { ok: boolean; role_key: unknown; permission_key: unknown; granted: unknown }
292
304
  export interface PutTasksIdDependenciesRequest { depends_on_task_ids: unknown[] }
293
305
  export interface PutTasksIdDependenciesResponse { ok: boolean; written: unknown; dependencies: unknown }
294
306
  export type StringifiableId = number | string;
@@ -324,7 +336,7 @@ export interface BongosClient {
324
336
  getAnalyticsBuilderId(args?: RequestArgs): Promise<ApiResponse>;
325
337
  };
326
338
  "auditLog": {
327
- /** GET /audit-log — rank: archon */
339
+ /** GET /audit-log — rank: metic+archon */
328
340
  getAuditLog(args?: RequestArgs): Promise<GetAuditLogResponse>;
329
341
  };
330
342
  "auth": {
@@ -366,7 +378,7 @@ export interface BongosClient {
366
378
  getAuthWebStart(args?: RequestArgs): Promise<ApiResponse>;
367
379
  };
368
380
  "autonomy": {
369
- /** GET /autonomy/precheck — rank: archon */
381
+ /** GET /autonomy/precheck — rank: metic+archon */
370
382
  getAutonomyPrecheck(args?: RequestArgs): Promise<ApiResponse>;
371
383
  };
372
384
  "backup": {
@@ -426,13 +438,13 @@ export interface BongosClient {
426
438
  postBoxVersion(args: RequestArgs & { body: PostBoxVersionRequest }): Promise<PostBoxVersionResponse>;
427
439
  };
428
440
  "boxes": {
429
- /** GET /boxes — rank: archon */
441
+ /** GET /boxes — rank: metic+archon */
430
442
  getBoxes(args?: RequestArgs): Promise<GetBoxesResponse>;
431
- /** PATCH /boxes/{builderId}/block — rank: archon */
443
+ /** PATCH /boxes/{builderId}/block — rank: metic+archon */
432
444
  patchBoxesBuilderIdBlock(args: RequestArgs & { body: PatchBoxesBuilderIdBlockRequest }): Promise<PatchBoxesBuilderIdBlockResponse>;
433
- /** POST /boxes/{builderId}/close — rank: archon */
445
+ /** POST /boxes/{builderId}/close — rank: metic+archon */
434
446
  postBoxesBuilderIdClose(args?: RequestArgs): Promise<PostBoxesBuilderIdCloseResponse>;
435
- /** GET /boxes/cost-ledger — rank: archon */
447
+ /** GET /boxes/cost-ledger — rank: metic+archon */
436
448
  getBoxesCostLedger(args?: RequestArgs): Promise<ApiResponse>;
437
449
  };
438
450
  "bugAttachments": {
@@ -440,9 +452,9 @@ export interface BongosClient {
440
452
  getBugAttachmentsName(args?: RequestArgs): Promise<ApiResponse>;
441
453
  };
442
454
  "builders": {
443
- /** GET /builders/{id}/active-claims — rank: archon */
455
+ /** GET /builders/{id}/active-claims — rank: metic+archon */
444
456
  getBuildersIdActiveClaims(args?: RequestArgs): Promise<GetBuildersIdActiveClaimsResponse>;
445
- /** PATCH /builders/{id}/budget — rank: archon */
457
+ /** PATCH /builders/{id}/budget — rank: metic+archon */
446
458
  patchBuildersIdBudget(args?: RequestArgs & { body?: PatchBuildersIdBudgetRequest }): Promise<PatchBuildersIdBudgetResponse>;
447
459
  /** GET /builders/{id}/onboarding — rank: public */
448
460
  getBuildersIdOnboarding(args?: RequestArgs): Promise<GetBuildersIdOnboardingResponse>;
@@ -456,13 +468,13 @@ export interface BongosClient {
456
468
  getBuildersDirectory(args?: RequestArgs): Promise<GetBuildersDirectoryResponse>;
457
469
  /** GET /builders/me/pending-rank-change — rank: any-builder */
458
470
  getBuildersMePendingRankChange(args?: RequestArgs): Promise<GetBuildersMePendingRankChangeResponse>;
459
- /** GET /builders/roster — rank: archon */
471
+ /** GET /builders/roster — rank: metic+archon */
460
472
  getBuildersRoster(args?: RequestArgs): Promise<GetBuildersRosterResponse>;
461
473
  };
462
474
  "claims": {
463
475
  /** POST /claims — rank: any-builder */
464
476
  postClaims(args: RequestArgs & { body: PostClaimsRequest }): Promise<PostClaimsResponse>;
465
- /** POST /claims/{id}/release-on-behalf — rank: archon */
477
+ /** POST /claims/{id}/release-on-behalf — rank: metic+archon */
466
478
  postClaimsIdReleaseOnBehalf(args: RequestArgs & { body: PostClaimsIdReleaseOnBehalfRequest }): Promise<ApiResponse>;
467
479
  /** POST /claims/{id}/resolve — rank: any-builder */
468
480
  postClaimsIdResolve(args: RequestArgs & { body: PostClaimsIdResolveRequest }): Promise<ApiResponse>;
@@ -484,21 +496,21 @@ export interface BongosClient {
484
496
  postDependencies(args?: RequestArgs): Promise<PostDependenciesResponse>;
485
497
  };
486
498
  "discord": {
487
- /** GET /discord/channels/plan — rank: archon */
499
+ /** GET /discord/channels/plan — rank: metic+archon */
488
500
  getDiscordChannelsPlan(args?: RequestArgs): Promise<GetDiscordChannelsPlanResponse>;
489
- /** POST /discord/channels/reconcile — rank: archon */
501
+ /** POST /discord/channels/reconcile — rank: metic+archon */
490
502
  postDiscordChannelsReconcile(args?: RequestArgs): Promise<PostDiscordChannelsReconcileResponse>;
491
503
  };
492
504
  "doneWhen": {
493
505
  /** POST /done-when/{criterionId}/satisfy — rank: metic+archon */
494
506
  postDoneWhenCriterionIdSatisfy(args?: RequestArgs & { body?: PostDoneWhenCriterionIdSatisfyRequest }): Promise<PostDoneWhenCriterionIdSatisfyResponse>;
495
- /** POST /done-when/{criterionId}/unsatisfy — rank: archon */
507
+ /** POST /done-when/{criterionId}/unsatisfy — rank: metic+archon */
496
508
  postDoneWhenCriterionIdUnsatisfy(args?: RequestArgs): Promise<PostDoneWhenCriterionIdUnsatisfyResponse>;
497
509
  /** GET /done-when/pending-review — rank: metic+archon */
498
510
  getDoneWhenPendingReview(args?: RequestArgs): Promise<GetDoneWhenPendingReviewResponse>;
499
511
  };
500
512
  "gateApprovals": {
501
- /** GET /gate-approvals — rank: archon */
513
+ /** GET /gate-approvals — rank: metic+archon */
502
514
  getGateApprovals(args?: RequestArgs): Promise<ApiResponse>;
503
515
  /** POST /gate-approvals/{pr}/approve — rank: archon */
504
516
  postGateApprovalsPrApprove(args?: RequestArgs): Promise<PostGateApprovalsPrApproveResponse>;
@@ -556,11 +568,29 @@ export interface BongosClient {
556
568
  patchGoalsIdVisibility(args: RequestArgs & { body: PatchGoalsIdVisibilityRequest }): Promise<PatchGoalsIdVisibilityResponse>;
557
569
  /** GET /goals/inbox — rank: any-builder */
558
570
  getGoalsInbox(args?: RequestArgs): Promise<ApiResponse>;
559
- /** POST /goals/reorder — rank: archon */
571
+ /** POST /goals/reorder — rank: metic+archon */
560
572
  postGoalsReorder(args: RequestArgs & { body: PostGoalsReorderRequest }): Promise<PostGoalsReorderResponse>;
561
573
  };
574
+ "governance": {
575
+ /** GET /governance/assignments — rank: archon */
576
+ getGovernanceAssignments(args?: RequestArgs): Promise<GetGovernanceAssignmentsResponse>;
577
+ /** POST /governance/assignments — rank: archon */
578
+ postGovernanceAssignments(args: RequestArgs & { body: PostGovernanceAssignmentsRequest }): Promise<ApiResponse>;
579
+ /** DELETE /governance/assignments/{builderId}/{roleKey} — rank: archon */
580
+ deleteGovernanceAssignmentsBuilderIdRoleKey(args?: RequestArgs): Promise<DeleteGovernanceAssignmentsBuilderIdRoleKeyResponse>;
581
+ /** GET /governance/permissions — rank: archon */
582
+ getGovernancePermissions(args?: RequestArgs): Promise<GetGovernancePermissionsResponse>;
583
+ /** GET /governance/roles — rank: archon */
584
+ getGovernanceRoles(args?: RequestArgs): Promise<GetGovernanceRolesResponse>;
585
+ /** POST /governance/roles — rank: archon */
586
+ postGovernanceRoles(args: RequestArgs & { body: PostGovernanceRolesRequest }): Promise<PostGovernanceRolesResponse>;
587
+ /** DELETE /governance/roles/{roleKey}/permissions/{permissionKey} — rank: archon */
588
+ deleteGovernanceRolesRoleKeyPermissionsPermissionKey(args?: RequestArgs): Promise<DeleteGovernanceRolesRoleKeyPermissionsPermissionKeyResponse>;
589
+ /** PUT /governance/roles/{roleKey}/permissions/{permissionKey} — rank: archon */
590
+ putGovernanceRolesRoleKeyPermissionsPermissionKey(args?: RequestArgs): Promise<PutGovernanceRolesRoleKeyPermissionsPermissionKeyResponse>;
591
+ };
562
592
  "grades": {
563
- /** GET /grades/by-builder — rank: archon */
593
+ /** GET /grades/by-builder — rank: metic+archon */
564
594
  getGradesByBuilder(args?: RequestArgs): Promise<GetGradesByBuilderResponse>;
565
595
  };
566
596
  "healthz": {
@@ -576,7 +606,7 @@ export interface BongosClient {
576
606
  getInboxId(args?: RequestArgs): Promise<GetInboxIdResponse>;
577
607
  /** PATCH /inbox/{id} — rank: metic+archon */
578
608
  patchInboxId(args?: RequestArgs & { body?: PatchInboxIdRequest }): Promise<PatchInboxIdResponse>;
579
- /** POST /inbox/{id}/ratify — rank: archon */
609
+ /** POST /inbox/{id}/ratify — rank: metic+archon */
580
610
  postInboxIdRatify(args?: RequestArgs & { body?: PostInboxIdRatifyRequest }): Promise<ApiResponse>;
581
611
  };
582
612
  "instance": {
@@ -654,9 +684,9 @@ export interface BongosClient {
654
684
  getMemoryBfgBuildersBuilderIdFiles(args?: RequestArgs): Promise<GetMemoryBfgBuildersBuilderIdFilesResponse>;
655
685
  /** POST /memory/builders/{builderId}/bfg-write — rank: bfg-principal */
656
686
  postMemoryBuildersBuilderIdBfgWrite(args?: RequestArgs & { body?: PostMemoryBuildersBuilderIdBfgWriteRequest }): Promise<PostMemoryBuildersBuilderIdBfgWriteResponse>;
657
- /** GET /memory/builders/{builderId}/file — rank: archon */
687
+ /** GET /memory/builders/{builderId}/file — rank: metic+archon */
658
688
  getMemoryBuildersBuilderIdFile(args?: RequestArgs): Promise<GetMemoryBuildersBuilderIdFileResponse>;
659
- /** GET /memory/builders/{builderId}/files — rank: archon */
689
+ /** GET /memory/builders/{builderId}/files — rank: metic+archon */
660
690
  getMemoryBuildersBuilderIdFiles(args?: RequestArgs): Promise<GetMemoryBuildersBuilderIdFilesResponse>;
661
691
  /** DELETE /memory/file — rank: any-builder */
662
692
  deleteMemoryFile(args?: RequestArgs): Promise<DeleteMemoryFileResponse>;
@@ -692,27 +722,27 @@ export interface BongosClient {
692
722
  postMyProjectsJoin(args: RequestArgs & { body: PostMyProjectsJoinRequest }): Promise<PostMyProjectsJoinResponse>;
693
723
  };
694
724
  "overrideRequests": {
695
- /** GET /override-requests — rank: archon */
725
+ /** GET /override-requests — rank: metic+archon */
696
726
  getOverrideRequests(args?: RequestArgs): Promise<GetOverrideRequestsResponse>;
697
- /** POST /override-requests/{id}/decide — rank: archon */
727
+ /** POST /override-requests/{id}/decide — rank: metic+archon */
698
728
  postOverrideRequestsIdDecide(args: RequestArgs & { body: PostOverrideRequestsIdDecideRequest }): Promise<ApiResponse>;
699
729
  };
700
730
  "projects": {
701
- /** GET /projects — rank: archon */
731
+ /** GET /projects — rank: metic+archon */
702
732
  getProjects(args?: RequestArgs): Promise<GetProjectsResponse>;
703
- /** POST /projects — rank: archon */
733
+ /** POST /projects — rank: metic+archon */
704
734
  postProjects(args: RequestArgs & { body: PostProjectsRequest }): Promise<PostProjectsResponse>;
705
- /** PATCH /projects/{id}/featured — rank: archon */
735
+ /** PATCH /projects/{id}/featured — rank: metic+archon */
706
736
  patchProjectsIdFeatured(args: RequestArgs & { body: PatchProjectsIdFeaturedRequest }): Promise<PatchProjectsIdFeaturedResponse>;
707
737
  /** GET /projects/featured — rank: public */
708
738
  getProjectsFeatured(args?: RequestArgs): Promise<GetProjectsFeaturedResponse>;
709
- /** POST /projects/invite — rank: archon */
739
+ /** POST /projects/invite — rank: metic+archon */
710
740
  postProjectsInvite(args: RequestArgs & { body: PostProjectsInviteRequest }): Promise<ApiResponse>;
711
741
  };
712
742
  "provisioning": {
713
- /** GET /provisioning/fleet — rank: archon */
743
+ /** GET /provisioning/fleet — rank: metic+archon */
714
744
  getProvisioningFleet(args?: RequestArgs): Promise<GetProvisioningFleetResponse>;
715
- /** GET /provisioning/fleet/cost-ledger — rank: archon */
745
+ /** GET /provisioning/fleet/cost-ledger — rank: metic+archon */
716
746
  getProvisioningFleetCostLedger(args?: RequestArgs): Promise<ApiResponse>;
717
747
  /** GET /provisioning/github-app/callback — rank: public */
718
748
  getProvisioningGithubAppCallback(args?: RequestArgs): Promise<ApiResponse>;
@@ -726,7 +756,7 @@ export interface BongosClient {
726
756
  postProvisioningInstances(args: RequestArgs & { body: PostProvisioningInstancesRequest }): Promise<ApiResponse>;
727
757
  /** GET /provisioning/instances/{id} — rank: any-builder */
728
758
  getProvisioningInstancesId(args?: RequestArgs): Promise<GetProvisioningInstancesIdResponse>;
729
- /** POST /provisioning/instances/{id}/force-teardown — rank: archon */
759
+ /** POST /provisioning/instances/{id}/force-teardown — rank: metic+archon */
730
760
  postProvisioningInstancesIdForceTeardown(args?: RequestArgs): Promise<PostProvisioningInstancesIdForceTeardownResponse>;
731
761
  /** POST /provisioning/instances/{id}/github-app — rank: any-builder */
732
762
  postProvisioningInstancesIdGithubApp(args?: RequestArgs & { body?: PostProvisioningInstancesIdGithubAppRequest }): Promise<PostProvisioningInstancesIdGithubAppResponse>;
@@ -776,7 +806,7 @@ export interface BongosClient {
776
806
  getPublicVersions(args?: RequestArgs): Promise<GetPublicVersionsResponse>;
777
807
  };
778
808
  "scouting": {
779
- /** GET /scouting — rank: archon */
809
+ /** GET /scouting — rank: metic+archon */
780
810
  getScouting(args?: RequestArgs): Promise<GetScoutingResponse>;
781
811
  };
782
812
  "search": {
@@ -788,24 +818,28 @@ export interface BongosClient {
788
818
  "security": {
789
819
  /** GET /security/adr — rank: metic+archon */
790
820
  getSecurityAdr(args?: RequestArgs): Promise<ApiResponse>;
791
- /** GET /security/docs — rank: archon */
821
+ /** GET /security/docs — rank: metic+archon */
792
822
  getSecurityDocs(args?: RequestArgs): Promise<GetSecurityDocsResponse>;
793
- /** POST /security/docs — rank: archon */
823
+ /** POST /security/docs — rank: metic+archon */
794
824
  postSecurityDocs(args: RequestArgs & { body: PostSecurityDocsRequest }): Promise<PostSecurityDocsResponse>;
795
- /** GET /security/docs/{slug} — rank: archon */
825
+ /** GET /security/docs/{slug} — rank: metic+archon */
796
826
  getSecurityDocsSlug(args?: RequestArgs): Promise<GetSecurityDocsSlugResponse>;
797
- /** GET /security/reports — rank: archon */
827
+ /** GET /security/reports — rank: metic+archon */
798
828
  getSecurityReports(args?: RequestArgs): Promise<GetSecurityReportsResponse>;
799
829
  /** POST /security/reports — rank: metic+archon */
800
830
  postSecurityReports(args: RequestArgs & { body: PostSecurityReportsRequest }): Promise<PostSecurityReportsResponse>;
801
- /** POST /security/reports/{id}/confirm — rank: archon */
831
+ /** POST /security/reports/{id}/confirm — rank: metic+archon */
802
832
  postSecurityReportsIdConfirm(args?: RequestArgs & { body?: PostSecurityReportsIdConfirmRequest }): Promise<PostSecurityReportsIdConfirmResponse>;
803
- /** POST /security/reports/{id}/dispute — rank: archon */
833
+ /** POST /security/reports/{id}/dispute — rank: metic+archon */
804
834
  postSecurityReportsIdDispute(args?: RequestArgs): Promise<PostSecurityReportsIdDisputeResponse>;
805
- /** POST /security/reports/{id}/fix — rank: archon */
835
+ /** POST /security/reports/{id}/fix — rank: metic+archon */
806
836
  postSecurityReportsIdFix(args?: RequestArgs): Promise<PostSecurityReportsIdFixResponse>;
807
- /** POST /security/reports/{id}/link-fix — rank: archon */
837
+ /** POST /security/reports/{id}/link-fix — rank: metic+archon */
808
838
  postSecurityReportsIdLinkFix(args: RequestArgs & { body: PostSecurityReportsIdLinkFixRequest }): Promise<PostSecurityReportsIdLinkFixResponse>;
839
+ /** GET /security/scans — rank: any-builder */
840
+ getSecurityScans(args?: RequestArgs): Promise<GetSecurityScansResponse>;
841
+ /** POST /security/scans — rank: metic+archon */
842
+ postSecurityScans(args: RequestArgs & { body: PostSecurityScansRequest }): Promise<PostSecurityScansResponse>;
809
843
  };
810
844
  "session": {
811
845
  /** POST /session/optimize — rank: any-builder */
@@ -818,7 +852,7 @@ export interface BongosClient {
818
852
  getSessionsId(args?: RequestArgs): Promise<GetSessionsIdResponse>;
819
853
  /** GET /sessions/mine — rank: any-builder */
820
854
  getSessionsMine(args?: RequestArgs): Promise<GetSessionsMineResponse>;
821
- /** GET /sessions/search — rank: archon */
855
+ /** GET /sessions/search — rank: metic+archon */
822
856
  getSessionsSearch(args?: RequestArgs): Promise<GetSessionsSearchResponse>;
823
857
  };
824
858
  "sso": {
@@ -886,17 +920,17 @@ export interface BongosClient {
886
920
  getTasksClaimable(args?: RequestArgs): Promise<GetTasksClaimableResponse>;
887
921
  /** GET /tasks/newcomer-floor — rank: any-builder */
888
922
  getTasksNewcomerFloor(args?: RequestArgs): Promise<GetTasksNewcomerFloorResponse>;
889
- /** POST /tasks/newcomer-restock — rank: archon */
923
+ /** POST /tasks/newcomer-restock — rank: metic+archon */
890
924
  postTasksNewcomerRestock(args?: RequestArgs): Promise<PostTasksNewcomerRestockResponse>;
891
925
  /** GET /tasks/peer-votes/feed — rank: any-builder */
892
926
  getTasksPeerVotesFeed(args?: RequestArgs): Promise<GetTasksPeerVotesFeedResponse>;
893
- /** POST /tasks/peer-votes/tally — rank: archon */
927
+ /** POST /tasks/peer-votes/tally — rank: metic+archon */
894
928
  postTasksPeerVotesTally(args?: RequestArgs): Promise<ApiResponse>;
895
929
  };
896
930
  "versions": {
897
931
  /** GET /versions — rank: public */
898
932
  getVersions(args?: RequestArgs): Promise<GetVersionsResponse>;
899
- /** POST /versions — rank: archon */
933
+ /** POST /versions — rank: metic+archon */
900
934
  postVersions(args: RequestArgs & { body: PostVersionsRequest }): Promise<PostVersionsResponse>;
901
935
  /** GET /versions/{id}/done-when — rank: public */
902
936
  getVersionsIdDoneWhen(args?: RequestArgs): Promise<GetVersionsIdDoneWhenResponse>;
@@ -99,7 +99,7 @@ export function createClient(opts = {}) {
99
99
  getAnalyticsBuilderId: (args) => request("GET", "/analytics/builder/{id}", { hasBody: false }, args),
100
100
  },
101
101
  "auditLog": {
102
- // GET /audit-log — rank: archon — GET /audit-log
102
+ // GET /audit-log — rank: metic+archon — GET /audit-log
103
103
  getAuditLog: (args) => request("GET", "/audit-log", { hasBody: false }, args),
104
104
  },
105
105
  "auth": {
@@ -141,7 +141,7 @@ export function createClient(opts = {}) {
141
141
  getAuthWebStart: (args) => request("GET", "/auth/web/start", { hasBody: false }, args),
142
142
  },
143
143
  "autonomy": {
144
- // GET /autonomy/precheck — rank: archon — GET /autonomy/precheck
144
+ // GET /autonomy/precheck — rank: metic+archon — GET /autonomy/precheck
145
145
  getAutonomyPrecheck: (args) => request("GET", "/autonomy/precheck", { hasBody: false }, args),
146
146
  },
147
147
  "backup": {
@@ -201,13 +201,13 @@ export function createClient(opts = {}) {
201
201
  postBoxVersion: (args) => request("POST", "/box/version", { hasBody: true }, args),
202
202
  },
203
203
  "boxes": {
204
- // GET /boxes — rank: archon — GET /boxes
204
+ // GET /boxes — rank: metic+archon — GET /boxes
205
205
  getBoxes: (args) => request("GET", "/boxes", { hasBody: false }, args),
206
- // PATCH /boxes/{builderId}/block — rank: archon — PATCH /boxes/:builderId/block
206
+ // PATCH /boxes/{builderId}/block — rank: metic+archon — PATCH /boxes/:builderId/block
207
207
  patchBoxesBuilderIdBlock: (args) => request("PATCH", "/boxes/{builderId}/block", { hasBody: true }, args),
208
- // POST /boxes/{builderId}/close — rank: archon — POST /boxes/:builderId/close
208
+ // POST /boxes/{builderId}/close — rank: metic+archon — POST /boxes/:builderId/close
209
209
  postBoxesBuilderIdClose: (args) => request("POST", "/boxes/{builderId}/close", { hasBody: true }, args),
210
- // GET /boxes/cost-ledger — rank: archon — GET /boxes/cost-ledger
210
+ // GET /boxes/cost-ledger — rank: metic+archon — GET /boxes/cost-ledger
211
211
  getBoxesCostLedger: (args) => request("GET", "/boxes/cost-ledger", { hasBody: false }, args),
212
212
  },
213
213
  "bugAttachments": {
@@ -215,9 +215,9 @@ export function createClient(opts = {}) {
215
215
  getBugAttachmentsName: (args) => request("GET", "/bug-attachments/{name}", { hasBody: false }, args),
216
216
  },
217
217
  "builders": {
218
- // GET /builders/{id}/active-claims — rank: archon — GET /builders/:id/active-claims
218
+ // GET /builders/{id}/active-claims — rank: metic+archon — GET /builders/:id/active-claims
219
219
  getBuildersIdActiveClaims: (args) => request("GET", "/builders/{id}/active-claims", { hasBody: false }, args),
220
- // PATCH /builders/{id}/budget — rank: archon — PATCH /builders/:id/budget
220
+ // PATCH /builders/{id}/budget — rank: metic+archon — PATCH /builders/:id/budget
221
221
  patchBuildersIdBudget: (args) => request("PATCH", "/builders/{id}/budget", { hasBody: true }, args),
222
222
  // GET /builders/{id}/onboarding — rank: public — GET /builders/:id/onboarding
223
223
  getBuildersIdOnboarding: (args) => request("GET", "/builders/{id}/onboarding", { hasBody: false }, args),
@@ -231,13 +231,13 @@ export function createClient(opts = {}) {
231
231
  getBuildersDirectory: (args) => request("GET", "/builders/directory", { hasBody: false }, args),
232
232
  // GET /builders/me/pending-rank-change — rank: any-builder — GET /builders/me/pending-rank-change
233
233
  getBuildersMePendingRankChange: (args) => request("GET", "/builders/me/pending-rank-change", { hasBody: false }, args),
234
- // GET /builders/roster — rank: archon — GET /builders/roster
234
+ // GET /builders/roster — rank: metic+archon — GET /builders/roster
235
235
  getBuildersRoster: (args) => request("GET", "/builders/roster", { hasBody: false }, args),
236
236
  },
237
237
  "claims": {
238
238
  // POST /claims — rank: any-builder — POST /claims
239
239
  postClaims: (args) => request("POST", "/claims", { hasBody: true }, args),
240
- // POST /claims/{id}/release-on-behalf — rank: archon — POST /claims/:id/release-on-behalf
240
+ // POST /claims/{id}/release-on-behalf — rank: metic+archon — POST /claims/:id/release-on-behalf
241
241
  postClaimsIdReleaseOnBehalf: (args) => request("POST", "/claims/{id}/release-on-behalf", { hasBody: true }, args),
242
242
  // POST /claims/{id}/resolve — rank: any-builder — POST /claims/:id/resolve
243
243
  postClaimsIdResolve: (args) => request("POST", "/claims/{id}/resolve", { hasBody: true }, args),
@@ -259,21 +259,21 @@ export function createClient(opts = {}) {
259
259
  postDependencies: (args) => request("POST", "/dependencies", { hasBody: true }, args),
260
260
  },
261
261
  "discord": {
262
- // GET /discord/channels/plan — rank: archon — GET /discord/channels/plan
262
+ // GET /discord/channels/plan — rank: metic+archon — GET /discord/channels/plan
263
263
  getDiscordChannelsPlan: (args) => request("GET", "/discord/channels/plan", { hasBody: false }, args),
264
- // POST /discord/channels/reconcile — rank: archon — POST /discord/channels/reconcile
264
+ // POST /discord/channels/reconcile — rank: metic+archon — POST /discord/channels/reconcile
265
265
  postDiscordChannelsReconcile: (args) => request("POST", "/discord/channels/reconcile", { hasBody: true }, args),
266
266
  },
267
267
  "doneWhen": {
268
268
  // POST /done-when/{criterionId}/satisfy — rank: metic+archon — POST /done-when/:criterionId/satisfy
269
269
  postDoneWhenCriterionIdSatisfy: (args) => request("POST", "/done-when/{criterionId}/satisfy", { hasBody: true }, args),
270
- // POST /done-when/{criterionId}/unsatisfy — rank: archon — POST /done-when/:criterionId/unsatisfy
270
+ // POST /done-when/{criterionId}/unsatisfy — rank: metic+archon — POST /done-when/:criterionId/unsatisfy
271
271
  postDoneWhenCriterionIdUnsatisfy: (args) => request("POST", "/done-when/{criterionId}/unsatisfy", { hasBody: true }, args),
272
272
  // GET /done-when/pending-review — rank: metic+archon — GET /done-when/pending-review
273
273
  getDoneWhenPendingReview: (args) => request("GET", "/done-when/pending-review", { hasBody: false }, args),
274
274
  },
275
275
  "gateApprovals": {
276
- // GET /gate-approvals — rank: archon — GET /gate-approvals
276
+ // GET /gate-approvals — rank: metic+archon — GET /gate-approvals
277
277
  getGateApprovals: (args) => request("GET", "/gate-approvals", { hasBody: false }, args),
278
278
  // POST /gate-approvals/{pr}/approve — rank: archon — POST /gate-approvals/:pr/approve
279
279
  postGateApprovalsPrApprove: (args) => request("POST", "/gate-approvals/{pr}/approve", { hasBody: true }, args),
@@ -331,11 +331,29 @@ export function createClient(opts = {}) {
331
331
  patchGoalsIdVisibility: (args) => request("PATCH", "/goals/{id}/visibility", { hasBody: true }, args),
332
332
  // GET /goals/inbox — rank: any-builder — GET /goals/inbox
333
333
  getGoalsInbox: (args) => request("GET", "/goals/inbox", { hasBody: false }, args),
334
- // POST /goals/reorder — rank: archon — POST /goals/reorder
334
+ // POST /goals/reorder — rank: metic+archon — POST /goals/reorder
335
335
  postGoalsReorder: (args) => request("POST", "/goals/reorder", { hasBody: true }, args),
336
336
  },
337
+ "governance": {
338
+ // GET /governance/assignments — rank: archon — GET /governance/assignments
339
+ getGovernanceAssignments: (args) => request("GET", "/governance/assignments", { hasBody: false }, args),
340
+ // POST /governance/assignments — rank: archon — POST /governance/assignments
341
+ postGovernanceAssignments: (args) => request("POST", "/governance/assignments", { hasBody: true }, args),
342
+ // DELETE /governance/assignments/{builderId}/{roleKey} — rank: archon — DELETE /governance/assignments/:builderId/:roleKey
343
+ deleteGovernanceAssignmentsBuilderIdRoleKey: (args) => request("DELETE", "/governance/assignments/{builderId}/{roleKey}", { hasBody: false }, args),
344
+ // GET /governance/permissions — rank: archon — GET /governance/permissions
345
+ getGovernancePermissions: (args) => request("GET", "/governance/permissions", { hasBody: false }, args),
346
+ // GET /governance/roles — rank: archon — GET /governance/roles
347
+ getGovernanceRoles: (args) => request("GET", "/governance/roles", { hasBody: false }, args),
348
+ // POST /governance/roles — rank: archon — POST /governance/roles
349
+ postGovernanceRoles: (args) => request("POST", "/governance/roles", { hasBody: true }, args),
350
+ // DELETE /governance/roles/{roleKey}/permissions/{permissionKey} — rank: archon — DELETE /governance/roles/:roleKey/permissions/:permissionKey
351
+ deleteGovernanceRolesRoleKeyPermissionsPermissionKey: (args) => request("DELETE", "/governance/roles/{roleKey}/permissions/{permissionKey}", { hasBody: false }, args),
352
+ // PUT /governance/roles/{roleKey}/permissions/{permissionKey} — rank: archon — PUT /governance/roles/:roleKey/permissions/:permissionKey
353
+ putGovernanceRolesRoleKeyPermissionsPermissionKey: (args) => request("PUT", "/governance/roles/{roleKey}/permissions/{permissionKey}", { hasBody: true }, args),
354
+ },
337
355
  "grades": {
338
- // GET /grades/by-builder — rank: archon — GET /grades/by-builder
356
+ // GET /grades/by-builder — rank: metic+archon — GET /grades/by-builder
339
357
  getGradesByBuilder: (args) => request("GET", "/grades/by-builder", { hasBody: false }, args),
340
358
  },
341
359
  "healthz": {
@@ -351,7 +369,7 @@ export function createClient(opts = {}) {
351
369
  getInboxId: (args) => request("GET", "/inbox/{id}", { hasBody: false }, args),
352
370
  // PATCH /inbox/{id} — rank: metic+archon — PATCH /inbox/:id
353
371
  patchInboxId: (args) => request("PATCH", "/inbox/{id}", { hasBody: true }, args),
354
- // POST /inbox/{id}/ratify — rank: archon — POST /inbox/:id/ratify
372
+ // POST /inbox/{id}/ratify — rank: metic+archon — POST /inbox/:id/ratify
355
373
  postInboxIdRatify: (args) => request("POST", "/inbox/{id}/ratify", { hasBody: true }, args),
356
374
  },
357
375
  "instance": {
@@ -429,9 +447,9 @@ export function createClient(opts = {}) {
429
447
  getMemoryBfgBuildersBuilderIdFiles: (args) => request("GET", "/memory/bfg/builders/{builderId}/files", { hasBody: false }, args),
430
448
  // POST /memory/builders/{builderId}/bfg-write — rank: bfg-principal — POST /memory/builders/:builderId/bfg-write
431
449
  postMemoryBuildersBuilderIdBfgWrite: (args) => request("POST", "/memory/builders/{builderId}/bfg-write", { hasBody: true }, args),
432
- // GET /memory/builders/{builderId}/file — rank: archon — GET /memory/builders/:builderId/file
450
+ // GET /memory/builders/{builderId}/file — rank: metic+archon — GET /memory/builders/:builderId/file
433
451
  getMemoryBuildersBuilderIdFile: (args) => request("GET", "/memory/builders/{builderId}/file", { hasBody: false }, args),
434
- // GET /memory/builders/{builderId}/files — rank: archon — GET /memory/builders/:builderId/files
452
+ // GET /memory/builders/{builderId}/files — rank: metic+archon — GET /memory/builders/:builderId/files
435
453
  getMemoryBuildersBuilderIdFiles: (args) => request("GET", "/memory/builders/{builderId}/files", { hasBody: false }, args),
436
454
  // DELETE /memory/file — rank: any-builder — DELETE /memory/file
437
455
  deleteMemoryFile: (args) => request("DELETE", "/memory/file", { hasBody: true }, args),
@@ -467,27 +485,27 @@ export function createClient(opts = {}) {
467
485
  postMyProjectsJoin: (args) => request("POST", "/my-projects/join", { hasBody: true }, args),
468
486
  },
469
487
  "overrideRequests": {
470
- // GET /override-requests — rank: archon — GET /override-requests
488
+ // GET /override-requests — rank: metic+archon — GET /override-requests
471
489
  getOverrideRequests: (args) => request("GET", "/override-requests", { hasBody: false }, args),
472
- // POST /override-requests/{id}/decide — rank: archon — POST /override-requests/:id/decide
490
+ // POST /override-requests/{id}/decide — rank: metic+archon — POST /override-requests/:id/decide
473
491
  postOverrideRequestsIdDecide: (args) => request("POST", "/override-requests/{id}/decide", { hasBody: true }, args),
474
492
  },
475
493
  "projects": {
476
- // GET /projects — rank: archon — GET /projects
494
+ // GET /projects — rank: metic+archon — GET /projects
477
495
  getProjects: (args) => request("GET", "/projects", { hasBody: false }, args),
478
- // POST /projects — rank: archon — POST /projects
496
+ // POST /projects — rank: metic+archon — POST /projects
479
497
  postProjects: (args) => request("POST", "/projects", { hasBody: true }, args),
480
- // PATCH /projects/{id}/featured — rank: archon — PATCH /projects/:id/featured
498
+ // PATCH /projects/{id}/featured — rank: metic+archon — PATCH /projects/:id/featured
481
499
  patchProjectsIdFeatured: (args) => request("PATCH", "/projects/{id}/featured", { hasBody: true }, args),
482
500
  // GET /projects/featured — rank: public — GET /projects/featured
483
501
  getProjectsFeatured: (args) => request("GET", "/projects/featured", { hasBody: false }, args),
484
- // POST /projects/invite — rank: archon — POST /projects/invite
502
+ // POST /projects/invite — rank: metic+archon — POST /projects/invite
485
503
  postProjectsInvite: (args) => request("POST", "/projects/invite", { hasBody: true }, args),
486
504
  },
487
505
  "provisioning": {
488
- // GET /provisioning/fleet — rank: archon — GET /provisioning/fleet
506
+ // GET /provisioning/fleet — rank: metic+archon — GET /provisioning/fleet
489
507
  getProvisioningFleet: (args) => request("GET", "/provisioning/fleet", { hasBody: false }, args),
490
- // GET /provisioning/fleet/cost-ledger — rank: archon — GET /provisioning/fleet/cost-ledger
508
+ // GET /provisioning/fleet/cost-ledger — rank: metic+archon — GET /provisioning/fleet/cost-ledger
491
509
  getProvisioningFleetCostLedger: (args) => request("GET", "/provisioning/fleet/cost-ledger", { hasBody: false }, args),
492
510
  // GET /provisioning/github-app/callback — rank: public — GET /provisioning/github-app/callback
493
511
  getProvisioningGithubAppCallback: (args) => request("GET", "/provisioning/github-app/callback", { hasBody: false }, args),
@@ -501,7 +519,7 @@ export function createClient(opts = {}) {
501
519
  postProvisioningInstances: (args) => request("POST", "/provisioning/instances", { hasBody: true }, args),
502
520
  // GET /provisioning/instances/{id} — rank: any-builder — GET /provisioning/instances/:id
503
521
  getProvisioningInstancesId: (args) => request("GET", "/provisioning/instances/{id}", { hasBody: false }, args),
504
- // POST /provisioning/instances/{id}/force-teardown — rank: archon — POST /provisioning/instances/:id/force-teardown
522
+ // POST /provisioning/instances/{id}/force-teardown — rank: metic+archon — POST /provisioning/instances/:id/force-teardown
505
523
  postProvisioningInstancesIdForceTeardown: (args) => request("POST", "/provisioning/instances/{id}/force-teardown", { hasBody: true }, args),
506
524
  // POST /provisioning/instances/{id}/github-app — rank: any-builder — POST /provisioning/instances/:id/github-app
507
525
  postProvisioningInstancesIdGithubApp: (args) => request("POST", "/provisioning/instances/{id}/github-app", { hasBody: true }, args),
@@ -551,7 +569,7 @@ export function createClient(opts = {}) {
551
569
  getPublicVersions: (args) => request("GET", "/public/versions", { hasBody: false }, args),
552
570
  },
553
571
  "scouting": {
554
- // GET /scouting — rank: archon — GET /scouting
572
+ // GET /scouting — rank: metic+archon — GET /scouting
555
573
  getScouting: (args) => request("GET", "/scouting", { hasBody: false }, args),
556
574
  },
557
575
  "search": {
@@ -563,24 +581,28 @@ export function createClient(opts = {}) {
563
581
  "security": {
564
582
  // GET /security/adr — rank: metic+archon — GET /security/adr
565
583
  getSecurityAdr: (args) => request("GET", "/security/adr", { hasBody: false }, args),
566
- // GET /security/docs — rank: archon — GET /security/docs
584
+ // GET /security/docs — rank: metic+archon — GET /security/docs
567
585
  getSecurityDocs: (args) => request("GET", "/security/docs", { hasBody: false }, args),
568
- // POST /security/docs — rank: archon — POST /security/docs
586
+ // POST /security/docs — rank: metic+archon — POST /security/docs
569
587
  postSecurityDocs: (args) => request("POST", "/security/docs", { hasBody: true }, args),
570
- // GET /security/docs/{slug} — rank: archon — GET /security/docs/:slug
588
+ // GET /security/docs/{slug} — rank: metic+archon — GET /security/docs/:slug
571
589
  getSecurityDocsSlug: (args) => request("GET", "/security/docs/{slug}", { hasBody: false }, args),
572
- // GET /security/reports — rank: archon — GET /security/reports
590
+ // GET /security/reports — rank: metic+archon — GET /security/reports
573
591
  getSecurityReports: (args) => request("GET", "/security/reports", { hasBody: false }, args),
574
592
  // POST /security/reports — rank: metic+archon — POST /security/reports
575
593
  postSecurityReports: (args) => request("POST", "/security/reports", { hasBody: true }, args),
576
- // POST /security/reports/{id}/confirm — rank: archon — POST /security/reports/:id/confirm
594
+ // POST /security/reports/{id}/confirm — rank: metic+archon — POST /security/reports/:id/confirm
577
595
  postSecurityReportsIdConfirm: (args) => request("POST", "/security/reports/{id}/confirm", { hasBody: true }, args),
578
- // POST /security/reports/{id}/dispute — rank: archon — POST /security/reports/:id/dispute
596
+ // POST /security/reports/{id}/dispute — rank: metic+archon — POST /security/reports/:id/dispute
579
597
  postSecurityReportsIdDispute: (args) => request("POST", "/security/reports/{id}/dispute", { hasBody: true }, args),
580
- // POST /security/reports/{id}/fix — rank: archon — POST /security/reports/:id/fix
598
+ // POST /security/reports/{id}/fix — rank: metic+archon — POST /security/reports/:id/fix
581
599
  postSecurityReportsIdFix: (args) => request("POST", "/security/reports/{id}/fix", { hasBody: true }, args),
582
- // POST /security/reports/{id}/link-fix — rank: archon — POST /security/reports/:id/link-fix
600
+ // POST /security/reports/{id}/link-fix — rank: metic+archon — POST /security/reports/:id/link-fix
583
601
  postSecurityReportsIdLinkFix: (args) => request("POST", "/security/reports/{id}/link-fix", { hasBody: true }, args),
602
+ // GET /security/scans — rank: any-builder — GET /security/scans
603
+ getSecurityScans: (args) => request("GET", "/security/scans", { hasBody: false }, args),
604
+ // POST /security/scans — rank: metic+archon — POST /security/scans
605
+ postSecurityScans: (args) => request("POST", "/security/scans", { hasBody: true }, args),
584
606
  },
585
607
  "session": {
586
608
  // POST /session/optimize — rank: any-builder — POST /session/optimize
@@ -593,7 +615,7 @@ export function createClient(opts = {}) {
593
615
  getSessionsId: (args) => request("GET", "/sessions/{id}", { hasBody: false }, args),
594
616
  // GET /sessions/mine — rank: any-builder — GET /sessions/mine
595
617
  getSessionsMine: (args) => request("GET", "/sessions/mine", { hasBody: false }, args),
596
- // GET /sessions/search — rank: archon — GET /sessions/search
618
+ // GET /sessions/search — rank: metic+archon — GET /sessions/search
597
619
  getSessionsSearch: (args) => request("GET", "/sessions/search", { hasBody: false }, args),
598
620
  },
599
621
  "sso": {
@@ -661,17 +683,17 @@ export function createClient(opts = {}) {
661
683
  getTasksClaimable: (args) => request("GET", "/tasks/claimable", { hasBody: false }, args),
662
684
  // GET /tasks/newcomer-floor — rank: any-builder — GET /tasks/newcomer-floor
663
685
  getTasksNewcomerFloor: (args) => request("GET", "/tasks/newcomer-floor", { hasBody: false }, args),
664
- // POST /tasks/newcomer-restock — rank: archon — POST /tasks/newcomer-restock
686
+ // POST /tasks/newcomer-restock — rank: metic+archon — POST /tasks/newcomer-restock
665
687
  postTasksNewcomerRestock: (args) => request("POST", "/tasks/newcomer-restock", { hasBody: true }, args),
666
688
  // GET /tasks/peer-votes/feed — rank: any-builder — GET /tasks/peer-votes/feed
667
689
  getTasksPeerVotesFeed: (args) => request("GET", "/tasks/peer-votes/feed", { hasBody: false }, args),
668
- // POST /tasks/peer-votes/tally — rank: archon — POST /tasks/peer-votes/tally
690
+ // POST /tasks/peer-votes/tally — rank: metic+archon — POST /tasks/peer-votes/tally
669
691
  postTasksPeerVotesTally: (args) => request("POST", "/tasks/peer-votes/tally", { hasBody: true }, args),
670
692
  },
671
693
  "versions": {
672
694
  // GET /versions — rank: public — GET /versions
673
695
  getVersions: (args) => request("GET", "/versions", { hasBody: false }, args),
674
- // POST /versions — rank: archon — POST /versions
696
+ // POST /versions — rank: metic+archon — POST /versions
675
697
  postVersions: (args) => request("POST", "/versions", { hasBody: true }, args),
676
698
  // GET /versions/{id}/done-when — rank: public — GET /versions/:id/done-when
677
699
  getVersionsIdDoneWhen: (args) => request("GET", "/versions/{id}/done-when", { hasBody: false }, args),