@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.
Files changed (130) hide show
  1. package/dist/ci-hooks/ci-hooks.js +126 -0
  2. package/dist/ci-hooks/ci-hooks.js.map +1 -0
  3. package/dist/commands/agent.js +137 -0
  4. package/dist/commands/agent.js.map +1 -0
  5. package/dist/commands/as.js +1 -1
  6. package/dist/commands/as.js.map +1 -1
  7. package/dist/commands/ask.js +1 -1
  8. package/dist/commands/ask.js.map +1 -1
  9. package/dist/commands/ci-findings.js +129 -0
  10. package/dist/commands/ci-findings.js.map +1 -0
  11. package/dist/commands/ci-reply.js +117 -0
  12. package/dist/commands/ci-reply.js.map +1 -0
  13. package/dist/commands/ci-steer-escalate.js +65 -0
  14. package/dist/commands/ci-steer-escalate.js.map +1 -0
  15. package/dist/commands/cli-mcp-correlation.js +131 -0
  16. package/dist/commands/cli-mcp-correlation.js.map +1 -0
  17. package/dist/commands/connector-attach-detach.js +542 -0
  18. package/dist/commands/connector-attach-detach.js.map +1 -0
  19. package/dist/commands/connector.js +513 -0
  20. package/dist/commands/connector.js.map +1 -0
  21. package/dist/commands/correlation.js +194 -0
  22. package/dist/commands/correlation.js.map +1 -0
  23. package/dist/commands/decision.js +63 -0
  24. package/dist/commands/decision.js.map +1 -1
  25. package/dist/commands/digest.js +14 -3
  26. package/dist/commands/digest.js.map +1 -1
  27. package/dist/commands/do.js +127 -0
  28. package/dist/commands/do.js.map +1 -0
  29. package/dist/commands/factory-attention.js +106 -0
  30. package/dist/commands/factory-attention.js.map +1 -0
  31. package/dist/commands/factory-context-read.js +171 -0
  32. package/dist/commands/factory-context-read.js.map +1 -0
  33. package/dist/commands/factory-interventions.js +102 -0
  34. package/dist/commands/factory-interventions.js.map +1 -0
  35. package/dist/commands/factory.js +187 -0
  36. package/dist/commands/factory.js.map +1 -1
  37. package/dist/commands/graph-pull.js +130 -0
  38. package/dist/commands/graph-pull.js.map +1 -0
  39. package/dist/commands/graph.js +5 -1
  40. package/dist/commands/graph.js.map +1 -1
  41. package/dist/commands/inbox.js +7 -7
  42. package/dist/commands/inbox.js.map +1 -1
  43. package/dist/commands/ingest.js +1 -1
  44. package/dist/commands/ingest.js.map +1 -1
  45. package/dist/commands/install.js +1160 -55
  46. package/dist/commands/install.js.map +1 -1
  47. package/dist/commands/integration-ledger.js +81 -0
  48. package/dist/commands/integration-ledger.js.map +1 -0
  49. package/dist/commands/knowledge.js +178 -0
  50. package/dist/commands/knowledge.js.map +1 -0
  51. package/dist/commands/links.js +1 -1
  52. package/dist/commands/links.js.map +1 -1
  53. package/dist/commands/morning.js +50 -1
  54. package/dist/commands/morning.js.map +1 -1
  55. package/dist/commands/plan-compiler.js +260 -0
  56. package/dist/commands/plan-compiler.js.map +1 -0
  57. package/dist/commands/plan-lint.js +275 -0
  58. package/dist/commands/plan-lint.js.map +1 -0
  59. package/dist/commands/plan-score.js +203 -0
  60. package/dist/commands/plan-score.js.map +1 -0
  61. package/dist/commands/plan.js +481 -15
  62. package/dist/commands/plan.js.map +1 -1
  63. package/dist/commands/product-validity.js +168 -0
  64. package/dist/commands/product-validity.js.map +1 -0
  65. package/dist/commands/question.js +1 -1
  66. package/dist/commands/question.js.map +1 -1
  67. package/dist/commands/read-policy.js +131 -0
  68. package/dist/commands/read-policy.js.map +1 -0
  69. package/dist/commands/read.js +1 -1
  70. package/dist/commands/read.js.map +1 -1
  71. package/dist/commands/repo.js +106 -8
  72. package/dist/commands/repo.js.map +1 -1
  73. package/dist/commands/repository-protection.js +209 -0
  74. package/dist/commands/repository-protection.js.map +1 -0
  75. package/dist/commands/resolve.js +2 -2
  76. package/dist/commands/resolve.js.map +1 -1
  77. package/dist/commands/self-healing.js +26 -0
  78. package/dist/commands/self-healing.js.map +1 -0
  79. package/dist/commands/send.js +1 -1
  80. package/dist/commands/send.js.map +1 -1
  81. package/dist/commands/serial-merge.js +303 -0
  82. package/dist/commands/serial-merge.js.map +1 -0
  83. package/dist/commands/session.js +1 -1
  84. package/dist/commands/session.js.map +1 -1
  85. package/dist/commands/task.js +92 -1
  86. package/dist/commands/task.js.map +1 -1
  87. package/dist/commands/verify.js +77 -0
  88. package/dist/commands/verify.js.map +1 -0
  89. package/dist/config/self-healing-analysis.json +158 -0
  90. package/dist/errors.js +18 -4
  91. package/dist/errors.js.map +1 -1
  92. package/dist/execution/client.js +53 -0
  93. package/dist/execution/client.js.map +1 -0
  94. package/dist/execution/local.js +24 -0
  95. package/dist/execution/local.js.map +1 -0
  96. package/dist/execution/ssh.js +38 -0
  97. package/dist/execution/ssh.js.map +1 -0
  98. package/dist/graph.js +78 -16
  99. package/dist/graph.js.map +1 -1
  100. package/dist/index.js +30 -0
  101. package/dist/index.js.map +1 -1
  102. package/dist/json-lite.js +248 -0
  103. package/dist/json-lite.js.map +1 -0
  104. package/dist/knowledge-drift.js +40 -0
  105. package/dist/knowledge-drift.js.map +1 -0
  106. package/dist/lint/parallelism.js +414 -0
  107. package/dist/lint/parallelism.js.map +1 -0
  108. package/dist/mail-latency.js +11 -1
  109. package/dist/mail-latency.js.map +1 -1
  110. package/dist/mcp-ci-findings.js +31 -0
  111. package/dist/mcp-ci-findings.js.map +1 -0
  112. package/dist/mcp-correlation.js +290 -0
  113. package/dist/mcp-correlation.js.map +1 -0
  114. package/dist/mcp-factory-context-read.js +81 -0
  115. package/dist/mcp-factory-context-read.js.map +1 -0
  116. package/dist/mcp-registry.js +128 -1
  117. package/dist/mcp-registry.js.map +1 -1
  118. package/dist/mcp.js +94 -5
  119. package/dist/mcp.js.map +1 -1
  120. package/dist/openrouter-reservation-guard.js +97 -0
  121. package/dist/openrouter-reservation-guard.js.map +1 -0
  122. package/dist/self-healing-analysis-loader.js +150 -0
  123. package/dist/self-healing-analysis-loader.js.map +1 -0
  124. package/dist/sender.js +11 -9
  125. package/dist/sender.js.map +1 -1
  126. package/dist/toml-lite.js +546 -0
  127. package/dist/toml-lite.js.map +1 -0
  128. package/dist/version-check.js +23 -7
  129. package/dist/version-check.js.map +1 -1
  130. package/package.json +5 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-reply.js","sourceRoot":"","sources":["../../src/commands/ci-reply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * ci-steer-escalate — CLI command: escalate a CI finding to a human owner.
3
+ *
4
+ * Input: a single ci-finding v1 object (via --file <path> or --finding <json>).
5
+ * Output: an escalation record printed as text or --json. Exits non-zero when
6
+ * the input finding is invalid.
7
+ */
8
+ import { readFile } from "node:fs/promises";
9
+ import { validateFinding } from "./ci-findings.js";
10
+ /** Resolve the finding payload from --file or --finding. Throws on missing/invalid input. */
11
+ export async function resolveEscalationInput(o) {
12
+ let text;
13
+ if (o.finding !== undefined)
14
+ text = o.finding;
15
+ else if (o.file !== undefined)
16
+ text = await readFile(o.file, "utf8");
17
+ else
18
+ throw new Error("ci-steer-escalate requires --file <path> or --finding <json>");
19
+ let parsed;
20
+ try {
21
+ parsed = JSON.parse(text);
22
+ }
23
+ catch {
24
+ throw new Error("escalation input must be valid JSON");
25
+ }
26
+ const finding = (typeof parsed === "object" && parsed !== null && "finding" in parsed
27
+ ? parsed.finding
28
+ : parsed);
29
+ const errors = validateFinding(finding);
30
+ if (errors.length > 0)
31
+ throw new Error(`invalid finding: ${errors.join("; ")}`);
32
+ return finding;
33
+ }
34
+ /** Build the escalation record (pure; testable without I/O). */
35
+ export function buildEscalation(finding, owner, reason) {
36
+ return {
37
+ escalated: true,
38
+ check: finding.check,
39
+ kind: finding.kind,
40
+ location: finding.location,
41
+ next_action: "escalate",
42
+ owner,
43
+ reason: reason ?? `escalated from ${finding.check} (${finding.next_action})`,
44
+ at: new Date().toISOString(),
45
+ };
46
+ }
47
+ /** CLI entry point: `codebus ci-steer-escalate --file <path> [--owner o] [--reason r] [--json]`. */
48
+ export async function ciSteerEscalateCmd(o) {
49
+ let finding;
50
+ try {
51
+ finding = await resolveEscalationInput(o);
52
+ }
53
+ catch (err) {
54
+ console.error(err instanceof Error ? err.message : String(err));
55
+ process.exitCode = 1;
56
+ return;
57
+ }
58
+ const record = buildEscalation(finding, o.owner ?? "ci-owner", o.reason);
59
+ if (o.json) {
60
+ console.log(JSON.stringify(record, null, 2));
61
+ return;
62
+ }
63
+ console.log(`Escalated [${record.kind}] ${record.check} (${record.location}) to ${record.owner}: ${record.reason}`);
64
+ }
65
+ //# sourceMappingURL=ci-steer-escalate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-steer-escalate.js","sourceRoot":"","sources":["../../src/commands/ci-steer-escalate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAa,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAqB9D,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,CAAyB;IACpE,IAAI,IAAwB,CAAC;IAC7B,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;SACzC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;QAChE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACrF,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAK,MAAkC;QAChH,CAAC,CAAE,MAAiC,CAAC,OAAO;QAC5C,CAAC,CAAC,MAAM,CAAc,CAAC;IACzB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAC,OAAkB,EAAE,KAAa,EAAE,MAAe;IAChF,OAAO;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,UAAU;QACvB,KAAK;QACL,MAAM,EAAE,MAAM,IAAI,kBAAkB,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,GAAG;QAC5E,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAyB;IAChE,IAAI,OAAkB,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,QAAQ,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACtH,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * CLI command: `codebus correlation` — query and display the T-01 correlation chain.
3
+ *
4
+ * Shared command core for MCP parity: calls correlationQueryCore which is
5
+ * also used by the MCP tool in mcp-registry.ts.
6
+ *
7
+ * ADR 0007 (owner ruling): tests verify transport parity but cannot implement
8
+ * the feature — the feature lives here, tests assert.
9
+ */
10
+ import { makeCtx } from "../client.js";
11
+ import { resolveConfig } from "../config.js";
12
+ import { CodebusError } from "../errors.js";
13
+ import { correlationCmd } from "./correlation.js";
14
+ import { withCorrelation, resolveCorrelation, validateBinding, } from "../mcp-correlation.js";
15
+ /**
16
+ * Shared command core: query correlation chain.
17
+ * Exported for use in MCP tool (mcp-registry.ts) and CLI command wrapper below.
18
+ *
19
+ * Input: partial correlation data (binding_id or run_id)
20
+ * Output: full T-01 correlation chain (or error if not found/not authorized)
21
+ */
22
+ export async function correlationQueryCore(ctx, opts) {
23
+ // Validate input
24
+ if (!opts.bindingId && !opts.runId) {
25
+ throw new CodebusError("correlation query requires either binding_id or run_id", {
26
+ code: "INVALID_REQUEST",
27
+ });
28
+ }
29
+ // Query the correlation chain — resolveCorrelation handles both
30
+ // binding_id-only and run_id-only (via external_run_id) lookups.
31
+ // NOTE: requireBinding must NOT fail early on a run_id-only query: the run
32
+ // may well resolve to a real binding via execution_bindings.external_run_id.
33
+ // T-02 is enforced on the RESOLVED chain below, so a fabricated/unfetchable
34
+ // binding_id (stripped by resolveCorrelation) and a genuinely unbound run
35
+ // both fail — while a run_id that resolves to a real binding passes.
36
+ const chain = await resolveCorrelation(ctx, {
37
+ binding_id: opts.bindingId,
38
+ run_id: opts.runId,
39
+ });
40
+ // Validate results if requested
41
+ if (opts.requireBinding && !chain.binding_id) {
42
+ const validation = validateBinding(chain, opts.requireFull);
43
+ throw new CodebusError(validation.reason, { code: "BINDING_REQUIRED" });
44
+ }
45
+ if (opts.requireFull) {
46
+ const validation = validateBinding(chain, true);
47
+ if (!validation.valid) {
48
+ throw new CodebusError(validation.reason, { code: "CORRELATION_INCOMPLETE" });
49
+ }
50
+ }
51
+ return chain;
52
+ }
53
+ /**
54
+ * CLI wrapper: `codebus correlation [--binding-id <id>] [--run-id <id>]`
55
+ *
56
+ * Calls correlationQueryCore with parity envelope wrapping (for --json output).
57
+ */
58
+ async function correlationCommand(opts, overrides) {
59
+ const ctx = await makeCtx(resolveConfig(overrides));
60
+ // For --json output, use the parity envelope (CLI transport)
61
+ if (opts.json) {
62
+ const envelope = await withCorrelation((c, args) => correlationQueryCore(c, {
63
+ bindingId: args.bindingId,
64
+ runId: args.runId,
65
+ requireBinding: args.requireBinding,
66
+ requireFull: args.requireFull,
67
+ }), ctx, { bindingId: opts.bindingId, runId: opts.runId, requireBinding: opts.requireBinding, requireFull: opts.requireFull }, { transport: "cli", correlationPartial: { binding_id: opts.bindingId, run_id: opts.runId } });
68
+ console.log(JSON.stringify(envelope, null, 2));
69
+ return;
70
+ }
71
+ // Human output: just the chain
72
+ const chain = await correlationQueryCore(ctx, {
73
+ bindingId: opts.bindingId,
74
+ runId: opts.runId,
75
+ requireBinding: opts.requireBinding,
76
+ requireFull: opts.requireFull,
77
+ });
78
+ const lines = [
79
+ `Jira key: ${chain.jira_key || "(none)"}`,
80
+ `Plan: ${chain.plan_id || "(none)"}`,
81
+ `Stage: ${chain.stage_id || "(none)"}`,
82
+ `Child: ${chain.child_id || "(none)"}`,
83
+ `Binding: ${chain.binding_id || "(none)"}`,
84
+ `Run: ${chain.run_id || "(none)"}`,
85
+ `PR: ${chain.pr || "(none)"}`,
86
+ `Receipt: ${chain.receipt_id || "(none)"}`,
87
+ `Actor: ${chain.actor || "(none)"}`,
88
+ `Environment: ${chain.environment || "(none)"}`,
89
+ ];
90
+ console.log(lines.join("\n"));
91
+ }
92
+ /**
93
+ * Register the CLI command with commander.
94
+ * Called by index.ts to attach to the main CLI via the g wrapper (adds
95
+ * --url/--token/--agent/--workspace/--json standard options).
96
+ *
97
+ * If a `correlation` command already exists on the program (main's T-01
98
+ * chain BUILDER, commands/correlation.ts), this EXTENDS it with the
99
+ * lookup flags and routes in the action handler: lookup flags present →
100
+ * database-resolved query core (this file); otherwise → the existing
101
+ * builder. Registering a second `correlation` command would make
102
+ * commander throw ("cannot add command 'correlation' as already have
103
+ * command 'correlation'") and crash the whole CLI at import time.
104
+ */
105
+ export function registerCorrelationCommand(program, g) {
106
+ const existing = program.commands.find((c) => c.name() === "correlation");
107
+ const cmd = existing ?? g(program.command("correlation"))
108
+ .description("Query the T-01 correlation chain (Jira → Plan → Stage → Child → Binding → Run → PR → Receipt)");
109
+ cmd
110
+ .option("--binding-id <id>", "Lookup by binding UUID")
111
+ .option("--run-id <id>", "Lookup by run ID (resolves bindings via external_run_id)")
112
+ .option("--require-binding", "Fail if no binding exists (T-02)")
113
+ .option("--require-full", "Fail if any chain field is null")
114
+ // commander calls action(options, command); the parsed options ARE the
115
+ // Overrides (url/token/agent/workspace) — passing `command` here would
116
+ // silently drop every connection flag (resolveConfig would see env only).
117
+ // commander keeps ONE action handler (last .action() wins), so when
118
+ // extending main's builder command this router REPLACES its handler and
119
+ // delegates back to correlationCmd for the build path.
120
+ .action((opts) => {
121
+ const lookupMode = opts.bindingId !== undefined ||
122
+ opts.runId !== undefined ||
123
+ opts.requireBinding !== undefined ||
124
+ opts.requireFull !== undefined;
125
+ if (lookupMode || !existing) {
126
+ return correlationCommand(opts, opts);
127
+ }
128
+ return correlationCmd(opts);
129
+ });
130
+ }
131
+ //# sourceMappingURL=cli-mcp-correlation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-mcp-correlation.js","sourceRoot":"","sources":["../../src/commands/cli-mcp-correlation.ts"],"names":[],"mappings":"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"}