@bragi-gmbh/codebus 1.3.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/doc.js +276 -0
- package/dist/commands/doc.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 +32 -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 +202 -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 @@
|
|
|
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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"}
|