@bragi-gmbh/codebus 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/codebus.js +2 -0
- package/dist/binding-guard.js +97 -0
- package/dist/binding-guard.js.map +1 -0
- package/dist/client.js +94 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/ack.js +47 -0
- package/dist/commands/ack.js.map +1 -0
- package/dist/commands/archive.js +21 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/as.js +299 -0
- package/dist/commands/as.js.map +1 -0
- package/dist/commands/ask.js +189 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/auth.js +33 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/checkin.js +235 -0
- package/dist/commands/checkin.js.map +1 -0
- package/dist/commands/decision.js +52 -0
- package/dist/commands/decision.js.map +1 -0
- package/dist/commands/digest.js +117 -0
- package/dist/commands/digest.js.map +1 -0
- package/dist/commands/doctor.js +106 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/factory.js +191 -0
- package/dist/commands/factory.js.map +1 -0
- package/dist/commands/github-login.js +205 -0
- package/dist/commands/github-login.js.map +1 -0
- package/dist/commands/graph.js +88 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/health.js +34 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/inbox.js +83 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/ingest.js +553 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/init.js +97 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.js +520 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/invite.js +152 -0
- package/dist/commands/invite.js.map +1 -0
- package/dist/commands/jira.js +237 -0
- package/dist/commands/jira.js.map +1 -0
- package/dist/commands/join.js +96 -0
- package/dist/commands/join.js.map +1 -0
- package/dist/commands/links.js +66 -0
- package/dist/commands/links.js.map +1 -0
- package/dist/commands/login.js +84 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/morning.js +121 -0
- package/dist/commands/morning.js.map +1 -0
- package/dist/commands/next.js +66 -0
- package/dist/commands/next.js.map +1 -0
- package/dist/commands/onboarding.js +109 -0
- package/dist/commands/onboarding.js.map +1 -0
- package/dist/commands/pack.js +276 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/plan-gh.js +425 -0
- package/dist/commands/plan-gh.js.map +1 -0
- package/dist/commands/plan.js +465 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/pr.js +88 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/question.js +142 -0
- package/dist/commands/question.js.map +1 -0
- package/dist/commands/read.js +84 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/refs.js +357 -0
- package/dist/commands/refs.js.map +1 -0
- package/dist/commands/reply.js +38 -0
- package/dist/commands/reply.js.map +1 -0
- package/dist/commands/repo.js +1198 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/commands/report.js +41 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/resolve-refs.js +21 -0
- package/dist/commands/resolve-refs.js.map +1 -0
- package/dist/commands/resolve.js +93 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/send.js +168 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/sent.js +22 -0
- package/dist/commands/sent.js.map +1 -0
- package/dist/commands/session.js +426 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/statusline.js +43 -0
- package/dist/commands/statusline.js.map +1 -0
- package/dist/commands/task.js +140 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/tick.js +233 -0
- package/dist/commands/tick.js.map +1 -0
- package/dist/commands/upgrade.js +76 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/watch.js +169 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/whoami.js +27 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.js +103 -0
- package/dist/config.js.map +1 -0
- package/dist/directives.js +102 -0
- package/dist/directives.js.map +1 -0
- package/dist/errors.js +110 -0
- package/dist/errors.js.map +1 -0
- package/dist/git-hooks.js +116 -0
- package/dist/git-hooks.js.map +1 -0
- package/dist/graph-bootstrap.js +95 -0
- package/dist/graph-bootstrap.js.map +1 -0
- package/dist/graph-remote.js +889 -0
- package/dist/graph-remote.js.map +1 -0
- package/dist/graph.js +335 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.js +154 -0
- package/dist/index.js.map +1 -0
- package/dist/kit/graph-publish.mjs +400 -0
- package/dist/mail-latency.js +120 -0
- package/dist/mail-latency.js.map +1 -0
- package/dist/mcp-registry.js +859 -0
- package/dist/mcp-registry.js.map +1 -0
- package/dist/mcp.js +193 -0
- package/dist/mcp.js.map +1 -0
- package/dist/output.js +12 -0
- package/dist/output.js.map +1 -0
- package/dist/positioning.js +21 -0
- package/dist/positioning.js.map +1 -0
- package/dist/rolestore.js +89 -0
- package/dist/rolestore.js.map +1 -0
- package/dist/session.js +49 -0
- package/dist/session.js.map +1 -0
- package/dist/sessionstore.js +736 -0
- package/dist/sessionstore.js.map +1 -0
- package/dist/version-check.js +97 -0
- package/dist/version-check.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { resolveConfig } from "../config.js";
|
|
2
|
+
import { makeCtx, workspaceId, repoId } from "../client.js";
|
|
3
|
+
import { render } from "../output.js";
|
|
4
|
+
import { CodebusError } from "../errors.js";
|
|
5
|
+
/**
|
|
6
|
+
* codebus plan … — SP-A planning-layer CLI (fleet-v3 build/w2-sp-a-cli,
|
|
7
|
+
* lane 2 of docs/plans/fleet-v3/sp-a-planning-layer.md §A.3).
|
|
8
|
+
*
|
|
9
|
+
* Every verb below is a thin wrapper over an RPC defined in
|
|
10
|
+
* supabase/migrations/0049_plan_maps.sql (lane 1, frozen/merged — this file
|
|
11
|
+
* calls those exact RPCs and does not reinterpret their contracts). Plans
|
|
12
|
+
* and plan_tickets carry NO display_id column in 0049 (unlike tasks/
|
|
13
|
+
* questions/decisions, which get one from bus_counters, 0004) — every verb
|
|
14
|
+
* below therefore takes the raw plan/ticket UUID directly. There is no
|
|
15
|
+
* WORKSPACE-SCOPED display-id resolution step to perform here (the house
|
|
16
|
+
* rule in question.ts/task.ts applies to CB-TASK-/CB-Q- style ids, which
|
|
17
|
+
* simply don't exist for plans/tickets in the merged schema); `--msg` in
|
|
18
|
+
* `plan review record` is the one place a display id (CB-MSG-…) is
|
|
19
|
+
* threaded through, and it is passed verbatim to plan_review_record, which
|
|
20
|
+
* resolves it server-side, scoped to the plan's own workspace (0049's own
|
|
21
|
+
* fix for the cross-workspace display_id collision class).
|
|
22
|
+
*
|
|
23
|
+
* Every RPC error is surfaced verbatim via CodebusError(error.message) —
|
|
24
|
+
* 0049's typed error codes (unknown_repo, not_authorized_resolver,
|
|
25
|
+
* cursor_regression, …) reach the caller unmodified.
|
|
26
|
+
*/
|
|
27
|
+
// ─────────────────────────────────────────────────────────── plan lifecycle
|
|
28
|
+
export async function planCreateCore(ctx, opts) {
|
|
29
|
+
const ws = await workspaceId(ctx);
|
|
30
|
+
const { data, error } = await ctx.supabase.rpc("plan_create", {
|
|
31
|
+
p_workspace_id: ws,
|
|
32
|
+
p_title: opts.title,
|
|
33
|
+
p_destination: opts.destination,
|
|
34
|
+
p_stale_hours: opts.staleHours ?? 8,
|
|
35
|
+
p_is_drill: !!opts.drill,
|
|
36
|
+
p_spec_ref: opts.specRef ?? null,
|
|
37
|
+
});
|
|
38
|
+
if (error)
|
|
39
|
+
throw new CodebusError(error.message);
|
|
40
|
+
return { id: data };
|
|
41
|
+
}
|
|
42
|
+
export async function planAssignPlannerCore(ctx, planId, plannerSlug) {
|
|
43
|
+
const { error } = await ctx.supabase.rpc("plan_assign_planner", { p_plan_id: planId, p_planner_slug: plannerSlug });
|
|
44
|
+
if (error)
|
|
45
|
+
throw new CodebusError(error.message);
|
|
46
|
+
}
|
|
47
|
+
export async function planTransitionCore(ctx, planId, from, to, reason) {
|
|
48
|
+
const { data, error } = await ctx.supabase.rpc("plan_transition", {
|
|
49
|
+
p_plan_id: planId, p_expected_status: from, p_new_status: to, p_reason: reason ?? null,
|
|
50
|
+
});
|
|
51
|
+
if (error)
|
|
52
|
+
throw new CodebusError(error.message);
|
|
53
|
+
return { status: data };
|
|
54
|
+
}
|
|
55
|
+
// ────────────────────────────────────────────────────────────────── tickets
|
|
56
|
+
export async function planTicketChartCore(ctx, planId, opts) {
|
|
57
|
+
const ws = await workspaceId(ctx);
|
|
58
|
+
const repoIdVal = opts.repo ? await repoId(ctx, ws, opts.repo) : null;
|
|
59
|
+
const { data, error } = await ctx.supabase.rpc("plan_chart_ticket", {
|
|
60
|
+
p_plan_id: planId, p_type: opts.type, p_title: opts.title,
|
|
61
|
+
p_body: opts.body ?? null, p_repo_id: repoIdVal, p_dedupe_key: opts.dedupeKey ?? null,
|
|
62
|
+
});
|
|
63
|
+
if (error)
|
|
64
|
+
throw new CodebusError(error.message);
|
|
65
|
+
return { id: data };
|
|
66
|
+
}
|
|
67
|
+
export async function planTicketDispatchCore(ctx, ticketId, recipient) {
|
|
68
|
+
// Enqueue ONLY — 0049 grants plan_dispatch_claim/plan_dispatch_ack to
|
|
69
|
+
// `fleet_runner` alone (mirroring fleet_wake_claim/fleet_wake_ack; a
|
|
70
|
+
// deliberate BLOCKER-severity build-review fix in 0049 restricting a prior
|
|
71
|
+
// any-authenticated grant). The CLI authenticates as `authenticated`
|
|
72
|
+
// (never fleet_runner — there is no session mechanism that assumes a raw
|
|
73
|
+
// Postgres role), so it cannot itself claim+send the outbox row. See the
|
|
74
|
+
// final build report for this gap: nothing in this codebase currently
|
|
75
|
+
// drains plan_ticket_dispatches (no plan_drain() cron job analogous to
|
|
76
|
+
// 0047's fleet_drain()) — out of THIS lane's scope (chart/dispatch/
|
|
77
|
+
// resolve/cancel/reopen/edge/note/review/morning/show, not a drain verb).
|
|
78
|
+
const { data, error } = await ctx.supabase.rpc("plan_ticket_dispatch", {
|
|
79
|
+
p_ticket_id: ticketId, p_recipient_slug: recipient ?? null,
|
|
80
|
+
});
|
|
81
|
+
if (error)
|
|
82
|
+
throw new CodebusError(error.message);
|
|
83
|
+
return { dispatchId: data };
|
|
84
|
+
}
|
|
85
|
+
export async function planTicketResolveCore(ctx, ticketId, opts) {
|
|
86
|
+
const { error } = await ctx.supabase.rpc("plan_ticket_resolve", {
|
|
87
|
+
p_ticket_id: ticketId, p_result: opts.result, p_summary: opts.summary,
|
|
88
|
+
p_refs: opts.refs ?? [], p_dispatch_id: opts.dispatchId ?? null, p_owner_override: !!opts.ownerOverride,
|
|
89
|
+
});
|
|
90
|
+
if (error)
|
|
91
|
+
throw new CodebusError(error.message);
|
|
92
|
+
}
|
|
93
|
+
export async function planTicketCancelCore(ctx, ticketId, cascade) {
|
|
94
|
+
const { error } = await ctx.supabase.rpc("plan_ticket_cancel", { p_ticket_id: ticketId, p_cascade: cascade });
|
|
95
|
+
if (error)
|
|
96
|
+
throw new CodebusError(error.message);
|
|
97
|
+
}
|
|
98
|
+
export async function planTicketReopenCore(ctx, ticketId) {
|
|
99
|
+
const { error } = await ctx.supabase.rpc("plan_ticket_reopen", { p_ticket_id: ticketId });
|
|
100
|
+
if (error)
|
|
101
|
+
throw new CodebusError(error.message);
|
|
102
|
+
}
|
|
103
|
+
// ──────────────────────────────────────────────────────────── blocker edges
|
|
104
|
+
export async function planEdgeAddCore(ctx, ticketId, blockedByTicketId) {
|
|
105
|
+
const { error } = await ctx.supabase.rpc("plan_edge_add", {
|
|
106
|
+
p_ticket_id: ticketId, p_blocked_by_ticket_id: blockedByTicketId,
|
|
107
|
+
});
|
|
108
|
+
if (error)
|
|
109
|
+
throw new CodebusError(error.message);
|
|
110
|
+
}
|
|
111
|
+
export async function planEdgeRemoveCore(ctx, ticketId, blockedByTicketId) {
|
|
112
|
+
const { error } = await ctx.supabase.rpc("plan_edge_remove", {
|
|
113
|
+
p_ticket_id: ticketId, p_blocked_by_ticket_id: blockedByTicketId,
|
|
114
|
+
});
|
|
115
|
+
if (error)
|
|
116
|
+
throw new CodebusError(error.message);
|
|
117
|
+
}
|
|
118
|
+
// ───────────────────────────────────────────────────────────────────── note
|
|
119
|
+
export async function planNoteCore(ctx, planId, summary, ticketId, evidenceRef) {
|
|
120
|
+
const { error } = await ctx.supabase.rpc("plan_note", {
|
|
121
|
+
p_plan_id: planId, p_summary: summary, p_ticket_id: ticketId ?? null, p_evidence_ref: evidenceRef ?? null,
|
|
122
|
+
});
|
|
123
|
+
if (error)
|
|
124
|
+
throw new CodebusError(error.message);
|
|
125
|
+
}
|
|
126
|
+
// ───────────────────────────────────────────────────────────── review record
|
|
127
|
+
export async function planReviewRecordCore(ctx, planId, opts) {
|
|
128
|
+
const { error } = await ctx.supabase.rpc("plan_review_record", {
|
|
129
|
+
p_plan_id: planId, p_kind: opts.kind, p_verdict: opts.verdict,
|
|
130
|
+
p_bus_msg_display_id: opts.msg, p_loop_no: opts.loop,
|
|
131
|
+
});
|
|
132
|
+
if (error)
|
|
133
|
+
throw new CodebusError(error.message);
|
|
134
|
+
}
|
|
135
|
+
// Round-1 review (CB-MSG-005365) MAJOR finding 5: `plan show` used to run a
|
|
136
|
+
// single unbounded PostgREST select for tickets and events. PostgREST's
|
|
137
|
+
// `api.max_rows` (supabase/config.toml, 1000 by default) silently caps ANY
|
|
138
|
+
// single response at that many rows — a plan with more tickets/events than
|
|
139
|
+
// that would render an INCOMPLETE frontier/history while the command
|
|
140
|
+
// reported success, with no indication anything was missing. Fixed with a
|
|
141
|
+
// paged range loop (stable `order by id`, matching the ordering the view/
|
|
142
|
+
// table already guarantee) that keeps fetching full pages until a
|
|
143
|
+
// short page signals the end, capped at a sane hard maximum so a
|
|
144
|
+
// pathological plan can't loop unboundedly — the cap is reported via an
|
|
145
|
+
// explicit `truncated` flag rather than silently dropping rows.
|
|
146
|
+
const PLAN_SHOW_PAGE_SIZE = 1000; // matches config.toml's api.max_rows
|
|
147
|
+
const PLAN_SHOW_HARD_CAP = 10000; // sane upper bound on one `plan show` call
|
|
148
|
+
async function fetchAllPaged(page, pageSize, hardCap) {
|
|
149
|
+
const rows = [];
|
|
150
|
+
let from = 0;
|
|
151
|
+
for (;;) {
|
|
152
|
+
const { data, error } = await page(from, from + pageSize - 1);
|
|
153
|
+
if (error)
|
|
154
|
+
throw new CodebusError(error.message);
|
|
155
|
+
const batch = data ?? [];
|
|
156
|
+
rows.push(...batch);
|
|
157
|
+
if (batch.length < pageSize)
|
|
158
|
+
return { rows, truncated: false }; // short page = last page
|
|
159
|
+
if (rows.length >= hardCap) {
|
|
160
|
+
// Round-4 review MINOR finding (comment 3810828388): landing on
|
|
161
|
+
// hardCap exactly after a FULL page doesn't by itself prove more rows
|
|
162
|
+
// exist — the total could legitimately equal hardCap with nothing
|
|
163
|
+
// beyond it. Probe a single extra row past the cap to disambiguate
|
|
164
|
+
// rather than assuming worst-case at the boundary; this only costs one
|
|
165
|
+
// extra round-trip, and only when the cap is actually hit.
|
|
166
|
+
const { data: probe, error: probeErr } = await page(rows.length, rows.length);
|
|
167
|
+
if (probeErr)
|
|
168
|
+
throw new CodebusError(probeErr.message);
|
|
169
|
+
return { rows, truncated: (probe ?? []).length > 0 };
|
|
170
|
+
}
|
|
171
|
+
from += pageSize;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Frontier view (§A.2.2): reads `plan_ticket_states`, which carries a
|
|
176
|
+
* `derived_state` column (frontier/fog/dispatched/resolved/cancelled) —
|
|
177
|
+
* nothing here recomputes frontier client-side; the view IS the source.
|
|
178
|
+
* `pageSize`/`hardCap` are exposed only for tests to exercise the paging
|
|
179
|
+
* loop without provisioning thousands of real rows; the CLI itself always
|
|
180
|
+
* uses the real defaults above.
|
|
181
|
+
*/
|
|
182
|
+
export async function planShowCore(ctx, planId, opts = {}) {
|
|
183
|
+
const pageSize = opts.pageSize ?? PLAN_SHOW_PAGE_SIZE;
|
|
184
|
+
const hardCap = opts.hardCap ?? PLAN_SHOW_HARD_CAP;
|
|
185
|
+
const { data: plan, error: planErr } = await ctx.supabase.from("plans").select("*").eq("id", planId).single();
|
|
186
|
+
if (planErr || !plan)
|
|
187
|
+
throw new CodebusError(`plan not found (or not visible to you): ${planId}`);
|
|
188
|
+
const ticketsResult = await fetchAllPaged((from, to) => ctx.supabase
|
|
189
|
+
.from("plan_ticket_states")
|
|
190
|
+
.select("id, type, title, status, derived_state, repo_id, assigned_agent, resolution_summary")
|
|
191
|
+
.eq("plan_id", planId).order("id").range(from, to), pageSize, hardCap);
|
|
192
|
+
const eventsResult = await fetchAllPaged((from, to) => ctx.supabase
|
|
193
|
+
.from("plan_events")
|
|
194
|
+
.select("id, event_type, actor_agent_id, summary, created_at")
|
|
195
|
+
.eq("plan_id", planId).order("id").range(from, to), pageSize, hardCap);
|
|
196
|
+
return {
|
|
197
|
+
plan: plan,
|
|
198
|
+
tickets: ticketsResult.rows, ticketsTruncated: ticketsResult.truncated,
|
|
199
|
+
events: eventsResult.rows, eventsTruncated: eventsResult.truncated,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export async function planRollupCore(ctx, planId) {
|
|
203
|
+
const ws = await workspaceId(ctx);
|
|
204
|
+
const { data, error } = await ctx.supabase.rpc("bus_plan_status", {
|
|
205
|
+
p_workspace_id: ws,
|
|
206
|
+
p_plan_id: planId ?? null,
|
|
207
|
+
});
|
|
208
|
+
if (error)
|
|
209
|
+
throw new CodebusError(error.message);
|
|
210
|
+
return data;
|
|
211
|
+
}
|
|
212
|
+
export async function planDeliveryCore(ctx, opts = {}) {
|
|
213
|
+
const ws = await workspaceId(ctx);
|
|
214
|
+
const { data, error } = await ctx.supabase.rpc("bus_delivery_status", {
|
|
215
|
+
p_workspace_id: ws,
|
|
216
|
+
p_cursor: opts.cursor ?? null,
|
|
217
|
+
p_limit: opts.limit ?? 50,
|
|
218
|
+
});
|
|
219
|
+
if (error)
|
|
220
|
+
throw new CodebusError(error.message);
|
|
221
|
+
return data;
|
|
222
|
+
}
|
|
223
|
+
// Flat summary rows for `plan rollup`'s human (non-JSON) table — the full
|
|
224
|
+
// nested rollup (pr_pipeline, jira_coverage, environments, green2_basis, …)
|
|
225
|
+
// is only sensibly consumed via --json; this mirrors dash_v1's own
|
|
226
|
+
// JSON-only posture while still giving a plain-text glance for interactive
|
|
227
|
+
// use. bus_plan_status items only — see flattenDeliveryItem below for
|
|
228
|
+
// bus_delivery_status, which carries a DIFFERENT shape (no health/
|
|
229
|
+
// ticket_counts/jira_coverage; environments + quality instead).
|
|
230
|
+
// Exported (Sol/CI coverage-gate finding, PR #54): purely so
|
|
231
|
+
// test/unit/plan-flatten.test.ts can call these directly, in-process,
|
|
232
|
+
// with fabricated item shapes that force EVERY internal branch/callback —
|
|
233
|
+
// including the two map() callbacks inside flattenDeliveryItem below — to
|
|
234
|
+
// actually run. Relying only on the integration suite's subprocess CLI
|
|
235
|
+
// calls left those two callbacks permanently uncovered: the only delivery
|
|
236
|
+
// fixture that exercises the human-render path (plan.test.ts) is a bare,
|
|
237
|
+
// freshly-created plan with empty `environments`/`quality` arrays, so
|
|
238
|
+
// `envs.map(...)`/`quality.map(...)` never fired their callbacks — dragging
|
|
239
|
+
// plan.ts's function coverage (and the whole-project aggregate) under the
|
|
240
|
+
// coverage gate's 90% threshold. No behavior change; export-only.
|
|
241
|
+
export function flattenStatusItem(item) {
|
|
242
|
+
const tg = (item.three_greens ?? {});
|
|
243
|
+
const tc = (item.ticket_counts ?? {});
|
|
244
|
+
const jc = item.jira_coverage;
|
|
245
|
+
return {
|
|
246
|
+
id: item.id, title: item.title, status: item.status, health: item.health,
|
|
247
|
+
spec_approved: tg.spec_approved, repo_prs_merged: tg.repo_prs_merged, plan_done: tg.plan_done,
|
|
248
|
+
tickets_total: tc.total, jira_coverage_pct: jc ? jc.coverage_pct : null,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// Review fix (Sol round-4, MINOR): `plan delivery` used to reuse
|
|
252
|
+
// flattenStatusItem above, which reads bus_plan_status's OWN fields
|
|
253
|
+
// (health, ticket_counts, jira_coverage) — none of which exist on a
|
|
254
|
+
// bus_delivery_status item, so the human table rendered three permanently
|
|
255
|
+
// blank columns while silently dropping the two fields delivery items
|
|
256
|
+
// actually carry (environments, quality). This is delivery's own
|
|
257
|
+
// flattener: shared identity fields plus its actual legs.
|
|
258
|
+
// `environments` is null (leg unavailable, schema-not-landed — see
|
|
259
|
+
// 0069_status_rollups.sql's F1 fix), '[]' (available, genuinely none
|
|
260
|
+
// configured), or a populated array — rendered as a distinct string in
|
|
261
|
+
// each case so "unavailable" is never confused with "none". `quality` is
|
|
262
|
+
// always an array (one entry per repo the plan's tickets touch, graph_status
|
|
263
|
+
// forwarded verbatim) — summarized here as a repo-slug list, full detail
|
|
264
|
+
// only via --json.
|
|
265
|
+
export function flattenDeliveryItem(item) {
|
|
266
|
+
const tg = (item.three_greens ?? {});
|
|
267
|
+
const envs = item.environments;
|
|
268
|
+
const environmentsSummary = envs === null || envs === undefined
|
|
269
|
+
? "(unavailable)"
|
|
270
|
+
: Array.isArray(envs) && envs.length === 0
|
|
271
|
+
? "(none)"
|
|
272
|
+
: Array.isArray(envs)
|
|
273
|
+
? envs.map((e) => e.environment_name).join(",")
|
|
274
|
+
: "(unavailable)";
|
|
275
|
+
const quality = Array.isArray(item.quality) ? item.quality : [];
|
|
276
|
+
return {
|
|
277
|
+
id: item.id, title: item.title, status: item.status,
|
|
278
|
+
repo_prs_merged: tg.repo_prs_merged,
|
|
279
|
+
environments: environmentsSummary,
|
|
280
|
+
quality_repos: quality.map((q) => q.repo_slug).join(",") || "(none)",
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
function renderPlanShowHuman(r) {
|
|
284
|
+
const p = r.plan;
|
|
285
|
+
const lines = [];
|
|
286
|
+
lines.push(`plan ${p.id} — ${p.title}`);
|
|
287
|
+
lines.push(` status=${p.status} owner=${p.owner_agent_id} planner=${p.planner_agent_id ?? "(none)"} stale_hours=${p.stale_hours}`);
|
|
288
|
+
lines.push(` destination: ${p.destination}`);
|
|
289
|
+
if (p.spec_ref)
|
|
290
|
+
lines.push(` spec_ref: ${p.spec_ref}`);
|
|
291
|
+
lines.push("");
|
|
292
|
+
lines.push(`tickets (frontier view)${r.ticketsTruncated ? " — TRUNCATED, more rows exist" : ""}:`);
|
|
293
|
+
lines.push(render(r.tickets.map((t) => ({ id: t.id, type: t.type, state: t.derived_state, title: t.title })), { json: false }));
|
|
294
|
+
lines.push("");
|
|
295
|
+
lines.push(`events${r.eventsTruncated ? " — TRUNCATED, more rows exist" : ""}:`);
|
|
296
|
+
lines.push(render(r.events.map((e) => ({ id: e.id, type: e.event_type, actor: e.actor_agent_id, summary: e.summary })), { json: false }));
|
|
297
|
+
return lines.join("\n");
|
|
298
|
+
}
|
|
299
|
+
// ───────────────────────────────────────────────────────────── registration
|
|
300
|
+
export function registerPlan(program, g) {
|
|
301
|
+
const plan = program.command("plan").description("planning layer: plan maps, tickets, frontier (SP-A)");
|
|
302
|
+
g(plan.command("create"))
|
|
303
|
+
.requiredOption("--title <t>")
|
|
304
|
+
.requiredOption("--destination <d>", "what this plan produces")
|
|
305
|
+
.option("--stale-hours <n>", "hours before an in-flight dispatch counts as a morning exception", "8")
|
|
306
|
+
.option("--drill", "mark as a drill plan (excluded from morning unless --include-drills)")
|
|
307
|
+
.option("--spec-ref <ref>", "spec doc ref — required later to leave 'charting' via `plan transition` "
|
|
308
|
+
+ "(0049 has no separate RPC to set spec_ref after creation; there is no `to-spec` verb in this lane)")
|
|
309
|
+
.action(async (o) => {
|
|
310
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
311
|
+
const { id } = await planCreateCore(ctx, {
|
|
312
|
+
title: o.title, destination: o.destination, staleHours: Number(o.staleHours),
|
|
313
|
+
drill: !!o.drill, specRef: o.specRef,
|
|
314
|
+
});
|
|
315
|
+
console.log(render([{ id, title: o.title, status: "charting" }], { json: !!o.json }));
|
|
316
|
+
});
|
|
317
|
+
g(plan.command("assign-planner").argument("<plan>"))
|
|
318
|
+
.requiredOption("--planner <slug>", "must be an agent with function_role=planner")
|
|
319
|
+
.action(async (planId, o) => {
|
|
320
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
321
|
+
await planAssignPlannerCore(ctx, planId, o.planner);
|
|
322
|
+
console.log(render([{ plan_id: planId, planner: o.planner }], { json: !!o.json }));
|
|
323
|
+
});
|
|
324
|
+
g(plan.command("transition").argument("<plan>"))
|
|
325
|
+
.requiredOption("--from <status>", "expected current status (optimistic concurrency)")
|
|
326
|
+
.requiredOption("--to <status>")
|
|
327
|
+
.option("--reason <text>", "required when --to abandoned")
|
|
328
|
+
.action(async (planId, o) => {
|
|
329
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
330
|
+
const result = await planTransitionCore(ctx, planId, o.from, o.to, o.reason);
|
|
331
|
+
console.log(render([{ plan_id: planId, status: result.status }], { json: !!o.json }));
|
|
332
|
+
});
|
|
333
|
+
const ticket = plan.command("ticket").description("plan ticket operations (chart/dispatch/resolve/cancel/reopen)");
|
|
334
|
+
g(ticket.command("chart").argument("<plan>"))
|
|
335
|
+
.requiredOption("--type <t>", "research|prototype|grill|task|decision")
|
|
336
|
+
.requiredOption("--title <t>")
|
|
337
|
+
.option("--body <b>")
|
|
338
|
+
.option("--repo <slug>", "workspace repo slug — required later to dispatch a prototype/task ticket")
|
|
339
|
+
.option("--dedupe-key <key>", "idempotent creation key, unique per plan")
|
|
340
|
+
.action(async (planId, o) => {
|
|
341
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
342
|
+
const { id } = await planTicketChartCore(ctx, planId, {
|
|
343
|
+
type: o.type, title: o.title, body: o.body, repo: o.repo, dedupeKey: o.dedupeKey,
|
|
344
|
+
});
|
|
345
|
+
console.log(render([{ id, plan_id: planId, type: o.type, title: o.title }], { json: !!o.json }));
|
|
346
|
+
});
|
|
347
|
+
g(ticket.command("dispatch").argument("<ticket>"))
|
|
348
|
+
.option("--to <slug>", "explicit recipient (omit for pre-Phase-E plan_repo_charters auto-selection on repo tickets)")
|
|
349
|
+
.action(async (ticketId, o) => {
|
|
350
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
351
|
+
const { dispatchId } = await planTicketDispatchCore(ctx, ticketId, o.to);
|
|
352
|
+
console.log(render([{ ticket_id: ticketId, dispatch_id: dispatchId }], { json: !!o.json }));
|
|
353
|
+
});
|
|
354
|
+
g(ticket.command("resolve").argument("<ticket>"))
|
|
355
|
+
.requiredOption("--result <r>", "resolved|rejected")
|
|
356
|
+
.requiredOption("--summary <s>")
|
|
357
|
+
.option("--ref <refs>", "comma-separated evidence refs (msg:.../issue:.../pr:.../dec:.../event:...)")
|
|
358
|
+
.option("--dispatch <id>", "the ticket's CURRENT active dispatch id (required if dispatched, unless --owner-override)")
|
|
359
|
+
.option("--owner-override", "owner appeal path — owner-only, may omit --dispatch but never supply a wrong one")
|
|
360
|
+
.action(async (ticketId, o) => {
|
|
361
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
362
|
+
const refs = o.ref ? String(o.ref).split(",").map((s) => s.trim()).filter(Boolean) : [];
|
|
363
|
+
await planTicketResolveCore(ctx, ticketId, {
|
|
364
|
+
result: o.result, summary: o.summary, refs,
|
|
365
|
+
dispatchId: o.dispatch !== undefined ? Number(o.dispatch) : undefined,
|
|
366
|
+
ownerOverride: !!o.ownerOverride,
|
|
367
|
+
});
|
|
368
|
+
console.log(render([{ ticket_id: ticketId, result: o.result }], { json: !!o.json }));
|
|
369
|
+
});
|
|
370
|
+
g(ticket.command("cancel").argument("<ticket>"))
|
|
371
|
+
.requiredOption("--cascade <c>", "unblock|cancel — no default, an explicit choice is required (§A.2.2)")
|
|
372
|
+
.action(async (ticketId, o) => {
|
|
373
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
374
|
+
await planTicketCancelCore(ctx, ticketId, o.cascade);
|
|
375
|
+
console.log(render([{ ticket_id: ticketId, status: "cancelled", cascade: o.cascade }], { json: !!o.json }));
|
|
376
|
+
});
|
|
377
|
+
g(ticket.command("reopen").argument("<ticket>"))
|
|
378
|
+
.action(async (ticketId, o) => {
|
|
379
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
380
|
+
await planTicketReopenCore(ctx, ticketId);
|
|
381
|
+
console.log(render([{ ticket_id: ticketId, status: "open" }], { json: !!o.json }));
|
|
382
|
+
});
|
|
383
|
+
const edge = plan.command("edge").description("blocker edges between tickets in the same plan");
|
|
384
|
+
g(edge.command("add").argument("<ticket>"))
|
|
385
|
+
.requiredOption("--blocked-by <ticket>", "the blocking ticket — <ticket> stays fog until this resolves")
|
|
386
|
+
.action(async (ticketId, o) => {
|
|
387
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
388
|
+
await planEdgeAddCore(ctx, ticketId, o.blockedBy);
|
|
389
|
+
console.log(render([{ ticket_id: ticketId, blocked_by: o.blockedBy }], { json: !!o.json }));
|
|
390
|
+
});
|
|
391
|
+
g(edge.command("remove").argument("<ticket>"))
|
|
392
|
+
.requiredOption("--blocked-by <ticket>")
|
|
393
|
+
.action(async (ticketId, o) => {
|
|
394
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
395
|
+
await planEdgeRemoveCore(ctx, ticketId, o.blockedBy);
|
|
396
|
+
console.log(render([{ ticket_id: ticketId, unblocked_from: o.blockedBy }], { json: !!o.json }));
|
|
397
|
+
});
|
|
398
|
+
g(plan.command("note").argument("<plan>"))
|
|
399
|
+
.requiredOption("--summary <s>")
|
|
400
|
+
.option("--ticket <id>", "attach the note to a ticket in this plan")
|
|
401
|
+
.option("--ref <ref>", "a single evidence ref (msg:/issue:/pr:/dec:/event:)")
|
|
402
|
+
.action(async (planId, o) => {
|
|
403
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
404
|
+
await planNoteCore(ctx, planId, o.summary, o.ticket, o.ref);
|
|
405
|
+
console.log(render([{ plan_id: planId, note: o.summary }], { json: !!o.json }));
|
|
406
|
+
});
|
|
407
|
+
const review = plan.command("review").description("plan review records (green-1/green-3, §A.2.13)");
|
|
408
|
+
g(review.command("record").argument("<plan>"))
|
|
409
|
+
.requiredOption("--kind <k>", "plan_review|verification")
|
|
410
|
+
.requiredOption("--verdict <v>", "approve|revise")
|
|
411
|
+
.requiredOption("--msg <displayId>", "CB-MSG-… the review verdict was posted in — reviewer_agent_id is derived server-side from its sender")
|
|
412
|
+
.requiredOption("--loop <n>", "review loop number")
|
|
413
|
+
.action(async (planId, o) => {
|
|
414
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
415
|
+
await planReviewRecordCore(ctx, planId, { kind: o.kind, verdict: o.verdict, msg: o.msg, loop: Number(o.loop) });
|
|
416
|
+
console.log(render([{ plan_id: planId, kind: o.kind, verdict: o.verdict, loop: Number(o.loop) }], { json: !!o.json }));
|
|
417
|
+
});
|
|
418
|
+
async function showPlan(planId, o) {
|
|
419
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
420
|
+
const result = await planShowCore(ctx, planId);
|
|
421
|
+
if (o.json) {
|
|
422
|
+
console.log(JSON.stringify(result, null, 2));
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
console.log(renderPlanShowHuman(result));
|
|
426
|
+
}
|
|
427
|
+
g(plan.command("show").argument("<plan>")).action(showPlan);
|
|
428
|
+
// Compatibility restored (Sol round-1, F3/MAJOR + coordinator ruling):
|
|
429
|
+
// `plan status <plan>` is EXACTLY the pre-0069 alias again — same
|
|
430
|
+
// required argument, same handler (`showPlan`, the frontier view via
|
|
431
|
+
// planShowCore) — no output-shape change for any existing caller. The
|
|
432
|
+
// new bus_plan_status rollup lives at `plan rollup` instead (below), a
|
|
433
|
+
// brand new verb with no compatibility surface to protect.
|
|
434
|
+
g(plan.command("status").argument("<plan>")).action(showPlan); // alias — same frontier view
|
|
435
|
+
g(plan.command("rollup").argument("[plan]"))
|
|
436
|
+
.action(async (planId, o) => {
|
|
437
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
438
|
+
const result = await planRollupCore(ctx, planId);
|
|
439
|
+
if (o.json) {
|
|
440
|
+
console.log(JSON.stringify(result, null, 2));
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
console.log(render(result.items.map(flattenStatusItem), { json: false }));
|
|
444
|
+
if (result.degraded.length > 0)
|
|
445
|
+
console.log(`\ndegraded: ${result.degraded.join(", ")}`);
|
|
446
|
+
});
|
|
447
|
+
g(plan.command("delivery"))
|
|
448
|
+
.option("--cursor <c>", "pagination cursor from a previous call's next_cursor")
|
|
449
|
+
.option("--limit <n>", "page size (default 50, hard-capped at 100)")
|
|
450
|
+
.action(async (o) => {
|
|
451
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
452
|
+
const result = await planDeliveryCore(ctx, { cursor: o.cursor, limit: o.limit ? Number(o.limit) : undefined });
|
|
453
|
+
if (o.json) {
|
|
454
|
+
console.log(JSON.stringify(result, null, 2));
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
console.log(render(result.items.map(flattenDeliveryItem), { json: false }));
|
|
458
|
+
if (result.next_cursor)
|
|
459
|
+
console.log(`\nnext_cursor: ${result.next_cursor}`);
|
|
460
|
+
if (result.degraded.length > 0)
|
|
461
|
+
console.log(`\ndegraded: ${result.degraded.join(", ")}`);
|
|
462
|
+
});
|
|
463
|
+
return plan;
|
|
464
|
+
}
|
|
465
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { resolveConfig } from "../config.js";
|
|
2
|
+
import { makeCtx, workspaceId, repoId } from "../client.js";
|
|
3
|
+
import { render } from "../output.js";
|
|
4
|
+
import { CodebusError } from "../errors.js";
|
|
5
|
+
async function resolvePrId(ctx, ws, idOrDisplay) {
|
|
6
|
+
if (/^CB-PR-/i.test(idOrDisplay)) {
|
|
7
|
+
// display ids are only unique per workspace — always scope the lookup
|
|
8
|
+
const { data, error } = await ctx.supabase.from("pull_requests").select("id")
|
|
9
|
+
.eq("workspace_id", ws).eq("display_id", idOrDisplay.toUpperCase()).single();
|
|
10
|
+
if (error || !data)
|
|
11
|
+
throw new CodebusError(`PR not found: ${idOrDisplay}`);
|
|
12
|
+
return data.id;
|
|
13
|
+
}
|
|
14
|
+
return idOrDisplay;
|
|
15
|
+
}
|
|
16
|
+
async function createPr(o) {
|
|
17
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
18
|
+
const ws = await workspaceId(ctx);
|
|
19
|
+
const rid = await repoId(ctx, ws, o.repo);
|
|
20
|
+
if (!rid)
|
|
21
|
+
throw new CodebusError(`unknown repo: ${o.repo}`);
|
|
22
|
+
let taskId = null;
|
|
23
|
+
if (o.task) {
|
|
24
|
+
const { data } = await ctx.supabase.from("tasks").select("id")
|
|
25
|
+
.eq("workspace_id", ws).eq("display_id", o.task.toUpperCase()).single();
|
|
26
|
+
if (!data)
|
|
27
|
+
throw new CodebusError(`task not found: ${o.task}`);
|
|
28
|
+
taskId = data.id;
|
|
29
|
+
}
|
|
30
|
+
const { data, error } = await ctx.supabase.from("pull_requests")
|
|
31
|
+
.insert({
|
|
32
|
+
workspace_id: ws, repo_id: rid, task_id: taskId,
|
|
33
|
+
branch: o.branch ?? null, url: o.prUrl ?? null,
|
|
34
|
+
number: o.number ? parseInt(o.number, 10) : null,
|
|
35
|
+
...(o.status ? { status: o.status } : {}),
|
|
36
|
+
}).select().single();
|
|
37
|
+
if (error)
|
|
38
|
+
throw new CodebusError(error.message);
|
|
39
|
+
console.log(render([{ display_id: data.display_id, status: data.status, repo: o.repo, branch: data.branch }], { json: !!o.json }));
|
|
40
|
+
}
|
|
41
|
+
async function listPrs(o) {
|
|
42
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
43
|
+
const ws = await workspaceId(ctx);
|
|
44
|
+
let q = ctx.supabase.from("pull_requests")
|
|
45
|
+
.select("display_id, status, branch, url, number, repos:repo_id(slug), tasks:task_id(display_id)")
|
|
46
|
+
.eq("workspace_id", ws).order("created_at", { ascending: false });
|
|
47
|
+
if (o.status)
|
|
48
|
+
q = q.eq("status", o.status);
|
|
49
|
+
if (o.repo) {
|
|
50
|
+
const rid = await repoId(ctx, ws, o.repo);
|
|
51
|
+
q = q.eq("repo_id", rid);
|
|
52
|
+
}
|
|
53
|
+
const { data, error } = await q;
|
|
54
|
+
if (error)
|
|
55
|
+
throw new CodebusError(error.message);
|
|
56
|
+
const rows = (data ?? []).map((r) => ({
|
|
57
|
+
id: r.display_id, status: r.status, repo: r.repos?.slug,
|
|
58
|
+
branch: r.branch, task: r.tasks?.display_id, url: r.url,
|
|
59
|
+
}));
|
|
60
|
+
console.log(render(rows, { json: !!o.json }));
|
|
61
|
+
}
|
|
62
|
+
async function updatePr(idOrDisplay, o) {
|
|
63
|
+
const ctx = await makeCtx(resolveConfig(o));
|
|
64
|
+
const ws = await workspaceId(ctx);
|
|
65
|
+
const id = await resolvePrId(ctx, ws, idOrDisplay);
|
|
66
|
+
const patch = { updated_at: new Date().toISOString() };
|
|
67
|
+
if (o.status)
|
|
68
|
+
patch.status = o.status;
|
|
69
|
+
if (o.prUrl)
|
|
70
|
+
patch.url = o.prUrl;
|
|
71
|
+
if (o.branch)
|
|
72
|
+
patch.branch = o.branch;
|
|
73
|
+
const { data, error } = await ctx.supabase.from("pull_requests").update(patch).eq("id", id).select().single();
|
|
74
|
+
if (error)
|
|
75
|
+
throw new CodebusError(error.message);
|
|
76
|
+
console.log(render([{ display_id: data.display_id, status: data.status, url: data.url }], { json: !!o.json }));
|
|
77
|
+
}
|
|
78
|
+
export function registerPr(program, g) {
|
|
79
|
+
const pr = program.command("pr").description("pull requests (CB-PR)");
|
|
80
|
+
g(pr.command("create")).requiredOption("--repo <slug>")
|
|
81
|
+
.option("--task <CB-TASK-id>").option("--branch <name>").option("--pr-url <url>", "external PR/MR URL")
|
|
82
|
+
.option("--number <n>").option("--status <s>", "draft|open|review_requested|approved|merged|closed")
|
|
83
|
+
.action(createPr);
|
|
84
|
+
g(pr.command("list")).option("--repo <slug>").option("--status <s>").action(listPrs);
|
|
85
|
+
g(pr.command("update").argument("<id>", "CB-PR-… or uuid"))
|
|
86
|
+
.option("--status <s>").option("--pr-url <url>", "external PR/MR URL").option("--branch <name>").action(updatePr);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|