@bragi-gmbh/codebus 1.4.0 → 1.6.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/dist/ci-hooks/ci-hooks.js +126 -0
- package/dist/ci-hooks/ci-hooks.js.map +1 -0
- package/dist/commands/agent.js +137 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/as.js +1 -1
- package/dist/commands/as.js.map +1 -1
- package/dist/commands/ask.js +1 -1
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/ci-findings.js +129 -0
- package/dist/commands/ci-findings.js.map +1 -0
- package/dist/commands/ci-reply.js +117 -0
- package/dist/commands/ci-reply.js.map +1 -0
- package/dist/commands/ci-steer-escalate.js +65 -0
- package/dist/commands/ci-steer-escalate.js.map +1 -0
- package/dist/commands/cli-mcp-correlation.js +131 -0
- package/dist/commands/cli-mcp-correlation.js.map +1 -0
- package/dist/commands/connector-attach-detach.js +542 -0
- package/dist/commands/connector-attach-detach.js.map +1 -0
- package/dist/commands/connector.js +513 -0
- package/dist/commands/connector.js.map +1 -0
- package/dist/commands/correlation.js +194 -0
- package/dist/commands/correlation.js.map +1 -0
- package/dist/commands/decision.js +63 -0
- package/dist/commands/decision.js.map +1 -1
- package/dist/commands/digest.js +14 -3
- package/dist/commands/digest.js.map +1 -1
- package/dist/commands/do.js +127 -0
- package/dist/commands/do.js.map +1 -0
- package/dist/commands/factory-attention.js +106 -0
- package/dist/commands/factory-attention.js.map +1 -0
- package/dist/commands/factory-context-read.js +171 -0
- package/dist/commands/factory-context-read.js.map +1 -0
- package/dist/commands/factory-interventions.js +102 -0
- package/dist/commands/factory-interventions.js.map +1 -0
- package/dist/commands/factory.js +187 -0
- package/dist/commands/factory.js.map +1 -1
- package/dist/commands/graph-pull.js +130 -0
- package/dist/commands/graph-pull.js.map +1 -0
- package/dist/commands/graph.js +5 -1
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/inbox.js +7 -7
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/ingest.js +1 -1
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/install.js +1160 -55
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/integration-ledger.js +81 -0
- package/dist/commands/integration-ledger.js.map +1 -0
- package/dist/commands/knowledge.js +178 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/links.js +1 -1
- package/dist/commands/links.js.map +1 -1
- package/dist/commands/morning.js +50 -1
- package/dist/commands/morning.js.map +1 -1
- package/dist/commands/plan-compiler.js +260 -0
- package/dist/commands/plan-compiler.js.map +1 -0
- package/dist/commands/plan-lint.js +275 -0
- package/dist/commands/plan-lint.js.map +1 -0
- package/dist/commands/plan-score.js +203 -0
- package/dist/commands/plan-score.js.map +1 -0
- package/dist/commands/plan.js +481 -15
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/product-validity.js +168 -0
- package/dist/commands/product-validity.js.map +1 -0
- package/dist/commands/question.js +1 -1
- package/dist/commands/question.js.map +1 -1
- package/dist/commands/read-policy.js +131 -0
- package/dist/commands/read-policy.js.map +1 -0
- package/dist/commands/read.js +1 -1
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/repo.js +106 -8
- package/dist/commands/repo.js.map +1 -1
- package/dist/commands/repository-protection.js +209 -0
- package/dist/commands/repository-protection.js.map +1 -0
- package/dist/commands/resolve.js +2 -2
- package/dist/commands/resolve.js.map +1 -1
- package/dist/commands/self-healing.js +26 -0
- package/dist/commands/self-healing.js.map +1 -0
- package/dist/commands/send.js +1 -1
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/serial-merge.js +303 -0
- package/dist/commands/serial-merge.js.map +1 -0
- package/dist/commands/session.js +1 -1
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/task.js +92 -1
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/verify.js +77 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/config/self-healing-analysis.json +158 -0
- package/dist/errors.js +18 -4
- package/dist/errors.js.map +1 -1
- package/dist/execution/client.js +53 -0
- package/dist/execution/client.js.map +1 -0
- package/dist/execution/local.js +24 -0
- package/dist/execution/local.js.map +1 -0
- package/dist/execution/ssh.js +38 -0
- package/dist/execution/ssh.js.map +1 -0
- package/dist/graph.js +78 -16
- package/dist/graph.js.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/json-lite.js +248 -0
- package/dist/json-lite.js.map +1 -0
- package/dist/knowledge-drift.js +40 -0
- package/dist/knowledge-drift.js.map +1 -0
- package/dist/lint/parallelism.js +414 -0
- package/dist/lint/parallelism.js.map +1 -0
- package/dist/mail-latency.js +11 -1
- package/dist/mail-latency.js.map +1 -1
- package/dist/mcp-ci-findings.js +31 -0
- package/dist/mcp-ci-findings.js.map +1 -0
- package/dist/mcp-correlation.js +290 -0
- package/dist/mcp-correlation.js.map +1 -0
- package/dist/mcp-factory-context-read.js +81 -0
- package/dist/mcp-factory-context-read.js.map +1 -0
- package/dist/mcp-registry.js +128 -1
- package/dist/mcp-registry.js.map +1 -1
- package/dist/mcp.js +94 -5
- package/dist/mcp.js.map +1 -1
- package/dist/openrouter-reservation-guard.js +97 -0
- package/dist/openrouter-reservation-guard.js.map +1 -0
- package/dist/self-healing-analysis-loader.js +150 -0
- package/dist/self-healing-analysis-loader.js.map +1 -0
- package/dist/sender.js +11 -9
- package/dist/sender.js.map +1 -1
- package/dist/toml-lite.js +546 -0
- package/dist/toml-lite.js.map +1 -0
- package/dist/version-check.js +23 -7
- package/dist/version-check.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { CodebusError } from "../errors.js";
|
|
2
|
+
import { makeCtx, workspaceId } from "../client.js";
|
|
3
|
+
import { resolveConfig } from "../config.js";
|
|
4
|
+
// Twelve triage categories from ADR-0007.
|
|
5
|
+
export const PLAN_SCORE_CATEGORIES = [
|
|
6
|
+
"architecture",
|
|
7
|
+
"cost-bounds",
|
|
8
|
+
"requirements-clarity",
|
|
9
|
+
"risk-assessment",
|
|
10
|
+
"team-capacity",
|
|
11
|
+
"schedule-realism",
|
|
12
|
+
"scope-ambiguity",
|
|
13
|
+
"specification-completeness",
|
|
14
|
+
"stakeholder-alignment",
|
|
15
|
+
"success-criteria",
|
|
16
|
+
"trade-offs",
|
|
17
|
+
"versioning-strategy",
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Compute twelve-category scores for a plan revision.
|
|
21
|
+
* This is a deterministic, context-aware scoring function that evaluates:
|
|
22
|
+
*
|
|
23
|
+
* - Architecture: design patterns, modularity, scalability
|
|
24
|
+
* - Cost-bounds: budget clarity, cost justification
|
|
25
|
+
* - Requirements-clarity: problem statement, acceptance criteria
|
|
26
|
+
* - Risk-assessment: identified risks, mitigation strategy
|
|
27
|
+
* - Team-capacity: skills, availability, team size
|
|
28
|
+
* - Schedule-realism: timeline, dependencies, padding
|
|
29
|
+
* - Scope-ambiguity: scope boundaries, change control
|
|
30
|
+
* - Specification-completeness: detail level, acceptance criteria
|
|
31
|
+
* - Stakeholder-alignment: approvals, buy-in, communication
|
|
32
|
+
* - Success-criteria: measurable outcomes, verification method
|
|
33
|
+
* - Trade-offs: alternatives considered, rationale
|
|
34
|
+
* - Versioning-strategy: versioning, deprecation, rollback
|
|
35
|
+
*
|
|
36
|
+
* Returns scores 0-5 per category based on plan quality indicators.
|
|
37
|
+
*/
|
|
38
|
+
export function computePlanScores(planDocument, reporterRole) {
|
|
39
|
+
const scores = {};
|
|
40
|
+
// Helper utilities.
|
|
41
|
+
const obj = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
42
|
+
const text = (value) => typeof value === "string" ? value : "";
|
|
43
|
+
const list = (value) => Array.isArray(value) ? value : [];
|
|
44
|
+
const num = (value) => typeof value === "number" ? value : 0;
|
|
45
|
+
const plan = obj(planDocument);
|
|
46
|
+
// 1. Architecture: multi-stage structure, clear role separation
|
|
47
|
+
const stages = list(plan.stages).map(obj);
|
|
48
|
+
const roles = obj(plan.roles);
|
|
49
|
+
const stageQuality = stages.length >= 3 ? 2 : stages.length > 0 ? 1 : 0;
|
|
50
|
+
const roleQuality = ["owner", "driver", "reviewer", "approver"].every(r => obj(roles[r]).id) ? 2 : 1;
|
|
51
|
+
scores.architecture = Math.min(5, 1 + stageQuality + roleQuality);
|
|
52
|
+
// 2. Cost-bounds: budget explicitly stated and reasonable
|
|
53
|
+
const budget = num(plan.budget_usd);
|
|
54
|
+
scores["cost-bounds"] = budget > 0 && budget <= 2000 ? 4.5 : budget > 0 ? 3.5 : 1;
|
|
55
|
+
// 3. Requirements-clarity: plan name, stage goals documented
|
|
56
|
+
const hasName = text(plan.name).length > 10;
|
|
57
|
+
const hasStageGoals = stages.some(s => text(s.goal).length > 10);
|
|
58
|
+
scores["requirements-clarity"] = (hasName ? 2.5 : 1) + (hasStageGoals ? 2 : 1);
|
|
59
|
+
// 4. Risk-assessment: irreversible tags declared, gates present
|
|
60
|
+
const hasIrreversible = stages.some(s => list(s.irreversible_tags).length > 0 || s.irreversible === true);
|
|
61
|
+
const hasHumanGates = stages.some(s => s.gate === "human");
|
|
62
|
+
scores["risk-assessment"] = (hasIrreversible ? 2 : 1) + (hasHumanGates ? 2 : 0);
|
|
63
|
+
// 5. Team-capacity: reviewer, executor roles assigned
|
|
64
|
+
const hasReviewer = !!text(obj(roles.reviewer).id);
|
|
65
|
+
const executors = list(roles.executor).filter(e => text(obj(e).id));
|
|
66
|
+
scores["team-capacity"] = (hasReviewer ? 2 : 1) + Math.min(2, executors.length);
|
|
67
|
+
// 6. Schedule-realism: stages have reasonable time bounds
|
|
68
|
+
const stageTimes = stages.map(s => num(s.max_minutes)).filter(m => m > 0);
|
|
69
|
+
const totalTime = stageTimes.reduce((a, b) => a + b, 0);
|
|
70
|
+
scores["schedule-realism"] = totalTime > 0 && totalTime <= 75 && stageTimes.length === stages.length ? 4.5 : 2;
|
|
71
|
+
// 7. Scope-ambiguity: allowed_paths declared, dependencies explicit
|
|
72
|
+
const hasPaths = stages.every(s => list(s.allowed_paths).length > 0);
|
|
73
|
+
const hasDeps = stages.some(s => list(s.depends_on).length > 0 || stages.length === 1);
|
|
74
|
+
scores["scope-ambiguity"] = (hasPaths ? 2 : 1) + (hasDeps ? 2.5 : 1.5);
|
|
75
|
+
// 8. Specification-completeness: each stage has done_when, metric, prompt_ref
|
|
76
|
+
const specComplete = stages.every(s => text(s.done_when).length > 10 && text(s.metric).length > 5 && text(s.prompt_ref).length > 0);
|
|
77
|
+
scores["specification-completeness"] = specComplete && stages.length > 0 ? 4.5 : stages.length > 0 ? 2 : 1;
|
|
78
|
+
// 9. Stakeholder-alignment: approver role clearly defined
|
|
79
|
+
const hasApprover = !!text(obj(roles.approver).id);
|
|
80
|
+
const approverKind = text(obj(roles.approver).kind);
|
|
81
|
+
scores["stakeholder-alignment"] = hasApprover && ["person", "agent"].includes(approverKind) ? 4 : 2;
|
|
82
|
+
// 10. Success-criteria: metric field present on each stage
|
|
83
|
+
const hasMetrics = stages.length > 0 && stages.every(s => text(s.metric).length > 0);
|
|
84
|
+
scores["success-criteria"] = hasMetrics ? 4.5 : stages.length > 0 ? 2 : 1;
|
|
85
|
+
// 11. Trade-offs: stages present dependencies indicating design decisions
|
|
86
|
+
const maxDepth = stages.length > 0 ? Math.max(...stages.map(s => list(s.depends_on).length)) : 0;
|
|
87
|
+
scores["trade-offs"] = 2 + (stages.length > 1 ? 1.5 : 0) + (maxDepth > 1 ? 1 : 0);
|
|
88
|
+
// 12. Versioning-strategy: document version or stage versioning evident
|
|
89
|
+
const hasVersion = text(plan.version).length > 0 || text(plan.revision).length > 0;
|
|
90
|
+
scores["versioning-strategy"] = hasVersion ? 4 : stages.length > 1 ? 3 : 2;
|
|
91
|
+
// Clamp all scores to 0–5 range.
|
|
92
|
+
for (const category of PLAN_SCORE_CATEGORIES) {
|
|
93
|
+
scores[category] = Math.max(0, Math.min(5, scores[category]));
|
|
94
|
+
}
|
|
95
|
+
return scores;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Submit a plan score report online to CodeBus.
|
|
99
|
+
* Resolves the plan by reference (UUID or display_id), validates the revision digest,
|
|
100
|
+
* computes scores, and records the report via the plan_score_report_record RPC.
|
|
101
|
+
*/
|
|
102
|
+
export async function scorePlanOnline(ctx, planRef, revisionDigest, reporterRole) {
|
|
103
|
+
const ws = await workspaceId(ctx);
|
|
104
|
+
const key = /^CB-PLAN-/i.test(planRef) ? "display_id" : "id";
|
|
105
|
+
// Resolve plan and verify digest.
|
|
106
|
+
const { data: plan, error: planError } = await ctx.supabase
|
|
107
|
+
.from("plan_list_v1")
|
|
108
|
+
.select("*")
|
|
109
|
+
.eq("workspace_id", ws)
|
|
110
|
+
.eq(key, key === "display_id" ? planRef.toUpperCase() : planRef)
|
|
111
|
+
.single();
|
|
112
|
+
if (planError || !plan || plan.revision_digest !== revisionDigest || !plan.latest_revision_id) {
|
|
113
|
+
return {
|
|
114
|
+
revision_id: "",
|
|
115
|
+
reporter_role: reporterRole,
|
|
116
|
+
scores: {},
|
|
117
|
+
mean_score: 0,
|
|
118
|
+
success: false,
|
|
119
|
+
error: "plan score requires the exact latest revision digest",
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// Fetch the plan revision document.
|
|
123
|
+
const { data: revision, error: revisionError } = await ctx.supabase
|
|
124
|
+
.from("plan_revisions")
|
|
125
|
+
.select("document")
|
|
126
|
+
.eq("id", plan.latest_revision_id)
|
|
127
|
+
.single();
|
|
128
|
+
if (revisionError || !revision?.document) {
|
|
129
|
+
return {
|
|
130
|
+
revision_id: plan.latest_revision_id,
|
|
131
|
+
reporter_role: reporterRole,
|
|
132
|
+
scores: {},
|
|
133
|
+
mean_score: 0,
|
|
134
|
+
success: false,
|
|
135
|
+
error: "plan revision source is unavailable",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Compute scores deterministically.
|
|
139
|
+
const scores = computePlanScores(revision.document, reporterRole);
|
|
140
|
+
const meanScore = PLAN_SCORE_CATEGORIES.reduce((sum, cat) => sum + scores[cat], 0) / PLAN_SCORE_CATEGORIES.length;
|
|
141
|
+
// Submit the score report.
|
|
142
|
+
const { data: report, error: reportError } = await ctx.supabase.rpc("plan_score_report_record", {
|
|
143
|
+
p_revision_id: plan.latest_revision_id,
|
|
144
|
+
p_revision_digest: revisionDigest,
|
|
145
|
+
p_reporter_role: reporterRole,
|
|
146
|
+
p_scores: scores,
|
|
147
|
+
p_report: {
|
|
148
|
+
ruleset: "ADR-0007",
|
|
149
|
+
categories_count: PLAN_SCORE_CATEGORIES.length,
|
|
150
|
+
computed_at: new Date().toISOString(),
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
if (reportError) {
|
|
154
|
+
return {
|
|
155
|
+
revision_id: plan.latest_revision_id,
|
|
156
|
+
reporter_role: reporterRole,
|
|
157
|
+
scores,
|
|
158
|
+
mean_score: meanScore,
|
|
159
|
+
success: false,
|
|
160
|
+
error: reportError.message,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
revision_id: plan.latest_revision_id,
|
|
165
|
+
reporter_role: reporterRole,
|
|
166
|
+
scores,
|
|
167
|
+
mean_score: meanScore,
|
|
168
|
+
success: true,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function registerPlanScore(plan) {
|
|
172
|
+
plan
|
|
173
|
+
.command("score")
|
|
174
|
+
.argument("<plan-ref>", "plan UUID or display_id (CB-PLAN-XXXX)")
|
|
175
|
+
.argument("<revision-digest>", "exact immutable revision SHA256 digest")
|
|
176
|
+
.argument("<reporter-role>", "scoring role: reason, research, or executor")
|
|
177
|
+
.option("--json", "JSON output")
|
|
178
|
+
.action(async (planRef, revisionDigest, reporterRole, options, command) => {
|
|
179
|
+
if (!["reason", "research", "executor"].includes(reporterRole)) {
|
|
180
|
+
throw new CodebusError("reporter-role must be one of: reason, research, executor");
|
|
181
|
+
}
|
|
182
|
+
const result = await scorePlanOnline(await makeCtx(resolveConfig(command.optsWithGlobals())), planRef, revisionDigest, reporterRole);
|
|
183
|
+
if (options.json) {
|
|
184
|
+
console.log(JSON.stringify(result, null, 2));
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
if (result.success) {
|
|
188
|
+
console.log(`✓ Score report recorded for ${result.reporter_role}`);
|
|
189
|
+
console.log(`Mean score: ${result.mean_score.toFixed(2)}/5.0`);
|
|
190
|
+
for (const cat of PLAN_SCORE_CATEGORIES) {
|
|
191
|
+
console.log(` ${cat}: ${result.scores[cat].toFixed(1)}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
console.log(`✗ Score report failed: ${result.error}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (!result.success) {
|
|
199
|
+
throw new CodebusError(`plan score failed: ${result.error}`);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=plan-score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-score.js","sourceRoot":"","sources":["../../src/commands/plan-score.ts"],"names":[],"mappings":"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"}
|