@sirius-mcp/mcp 1.5.2 → 1.7.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/README.md +19 -4
- package/dist/adapters/fs/structure.d.ts.map +1 -1
- package/dist/adapters/fs/structure.js +16 -0
- package/dist/adapters/fs/structure.js.map +1 -1
- package/dist/adapters/mcp/crawl.js +1 -1
- package/dist/adapters/mcp/crawl.js.map +1 -1
- package/dist/adapters/mcp/get.js +1 -1
- package/dist/adapters/mcp/get.js.map +1 -1
- package/dist/adapters/mcp/index.d.ts +2 -0
- package/dist/adapters/mcp/index.d.ts.map +1 -1
- package/dist/adapters/mcp/index.js +5 -1
- package/dist/adapters/mcp/index.js.map +1 -1
- package/dist/adapters/mcp/init.js +1 -1
- package/dist/adapters/mcp/init.js.map +1 -1
- package/dist/adapters/mcp/list.js +1 -1
- package/dist/adapters/mcp/list.js.map +1 -1
- package/dist/adapters/mcp/query-counter.d.ts +17 -0
- package/dist/adapters/mcp/query-counter.d.ts.map +1 -0
- package/dist/adapters/mcp/query-counter.js +30 -0
- package/dist/adapters/mcp/query-counter.js.map +1 -0
- package/dist/adapters/mcp/reindex.js +1 -1
- package/dist/adapters/mcp/reindex.js.map +1 -1
- package/dist/adapters/mcp/resources.d.ts +4 -1
- package/dist/adapters/mcp/resources.d.ts.map +1 -1
- package/dist/adapters/mcp/resources.js +50 -1
- package/dist/adapters/mcp/resources.js.map +1 -1
- package/dist/adapters/mcp/search.js +1 -1
- package/dist/adapters/mcp/search.js.map +1 -1
- package/dist/adapters/mcp/upsert.js +1 -1
- package/dist/adapters/mcp/upsert.js.map +1 -1
- package/dist/adapters/update/check.d.ts +27 -0
- package/dist/adapters/update/check.d.ts.map +1 -1
- package/dist/adapters/update/check.js +40 -2
- package/dist/adapters/update/check.js.map +1 -1
- package/dist/app/crawl.js +3 -0
- package/dist/app/crawl.js.map +1 -1
- package/dist/app/drift.d.ts +61 -0
- package/dist/app/drift.d.ts.map +1 -0
- package/dist/app/drift.js +193 -0
- package/dist/app/drift.js.map +1 -0
- package/dist/app/list.d.ts +2 -2
- package/dist/app/precedence-contract.d.ts +14 -0
- package/dist/app/precedence-contract.d.ts.map +1 -0
- package/dist/app/precedence-contract.js +51 -0
- package/dist/app/precedence-contract.js.map +1 -0
- package/dist/app/upsert.d.ts +14 -2
- package/dist/app/upsert.d.ts.map +1 -1
- package/dist/domain/source-adapter.d.ts +1 -0
- package/dist/domain/source-adapter.d.ts.map +1 -1
- package/dist/domain/source-adapter.js.map +1 -1
- package/dist/domain/staleness.d.ts +30 -0
- package/dist/domain/staleness.d.ts.map +1 -0
- package/dist/domain/staleness.js +71 -0
- package/dist/domain/staleness.js.map +1 -0
- package/dist/errors.d.ts +30 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +88 -16
- package/dist/errors.js.map +1 -1
- package/dist/installer/cli-parser.d.ts.map +1 -1
- package/dist/installer/cli-parser.js +19 -5
- package/dist/installer/cli-parser.js.map +1 -1
- package/dist/installer/cli.d.ts.map +1 -1
- package/dist/installer/cli.js +73 -37
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/contract-seed.d.ts +6 -0
- package/dist/installer/contract-seed.d.ts.map +1 -0
- package/dist/installer/contract-seed.js +140 -0
- package/dist/installer/contract-seed.js.map +1 -0
- package/dist/installer/dispatch.d.ts.map +1 -1
- package/dist/installer/dispatch.js +3 -1
- package/dist/installer/dispatch.js.map +1 -1
- package/dist/installer/drift-command.d.ts +15 -0
- package/dist/installer/drift-command.d.ts.map +1 -0
- package/dist/installer/drift-command.js +78 -0
- package/dist/installer/drift-command.js.map +1 -0
- package/dist/installer/index.d.ts +4 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +34 -5
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/instruction-targets.d.ts +33 -0
- package/dist/installer/instruction-targets.d.ts.map +1 -0
- package/dist/installer/instruction-targets.js +199 -0
- package/dist/installer/instruction-targets.js.map +1 -0
- package/dist/installer/precedence.d.ts +59 -0
- package/dist/installer/precedence.d.ts.map +1 -0
- package/dist/installer/precedence.js +218 -0
- package/dist/installer/precedence.js.map +1 -0
- package/dist/installer/snippet-context.d.ts +49 -0
- package/dist/installer/snippet-context.d.ts.map +1 -0
- package/dist/installer/snippet-context.js +93 -0
- package/dist/installer/snippet-context.js.map +1 -0
- package/dist/installer/snippet-engine.d.ts +21 -0
- package/dist/installer/snippet-engine.d.ts.map +1 -0
- package/dist/installer/snippet-engine.js +122 -0
- package/dist/installer/snippet-engine.js.map +1 -0
- package/dist/installer/snippet-exec.d.ts +4 -0
- package/dist/installer/snippet-exec.d.ts.map +1 -0
- package/dist/installer/snippet-exec.js +105 -0
- package/dist/installer/snippet-exec.js.map +1 -0
- package/dist/installer/snippet-offer.d.ts +21 -0
- package/dist/installer/snippet-offer.d.ts.map +1 -0
- package/dist/installer/snippet-offer.js +108 -0
- package/dist/installer/snippet-offer.js.map +1 -0
- package/dist/installer/snippet-report.d.ts +14 -0
- package/dist/installer/snippet-report.d.ts.map +1 -0
- package/dist/installer/snippet-report.js +217 -0
- package/dist/installer/snippet-report.js.map +1 -0
- package/dist/installer/snippet.d.ts +4 -0
- package/dist/installer/snippet.d.ts.map +1 -0
- package/dist/installer/snippet.js +158 -0
- package/dist/installer/snippet.js.map +1 -0
- package/dist/installer/tui-render.d.ts +3 -0
- package/dist/installer/tui-render.d.ts.map +1 -0
- package/dist/installer/tui-render.js +31 -0
- package/dist/installer/tui-render.js.map +1 -0
- package/dist/installer/tui.d.ts +5 -3
- package/dist/installer/tui.d.ts.map +1 -1
- package/dist/installer/tui.js +7 -24
- package/dist/installer/tui.js.map +1 -1
- package/dist/installer/types.d.ts +42 -2
- package/dist/installer/types.d.ts.map +1 -1
- package/dist/installer/types.js.map +1 -1
- package/dist/installer/version.d.ts +2 -0
- package/dist/installer/version.d.ts.map +1 -0
- package/dist/installer/version.js +18 -0
- package/dist/installer/version.js.map +1 -0
- package/dist/schemas/document.d.ts +24 -2
- package/dist/schemas/document.d.ts.map +1 -1
- package/dist/schemas/document.js +52 -0
- package/dist/schemas/document.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import {} from "./types.js";
|
|
4
|
+
import { detectTarget } from "./detector.js";
|
|
5
|
+
import { createBackup, atomicWrite } from "./backup.js";
|
|
6
|
+
import { generateUnifiedDiff } from "./diff.js";
|
|
7
|
+
import { PrecedenceError } from "./precedence.js";
|
|
8
|
+
import { readFileOrNull } from "./snippet-context.js";
|
|
9
|
+
import { planGenerate, planRemove } from "./snippet-engine.js";
|
|
10
|
+
export async function executeGroup(group, mode, options, ctx, env) {
|
|
11
|
+
try {
|
|
12
|
+
const detected = await detectTarget(group.targets[0], options.scope, env);
|
|
13
|
+
if (detected.state === "NOT_FOUND") {
|
|
14
|
+
return {
|
|
15
|
+
action: "SKIPPED",
|
|
16
|
+
message: "Client not detected; its instruction files are never written.",
|
|
17
|
+
reason: "client-not-detected",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const raw = readFileOrNull(group.absPath);
|
|
21
|
+
if (mode === "remove") {
|
|
22
|
+
return await runRemove(group, raw, options);
|
|
23
|
+
}
|
|
24
|
+
if (ctx === null) {
|
|
25
|
+
return {
|
|
26
|
+
action: "SKIPPED",
|
|
27
|
+
message: "Precedence contract unavailable; nothing generated.",
|
|
28
|
+
reason: "precedence-contract-missing",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return await runGenerate(group, raw, options, ctx);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return failureOutcome(err);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function runGenerate(group, raw, options, ctx) {
|
|
38
|
+
const plan = planGenerate(raw, ctx.expectedBlock);
|
|
39
|
+
if (plan.action === "ALREADY_CONFIGURED") {
|
|
40
|
+
return { action: plan.action, message: plan.message, installedVersion: plan.installedVersion };
|
|
41
|
+
}
|
|
42
|
+
const nextContent = plan.nextContent ?? "";
|
|
43
|
+
if (options.dryRun) {
|
|
44
|
+
return {
|
|
45
|
+
action: plan.action,
|
|
46
|
+
message: `[dry-run] ${plan.message}`,
|
|
47
|
+
diff: generateUnifiedDiff(raw ?? "", nextContent, path.basename(group.absPath)),
|
|
48
|
+
createdFile: plan.createdFile,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
let backupPath;
|
|
52
|
+
if (raw !== null && !plan.createdFile) {
|
|
53
|
+
backupPath = (await createBackup(group.absPath)) ?? undefined;
|
|
54
|
+
}
|
|
55
|
+
await atomicWrite(group.absPath, nextContent);
|
|
56
|
+
return {
|
|
57
|
+
action: plan.action,
|
|
58
|
+
message: plan.message,
|
|
59
|
+
backupPath,
|
|
60
|
+
createdFile: plan.createdFile,
|
|
61
|
+
installedVersion: plan.installedVersion,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async function runRemove(group, raw, options) {
|
|
65
|
+
if (raw === null) {
|
|
66
|
+
return { action: "SKIPPED", message: "Instruction file does not exist." };
|
|
67
|
+
}
|
|
68
|
+
const plan = planRemove(raw);
|
|
69
|
+
if (!plan.deleteFile && plan.nextContent === undefined) {
|
|
70
|
+
return { action: "SKIPPED", message: "No Sirius precedence block present." };
|
|
71
|
+
}
|
|
72
|
+
const preview = plan.deleteFile ? "" : plan.nextContent ?? "";
|
|
73
|
+
if (options.dryRun) {
|
|
74
|
+
return {
|
|
75
|
+
action: "REMOVED",
|
|
76
|
+
message: `[dry-run] ${plan.message}`,
|
|
77
|
+
diff: generateUnifiedDiff(raw, preview, path.basename(group.absPath)),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const backupPath = (await createBackup(group.absPath)) ?? undefined;
|
|
81
|
+
if (plan.deleteFile) {
|
|
82
|
+
await fs.promises.unlink(group.absPath);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
await atomicWrite(group.absPath, plan.nextContent ?? "");
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
action: "REMOVED",
|
|
89
|
+
message: plan.message,
|
|
90
|
+
backupPath,
|
|
91
|
+
installedVersion: plan.installedVersion,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function failureOutcome(err) {
|
|
95
|
+
if (err instanceof PrecedenceError) {
|
|
96
|
+
return {
|
|
97
|
+
action: "FAILED",
|
|
98
|
+
message: err.message,
|
|
99
|
+
error: { code: err.code, details: err.message },
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
103
|
+
return { action: "FAILED", message, error: { code: "SNIPPET_FAILED", details: message } };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=snippet-exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-exec.js","sourceRoot":"","sources":["../../src/installer/snippet-exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type InstallerOptions } from "./types.js";
|
|
2
|
+
import type { CliIo } from "./cli.js";
|
|
3
|
+
/**
|
|
4
|
+
* Headless P-1 offer: `sirius setup --yes` accepts the snippet offer and
|
|
5
|
+
* applies it after showing the diff. Without --yes nothing is generated;
|
|
6
|
+
* with --json the offer is skipped to keep stdout a single JSON document;
|
|
7
|
+
* with --dry-run only the diff preview is emitted — nothing is applied.
|
|
8
|
+
*/
|
|
9
|
+
export declare function offerSnippetHeadless(base: Partial<InstallerOptions>, io?: CliIo): Promise<number>;
|
|
10
|
+
/**
|
|
11
|
+
* P-1 post-install offer for the interactive wizard: scoped to the wizard's
|
|
12
|
+
* selection; an offer failure never changes the setup exit code.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runPostInstallOffer(base: Partial<InstallerOptions>, scope: InstallerOptions["scope"], targets: string[], setupCode: number): Promise<number>;
|
|
15
|
+
/**
|
|
16
|
+
* Interactive P-1 offer at the end of `setup`: shows the diff and asks for
|
|
17
|
+
* apply confirmation in a single step. Without consent nothing is written;
|
|
18
|
+
* a dry-run setup only previews.
|
|
19
|
+
*/
|
|
20
|
+
export declare function offerSnippetInteractive(base: Partial<InstallerOptions>, io?: CliIo): Promise<number>;
|
|
21
|
+
//# sourceMappingURL=snippet-offer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-offer.d.ts","sourceRoot":"","sources":["../../src/installer/snippet-offer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAyDtC;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAC/B,EAAE,GAAE,KAAiB,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAC/B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAC/B,EAAE,GAAE,KAAiB,GACpB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import {} from "./types.js";
|
|
3
|
+
import { runSnippetCommand } from "./snippet.js";
|
|
4
|
+
const defaultIo = {
|
|
5
|
+
writeStdout: (d) => process.stdout.write(d),
|
|
6
|
+
writeStderr: (d) => process.stderr.write(d),
|
|
7
|
+
};
|
|
8
|
+
function log(message) {
|
|
9
|
+
process.stderr.write(`[sirius] ${message}\n`);
|
|
10
|
+
}
|
|
11
|
+
function snippetOptions(base) {
|
|
12
|
+
return {
|
|
13
|
+
subcommand: "snippet",
|
|
14
|
+
targets: base.targets,
|
|
15
|
+
category: base.category,
|
|
16
|
+
scope: base.scope ?? "workspace",
|
|
17
|
+
all: false,
|
|
18
|
+
yes: true,
|
|
19
|
+
dryRun: base.dryRun ?? false,
|
|
20
|
+
json: false,
|
|
21
|
+
force: false,
|
|
22
|
+
stdio: false,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function promptYesNo() {
|
|
26
|
+
return new Promise((resolve) => {
|
|
27
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
28
|
+
let settled = false;
|
|
29
|
+
const settle = (value) => {
|
|
30
|
+
if (settled)
|
|
31
|
+
return;
|
|
32
|
+
settled = true;
|
|
33
|
+
rl.close();
|
|
34
|
+
resolve(value);
|
|
35
|
+
};
|
|
36
|
+
rl.on("close", () => settle(false));
|
|
37
|
+
rl.question("", (answer) => {
|
|
38
|
+
settle(/^y(es)?$/i.test(answer.trim()));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async function previewThenApply(base, io) {
|
|
43
|
+
const previewCode = await runSnippetCommand({ ...snippetOptions(base), dryRun: true }, io);
|
|
44
|
+
if (previewCode !== 0)
|
|
45
|
+
return previewCode;
|
|
46
|
+
if (base.dryRun)
|
|
47
|
+
return 0;
|
|
48
|
+
return runSnippetCommand(snippetOptions(base), io);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Headless P-1 offer: `sirius setup --yes` accepts the snippet offer and
|
|
52
|
+
* applies it after showing the diff. Without --yes nothing is generated;
|
|
53
|
+
* with --json the offer is skipped to keep stdout a single JSON document;
|
|
54
|
+
* with --dry-run only the diff preview is emitted — nothing is applied.
|
|
55
|
+
*/
|
|
56
|
+
export async function offerSnippetHeadless(base, io = defaultIo) {
|
|
57
|
+
if (!base.yes || base.json)
|
|
58
|
+
return 0;
|
|
59
|
+
return previewThenApply(base, io);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* P-1 post-install offer for the interactive wizard: scoped to the wizard's
|
|
63
|
+
* selection; an offer failure never changes the setup exit code.
|
|
64
|
+
*/
|
|
65
|
+
export async function runPostInstallOffer(base, scope, targets, setupCode) {
|
|
66
|
+
if (targets.length === 0)
|
|
67
|
+
return setupCode;
|
|
68
|
+
try {
|
|
69
|
+
const offerCode = await offerSnippetInteractive({
|
|
70
|
+
...base,
|
|
71
|
+
targets,
|
|
72
|
+
scope,
|
|
73
|
+
});
|
|
74
|
+
if (offerCode !== 0) {
|
|
75
|
+
log(`warning: routing snippet offer failed (exit ${offerCode}); setup result is unchanged.`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
log(`warning: routing snippet offer failed: ${err instanceof Error ? err.message : String(err)}; setup result is unchanged.`);
|
|
80
|
+
}
|
|
81
|
+
return setupCode;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Interactive P-1 offer at the end of `setup`: shows the diff and asks for
|
|
85
|
+
* apply confirmation in a single step. Without consent nothing is written;
|
|
86
|
+
* a dry-run setup only previews.
|
|
87
|
+
*/
|
|
88
|
+
export async function offerSnippetInteractive(base, io = defaultIo) {
|
|
89
|
+
process.stderr.write("\nGenerate the Sirius routing snippet now? [y/N] ");
|
|
90
|
+
if (!(await promptYesNo())) {
|
|
91
|
+
log("Skipped. Run 'sirius snippet' anytime.");
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
const previewCode = await runSnippetCommand({ ...snippetOptions(base), dryRun: true }, io);
|
|
95
|
+
if (previewCode !== 0)
|
|
96
|
+
return previewCode;
|
|
97
|
+
if (base.dryRun) {
|
|
98
|
+
log("Dry-run setup: preview only, nothing applied.");
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
process.stderr.write("\nApply the routing snippet shown above? [y/N] ");
|
|
102
|
+
if (!(await promptYesNo())) {
|
|
103
|
+
log("Nothing written.");
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
return runSnippetCommand(snippetOptions(base), io);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=snippet-offer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-offer.js","sourceRoot":"","sources":["../../src/installer/snippet-offer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type InstallerOptions, type PatchResult, type PlatformEnv, type SiriusInstallerReport } from "./types.js";
|
|
2
|
+
import { type GroupOutcome, type SnippetContractContext, type SnippetTargetGroup } from "./snippet-context.js";
|
|
3
|
+
import type { CliIo } from "./cli.js";
|
|
4
|
+
import type { McpError } from "../errors.js";
|
|
5
|
+
export declare function precedenceRefusal(err: unknown): McpError;
|
|
6
|
+
export declare function emitRefusal(io: CliIo, options: InstallerOptions, refusal: McpError): void;
|
|
7
|
+
export declare function outcomeRows(group: SnippetTargetGroup, outcome: GroupOutcome): PatchResult[];
|
|
8
|
+
export declare function buildReport(options: InstallerOptions, env: PlatformEnv, rows: PatchResult[]): SiriusInstallerReport;
|
|
9
|
+
export declare function emitReport(report: SiriusInstallerReport, options: InstallerOptions, io: CliIo): void;
|
|
10
|
+
export declare function finishReport(options: InstallerOptions, io: CliIo, env: PlatformEnv, rows: PatchResult[]): number;
|
|
11
|
+
export declare function emitAbortReport(options: InstallerOptions, io: CliIo, message: string): number;
|
|
12
|
+
export declare function emitRemoveWithoutContract(options: InstallerOptions, io: CliIo, env: PlatformEnv, root: string): number;
|
|
13
|
+
export declare function emitStatus(options: InstallerOptions, io: CliIo, ctx: SnippetContractContext, env: PlatformEnv, root: string): Promise<number>;
|
|
14
|
+
//# sourceMappingURL=snippet-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-report.d.ts","sourceRoot":"","sources":["../../src/installer/snippet-report.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAE3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAa7C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAoBxD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAOzF;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,YAAY,GACpB,WAAW,EAAE,CAiBf;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,WAAW,EAAE,GAClB,qBAAqB,CAiBvB;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,KAAK,GACR,IAAI,CAeN;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,WAAW,EAAE,GAClB,MAAM,CAIR;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,GACd,MAAM,CAcR;AAcD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAgCD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,sBAAsB,EAC3B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { colorizeDiff } from "./diff.js";
|
|
2
|
+
import {} from "./types.js";
|
|
3
|
+
import { readFileOrNull, resolveSnippetTargets, selectedEntries, } from "./snippet-context.js";
|
|
4
|
+
import { resolveInstructionTarget } from "./instruction-targets.js";
|
|
5
|
+
import { planStatus } from "./snippet-engine.js";
|
|
6
|
+
import { readServerVersion } from "./version.js";
|
|
7
|
+
import { PrecedenceError } from "./precedence.js";
|
|
8
|
+
const NEXT_ACTIONS = {
|
|
9
|
+
CONTRACT_TOO_LARGE: "Shorten the precedence contract body to 6 KB or less, then retry.",
|
|
10
|
+
NO_CANONICAL_BLOCK: "Add a 'Canonical routing snippets' section with sirius:precedence-canonical markers to the contract, or re-run 'sirius snippet' (generate) to reseed it.",
|
|
11
|
+
CANONICAL_VERSIONS_DIVERGE: "Align every sirius:precedence-canonical marker on the same vN, then retry.",
|
|
12
|
+
CORRUPT_BLOCK: "Fix or remove the broken sirius:precedence-canonical markers, then retry.",
|
|
13
|
+
};
|
|
14
|
+
export function precedenceRefusal(err) {
|
|
15
|
+
if (err instanceof PrecedenceError) {
|
|
16
|
+
return {
|
|
17
|
+
status: "refused",
|
|
18
|
+
code: err.code,
|
|
19
|
+
message: err.message,
|
|
20
|
+
reason: err.message,
|
|
21
|
+
next_action: NEXT_ACTIONS[err.code] ??
|
|
22
|
+
"Review the contract's canonical snippet markers, fix them, then retry.",
|
|
23
|
+
details: err.details,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
status: "refused",
|
|
28
|
+
code: "SNIPPET_FAILED",
|
|
29
|
+
message: err instanceof Error ? err.message : String(err),
|
|
30
|
+
reason: "Snippet generation failed unexpectedly.",
|
|
31
|
+
next_action: "Inspect the reported error, fix the repository state, and retry.",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function emitRefusal(io, options, refusal) {
|
|
35
|
+
if (options.json) {
|
|
36
|
+
io.writeStdout(JSON.stringify(refusal, null, 2) + "\n");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
io.writeStderr(`[sirius] refused ${refusal.code}: ${refusal.message}\n`);
|
|
40
|
+
io.writeStderr(`[sirius] next action: ${refusal.next_action}\n`);
|
|
41
|
+
}
|
|
42
|
+
export function outcomeRows(group, outcome) {
|
|
43
|
+
return group.targets.map((target) => ({
|
|
44
|
+
targetId: target.id,
|
|
45
|
+
displayName: target.displayName,
|
|
46
|
+
category: target.category,
|
|
47
|
+
format: target.format,
|
|
48
|
+
targetPath: group.absPath,
|
|
49
|
+
backupPath: outcome.backupPath,
|
|
50
|
+
action: outcome.action,
|
|
51
|
+
message: outcome.message,
|
|
52
|
+
diff: outcome.diff,
|
|
53
|
+
error: outcome.error,
|
|
54
|
+
reason: outcome.reason,
|
|
55
|
+
servingTargets: group.targets.map((t) => t.id),
|
|
56
|
+
createdFile: outcome.createdFile,
|
|
57
|
+
installedVersion: outcome.installedVersion,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
export function buildReport(options, env, rows) {
|
|
61
|
+
return {
|
|
62
|
+
version: readServerVersion(),
|
|
63
|
+
timestamp: new Date().toISOString(),
|
|
64
|
+
platform: env.platform,
|
|
65
|
+
arch: process.arch,
|
|
66
|
+
dryRun: options.dryRun,
|
|
67
|
+
scope: options.scope,
|
|
68
|
+
summary: {
|
|
69
|
+
totalScanned: rows.length,
|
|
70
|
+
configured: rows.filter((r) => r.action === "CONFIGURED" || r.action === "REMOVED").length,
|
|
71
|
+
updated: rows.filter((r) => r.action === "UPDATED").length,
|
|
72
|
+
skipped: rows.filter((r) => r.action === "SKIPPED" || r.action === "ALREADY_CONFIGURED").length,
|
|
73
|
+
failed: rows.filter((r) => r.action === "FAILED").length,
|
|
74
|
+
},
|
|
75
|
+
targets: rows,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function emitReport(report, options, io) {
|
|
79
|
+
if (options.json) {
|
|
80
|
+
io.writeStdout(JSON.stringify(report, null, 2) + "\n");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
for (const row of report.targets) {
|
|
84
|
+
if (row.diff) {
|
|
85
|
+
io.writeStderr(`\n[dry-run] ${row.displayName} (${row.targetPath}):\n`);
|
|
86
|
+
io.writeStderr(colorizeDiff(row.diff));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const updated = report.summary.updated ?? 0;
|
|
90
|
+
io.writeStderr(`\n[sirius] Completed: ${report.summary.configured} configured, ${updated} updated, ${report.summary.skipped} skipped, ${report.summary.failed} failed.\n`);
|
|
91
|
+
}
|
|
92
|
+
export function finishReport(options, io, env, rows) {
|
|
93
|
+
const report = buildReport(options, env, rows);
|
|
94
|
+
emitReport(report, options, io);
|
|
95
|
+
return report.summary.failed > 0 ? 1 : 0;
|
|
96
|
+
}
|
|
97
|
+
export function emitAbortReport(options, io, message) {
|
|
98
|
+
const rows = resolveSnippetTargets(options).map((target) => ({
|
|
99
|
+
targetId: target.id,
|
|
100
|
+
displayName: target.displayName,
|
|
101
|
+
category: target.category,
|
|
102
|
+
format: target.format,
|
|
103
|
+
targetPath: "",
|
|
104
|
+
action: "SKIPPED",
|
|
105
|
+
message,
|
|
106
|
+
reason: "global-scope-not-confirmed",
|
|
107
|
+
}));
|
|
108
|
+
const report = buildReport(options, { platform: process.platform }, rows);
|
|
109
|
+
emitReport(report, options, io);
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
const REMOVE_CONTRACT_MISSING_MESSAGE = "Precedence contract not found; refusing to remove blocks blindly. Run 'sirius snippet' (generate) to seed it first.";
|
|
113
|
+
function baseRowFor(id, target) {
|
|
114
|
+
return {
|
|
115
|
+
targetId: id,
|
|
116
|
+
displayName: target?.displayName ?? id,
|
|
117
|
+
category: target?.category ?? "cli",
|
|
118
|
+
format: target?.format ?? "JSON",
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function emitRemoveWithoutContract(options, io, env, root) {
|
|
122
|
+
const rows = selectedEntries(options).map(({ id, target }) => removeRowWithoutContract(id, target, options, env, root));
|
|
123
|
+
return finishReport(options, io, env, rows);
|
|
124
|
+
}
|
|
125
|
+
function removeRowWithoutContract(id, target, options, env, root) {
|
|
126
|
+
const base = baseRowFor(id, target);
|
|
127
|
+
if (!target) {
|
|
128
|
+
return { ...base, targetPath: "", action: "SKIPPED", message: `Unknown target id '${id}'.`, reason: "unknown-target" };
|
|
129
|
+
}
|
|
130
|
+
const resolved = resolveInstructionTarget(target, options.scope, env, root);
|
|
131
|
+
if (!resolved.covered) {
|
|
132
|
+
return {
|
|
133
|
+
...base,
|
|
134
|
+
targetPath: resolved.declaredPath ?? "",
|
|
135
|
+
action: "SKIPPED",
|
|
136
|
+
message: resolved.skipReason ?? "Out of snippet coverage.",
|
|
137
|
+
reason: resolved.skipReason,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
...base,
|
|
142
|
+
targetPath: resolved.declaredPath ?? resolved.file?.absPath ?? "",
|
|
143
|
+
action: "SKIPPED",
|
|
144
|
+
message: REMOVE_CONTRACT_MISSING_MESSAGE,
|
|
145
|
+
reason: "precedence-contract-missing",
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export async function emitStatus(options, io, ctx, env, root) {
|
|
149
|
+
const rows = selectedEntries(options).map(({ id, target }) => statusRowFor(id, target, options, ctx, env, root));
|
|
150
|
+
const byVerdict = (verdict) => rows.filter((r) => r.statusVerdict === verdict).length;
|
|
151
|
+
const report = {
|
|
152
|
+
version: readServerVersion(),
|
|
153
|
+
timestamp: new Date().toISOString(),
|
|
154
|
+
platform: env.platform,
|
|
155
|
+
arch: process.arch,
|
|
156
|
+
scope: options.scope,
|
|
157
|
+
contractVersion: ctx.contractVersion,
|
|
158
|
+
summary: {
|
|
159
|
+
totalScanned: rows.length,
|
|
160
|
+
upToDate: byVerdict("ATUALIZADO"),
|
|
161
|
+
outdated: byVerdict("DESATUALIZADO"),
|
|
162
|
+
absent: byVerdict("AUSENTE"),
|
|
163
|
+
corrupted: byVerdict("CORROMPIDO"),
|
|
164
|
+
notCovered: byVerdict("NÃO COBERTO"),
|
|
165
|
+
failed: rows.filter((r) => r.action === "FAILED").length,
|
|
166
|
+
},
|
|
167
|
+
targets: rows,
|
|
168
|
+
};
|
|
169
|
+
if (options.json) {
|
|
170
|
+
io.writeStdout(JSON.stringify(report, null, 2) + "\n");
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
io.writeStderr(`\n[sirius] Status (contract v${ctx.contractVersion}, read-only): ${report.summary.upToDate} up-to-date, ${report.summary.outdated} outdated, ${report.summary.absent} absent, ${report.summary.corrupted} corrupted, ${report.summary.notCovered} not covered, ${report.summary.failed} failed.\n`);
|
|
174
|
+
}
|
|
175
|
+
return report.summary.failed > 0 ? 1 : 0;
|
|
176
|
+
}
|
|
177
|
+
function statusRowFor(id, target, options, ctx, env, root) {
|
|
178
|
+
const base = baseRowFor(id, target);
|
|
179
|
+
if (!target) {
|
|
180
|
+
return { ...base, targetPath: "", action: "SKIPPED", message: `Unknown target id '${id}'.`, reason: "unknown-target", statusVerdict: "NÃO COBERTO" };
|
|
181
|
+
}
|
|
182
|
+
const resolved = resolveInstructionTarget(target, options.scope, env, root);
|
|
183
|
+
if (!resolved.covered || resolved.file === undefined) {
|
|
184
|
+
return {
|
|
185
|
+
...base,
|
|
186
|
+
targetPath: resolved.declaredPath ?? "",
|
|
187
|
+
action: "SKIPPED",
|
|
188
|
+
message: resolved.skipReason ?? "Out of snippet coverage.",
|
|
189
|
+
reason: resolved.skipReason,
|
|
190
|
+
statusVerdict: "NÃO COBERTO",
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
let raw;
|
|
194
|
+
try {
|
|
195
|
+
raw = readFileOrNull(resolved.file.absPath);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
return {
|
|
199
|
+
...base,
|
|
200
|
+
targetPath: resolved.file.absPath,
|
|
201
|
+
action: "FAILED",
|
|
202
|
+
message: err instanceof Error ? err.message : String(err),
|
|
203
|
+
error: { code: "SNIPPET_IO_ERROR", details: String(err) },
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const report = planStatus(raw, ctx.expectedBlock, ctx.expectedDigest, ctx.contractVersion);
|
|
207
|
+
return {
|
|
208
|
+
...base,
|
|
209
|
+
targetPath: resolved.file.absPath,
|
|
210
|
+
action: "SKIPPED",
|
|
211
|
+
message: report.detail,
|
|
212
|
+
statusVerdict: report.verdict,
|
|
213
|
+
installedVersion: report.installedVersion,
|
|
214
|
+
contractVersion: ctx.contractVersion,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=snippet-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet-report.js","sourceRoot":"","sources":["../../src/installer/snippet-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAON,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,YAAY,GAA2B;IAC3C,kBAAkB,EAChB,mEAAmE;IACrE,kBAAkB,EAChB,0JAA0J;IAC5J,0BAA0B,EACxB,4EAA4E;IAC9E,aAAa,EACX,2EAA2E;CAC9E,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;QACnC,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,WAAW,EACT,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB,wEAAwE;YAC1E,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACzD,MAAM,EAAE,yCAAyC;QACjD,WAAW,EAAE,kEAAkE;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAS,EAAE,OAAyB,EAAE,OAAiB;IACjF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IACD,EAAE,CAAC,WAAW,CAAC,oBAAoB,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACzE,EAAE,CAAC,WAAW,CAAC,yBAAyB,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAyB,EACzB,OAAqB;IAErB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,KAAK,CAAC,OAAO;QACzB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAAyB,EACzB,GAAgB,EAChB,IAAmB;IAEnB,OAAO;QACL,OAAO,EAAE,iBAAiB,EAAE;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAwC;QACtD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE;YACP,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;YAC1F,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;YAC1D,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,oBAAoB,CAAC,CAAC,MAAM;YAC/F,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;SACzD;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,MAA6B,EAC7B,OAAyB,EACzB,EAAS;IAET,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,EAAE,CAAC,WAAW,CAAC,eAAe,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,UAAU,MAAM,CAAC,CAAC;YACxE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IAC5C,EAAE,CAAC,WAAW,CACZ,yBAAyB,MAAM,CAAC,OAAO,CAAC,UAAU,gBAAgB,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,CAC3J,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,EAAS,EACT,GAAgB,EAChB,IAAmB;IAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAyB,EACzB,EAAS,EACT,OAAe;IAEf,MAAM,IAAI,GAAkB,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1E,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,SAAS;QACjB,OAAO;QACP,MAAM,EAAE,4BAA4B;KACrC,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAiB,EAAE,IAAI,CAAC,CAAC;IACzF,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,+BAA+B,GACnC,qHAAqH,CAAC;AAExH,SAAS,UAAU,CAAC,EAAU,EAAE,MAA0C;IACxE,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE;QACtC,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAK,KAAe;QAC9C,MAAM,EAAE,MAAM,EAAE,MAAM,IAAK,MAAgB;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAyB,EACzB,EAAS,EACT,GAAgB,EAChB,IAAY;IAEZ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAC3D,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CACzD,CAAC;IACF,OAAO,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAU,EACV,MAA0C,EAC1C,OAAyB,EACzB,GAAgB,EAChB,IAAY;IAEZ,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACzH,CAAC;IACD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;YACvC,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,IAAI,0BAA0B;YAC1D,MAAM,EAAE,QAAQ,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,UAAU,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;QACjE,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,+BAA+B;QACxC,MAAM,EAAE,6BAA6B;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAyB,EACzB,EAAS,EACT,GAA2B,EAC3B,GAAgB,EAChB,IAAY;IAEZ,MAAM,IAAI,GAAkB,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAC1E,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAClD,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE,CACpC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,MAAM,GAAwB;QAClC,OAAO,EAAE,iBAAiB,EAAE;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAwC;QACtD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,OAAO,EAAE;YACP,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC;YACjC,QAAQ,EAAE,SAAS,CAAC,eAAe,CAAC;YACpC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC;YAC5B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC;YAClC,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;SACzD;QACD,OAAO,EAAE,IAAI;KACd,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,WAAW,CACZ,gCAAgC,GAAG,CAAC,eAAe,iBAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,gBAAgB,MAAM,CAAC,OAAO,CAAC,QAAQ,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,eAAe,MAAM,CAAC,OAAO,CAAC,UAAU,iBAAiB,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,CACpS,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CACnB,EAAU,EACV,MAA0C,EAC1C,OAAyB,EACzB,GAA2B,EAC3B,GAAgB,EAChB,IAAY;IAEZ,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;IACvJ,CAAC;IACD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;YACvC,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,IAAI,0BAA0B;YAC1D,MAAM,EAAE,QAAQ,CAAC,UAAU;YAC3B,aAAa,EAAE,aAAa;SAC7B,CAAC;IACJ,CAAC;IACD,IAAI,GAAkB,CAAC;IACvB,IAAI,CAAC;QACH,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO;YACjC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;SAC1D,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3F,OAAO;QACL,GAAG,IAAI;QACP,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO;QACjC,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,GAAG,CAAC,eAAe;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet.d.ts","sourceRoot":"","sources":["../../src/installer/snippet.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AA8BpB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAiEtC,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB7F"}
|