@sirius-mcp/mcp 1.5.2 → 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/README.md +17 -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/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 +2 -2
- 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 +13 -3
- package/dist/installer/cli-parser.js.map +1 -1
- package/dist/installer/cli.d.ts.map +1 -1
- package/dist/installer/cli.js +61 -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/index.d.ts +4 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +33 -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 +40 -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 +2 -2
- 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,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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import readline from "node:readline";
|
|
4
|
+
import {} from "./types.js";
|
|
5
|
+
import { resolveTargetEnvironment } from "./targets.js";
|
|
6
|
+
import { loadProjectConfig, configLoadError } from "../app/loadProjectConfig.js";
|
|
7
|
+
import { createDocumentExclusive, documentPath } from "../adapters/fs/structure.js";
|
|
8
|
+
import { CONTRACT_ID, CONTRACT_TYPE } from "./precedence.js";
|
|
9
|
+
import { buildPrecedenceContractMarkdown } from "./contract-seed.js";
|
|
10
|
+
import { resolveInstructionTarget } from "./instruction-targets.js";
|
|
11
|
+
import { buildContractContext, contractMissingRefusal, flagConflict, normalizeLanguage, notInitializedRefusal, resolveMode, selectedEntries, todayIso, } from "./snippet-context.js";
|
|
12
|
+
import { emitAbortReport, emitRefusal, emitRemoveWithoutContract, emitStatus, finishReport, outcomeRows, precedenceRefusal, } from "./snippet-report.js";
|
|
13
|
+
import { executeGroup } from "./snippet-exec.js";
|
|
14
|
+
async function readFileOrNullAsync(filePath) {
|
|
15
|
+
try {
|
|
16
|
+
return await fs.promises.readFile(filePath, "utf8");
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err.code === "ENOENT")
|
|
20
|
+
return null;
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async function bootstrapSnippet(options, root) {
|
|
25
|
+
const conflict = flagConflict(options);
|
|
26
|
+
if (conflict)
|
|
27
|
+
return { kind: "refusal", refusal: conflict };
|
|
28
|
+
const config = await loadProjectConfig(root);
|
|
29
|
+
if (config.kind !== "ok") {
|
|
30
|
+
const refusal = config.kind === "missing" ? notInitializedRefusal() : configLoadError(config);
|
|
31
|
+
return { kind: "refusal", refusal };
|
|
32
|
+
}
|
|
33
|
+
const language = normalizeLanguage(config.config.language);
|
|
34
|
+
const contractFile = documentPath(root, CONTRACT_TYPE, CONTRACT_ID);
|
|
35
|
+
let raw = await readFileOrNullAsync(contractFile);
|
|
36
|
+
if (resolveMode(options) === "generate" && raw === null) {
|
|
37
|
+
await seedContractToleratingRace(root, language);
|
|
38
|
+
raw = await readFileOrNullAsync(contractFile);
|
|
39
|
+
}
|
|
40
|
+
if (raw === null) {
|
|
41
|
+
if (resolveMode(options) === "remove")
|
|
42
|
+
return { kind: "ready-no-contract" };
|
|
43
|
+
return { kind: "refusal", refusal: contractMissingRefusal() };
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
return { kind: "ready", ctx: buildContractContext(contractFile, language, raw) };
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return { kind: "refusal", refusal: precedenceRefusal(err) };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function seedContractToleratingRace(root, language) {
|
|
53
|
+
try {
|
|
54
|
+
await createDocumentExclusive(root, CONTRACT_TYPE, CONTRACT_ID, buildPrecedenceContractMarkdown(language, todayIso()));
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
if (err.code !== "EEXIST")
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export async function runSnippetCommand(options, io) {
|
|
62
|
+
const root = io.cwd ?? io.env?.cwd ?? process.cwd();
|
|
63
|
+
const boot = await bootstrapSnippet(options, root);
|
|
64
|
+
if (boot.kind === "refusal") {
|
|
65
|
+
emitRefusal(io, options, boot.refusal);
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
const env = io.env ?? { ...resolveTargetEnvironment(), cwd: root };
|
|
69
|
+
const mode = resolveMode(options);
|
|
70
|
+
if (mode === "status") {
|
|
71
|
+
if (boot.kind === "ready-no-contract") {
|
|
72
|
+
emitRefusal(io, options, contractMissingRefusal());
|
|
73
|
+
return 1;
|
|
74
|
+
}
|
|
75
|
+
return emitStatus(options, io, boot.ctx, env, root);
|
|
76
|
+
}
|
|
77
|
+
if (boot.kind === "ready-no-contract") {
|
|
78
|
+
return emitRemoveWithoutContract(options, io, env, root);
|
|
79
|
+
}
|
|
80
|
+
return emitMutation(options, io, boot.ctx, env, root);
|
|
81
|
+
}
|
|
82
|
+
function groupKey(absPath) {
|
|
83
|
+
const resolved = path.resolve(absPath);
|
|
84
|
+
return process.platform === "win32" ? resolved.toLowerCase() : resolved;
|
|
85
|
+
}
|
|
86
|
+
function buildGroups(options, env, root) {
|
|
87
|
+
const groups = [];
|
|
88
|
+
const byKey = new Map();
|
|
89
|
+
const uncovered = new Map();
|
|
90
|
+
for (const { id, target } of selectedEntries(options)) {
|
|
91
|
+
if (!target) {
|
|
92
|
+
uncovered.set(id, {
|
|
93
|
+
targetId: id,
|
|
94
|
+
displayName: id,
|
|
95
|
+
category: "cli",
|
|
96
|
+
format: "JSON",
|
|
97
|
+
targetPath: "",
|
|
98
|
+
action: "SKIPPED",
|
|
99
|
+
message: `Unknown target id '${id}'.`,
|
|
100
|
+
reason: "unknown-target",
|
|
101
|
+
});
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const resolved = resolveInstructionTarget(target, options.scope, env, root);
|
|
105
|
+
if (!resolved.covered || resolved.file === undefined) {
|
|
106
|
+
uncovered.set(id, {
|
|
107
|
+
targetId: id,
|
|
108
|
+
displayName: target.displayName,
|
|
109
|
+
category: target.category,
|
|
110
|
+
format: target.format,
|
|
111
|
+
targetPath: resolved.declaredPath ?? "",
|
|
112
|
+
action: "SKIPPED",
|
|
113
|
+
message: resolved.skipReason ?? "Out of snippet coverage.",
|
|
114
|
+
reason: resolved.skipReason,
|
|
115
|
+
});
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const key = groupKey(resolved.file.absPath);
|
|
119
|
+
const existing = byKey.get(key);
|
|
120
|
+
if (existing) {
|
|
121
|
+
existing.targets.push(target);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const group = { key, absPath: resolved.file.absPath, targets: [target] };
|
|
125
|
+
byKey.set(key, group);
|
|
126
|
+
groups.push(group);
|
|
127
|
+
}
|
|
128
|
+
return { groups, uncovered };
|
|
129
|
+
}
|
|
130
|
+
async function emitMutation(options, io, ctx, env, root) {
|
|
131
|
+
if (options.scope === "global" && !options.dryRun && !options.yes) {
|
|
132
|
+
const confirmed = await confirmGlobalScope();
|
|
133
|
+
if (!confirmed) {
|
|
134
|
+
return emitAbortReport(options, io, "Global scope not confirmed (--yes or interactive confirmation required).");
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const { groups, uncovered } = buildGroups(options, env, root);
|
|
138
|
+
const rows = [];
|
|
139
|
+
for (const group of groups) {
|
|
140
|
+
const outcome = await executeGroup(group, resolveMode(options), options, ctx, env);
|
|
141
|
+
rows.push(...outcomeRows(group, outcome));
|
|
142
|
+
}
|
|
143
|
+
rows.push(...uncovered.values());
|
|
144
|
+
return finishReport(options, io, env, rows);
|
|
145
|
+
}
|
|
146
|
+
async function confirmGlobalScope() {
|
|
147
|
+
if (!process.stdin.isTTY || !process.stderr.isTTY)
|
|
148
|
+
return false;
|
|
149
|
+
process.stderr.write("[sirius] Global scope writes user-level instruction files (e.g. ~/.claude/CLAUDE.md). Continue? [y/N] ");
|
|
150
|
+
return new Promise((resolve) => {
|
|
151
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
152
|
+
rl.question("", (answer) => {
|
|
153
|
+
rl.close();
|
|
154
|
+
resolve(/^y(es)?$/i.test(answer.trim()));
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=snippet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../../src/installer/snippet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-render.d.ts","sourceRoot":"","sources":["../../src/installer/tui-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAsBlE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {} from "./types.js";
|
|
2
|
+
function color(text, code) {
|
|
3
|
+
if (process.env.NO_COLOR !== undefined) {
|
|
4
|
+
return text;
|
|
5
|
+
}
|
|
6
|
+
return `${code}${text}\x1b[0m`;
|
|
7
|
+
}
|
|
8
|
+
export function renderSummaryScreen(results) {
|
|
9
|
+
const configured = results.filter((r) => r.action === "CONFIGURED" || r.action === "REMOVED");
|
|
10
|
+
const lines = [
|
|
11
|
+
color("┌────────────────────────────────────────────────────────────────────────────┐", "\x1b[90m"),
|
|
12
|
+
color("│ SIRIUS MCP — CONFIGURATION COMPLETE │", "\x1b[1m\x1b[32m"),
|
|
13
|
+
`│ ${configured.length} Clients Configured · All changes saved with atomic backups. │`,
|
|
14
|
+
color("├────────────────────────────────────────────────────────────────────────────┤", "\x1b[90m"),
|
|
15
|
+
"│ │",
|
|
16
|
+
"│ ── Next Steps: Verify Sirius in Your AI Tools ─────────────────────────── │",
|
|
17
|
+
"│ │",
|
|
18
|
+
"│ 1. Cursor IDE (Flagship): │",
|
|
19
|
+
"│ Reload window (Cmd/Ctrl+Shift+P > Reload Window) and prompt: │",
|
|
20
|
+
color('│ ❯ "Check living architecture status with context_list" │', "\x1b[36m"),
|
|
21
|
+
"│ │",
|
|
22
|
+
"│ 2. Devin CLI / Codex CLI: │",
|
|
23
|
+
color('│ ❯ devin "Inspect project context via context_list" │', "\x1b[36m"),
|
|
24
|
+
"│ │",
|
|
25
|
+
"│ ── Living Architecture Web Portal ─────────────────────────────────────── │",
|
|
26
|
+
"│ Inspect graph topology locally at: http://127.0.0.1:4200 │",
|
|
27
|
+
color("└────────────────────────────────────────────────────────────────────────────┘", "\x1b[90m"),
|
|
28
|
+
];
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=tui-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-render.js","sourceRoot":"","sources":["../../src/installer/tui-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,YAAY,CAAC;AAE9C,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,KAAK,CAAC,gFAAgF,EAAE,iBAAiB,CAAC;QAC1G,MAAM,UAAU,CAAC,MAAM,2EAA2E;QAClG,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,gFAAgF;QAChF,gFAAgF;QAChF,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;KACpG,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/installer/tui.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { type DetectedTarget, type InstallerOptions, type
|
|
1
|
+
import { type DetectedTarget, type InstallerOptions, type TargetScope } from "./types.js";
|
|
2
|
+
export { renderSummaryScreen } from "./tui-render.js";
|
|
2
3
|
export declare function initialSelectionHeuristic(detected: DetectedTarget[]): Set<string>;
|
|
3
4
|
export declare function toggleSelection(selected: Set<string>, id: string): void;
|
|
4
5
|
export declare function toggleCategorySelection(selected: Set<string>, targets: DetectedTarget[], category: "cli" | "ide"): void;
|
|
5
6
|
export declare function renderChecklistScreen(detected: DetectedTarget[], selected: Set<string>, cursorIndex: number, scope: TargetScope, showUndetected: boolean): string;
|
|
6
|
-
export declare function
|
|
7
|
-
|
|
7
|
+
export declare function startInteractiveWizard(initialOptions?: Partial<InstallerOptions>, postInstall?: {
|
|
8
|
+
offerSnippet?: boolean;
|
|
9
|
+
}): Promise<number>;
|
|
8
10
|
//# sourceMappingURL=tui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/installer/tui.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/installer/tui.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAQjF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAMvE;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,KAAK,GAAG,KAAK,GACtB,IAAI,CAWN;AA4BD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EAAE,EAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,OAAO,GACtB,MAAM,CAwCR;AA4FD,wBAAsB,sBAAsB,CAC1C,cAAc,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAC9C,WAAW,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,OAAO,CAAC,MAAM,CAAC,CA2FjB"}
|
package/dist/installer/tui.js
CHANGED
|
@@ -2,12 +2,14 @@ import readline from "node:readline";
|
|
|
2
2
|
import {} from "./types.js";
|
|
3
3
|
import { detectAllTargets } from "./detector.js";
|
|
4
4
|
import { runInstallerCli } from "./cli.js";
|
|
5
|
+
import { runPostInstallOffer } from "./snippet-offer.js";
|
|
5
6
|
function color(text, code) {
|
|
6
7
|
if (process.env.NO_COLOR !== undefined) {
|
|
7
8
|
return text;
|
|
8
9
|
}
|
|
9
10
|
return `${code}${text}\x1b[0m`;
|
|
10
11
|
}
|
|
12
|
+
export { renderSummaryScreen } from "./tui-render.js";
|
|
11
13
|
export function initialSelectionHeuristic(detected) {
|
|
12
14
|
const set = new Set();
|
|
13
15
|
for (const d of detected) {
|
|
@@ -92,29 +94,6 @@ export function renderChecklistScreen(detected, selected, cursorIndex, scope, sh
|
|
|
92
94
|
lines.push(color("└────────────────────────────────────────────────────────────────────────────┘", "\x1b[90m"));
|
|
93
95
|
return lines.join("\n");
|
|
94
96
|
}
|
|
95
|
-
export function renderSummaryScreen(results) {
|
|
96
|
-
const configured = results.filter((r) => r.action === "CONFIGURED" || r.action === "REMOVED");
|
|
97
|
-
const lines = [
|
|
98
|
-
color("┌────────────────────────────────────────────────────────────────────────────┐", "\x1b[90m"),
|
|
99
|
-
color("│ SIRIUS MCP — CONFIGURATION COMPLETE │", "\x1b[1m\x1b[32m"),
|
|
100
|
-
`│ ${configured.length} Clients Configured · All changes saved with atomic backups. │`,
|
|
101
|
-
color("├────────────────────────────────────────────────────────────────────────────┤", "\x1b[90m"),
|
|
102
|
-
"│ │",
|
|
103
|
-
"│ ── Next Steps: Verify Sirius in Your AI Tools ─────────────────────────── │",
|
|
104
|
-
"│ │",
|
|
105
|
-
"│ 1. Cursor IDE (Flagship): │",
|
|
106
|
-
"│ Reload window (Cmd/Ctrl+Shift+P > Reload Window) and prompt: │",
|
|
107
|
-
color('│ ❯ "Check living architecture status with context_list" │', "\x1b[36m"),
|
|
108
|
-
"│ │",
|
|
109
|
-
"│ 2. Devin CLI / Codex CLI: │",
|
|
110
|
-
color('│ ❯ devin "Inspect project context via context_list" │', "\x1b[36m"),
|
|
111
|
-
"│ │",
|
|
112
|
-
"│ ── Living Architecture Web Portal ─────────────────────────────────────── │",
|
|
113
|
-
"│ Inspect graph topology locally at: http://127.0.0.1:4200 │",
|
|
114
|
-
color("└────────────────────────────────────────────────────────────────────────────┘", "\x1b[90m"),
|
|
115
|
-
];
|
|
116
|
-
return lines.join("\n");
|
|
117
|
-
}
|
|
118
97
|
function updateCursorOnMove(name, str, current, max) {
|
|
119
98
|
if (name === "up" || str === "k") {
|
|
120
99
|
return current > 0 ? current - 1 : max - 1;
|
|
@@ -182,7 +161,7 @@ function processWizardKey(str, key, state, visible) {
|
|
|
182
161
|
}
|
|
183
162
|
return "NOOP";
|
|
184
163
|
}
|
|
185
|
-
export async function startInteractiveWizard(initialOptions = {}) {
|
|
164
|
+
export async function startInteractiveWizard(initialOptions = {}, postInstall = {}) {
|
|
186
165
|
const isTty = Boolean(process.stdin.isTTY && process.stderr.isTTY);
|
|
187
166
|
if (!isTty || process.env.TERM === "dumb") {
|
|
188
167
|
return runInstallerCli({
|
|
@@ -248,6 +227,10 @@ export async function startInteractiveWizard(initialOptions = {}) {
|
|
|
248
227
|
force: false,
|
|
249
228
|
stdio: false,
|
|
250
229
|
});
|
|
230
|
+
if (code === 0 && postInstall.offerSnippet) {
|
|
231
|
+
resolve(await runPostInstallOffer(initialOptions, state.scope, targets, code));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
251
234
|
resolve(code);
|
|
252
235
|
}
|
|
253
236
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/installer/tui.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/installer/tui.ts"],"names":[],"mappings":"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"}
|