@bongos/core 1.24.10 → 1.24.12
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 +171 -86
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +12 -0
- package/clients/bongos-client/index.cjs +12 -0
- package/clients/bongos-client/index.d.ts +18 -1
- package/clients/bongos-client/index.mjs +12 -0
- package/docs/api/openapi.json +304 -5
- package/docs/api-reference.md +14 -4
- package/docs/architecture.md +4 -0
- package/docs/copy-inventory.md +154 -76
- package/docs/copy-registry.json +923 -125
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-inventory.json +68 -4
- package/docs/page-readings.json +873 -819
- package/modules/government/decision-rules.js +1 -0
- package/modules/hall-ui/public/ai-studio.html +1 -1
- package/modules/hall-ui/public/atlas.html +1 -1
- package/modules/hall-ui/public/blockers.html +1 -1
- package/modules/hall-ui/public/board-room.html +1 -1
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/commands.html +1 -1
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/craft-mode.js +2 -2
- package/modules/hall-ui/public/deploy.html +1 -1
- package/modules/hall-ui/public/diagrams.html +1 -1
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/fleet.html +1 -1
- package/modules/hall-ui/public/gate.html +1 -1
- package/modules/hall-ui/public/goal-map.html +1 -1
- package/modules/hall-ui/public/goals.html +1 -1
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/ideas.html +1 -1
- package/modules/hall-ui/public/index.html +1 -1
- package/modules/hall-ui/public/market-watch-item.html +83 -0
- package/modules/hall-ui/public/market-watch-item.js +150 -0
- package/modules/hall-ui/public/market-watch-item.states.json +143 -0
- package/modules/hall-ui/public/market-watch-lib.js +243 -0
- package/modules/hall-ui/public/market-watch-rules.html +1 -1
- package/modules/hall-ui/public/market-watch-settings.html +1 -1
- package/modules/hall-ui/public/market-watch.css +169 -0
- package/modules/hall-ui/public/market-watch.html +111 -0
- package/modules/hall-ui/public/market-watch.js +129 -0
- package/modules/hall-ui/public/market-watch.states.json +14 -0
- package/modules/hall-ui/public/modules.html +1 -1
- package/modules/hall-ui/public/my-agents.html +1 -1
- package/modules/hall-ui/public/primer.html +1 -1
- package/modules/hall-ui/public/profile.html +1 -1
- package/modules/hall-ui/public/project-settings.css +12 -0
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/project-settings.js +63 -1
- package/modules/hall-ui/public/ranks.html +1 -1
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings.html +1 -1
- package/modules/hall-ui/public/shell.js +3 -2
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/task.html +1 -1
- package/modules/hall-ui/public/task.js +34 -1
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/watch.html +1 -1
- package/modules/hall-ui/public/work.html +1 -1
- package/modules/hall-ui/records/market-watch.md +40 -0
- package/modules/lifecycle/migrations/lifecycle_018_pay_terms.sql +64 -0
- package/modules/lifecycle/pay-terms.js +171 -0
- package/modules/lifecycle/routes/project-settings.js +94 -0
- package/modules/lifecycle/routes/task-write-routes.js +35 -4
- package/modules/market-watch/db.js +10 -8
- package/modules/market-watch/module.json +2 -1
- package/modules/market-watch/pages.js +323 -0
- package/modules/market-watch/proposals.js +66 -4
- package/modules/market-watch/routes/pages.js +116 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +12 -0
- package/scripts/bongos/government-walk.js +1 -0
- package/scripts/bongos/run-unit-tests.js +4 -0
- package/scripts/bongos/start.js +42 -2
- package/src/bongos/module-scope-map.js +1 -0
- package/src/module-api.js +1 -1
- package/tests/fixtures/market-watch-seed-rows.cjs +60 -0
- package/tests/government_act_alone_buildings.mjs +1 -0
- package/tests/hall_nav.mjs +4 -1
- package/tests/hall_page_gate_map.mjs +4 -0
- package/tests/market_watch_module.mjs +2 -1
- package/tests/market_watch_pages.mjs +356 -0
- package/tests/market_watch_rules.mjs +63 -3
- package/tests/nav_permission_atoms.mjs +1 -1
- package/tests/patch_gate_ordering.mjs +3 -0
- package/tests/pay_terms.mjs +254 -0
- package/tests/pay_terms_db.mjs +86 -0
- package/tests/project_settings_page.mjs +25 -6
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 652 operations across 81 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -763,6 +763,12 @@ function createClient(opts = {}) {
|
|
|
763
763
|
getMarketWatchAsk: (args) => request("GET", "/market-watch/ask", { hasBody: false }, args),
|
|
764
764
|
// POST /market-watch/ask/answer — rank: any-builder — POST /market-watch/ask/answer
|
|
765
765
|
postMarketWatchAskAnswer: (args) => request("POST", "/market-watch/ask/answer", { hasBody: true }, args),
|
|
766
|
+
// GET /market-watch/home — rank: any-builder — GET /market-watch/home
|
|
767
|
+
getMarketWatchHome: (args) => request("GET", "/market-watch/home", { hasBody: false }, args),
|
|
768
|
+
// GET /market-watch/items/{id} — rank: any-builder — GET /market-watch/items/:id
|
|
769
|
+
getMarketWatchItemsId: (args) => request("GET", "/market-watch/items/{id}", { hasBody: false }, args),
|
|
770
|
+
// POST /market-watch/proposals — rank: any-builder — POST /market-watch/proposals
|
|
771
|
+
postMarketWatchProposals: (args) => request("POST", "/market-watch/proposals", { hasBody: true }, args),
|
|
766
772
|
// POST /market-watch/proposals/{id}/decide — rank: any-builder — POST /market-watch/proposals/:id/decide
|
|
767
773
|
postMarketWatchProposalsIdDecide: (args) => request("POST", "/market-watch/proposals/{id}/decide", { hasBody: true }, args),
|
|
768
774
|
// POST /market-watch/proposals/{id}/vote — rank: metic+archon — POST /market-watch/proposals/:id/vote
|
|
@@ -1012,6 +1018,10 @@ function createClient(opts = {}) {
|
|
|
1012
1018
|
// GET /page-notes/site — rank: any-builder — GET /page-notes/site
|
|
1013
1019
|
getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
|
|
1014
1020
|
},
|
|
1021
|
+
"payTerms": {
|
|
1022
|
+
// GET /pay-terms — rank: any-builder — GET /pay-terms
|
|
1023
|
+
getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
|
|
1024
|
+
},
|
|
1015
1025
|
"payouts": {
|
|
1016
1026
|
// POST /payouts/age-records — rank: archon — POST /payouts/age-records
|
|
1017
1027
|
postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
|
|
@@ -1057,6 +1067,8 @@ function createClient(opts = {}) {
|
|
|
1057
1067
|
"projectSettings": {
|
|
1058
1068
|
// GET /project-settings — rank: metic+archon — GET /project-settings
|
|
1059
1069
|
getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
|
|
1070
|
+
// PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
|
|
1071
|
+
patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
|
|
1060
1072
|
// PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
|
|
1061
1073
|
patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
|
|
1062
1074
|
// GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
|
|
@@ -762,6 +762,12 @@ function createClient(opts = {}) {
|
|
|
762
762
|
getMarketWatchAsk: (args) => request("GET", "/market-watch/ask", { hasBody: false }, args),
|
|
763
763
|
// POST /market-watch/ask/answer — rank: any-builder — POST /market-watch/ask/answer
|
|
764
764
|
postMarketWatchAskAnswer: (args) => request("POST", "/market-watch/ask/answer", { hasBody: true }, args),
|
|
765
|
+
// GET /market-watch/home — rank: any-builder — GET /market-watch/home
|
|
766
|
+
getMarketWatchHome: (args) => request("GET", "/market-watch/home", { hasBody: false }, args),
|
|
767
|
+
// GET /market-watch/items/{id} — rank: any-builder — GET /market-watch/items/:id
|
|
768
|
+
getMarketWatchItemsId: (args) => request("GET", "/market-watch/items/{id}", { hasBody: false }, args),
|
|
769
|
+
// POST /market-watch/proposals — rank: any-builder — POST /market-watch/proposals
|
|
770
|
+
postMarketWatchProposals: (args) => request("POST", "/market-watch/proposals", { hasBody: true }, args),
|
|
765
771
|
// POST /market-watch/proposals/{id}/decide — rank: any-builder — POST /market-watch/proposals/:id/decide
|
|
766
772
|
postMarketWatchProposalsIdDecide: (args) => request("POST", "/market-watch/proposals/{id}/decide", { hasBody: true }, args),
|
|
767
773
|
// POST /market-watch/proposals/{id}/vote — rank: metic+archon — POST /market-watch/proposals/:id/vote
|
|
@@ -1011,6 +1017,10 @@ function createClient(opts = {}) {
|
|
|
1011
1017
|
// GET /page-notes/site — rank: any-builder — GET /page-notes/site
|
|
1012
1018
|
getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
|
|
1013
1019
|
},
|
|
1020
|
+
"payTerms": {
|
|
1021
|
+
// GET /pay-terms — rank: any-builder — GET /pay-terms
|
|
1022
|
+
getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
|
|
1023
|
+
},
|
|
1014
1024
|
"payouts": {
|
|
1015
1025
|
// POST /payouts/age-records — rank: archon — POST /payouts/age-records
|
|
1016
1026
|
postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
|
|
@@ -1056,6 +1066,8 @@ function createClient(opts = {}) {
|
|
|
1056
1066
|
"projectSettings": {
|
|
1057
1067
|
// GET /project-settings — rank: metic+archon — GET /project-settings
|
|
1058
1068
|
getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
|
|
1069
|
+
// PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
|
|
1070
|
+
patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
|
|
1059
1071
|
// PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
|
|
1060
1072
|
patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
|
|
1061
1073
|
// GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
|
|
@@ -141,6 +141,7 @@ export interface GetPageNotesIdResponse { note: unknown; images: unknown; ideas:
|
|
|
141
141
|
export interface GetPageNotesIdeasResponse { page_path: unknown; ideas: unknown }
|
|
142
142
|
export interface GetPageNotesResponse { page_id: unknown; notes: unknown }
|
|
143
143
|
export interface GetPageNotesSiteResponse { notes: unknown }
|
|
144
|
+
export interface GetPayTermsResponse { pay_terms: unknown }
|
|
144
145
|
export interface GetPayoutsApprovalsResponse { approvals: unknown }
|
|
145
146
|
export interface GetPayoutsGatesBuilderIdResponse { gate: unknown }
|
|
146
147
|
export interface GetPayoutsRulesResponse { rules: unknown }
|
|
@@ -264,6 +265,8 @@ export interface PatchNotesIdRequest { kind: string }
|
|
|
264
265
|
export interface PatchNotesIdResponse { ok: boolean; note: unknown }
|
|
265
266
|
export interface PatchPageNotesIdRequest { body_md: string }
|
|
266
267
|
export interface PatchPageNotesIdResponse { ok: boolean; updated_at: unknown }
|
|
268
|
+
export interface PatchProjectSettingsPayTermsRequest { terms: unknown }
|
|
269
|
+
export interface PatchProjectSettingsPayTermsResponse { ok: boolean; row: unknown }
|
|
267
270
|
export interface PatchProjectSettingsRotDaysRequest { days: number }
|
|
268
271
|
export interface PatchProjectSettingsRotDaysResponse { ok: boolean; rot_days: unknown; source: unknown; describe: unknown }
|
|
269
272
|
export interface PatchProjectSettingsShipModeRequest { mode: string }
|
|
@@ -285,7 +288,7 @@ export interface PatchSpecialitiesIdRequest { name?: string; summary?: string; c
|
|
|
285
288
|
export interface PatchSpecialitiesIdResponse { speciality: unknown }
|
|
286
289
|
export interface PatchTaskRecommendationsIdRequest { status: "declined" | "withdrawn" }
|
|
287
290
|
export interface PatchTaskRecommendationsIdResponse { ok: boolean; recommendation: unknown }
|
|
288
|
-
export interface PatchTasksIdRequest { kind?: string; discipline?: string; requires_rank?: string; module_key?: string; goal_id?: number; parent_task_id?: StringifiableId; parallel_safe?: unknown; newcomer_friendly?: boolean; xenos_claimable?: boolean; security_sensitive?: boolean; automation_tag?: string; needs?: unknown; needs_migration?: boolean; description?: string; title?: string; priority?: unknown; value_summary?: string; status?: unknown }
|
|
291
|
+
export interface PatchTasksIdRequest { kind?: string; discipline?: string; requires_rank?: string; module_key?: string; goal_id?: number; parent_task_id?: StringifiableId; parallel_safe?: unknown; newcomer_friendly?: boolean; xenos_claimable?: boolean; security_sensitive?: boolean; automation_tag?: string; needs?: unknown; needs_migration?: boolean; description?: string; title?: string; priority?: unknown; value_summary?: string; status?: unknown; pay_terms?: unknown }
|
|
289
292
|
export interface PostAccessRequestsInviteRequest { github_login: string; note?: string }
|
|
290
293
|
export interface PostAccessRequestsInviteResponse { ok: boolean; already_invited?: boolean; github_login?: unknown; request?: unknown }
|
|
291
294
|
export interface PostAccessRequestsRequest { github_login: string; display_name?: string; note?: string }
|
|
@@ -467,6 +470,8 @@ export interface PostLlmCacheStoreResponse { stored: boolean; result_cost_usd?:
|
|
|
467
470
|
export interface PostMarketWatchAskAnswerRequest { week_of?: string; picks?: unknown[]; names?: unknown[]; nothing?: boolean; builder_id?: number }
|
|
468
471
|
export interface PostMarketWatchProposalsIdDecideRequest { decision: "approve" | "decline" }
|
|
469
472
|
export interface PostMarketWatchProposalsIdVoteResponse { ok: boolean; matter_id: unknown; item_id: unknown }
|
|
473
|
+
export interface PostMarketWatchProposalsRequest { kind: string; reason?: string; item_id?: StringifiableId; dimension?: string; value?: unknown; url?: string; log_entry_id?: StringifiableId; scout?: string; name?: string }
|
|
474
|
+
export interface PostMarketWatchProposalsResponse { proposal: unknown }
|
|
470
475
|
export interface PostMarketWatchRulesProposalsRequest { step: string; change: Record<string, unknown>; reason: string }
|
|
471
476
|
export interface PostMarketWatchRulesProposalsResponse { ok: boolean; proposal: unknown }
|
|
472
477
|
export interface PostMeAnthropicLinkRequest { anthropic_email: string; anthropic_user_id: string }
|
|
@@ -1389,6 +1394,12 @@ export interface BongosClient {
|
|
|
1389
1394
|
getMarketWatchAsk(args?: RequestArgs): Promise<GetMarketWatchAskResponse>;
|
|
1390
1395
|
/** POST /market-watch/ask/answer — rank: any-builder */
|
|
1391
1396
|
postMarketWatchAskAnswer(args?: RequestArgs & { body?: PostMarketWatchAskAnswerRequest }): Promise<ApiResponse>;
|
|
1397
|
+
/** GET /market-watch/home — rank: any-builder */
|
|
1398
|
+
getMarketWatchHome(args?: RequestArgs): Promise<ApiResponse>;
|
|
1399
|
+
/** GET /market-watch/items/{id} — rank: any-builder */
|
|
1400
|
+
getMarketWatchItemsId(args?: RequestArgs): Promise<ApiResponse>;
|
|
1401
|
+
/** POST /market-watch/proposals — rank: any-builder */
|
|
1402
|
+
postMarketWatchProposals(args: RequestArgs & { body: PostMarketWatchProposalsRequest }): Promise<PostMarketWatchProposalsResponse>;
|
|
1392
1403
|
/** POST /market-watch/proposals/{id}/decide — rank: any-builder */
|
|
1393
1404
|
postMarketWatchProposalsIdDecide(args: RequestArgs & { body: PostMarketWatchProposalsIdDecideRequest }): Promise<ApiResponse>;
|
|
1394
1405
|
/** POST /market-watch/proposals/{id}/vote — rank: metic+archon */
|
|
@@ -1638,6 +1649,10 @@ export interface BongosClient {
|
|
|
1638
1649
|
/** GET /page-notes/site — rank: any-builder */
|
|
1639
1650
|
getPageNotesSite(args?: RequestArgs): Promise<GetPageNotesSiteResponse>;
|
|
1640
1651
|
};
|
|
1652
|
+
"payTerms": {
|
|
1653
|
+
/** GET /pay-terms — rank: any-builder */
|
|
1654
|
+
getPayTerms(args?: RequestArgs): Promise<GetPayTermsResponse>;
|
|
1655
|
+
};
|
|
1641
1656
|
"payouts": {
|
|
1642
1657
|
/** POST /payouts/age-records — rank: archon */
|
|
1643
1658
|
postPayoutsAgeRecords(args: RequestArgs & { body: PostPayoutsAgeRecordsRequest }): Promise<PostPayoutsAgeRecordsResponse>;
|
|
@@ -1683,6 +1698,8 @@ export interface BongosClient {
|
|
|
1683
1698
|
"projectSettings": {
|
|
1684
1699
|
/** GET /project-settings — rank: metic+archon */
|
|
1685
1700
|
getProjectSettings(args?: RequestArgs): Promise<GetProjectSettingsResponse>;
|
|
1701
|
+
/** PATCH /project-settings/pay-terms — rank: metic+archon */
|
|
1702
|
+
patchProjectSettingsPayTerms(args: RequestArgs & { body: PatchProjectSettingsPayTermsRequest }): Promise<PatchProjectSettingsPayTermsResponse>;
|
|
1686
1703
|
/** PATCH /project-settings/rot-days — rank: metic+archon */
|
|
1687
1704
|
patchProjectSettingsRotDays(args: RequestArgs & { body: PatchProjectSettingsRotDaysRequest }): Promise<PatchProjectSettingsRotDaysResponse>;
|
|
1688
1705
|
/** GET /project-settings/ship-mode — rank: any-builder */
|
|
@@ -759,6 +759,12 @@ export function createClient(opts = {}) {
|
|
|
759
759
|
getMarketWatchAsk: (args) => request("GET", "/market-watch/ask", { hasBody: false }, args),
|
|
760
760
|
// POST /market-watch/ask/answer — rank: any-builder — POST /market-watch/ask/answer
|
|
761
761
|
postMarketWatchAskAnswer: (args) => request("POST", "/market-watch/ask/answer", { hasBody: true }, args),
|
|
762
|
+
// GET /market-watch/home — rank: any-builder — GET /market-watch/home
|
|
763
|
+
getMarketWatchHome: (args) => request("GET", "/market-watch/home", { hasBody: false }, args),
|
|
764
|
+
// GET /market-watch/items/{id} — rank: any-builder — GET /market-watch/items/:id
|
|
765
|
+
getMarketWatchItemsId: (args) => request("GET", "/market-watch/items/{id}", { hasBody: false }, args),
|
|
766
|
+
// POST /market-watch/proposals — rank: any-builder — POST /market-watch/proposals
|
|
767
|
+
postMarketWatchProposals: (args) => request("POST", "/market-watch/proposals", { hasBody: true }, args),
|
|
762
768
|
// POST /market-watch/proposals/{id}/decide — rank: any-builder — POST /market-watch/proposals/:id/decide
|
|
763
769
|
postMarketWatchProposalsIdDecide: (args) => request("POST", "/market-watch/proposals/{id}/decide", { hasBody: true }, args),
|
|
764
770
|
// POST /market-watch/proposals/{id}/vote — rank: metic+archon — POST /market-watch/proposals/:id/vote
|
|
@@ -1008,6 +1014,10 @@ export function createClient(opts = {}) {
|
|
|
1008
1014
|
// GET /page-notes/site — rank: any-builder — GET /page-notes/site
|
|
1009
1015
|
getPageNotesSite: (args) => request("GET", "/page-notes/site", { hasBody: false }, args),
|
|
1010
1016
|
},
|
|
1017
|
+
"payTerms": {
|
|
1018
|
+
// GET /pay-terms — rank: any-builder — GET /pay-terms
|
|
1019
|
+
getPayTerms: (args) => request("GET", "/pay-terms", { hasBody: false }, args),
|
|
1020
|
+
},
|
|
1011
1021
|
"payouts": {
|
|
1012
1022
|
// POST /payouts/age-records — rank: archon — POST /payouts/age-records
|
|
1013
1023
|
postPayoutsAgeRecords: (args) => request("POST", "/payouts/age-records", { hasBody: true }, args),
|
|
@@ -1053,6 +1063,8 @@ export function createClient(opts = {}) {
|
|
|
1053
1063
|
"projectSettings": {
|
|
1054
1064
|
// GET /project-settings — rank: metic+archon — GET /project-settings
|
|
1055
1065
|
getProjectSettings: (args) => request("GET", "/project-settings", { hasBody: false }, args),
|
|
1066
|
+
// PATCH /project-settings/pay-terms — rank: metic+archon — PATCH /project-settings/pay-terms
|
|
1067
|
+
patchProjectSettingsPayTerms: (args) => request("PATCH", "/project-settings/pay-terms", { hasBody: true }, args),
|
|
1056
1068
|
// PATCH /project-settings/rot-days — rank: metic+archon — PATCH /project-settings/rot-days
|
|
1057
1069
|
patchProjectSettingsRotDays: (args) => request("PATCH", "/project-settings/rot-days", { hasBody: true }, args),
|
|
1058
1070
|
// GET /project-settings/ship-mode — rank: any-builder — GET /project-settings/ship-mode
|
package/docs/api/openapi.json
CHANGED
|
@@ -241,6 +241,10 @@
|
|
|
241
241
|
"name": "page-notes",
|
|
242
242
|
"description": "Endpoints under `/api/bongos/page-notes`."
|
|
243
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"name": "pay-terms",
|
|
246
|
+
"description": "Endpoints under `/api/bongos/pay-terms`."
|
|
247
|
+
},
|
|
244
248
|
{
|
|
245
249
|
"name": "payouts",
|
|
246
250
|
"description": "Endpoints under `/api/bongos/payouts`."
|
|
@@ -14078,6 +14082,131 @@
|
|
|
14078
14082
|
]
|
|
14079
14083
|
}
|
|
14080
14084
|
},
|
|
14085
|
+
"/market-watch/home": {
|
|
14086
|
+
"get": {
|
|
14087
|
+
"operationId": "get_market_watch_home",
|
|
14088
|
+
"tags": [
|
|
14089
|
+
"market-watch"
|
|
14090
|
+
],
|
|
14091
|
+
"summary": "GET /market-watch/home",
|
|
14092
|
+
"description": "every member reads the desk.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
14093
|
+
"x-rank": "any-builder",
|
|
14094
|
+
"x-source": "modules/market-watch/routes/pages.js",
|
|
14095
|
+
"responses": {
|
|
14096
|
+
"200": {
|
|
14097
|
+
"description": "Success."
|
|
14098
|
+
},
|
|
14099
|
+
"400": {
|
|
14100
|
+
"$ref": "#/components/responses/BadRequest"
|
|
14101
|
+
},
|
|
14102
|
+
"401": {
|
|
14103
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
14104
|
+
},
|
|
14105
|
+
"403": {
|
|
14106
|
+
"$ref": "#/components/responses/Forbidden"
|
|
14107
|
+
}
|
|
14108
|
+
},
|
|
14109
|
+
"security": [
|
|
14110
|
+
{
|
|
14111
|
+
"builderSession": []
|
|
14112
|
+
}
|
|
14113
|
+
]
|
|
14114
|
+
}
|
|
14115
|
+
},
|
|
14116
|
+
"/market-watch/items/{id}": {
|
|
14117
|
+
"get": {
|
|
14118
|
+
"operationId": "get_market_watch_items_id",
|
|
14119
|
+
"tags": [
|
|
14120
|
+
"market-watch"
|
|
14121
|
+
],
|
|
14122
|
+
"summary": "GET /market-watch/items/:id",
|
|
14123
|
+
"description": "every member reads an item's case file.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
14124
|
+
"x-rank": "any-builder",
|
|
14125
|
+
"x-source": "modules/market-watch/routes/pages.js",
|
|
14126
|
+
"parameters": [
|
|
14127
|
+
{
|
|
14128
|
+
"name": "id",
|
|
14129
|
+
"in": "path",
|
|
14130
|
+
"required": true,
|
|
14131
|
+
"schema": {
|
|
14132
|
+
"type": "string"
|
|
14133
|
+
},
|
|
14134
|
+
"description": "Path parameter `id`."
|
|
14135
|
+
}
|
|
14136
|
+
],
|
|
14137
|
+
"responses": {
|
|
14138
|
+
"200": {
|
|
14139
|
+
"description": "Success."
|
|
14140
|
+
},
|
|
14141
|
+
"400": {
|
|
14142
|
+
"$ref": "#/components/responses/BadRequest"
|
|
14143
|
+
},
|
|
14144
|
+
"401": {
|
|
14145
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
14146
|
+
},
|
|
14147
|
+
"403": {
|
|
14148
|
+
"$ref": "#/components/responses/Forbidden"
|
|
14149
|
+
},
|
|
14150
|
+
"404": {
|
|
14151
|
+
"$ref": "#/components/responses/NotFound"
|
|
14152
|
+
}
|
|
14153
|
+
},
|
|
14154
|
+
"security": [
|
|
14155
|
+
{
|
|
14156
|
+
"builderSession": []
|
|
14157
|
+
}
|
|
14158
|
+
]
|
|
14159
|
+
}
|
|
14160
|
+
},
|
|
14161
|
+
"/market-watch/proposals": {
|
|
14162
|
+
"post": {
|
|
14163
|
+
"operationId": "post_market_watch_proposals",
|
|
14164
|
+
"tags": [
|
|
14165
|
+
"market-watch"
|
|
14166
|
+
],
|
|
14167
|
+
"summary": "POST /market-watch/proposals",
|
|
14168
|
+
"description": "every member may propose; the government decides (task 1004941).\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
14169
|
+
"x-rank": "any-builder",
|
|
14170
|
+
"x-source": "modules/market-watch/routes/pages.js",
|
|
14171
|
+
"requestBody": {
|
|
14172
|
+
"required": true,
|
|
14173
|
+
"content": {
|
|
14174
|
+
"application/json": {
|
|
14175
|
+
"schema": {
|
|
14176
|
+
"$ref": "#/components/schemas/PostMarketWatchProposalsRequest"
|
|
14177
|
+
}
|
|
14178
|
+
}
|
|
14179
|
+
},
|
|
14180
|
+
"x-validated": true
|
|
14181
|
+
},
|
|
14182
|
+
"responses": {
|
|
14183
|
+
"200": {
|
|
14184
|
+
"description": "Success.",
|
|
14185
|
+
"content": {
|
|
14186
|
+
"application/json": {
|
|
14187
|
+
"schema": {
|
|
14188
|
+
"$ref": "#/components/schemas/PostMarketWatchProposalsResponse"
|
|
14189
|
+
}
|
|
14190
|
+
}
|
|
14191
|
+
}
|
|
14192
|
+
},
|
|
14193
|
+
"400": {
|
|
14194
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
14195
|
+
},
|
|
14196
|
+
"401": {
|
|
14197
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
14198
|
+
},
|
|
14199
|
+
"403": {
|
|
14200
|
+
"$ref": "#/components/responses/Forbidden"
|
|
14201
|
+
}
|
|
14202
|
+
},
|
|
14203
|
+
"security": [
|
|
14204
|
+
{
|
|
14205
|
+
"builderSession": []
|
|
14206
|
+
}
|
|
14207
|
+
]
|
|
14208
|
+
}
|
|
14209
|
+
},
|
|
14081
14210
|
"/market-watch/proposals/{id}/decide": {
|
|
14082
14211
|
"post": {
|
|
14083
14212
|
"operationId": "post_market_watch_proposals_id_decide",
|
|
@@ -19113,6 +19242,44 @@
|
|
|
19113
19242
|
]
|
|
19114
19243
|
}
|
|
19115
19244
|
},
|
|
19245
|
+
"/pay-terms": {
|
|
19246
|
+
"get": {
|
|
19247
|
+
"operationId": "get_pay_terms",
|
|
19248
|
+
"tags": [
|
|
19249
|
+
"pay-terms"
|
|
19250
|
+
],
|
|
19251
|
+
"summary": "GET /pay-terms",
|
|
19252
|
+
"description": "GET /pay-terms?task_ids=1,2,3 — what each task pays, in the project's words (task 1004990, ADR 0385 D3), for a list of tasks in one read: the hall task page and `bongos start` show it so a builder sees the pay BEFORE claiming. Each entry is { source: 'task' | 'project' | 'none', terms, set_by, set_at }; a task with none of its own shows the project's standing terms (set below), and a self-managed term carries its \"Bongos does not move or guarantee this money\" label. Records only — no amount here is a Bongos figure. It lives beside the standing-terms write because both serve the one pay-terms table pair. rank: any-builder — the same task metadata GET /tasks/:id serves; nothing changed.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
19253
|
+
"x-rank": "any-builder",
|
|
19254
|
+
"x-source": "modules/lifecycle/routes/project-settings.js",
|
|
19255
|
+
"responses": {
|
|
19256
|
+
"200": {
|
|
19257
|
+
"description": "Success.",
|
|
19258
|
+
"content": {
|
|
19259
|
+
"application/json": {
|
|
19260
|
+
"schema": {
|
|
19261
|
+
"$ref": "#/components/schemas/GetPayTermsResponse"
|
|
19262
|
+
}
|
|
19263
|
+
}
|
|
19264
|
+
}
|
|
19265
|
+
},
|
|
19266
|
+
"400": {
|
|
19267
|
+
"$ref": "#/components/responses/BadRequest"
|
|
19268
|
+
},
|
|
19269
|
+
"401": {
|
|
19270
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
19271
|
+
},
|
|
19272
|
+
"403": {
|
|
19273
|
+
"$ref": "#/components/responses/Forbidden"
|
|
19274
|
+
}
|
|
19275
|
+
},
|
|
19276
|
+
"security": [
|
|
19277
|
+
{
|
|
19278
|
+
"builderSession": []
|
|
19279
|
+
}
|
|
19280
|
+
]
|
|
19281
|
+
}
|
|
19282
|
+
},
|
|
19116
19283
|
"/payouts/age-records": {
|
|
19117
19284
|
"post": {
|
|
19118
19285
|
"operationId": "post_payouts_age_records",
|
|
@@ -20050,6 +20217,58 @@
|
|
|
20050
20217
|
]
|
|
20051
20218
|
}
|
|
20052
20219
|
},
|
|
20220
|
+
"/project-settings/pay-terms": {
|
|
20221
|
+
"patch": {
|
|
20222
|
+
"operationId": "patch_project_settings_pay_terms",
|
|
20223
|
+
"tags": [
|
|
20224
|
+
"project-settings"
|
|
20225
|
+
],
|
|
20226
|
+
"summary": "PATCH /project-settings/pay-terms",
|
|
20227
|
+
"description": "PATCH /project-settings/pay-terms — body { terms: [{ pay_type, amount?, unit?, note? }] } (task 1004990; ADR 0385 decision 3 and the owner's 2026-10-29 ruling). The project's STANDING pay terms: what a builder is shown on any task that carries none of its own. The whole list replaces the current set; [] means none. Every change is a new row naming who set it and when, and the old sets stay, so the table is the audit trail the owner asked for. Bongos fills nothing in. rank: project.settings.manage (metic+, government_010), the same atom as the other writes on this page.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `project.settings.manage` (all required).",
|
|
20228
|
+
"x-rank": "metic+archon",
|
|
20229
|
+
"x-source": "modules/lifecycle/routes/project-settings.js",
|
|
20230
|
+
"x-permissions": [
|
|
20231
|
+
"project.settings.manage"
|
|
20232
|
+
],
|
|
20233
|
+
"requestBody": {
|
|
20234
|
+
"required": true,
|
|
20235
|
+
"content": {
|
|
20236
|
+
"application/json": {
|
|
20237
|
+
"schema": {
|
|
20238
|
+
"$ref": "#/components/schemas/PatchProjectSettingsPayTermsRequest"
|
|
20239
|
+
}
|
|
20240
|
+
}
|
|
20241
|
+
},
|
|
20242
|
+
"x-validated": true
|
|
20243
|
+
},
|
|
20244
|
+
"responses": {
|
|
20245
|
+
"200": {
|
|
20246
|
+
"description": "Success.",
|
|
20247
|
+
"content": {
|
|
20248
|
+
"application/json": {
|
|
20249
|
+
"schema": {
|
|
20250
|
+
"$ref": "#/components/schemas/PatchProjectSettingsPayTermsResponse"
|
|
20251
|
+
}
|
|
20252
|
+
}
|
|
20253
|
+
}
|
|
20254
|
+
},
|
|
20255
|
+
"400": {
|
|
20256
|
+
"$ref": "#/components/responses/ValidationFailed"
|
|
20257
|
+
},
|
|
20258
|
+
"401": {
|
|
20259
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
20260
|
+
},
|
|
20261
|
+
"403": {
|
|
20262
|
+
"$ref": "#/components/responses/Forbidden"
|
|
20263
|
+
}
|
|
20264
|
+
},
|
|
20265
|
+
"security": [
|
|
20266
|
+
{
|
|
20267
|
+
"builderSession": []
|
|
20268
|
+
}
|
|
20269
|
+
]
|
|
20270
|
+
}
|
|
20271
|
+
},
|
|
20053
20272
|
"/project-settings/rot-days": {
|
|
20054
20273
|
"patch": {
|
|
20055
20274
|
"operationId": "patch_project_settings_rot_days",
|
|
@@ -27822,7 +28041,7 @@
|
|
|
27822
28041
|
"tasks"
|
|
27823
28042
|
],
|
|
27824
28043
|
"summary": "POST /tasks",
|
|
27825
|
-
"description": "Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may also seed + shape tasks. Was Archon-only (task task 106 / ADR 0016; three-rank model task 360 / ADR 0018). A Xenos/Thetes still cannot author — they file ideas. Setting rank and closing versions stay Archon. The every-route audit is task task 231 (V3.R06). rank: metic+archon — create work (plan/scope mutation); ADR 0090 (was ADR 0016/0018 archon).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `task.create` (all required).",
|
|
28044
|
+
"description": "Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may also seed + shape tasks. Was Archon-only (task task 106 / ADR 0016; three-rank model task 360 / ADR 0018). A Xenos/Thetes still cannot author — they file ideas. Setting rank and closing versions stay Archon. The every-route audit is task task 231 (V3.R06). NO pay_terms HERE, on purpose (task 1004990): the task's rule is that only someone who may EDIT a task sets its pay terms, and this route is gated on task.create, not task.edit — so terms are set with PATCH /tasks/:id right after create, under that route's task.edit gate. The strict validator refuses the field here rather than letting a create quietly widen who may set pay. rank: metic+archon — create work (plan/scope mutation); ADR 0090 (was ADR 0016/0018 archon).\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `task.create` (all required).",
|
|
27826
28045
|
"x-rank": "metic+archon",
|
|
27827
28046
|
"x-source": "modules/lifecycle/routes/task-write-routes.js",
|
|
27828
28047
|
"x-permissions": [
|
|
@@ -32052,6 +32271,15 @@
|
|
|
32052
32271
|
"notes"
|
|
32053
32272
|
]
|
|
32054
32273
|
},
|
|
32274
|
+
"GetPayTermsResponse": {
|
|
32275
|
+
"type": "object",
|
|
32276
|
+
"properties": {
|
|
32277
|
+
"pay_terms": {}
|
|
32278
|
+
},
|
|
32279
|
+
"required": [
|
|
32280
|
+
"pay_terms"
|
|
32281
|
+
]
|
|
32282
|
+
},
|
|
32055
32283
|
"GetPayoutsApprovalsResponse": {
|
|
32056
32284
|
"type": "object",
|
|
32057
32285
|
"properties": {
|
|
@@ -33641,6 +33869,29 @@
|
|
|
33641
33869
|
"updated_at"
|
|
33642
33870
|
]
|
|
33643
33871
|
},
|
|
33872
|
+
"PatchProjectSettingsPayTermsRequest": {
|
|
33873
|
+
"type": "object",
|
|
33874
|
+
"properties": {
|
|
33875
|
+
"terms": {}
|
|
33876
|
+
},
|
|
33877
|
+
"required": [
|
|
33878
|
+
"terms"
|
|
33879
|
+
],
|
|
33880
|
+
"additionalProperties": false
|
|
33881
|
+
},
|
|
33882
|
+
"PatchProjectSettingsPayTermsResponse": {
|
|
33883
|
+
"type": "object",
|
|
33884
|
+
"properties": {
|
|
33885
|
+
"ok": {
|
|
33886
|
+
"type": "boolean"
|
|
33887
|
+
},
|
|
33888
|
+
"row": {}
|
|
33889
|
+
},
|
|
33890
|
+
"required": [
|
|
33891
|
+
"ok",
|
|
33892
|
+
"row"
|
|
33893
|
+
]
|
|
33894
|
+
},
|
|
33644
33895
|
"PatchProjectSettingsRotDaysRequest": {
|
|
33645
33896
|
"type": "object",
|
|
33646
33897
|
"properties": {
|
|
@@ -34026,7 +34277,8 @@
|
|
|
34026
34277
|
"minLength": 1,
|
|
34027
34278
|
"maxLength": 1000
|
|
34028
34279
|
},
|
|
34029
|
-
"status": {}
|
|
34280
|
+
"status": {},
|
|
34281
|
+
"pay_terms": {}
|
|
34030
34282
|
},
|
|
34031
34283
|
"additionalProperties": false
|
|
34032
34284
|
},
|
|
@@ -37143,6 +37395,53 @@
|
|
|
37143
37395
|
"item_id"
|
|
37144
37396
|
]
|
|
37145
37397
|
},
|
|
37398
|
+
"PostMarketWatchProposalsRequest": {
|
|
37399
|
+
"type": "object",
|
|
37400
|
+
"properties": {
|
|
37401
|
+
"kind": {
|
|
37402
|
+
"type": "string"
|
|
37403
|
+
},
|
|
37404
|
+
"reason": {
|
|
37405
|
+
"type": "string",
|
|
37406
|
+
"maxLength": 2000
|
|
37407
|
+
},
|
|
37408
|
+
"item_id": {
|
|
37409
|
+
"$ref": "#/components/schemas/StringifiableId"
|
|
37410
|
+
},
|
|
37411
|
+
"dimension": {
|
|
37412
|
+
"type": "string",
|
|
37413
|
+
"maxLength": 60
|
|
37414
|
+
},
|
|
37415
|
+
"value": {},
|
|
37416
|
+
"url": {
|
|
37417
|
+
"type": "string",
|
|
37418
|
+
"maxLength": 2000
|
|
37419
|
+
},
|
|
37420
|
+
"log_entry_id": {
|
|
37421
|
+
"$ref": "#/components/schemas/StringifiableId"
|
|
37422
|
+
},
|
|
37423
|
+
"scout": {
|
|
37424
|
+
"type": "string"
|
|
37425
|
+
},
|
|
37426
|
+
"name": {
|
|
37427
|
+
"type": "string",
|
|
37428
|
+
"maxLength": 2000
|
|
37429
|
+
}
|
|
37430
|
+
},
|
|
37431
|
+
"required": [
|
|
37432
|
+
"kind"
|
|
37433
|
+
],
|
|
37434
|
+
"additionalProperties": false
|
|
37435
|
+
},
|
|
37436
|
+
"PostMarketWatchProposalsResponse": {
|
|
37437
|
+
"type": "object",
|
|
37438
|
+
"properties": {
|
|
37439
|
+
"proposal": {}
|
|
37440
|
+
},
|
|
37441
|
+
"required": [
|
|
37442
|
+
"proposal"
|
|
37443
|
+
]
|
|
37444
|
+
},
|
|
37146
37445
|
"PostMarketWatchRulesProposalsRequest": {
|
|
37147
37446
|
"type": "object",
|
|
37148
37447
|
"properties": {
|
|
@@ -40980,9 +41279,9 @@
|
|
|
40980
41279
|
"description": "A required dependency/feature is not configured or is temporarily down."
|
|
40981
41280
|
}
|
|
40982
41281
|
},
|
|
40983
|
-
"x-endpoint-count":
|
|
40984
|
-
"x-schema-count":
|
|
41282
|
+
"x-endpoint-count": 652,
|
|
41283
|
+
"x-schema-count": 698,
|
|
40985
41284
|
"x-undocumented-bodies": 12,
|
|
40986
|
-
"x-response-schemas":
|
|
41285
|
+
"x-response-schemas": 447,
|
|
40987
41286
|
"x-generated-by": "scripts/bongos/gen-api-docs.js"
|
|
40988
41287
|
}
|
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. 652 endpoints across 109 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`.
|
|
@@ -520,12 +520,15 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
520
520
|
| POST | `/api/bongos/llm-cache/lookup` | `metic+archon` | `cache_key`, `tokens_saved_est` | POST /llm-cache/lookup — hit/miss + atomic hit_count bump. |
|
|
521
521
|
| POST | `/api/bongos/llm-cache/store` | `metic+archon` | `spec`, `result_stdout`, `result_cost_usd` | POST /llm-cache/store — upsert a freshly-produced result. |
|
|
522
522
|
|
|
523
|
-
## `market-watch` (
|
|
523
|
+
## `market-watch` (13)
|
|
524
524
|
|
|
525
525
|
| Method | Path | Rank | Body | Description |
|
|
526
526
|
|---|---|---|---|---|
|
|
527
527
|
| GET | `/api/bongos/market-watch/ask` | `any-builder` | — | every member reads their own card; nobody else's (isMember in gate()). |
|
|
528
528
|
| POST | `/api/bongos/market-watch/ask/answer` | `any-builder` | `week_of`, `picks`, `names`, `nothing`, `builder_id` | a member answers for themselves only (isMember in gate()). |
|
|
529
|
+
| GET | `/api/bongos/market-watch/home` | `any-builder` | — | every member reads the desk. |
|
|
530
|
+
| GET | `/api/bongos/market-watch/items/:id` | `any-builder` | — | every member reads an item's case file. |
|
|
531
|
+
| POST | `/api/bongos/market-watch/proposals` | `any-builder` | `kind`, `reason`, `item_id`, `dimension`, `value`, `url`, `log_entry_id`, `scout`, `name` | every member may propose; the government decides (task 1004941). |
|
|
529
532
|
| POST | `/api/bongos/market-watch/proposals/:id/decide` | `any-builder` | `decision` | THE OWNER'S DECISION. |
|
|
530
533
|
| POST | `/api/bongos/market-watch/proposals/:id/vote` | `metic+archon` | — | PUT TO A VOTE. |
|
|
531
534
|
| GET | `/api/bongos/market-watch/rules` | `any-builder` | — | every member reads the rules (the task); the read grants nothing. |
|
|
@@ -691,6 +694,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
691
694
|
| GET | `/api/bongos/page-notes/images/:id` | `any-builder` | — | |
|
|
692
695
|
| GET | `/api/bongos/page-notes/site` | `any-builder` | — | The public site's reviews (task 1004499), for the Studio's list. |
|
|
693
696
|
|
|
697
|
+
## `pay-terms` (1)
|
|
698
|
+
|
|
699
|
+
| Method | Path | Rank | Body | Description |
|
|
700
|
+
|---|---|---|---|---|
|
|
701
|
+
| GET | `/api/bongos/pay-terms` | `any-builder` | — | GET /pay-terms?task_ids=1,2,3 — what each task pays, in the project's words (task 1004990, ADR 0385 D3), for a list of tasks in one read:… |
|
|
702
|
+
|
|
694
703
|
## `payouts` (16)
|
|
695
704
|
|
|
696
705
|
| Method | Path | Rank | Body | Description |
|
|
@@ -724,11 +733,12 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
724
733
|
|---|---|---|---|---|
|
|
725
734
|
| GET | `/api/bongos/project/manage-link` | `archon` | — | GET /project/manage-link — the hub's page for THIS project, where its owner takes it offline or disconnects it (task 1004570). |
|
|
726
735
|
|
|
727
|
-
## `project-settings` (
|
|
736
|
+
## `project-settings` (8)
|
|
728
737
|
|
|
729
738
|
| Method | Path | Rank | Body | Description |
|
|
730
739
|
|---|---|---|---|---|
|
|
731
740
|
| GET | `/api/bongos/project-settings` | `metic+archon` | — | GET /project-settings — all five rows in ONE read. |
|
|
741
|
+
| PATCH | `/api/bongos/project-settings/pay-terms` | `metic+archon` | `terms` | PATCH /project-settings/pay-terms — body { terms: [{ pay_type, amount?, unit?, note? }] } (task 1004990; ADR 0385 decision 3 and the owne… |
|
|
732
742
|
| PATCH | `/api/bongos/project-settings/rot-days` | `metic+archon` | `days` | PATCH /project-settings/rot-days — body { days }. |
|
|
733
743
|
| GET | `/api/bongos/project-settings/ship-mode` | `any-builder` | — | GET /project-settings/ship-mode — the ship mode alone, for the CLI and the AI. |
|
|
734
744
|
| PATCH | `/api/bongos/project-settings/ship-mode` | `metic+archon` | `mode` | PATCH /project-settings/ship-mode — body { mode: 'auto' \| 'manual' }. |
|
|
@@ -997,7 +1007,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
997
1007
|
| GET | `/api/bongos/tasks` | `any-builder` | — | |
|
|
998
1008
|
| POST | `/api/bongos/tasks` | `metic+archon` | `version_id`, `title`, `description`, `status`, `touches`, `est_minutes`, `est_cost_usd`, `manual_degree`, `priority`, `automation_tag`, `credits_reward`, `source`, `source_ref`, `value_summary`, `kind`, `discipline`, `parallel_safe`, `newcomer_friendly`, `security_sensitive`, `requires_rank`, `needs`, `auto_detect_touches`, `criterion_ids`, `module_key`, `goal_id` | Task create/promote/edit (plan/scope mutation) is Metic+ as of ADR 0090 (owner decision 2026-06-26): a Metic who can run idea-triage may … |
|
|
999
1009
|
| GET | `/api/bongos/tasks/:id` | `any-builder` | — | single-task read; preserved per CRITICAL §4 (supervisor hot path). |
|
|
1000
|
-
| PATCH | `/api/bongos/tasks/:id` | `metic+archon` | `kind`, `discipline`, `requires_rank`, `module_key`, `goal_id`, `parent_task_id`, `parallel_safe`, `newcomer_friendly`, `xenos_claimable`, `security_sensitive`, `automation_tag`, `needs`, `needs_migration`, `description`, `title`, `priority`, `value_summary`, `status` | PATCH /tasks/:id — supports body.parent_task_id (V2 C2), body.kind (V2 B1), body.discipline (mig 014), body.parallel_safe (mig 028), and … |
|
|
1010
|
+
| PATCH | `/api/bongos/tasks/:id` | `metic+archon` | `kind`, `discipline`, `requires_rank`, `module_key`, `goal_id`, `parent_task_id`, `parallel_safe`, `newcomer_friendly`, `xenos_claimable`, `security_sensitive`, `automation_tag`, `needs`, `needs_migration`, `description`, `title`, `priority`, `value_summary`, `status`, `pay_terms` | PATCH /tasks/:id — supports body.parent_task_id (V2 C2), body.kind (V2 B1), body.discipline (mig 014), body.parallel_safe (mig 028), and … |
|
|
1001
1011
|
| POST | `/api/bongos/tasks/:id/abandon` | `any-builder` | — | POST /tasks/:id/abandon — terminal "retire this task" transition (task 987). |
|
|
1002
1012
|
| POST | `/api/bongos/tasks/:id/attest-gate` | `any-builder` | `head_sha` | POST /tasks/:id/attest-gate — body: { head_sha }. |
|
|
1003
1013
|
| POST | `/api/bongos/tasks/:id/confirm` | `any-builder` | `verified` | |
|
package/docs/architecture.md
CHANGED
|
@@ -252,6 +252,10 @@ store_modules(module_key PK, title, description, author_id, status CHECK IN (lis
|
|
|
252
252
|
store_module_versions(id, module_key, version exact X.Y.Z, core_version, manifest jsonb,
|
|
253
253
|
tree_sha256, tarball_sha256, tarball_bytes, artifact_path, published_by,
|
|
254
254
|
published_at, UNIQUE(module_key, version)) -- immutable; a fix is a new version
|
|
255
|
+
lifecycle_pay_term_sets(id, task_id NULL = the project's standing terms, set_by, set_at)
|
|
256
|
+
lifecycle_pay_terms(id, set_id, position, pay_type, amount text, unit, note)
|
|
257
|
+
-- task 1004990 (module lifecycle, lifecycle_018): what a task pays, in the project's words; append-only
|
|
258
|
+
-- history of whole sets (newest current), records only, no default amount.
|
|
255
259
|
store_module_prices(id, module_key, price_cents, price_credits, set_by, set_at)
|
|
256
260
|
-- history; newest row per module is current. Cash only since core_287 (task 1004989):
|
|
257
261
|
-- price_credits is historical, a credit-only newest row reads "price coming". 0 cents = free.
|