@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.
Files changed (134) hide show
  1. package/README.md +19 -4
  2. package/dist/adapters/fs/structure.d.ts.map +1 -1
  3. package/dist/adapters/fs/structure.js +16 -0
  4. package/dist/adapters/fs/structure.js.map +1 -1
  5. package/dist/adapters/mcp/crawl.js +1 -1
  6. package/dist/adapters/mcp/crawl.js.map +1 -1
  7. package/dist/adapters/mcp/get.js +1 -1
  8. package/dist/adapters/mcp/get.js.map +1 -1
  9. package/dist/adapters/mcp/index.d.ts +2 -0
  10. package/dist/adapters/mcp/index.d.ts.map +1 -1
  11. package/dist/adapters/mcp/index.js +5 -1
  12. package/dist/adapters/mcp/index.js.map +1 -1
  13. package/dist/adapters/mcp/init.js +1 -1
  14. package/dist/adapters/mcp/init.js.map +1 -1
  15. package/dist/adapters/mcp/list.js +1 -1
  16. package/dist/adapters/mcp/list.js.map +1 -1
  17. package/dist/adapters/mcp/query-counter.d.ts +17 -0
  18. package/dist/adapters/mcp/query-counter.d.ts.map +1 -0
  19. package/dist/adapters/mcp/query-counter.js +30 -0
  20. package/dist/adapters/mcp/query-counter.js.map +1 -0
  21. package/dist/adapters/mcp/reindex.js +1 -1
  22. package/dist/adapters/mcp/reindex.js.map +1 -1
  23. package/dist/adapters/mcp/resources.d.ts +4 -1
  24. package/dist/adapters/mcp/resources.d.ts.map +1 -1
  25. package/dist/adapters/mcp/resources.js +50 -1
  26. package/dist/adapters/mcp/resources.js.map +1 -1
  27. package/dist/adapters/mcp/search.js +1 -1
  28. package/dist/adapters/mcp/search.js.map +1 -1
  29. package/dist/adapters/mcp/upsert.js +1 -1
  30. package/dist/adapters/mcp/upsert.js.map +1 -1
  31. package/dist/adapters/update/check.d.ts +27 -0
  32. package/dist/adapters/update/check.d.ts.map +1 -1
  33. package/dist/adapters/update/check.js +40 -2
  34. package/dist/adapters/update/check.js.map +1 -1
  35. package/dist/app/crawl.js +3 -0
  36. package/dist/app/crawl.js.map +1 -1
  37. package/dist/app/drift.d.ts +61 -0
  38. package/dist/app/drift.d.ts.map +1 -0
  39. package/dist/app/drift.js +193 -0
  40. package/dist/app/drift.js.map +1 -0
  41. package/dist/app/list.d.ts +2 -2
  42. package/dist/app/precedence-contract.d.ts +14 -0
  43. package/dist/app/precedence-contract.d.ts.map +1 -0
  44. package/dist/app/precedence-contract.js +51 -0
  45. package/dist/app/precedence-contract.js.map +1 -0
  46. package/dist/app/upsert.d.ts +14 -2
  47. package/dist/app/upsert.d.ts.map +1 -1
  48. package/dist/domain/source-adapter.d.ts +1 -0
  49. package/dist/domain/source-adapter.d.ts.map +1 -1
  50. package/dist/domain/source-adapter.js.map +1 -1
  51. package/dist/domain/staleness.d.ts +30 -0
  52. package/dist/domain/staleness.d.ts.map +1 -0
  53. package/dist/domain/staleness.js +71 -0
  54. package/dist/domain/staleness.js.map +1 -0
  55. package/dist/errors.d.ts +30 -6
  56. package/dist/errors.d.ts.map +1 -1
  57. package/dist/errors.js +88 -16
  58. package/dist/errors.js.map +1 -1
  59. package/dist/installer/cli-parser.d.ts.map +1 -1
  60. package/dist/installer/cli-parser.js +19 -5
  61. package/dist/installer/cli-parser.js.map +1 -1
  62. package/dist/installer/cli.d.ts.map +1 -1
  63. package/dist/installer/cli.js +73 -37
  64. package/dist/installer/cli.js.map +1 -1
  65. package/dist/installer/contract-seed.d.ts +6 -0
  66. package/dist/installer/contract-seed.d.ts.map +1 -0
  67. package/dist/installer/contract-seed.js +140 -0
  68. package/dist/installer/contract-seed.js.map +1 -0
  69. package/dist/installer/dispatch.d.ts.map +1 -1
  70. package/dist/installer/dispatch.js +3 -1
  71. package/dist/installer/dispatch.js.map +1 -1
  72. package/dist/installer/drift-command.d.ts +15 -0
  73. package/dist/installer/drift-command.d.ts.map +1 -0
  74. package/dist/installer/drift-command.js +78 -0
  75. package/dist/installer/drift-command.js.map +1 -0
  76. package/dist/installer/index.d.ts +4 -0
  77. package/dist/installer/index.d.ts.map +1 -1
  78. package/dist/installer/index.js +34 -5
  79. package/dist/installer/index.js.map +1 -1
  80. package/dist/installer/instruction-targets.d.ts +33 -0
  81. package/dist/installer/instruction-targets.d.ts.map +1 -0
  82. package/dist/installer/instruction-targets.js +199 -0
  83. package/dist/installer/instruction-targets.js.map +1 -0
  84. package/dist/installer/precedence.d.ts +59 -0
  85. package/dist/installer/precedence.d.ts.map +1 -0
  86. package/dist/installer/precedence.js +218 -0
  87. package/dist/installer/precedence.js.map +1 -0
  88. package/dist/installer/snippet-context.d.ts +49 -0
  89. package/dist/installer/snippet-context.d.ts.map +1 -0
  90. package/dist/installer/snippet-context.js +93 -0
  91. package/dist/installer/snippet-context.js.map +1 -0
  92. package/dist/installer/snippet-engine.d.ts +21 -0
  93. package/dist/installer/snippet-engine.d.ts.map +1 -0
  94. package/dist/installer/snippet-engine.js +122 -0
  95. package/dist/installer/snippet-engine.js.map +1 -0
  96. package/dist/installer/snippet-exec.d.ts +4 -0
  97. package/dist/installer/snippet-exec.d.ts.map +1 -0
  98. package/dist/installer/snippet-exec.js +105 -0
  99. package/dist/installer/snippet-exec.js.map +1 -0
  100. package/dist/installer/snippet-offer.d.ts +21 -0
  101. package/dist/installer/snippet-offer.d.ts.map +1 -0
  102. package/dist/installer/snippet-offer.js +108 -0
  103. package/dist/installer/snippet-offer.js.map +1 -0
  104. package/dist/installer/snippet-report.d.ts +14 -0
  105. package/dist/installer/snippet-report.d.ts.map +1 -0
  106. package/dist/installer/snippet-report.js +217 -0
  107. package/dist/installer/snippet-report.js.map +1 -0
  108. package/dist/installer/snippet.d.ts +4 -0
  109. package/dist/installer/snippet.d.ts.map +1 -0
  110. package/dist/installer/snippet.js +158 -0
  111. package/dist/installer/snippet.js.map +1 -0
  112. package/dist/installer/tui-render.d.ts +3 -0
  113. package/dist/installer/tui-render.d.ts.map +1 -0
  114. package/dist/installer/tui-render.js +31 -0
  115. package/dist/installer/tui-render.js.map +1 -0
  116. package/dist/installer/tui.d.ts +5 -3
  117. package/dist/installer/tui.d.ts.map +1 -1
  118. package/dist/installer/tui.js +7 -24
  119. package/dist/installer/tui.js.map +1 -1
  120. package/dist/installer/types.d.ts +42 -2
  121. package/dist/installer/types.d.ts.map +1 -1
  122. package/dist/installer/types.js.map +1 -1
  123. package/dist/installer/version.d.ts +2 -0
  124. package/dist/installer/version.d.ts.map +1 -0
  125. package/dist/installer/version.js +18 -0
  126. package/dist/installer/version.js.map +1 -0
  127. package/dist/schemas/document.d.ts +24 -2
  128. package/dist/schemas/document.d.ts.map +1 -1
  129. package/dist/schemas/document.js +52 -0
  130. package/dist/schemas/document.js.map +1 -1
  131. package/dist/server.d.ts.map +1 -1
  132. package/dist/server.js +4 -0
  133. package/dist/server.js.map +1 -1
  134. package/package.json +1 -1
@@ -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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAIN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,QAAQ,GAGT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,WAAW,EACX,yBAAyB,EACzB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQjD,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAyB,EACzB,IAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAE5D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QAC5E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAY,EACZ,QAAqB;IAErB,IAAI,CAAC;QACH,MAAM,uBAAuB,CAC3B,IAAI,EACJ,aAAa,EACb,WAAW,EACX,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CACtD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAyB,EAAE,EAAS;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,wBAAwB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAChF,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,OAAO,yBAAyB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAClB,OAAyB,EACzB,GAAgB,EAChB,IAAY;IAEZ,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;gBAChB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,sBAAsB,EAAE,IAAI;gBACrC,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;gBAChB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;gBACvC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,QAAQ,CAAC,UAAU,IAAI,0BAA0B;gBAC1D,MAAM,EAAE,QAAQ,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAuB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7F,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAyB,EACzB,EAAS,EACT,GAA2B,EAC3B,GAAgB,EAChB,IAAY;IAEZ,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,eAAe,CACpB,OAAO,EACP,EAAE,EACF,0EAA0E,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,KAAK,EACL,WAAW,CAAC,OAAO,CAA0B,EAC7C,OAAO,EACP,GAAG,EACH,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,OAAO,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wGAAwG,CACzG,CAAC;IACF,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAc,EAAE,EAAE;YACjC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type PatchResult } from "./types.js";
2
+ export declare function renderSummaryScreen(results: PatchResult[]): string;
3
+ //# sourceMappingURL=tui-render.d.ts.map
@@ -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"}
@@ -1,8 +1,10 @@
1
- import { type DetectedTarget, type InstallerOptions, type PatchResult, type TargetScope } from "./types.js";
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 renderSummaryScreen(results: PatchResult[]): string;
7
- export declare function startInteractiveWizard(initialOptions?: Partial<InstallerOptions>): Promise<number>;
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,EAChB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAWpB,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;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAsBlE;AA4FD,wBAAsB,sBAAsB,CAC1C,cAAc,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAC7C,OAAO,CAAC,MAAM,CAAC,CAuFjB"}
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"}
@@ -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,EAKN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,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,yBAAyB,CAAC,QAA0B;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,KAAK,0BAA0B,IAAI,CAAC,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,EAAU;IAC/D,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAqB,EACrB,OAAyB,EACzB,QAAuB;IAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC5D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,oBAAoB;YACvB,OAAO,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC3C,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC9C,KAAK,0BAA0B;YAC7B,OAAO,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACzC,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,CAAiB,EACjB,UAAmB,EACnB,SAAkB;IAElB,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA0B,EAC1B,QAAqB,EACrB,WAAmB,EACnB,KAAkB,EAClB,cAAuB;IAEvB,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAa;QACtB,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,KAAK,CAAC,gFAAgF,EAAE,SAAS,CAAC;QAClG,cAAc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,wCAAwC;QACtH,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,oFAAoF;QACpF,gFAAgF;QAChF,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;KACpG,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,WAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhH,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,WAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAChH,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,4BAA4B,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,qCAAqC,CAAC,CAAC;IAC/I,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IAC9F,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,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;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,GAAW,EAAE,OAAe,EAAE,GAAW;IACjF,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACnC,OAAO,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAW,EACX,OAAyB,EACzB,QAAqB;IAErB,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,WAAW;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;gBACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAkB;IACxD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;QAC7C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAW,EACX,GAAiB,EACjB,KAAkB,EAClB,OAAyB;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAW,EACX,GAAiB,EACjB,KAAkB,EAClB,OAAyB;IAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,iBAA4C,EAAE;IAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC;YACrB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,QAAQ;YACvC,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAgB;QACzB,QAAQ,EAAE,yBAAyB,CAAC,QAAQ,CAAC;QAC7C,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,QAAQ;QACvC,MAAM,EAAE,CAAC;QACT,cAAc,EAAE,IAAI;KACrB,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CACnB,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,cAAc,CACrB,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,EAAE,CAAC;IAEP,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAE,GAAiB,EAAE,EAAE;YACzD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc;gBAClC,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;oBACjC,UAAU,EAAE,SAAS;oBACrB,OAAO;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/installer/tui.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAIN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,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,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,UAAU,yBAAyB,CAAC,QAA0B;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,KAAK,0BAA0B,IAAI,CAAC,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,EAAU;IAC/D,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAqB,EACrB,OAAyB,EACzB,QAAuB;IAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA8B;IAC5D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,oBAAoB;YACvB,OAAO,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC3C,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC9C,KAAK,0BAA0B;YAC7B,OAAO,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACzC,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,CAAiB,EACjB,UAAmB,EACnB,SAAkB;IAElB,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA0B,EAC1B,QAAqB,EACrB,WAAmB,EACnB,KAAkB,EAClB,cAAuB;IAEvB,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAa;QACtB,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,KAAK,CAAC,gFAAgF,EAAE,SAAS,CAAC;QAClG,cAAc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,wCAAwC;QACtH,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;QACnG,oFAAoF;QACpF,gFAAgF;QAChF,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC;KACpG,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,WAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhH,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,WAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAChH,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,4BAA4B,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,qCAAqC,CAAC,CAAC;IAC/I,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IAC9F,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gFAAgF,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,GAAW,EAAE,OAAe,EAAE,GAAW;IACjF,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACnC,OAAO,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAW,EACX,OAAyB,EACzB,QAAqB;IAErB,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,WAAW;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;gBACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAkB;IACxD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;QAC7C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAW,EACX,GAAiB,EACjB,KAAkB,EAClB,OAAyB;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAW,EACX,GAAiB,EACjB,KAAkB,EAClB,OAAyB;IAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,iBAA4C,EAAE,EAC9C,cAA0C,EAAE;IAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC;YACrB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,QAAQ;YACvC,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAgB;QACzB,QAAQ,EAAE,yBAAyB,CAAC,QAAQ,CAAC;QAC7C,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,QAAQ;QACvC,MAAM,EAAE,CAAC;QACT,cAAc,EAAE,IAAI;KACrB,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CACnB,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,cAAc,CACrB,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,EAAE,CAAC;IAEP,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAE,GAAiB,EAAE,EAAE;YACzD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc;gBAClC,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;oBACjC,UAAU,EAAE,SAAS;oBACrB,OAAO;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;gBACH,IAAI,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC3C,OAAO,CAAC,MAAM,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC/E,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -38,7 +38,7 @@ export interface DetectedTarget {
38
38
  scope: TargetScope;
39
39
  }
40
40
  export interface InstallerOptions {
41
- subcommand: "install" | "doctor" | "uninstall" | "setup";
41
+ subcommand: "install" | "doctor" | "uninstall" | "setup" | "snippet" | "drift";
42
42
  targets?: string[];
43
43
  category?: "cli" | "ides" | "all";
44
44
  scope: TargetScope;
@@ -48,8 +48,14 @@ export interface InstallerOptions {
48
48
  json: boolean;
49
49
  force: boolean;
50
50
  stdio: boolean;
51
+ /** snippet only: read-only status report (CAP-15). */
52
+ status?: boolean;
53
+ /** snippet only: remove the routing block (CAP-14). */
54
+ remove?: boolean;
55
+ /** drift only: positional tokens that are neither subcommand nor flag. */
56
+ extraArgs?: string[];
51
57
  }
52
- export type PatchAction = "CONFIGURED" | "ALREADY_CONFIGURED" | "SKIPPED" | "FAILED" | "REMOVED";
58
+ export type PatchAction = "CONFIGURED" | "UPDATED" | "ALREADY_CONFIGURED" | "SKIPPED" | "FAILED" | "REMOVED";
53
59
  export interface PatchResult {
54
60
  targetId: string;
55
61
  displayName: string;
@@ -64,6 +70,18 @@ export interface PatchResult {
64
70
  code: string;
65
71
  details: string;
66
72
  };
73
+ /** snippet: why a target was skipped (coverage, detection, abort). */
74
+ reason?: string;
75
+ /** snippet: all target ids served by the block at targetPath (dedupe). */
76
+ servingTargets?: string[];
77
+ /** snippet --status verdict (CAP-15). */
78
+ statusVerdict?: string;
79
+ /** snippet: version parsed from the installed start marker. */
80
+ installedVersion?: number | null;
81
+ /** snippet: version of the contract the run compared against. */
82
+ contractVersion?: number | null;
83
+ /** snippet: true when the instruction file was created by this run. */
84
+ createdFile?: boolean;
67
85
  }
68
86
  export interface SiriusInstallerReport {
69
87
  version: string;
@@ -75,11 +93,33 @@ export interface SiriusInstallerReport {
75
93
  summary: {
76
94
  totalScanned: number;
77
95
  configured: number;
96
+ /** snippet only: in-place marker-interval replacements. */
97
+ updated?: number;
98
+ /** snippet counts ALREADY_CONFIGURED rows here too. */
78
99
  skipped: number;
79
100
  failed: number;
80
101
  };
81
102
  targets: PatchResult[];
82
103
  }
104
+ export interface SnippetStatusSummary {
105
+ totalScanned: number;
106
+ upToDate: number;
107
+ outdated: number;
108
+ absent: number;
109
+ corrupted: number;
110
+ notCovered: number;
111
+ failed: number;
112
+ }
113
+ export interface SnippetStatusReport {
114
+ version: string;
115
+ timestamp: string;
116
+ platform: "darwin" | "win32" | "linux";
117
+ arch: string;
118
+ scope: TargetScope;
119
+ contractVersion: number;
120
+ summary: SnippetStatusSummary;
121
+ targets: PatchResult[];
122
+ }
83
123
  export interface PatcherContext {
84
124
  targetId: string;
85
125
  patcherType: PatcherType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/installer/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/installer/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3C,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtF,MAAM,MAAM,WAAW,GACnB,0BAA0B,GAC1B,oBAAoB,GACpB,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,KAAK,mBAAmB,CAAC;IAC5E,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC/E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,SAAS,GACT,oBAAoB,GACpB,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,2DAA2D;QAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,uDAAuD;QACvD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/installer/types.ts"],"names":[],"mappings":"AA4GA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAU;IACxC,GAAG,EAAE,iBAAiB;CACd,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/installer/types.ts"],"names":[],"mappings":"AAuJA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAU;IACxC,GAAG,EAAE,iBAAiB;CACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function readServerVersion(): string;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/installer/version.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C"}
@@ -0,0 +1,18 @@
1
+ import { readFileSync } from "node:fs";
2
+ let fallbackWarned = false;
3
+ export function readServerVersion() {
4
+ try {
5
+ const pkg = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
6
+ if (pkg.version)
7
+ return pkg.version;
8
+ }
9
+ catch {
10
+ // fall through to the warning + fallback below
11
+ }
12
+ if (!fallbackWarned) {
13
+ fallbackWarned = true;
14
+ process.stderr.write("[sirius] warning: could not read package.json version; falling back to 0.0.0.\n");
15
+ }
16
+ return "0.0.0";
17
+ }
18
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/installer/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC7C,CAAC;QAC1B,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -6,6 +6,16 @@ export type DocumentType = (typeof DocumentTypes)[number];
6
6
  export type DocumentStatus = (typeof DocumentStatuses)[number];
7
7
  export declare const ID_SLUG_REGEX: RegExp;
8
8
  export declare const ISO_DATE_REGEX: RegExp;
9
+ export declare const STALE_AFTER_REGEX: RegExp;
10
+ export interface DurationComponents {
11
+ years: number;
12
+ months: number;
13
+ weeks: number;
14
+ days: number;
15
+ }
16
+ export declare function durationComponents(value: string): DurationComponents | null;
17
+ export declare function isValidStaleAfterDuration(value: string): boolean;
18
+ export declare function isIsoCalendarDate(value: string): boolean;
9
19
  export declare const RelatedRef: z.ZodObject<{
10
20
  id: z.ZodString;
11
21
  type: z.ZodOptional<z.ZodEnum<["feature", "business-rule", "decision", "component", "architecture"]>>;
@@ -42,10 +52,14 @@ export declare const DocumentFrontmatter: z.ZodObject<{
42
52
  code_refs: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>, string[] | undefined, string[] | null | undefined>;
43
53
  tags: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>, string[] | undefined, string[] | null | undefined>;
44
54
  summary: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | undefined, string | null | undefined>;
55
+ stale_after: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>;
56
+ sources: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>, string[] | undefined, string[] | null | undefined>;
57
+ generated: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, boolean | undefined, boolean | null | undefined>;
58
+ verified: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>;
45
59
  }, "strip", z.ZodTypeAny, {
60
+ status: "draft" | "active" | "deprecated" | "superseded";
46
61
  id: string;
47
62
  type: "feature" | "business-rule" | "decision" | "component" | "architecture";
48
- status: "draft" | "active" | "deprecated" | "superseded";
49
63
  title: string;
50
64
  updated: string;
51
65
  related?: {
@@ -55,10 +69,14 @@ export declare const DocumentFrontmatter: z.ZodObject<{
55
69
  code_refs?: string[] | undefined;
56
70
  tags?: string[] | undefined;
57
71
  summary?: string | undefined;
72
+ stale_after?: string | undefined;
73
+ sources?: string[] | undefined;
74
+ generated?: boolean | undefined;
75
+ verified?: string | undefined;
58
76
  }, {
77
+ status: "draft" | "active" | "deprecated" | "superseded";
59
78
  id: string;
60
79
  type: "feature" | "business-rule" | "decision" | "component" | "architecture";
61
- status: "draft" | "active" | "deprecated" | "superseded";
62
80
  title: string;
63
81
  updated: string;
64
82
  related?: {
@@ -68,6 +86,10 @@ export declare const DocumentFrontmatter: z.ZodObject<{
68
86
  code_refs?: string[] | null | undefined;
69
87
  tags?: string[] | null | undefined;
70
88
  summary?: string | null | undefined;
89
+ stale_after?: string | null | undefined;
90
+ sources?: string[] | null | undefined;
91
+ generated?: boolean | null | undefined;
92
+ verified?: string | null | undefined;
71
93
  }>;
72
94
  export type DocumentFrontmatter = z.infer<typeof DocumentFrontmatter>;
73
95
  export interface DocumentParseResult {
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/schemas/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvD,eAAO,MAAM,aAAa,gFAMhB,CAAC;AAEX,eAAO,MAAM,gBAAgB,0DAKnB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,QAAiB,CAAC;AAC5C,eAAO,MAAM,cAAc,QAAwB,CAAC;AAEpD,eAAO,MAAM,UAAU;;;;;;;;;EAGrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CA2CpF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAcpF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAErF;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,MAAM,GACX,MAAM,CAGR"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/schemas/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvD,eAAO,MAAM,aAAa,gFAMhB,CAAC;AAEX,eAAO,MAAM,gBAAgB,0DAKnB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,QAAiB,CAAC;AAC5C,eAAO,MAAM,cAAc,QAAwB,CAAC;AACpD,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAW3E;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAShE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAcxD;AAED,eAAO,MAAM,UAAU;;;;;;;;;EAGrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CA2CpF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAcpF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAErF;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,MAAM,GACX,MAAM,CAGR"}
@@ -16,6 +16,45 @@ export const DocumentStatuses = [
16
16
  ];
17
17
  export const ID_SLUG_REGEX = /^[a-z0-9-]+$/;
18
18
  export const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
19
+ export const STALE_AFTER_REGEX = /^P(?=\d)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?$/;
20
+ const MAX_STALE_AFTER_DAYS = 100_000 * 365.25;
21
+ export function durationComponents(value) {
22
+ const match = STALE_AFTER_REGEX.exec(value);
23
+ if (!match) {
24
+ return null;
25
+ }
26
+ return {
27
+ years: durationValue(match[1]),
28
+ months: durationValue(match[2]),
29
+ weeks: durationValue(match[3]),
30
+ days: durationValue(match[4]),
31
+ };
32
+ }
33
+ function durationValue(component) {
34
+ return component === undefined ? 0 : Number.parseInt(component.slice(0, -1), 10);
35
+ }
36
+ export function isValidStaleAfterDuration(value) {
37
+ const parts = durationComponents(value);
38
+ if (!parts) {
39
+ return false;
40
+ }
41
+ const totalDays = parts.years * 365.25 + parts.months * 30.4375 + parts.weeks * 7 + parts.days;
42
+ const hasNonZeroComponent = parts.years > 0 || parts.months > 0 || parts.weeks > 0 || parts.days > 0;
43
+ return hasNonZeroComponent && totalDays <= MAX_STALE_AFTER_DAYS;
44
+ }
45
+ export function isIsoCalendarDate(value) {
46
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
47
+ if (!match) {
48
+ return false;
49
+ }
50
+ const year = Number(match[1]);
51
+ const monthIndex = Number(match[2]) - 1;
52
+ const day = Number(match[3]);
53
+ const date = new Date(Date.UTC(year, monthIndex, day));
54
+ return (date.getUTCFullYear() === year &&
55
+ date.getUTCMonth() === monthIndex &&
56
+ date.getUTCDate() === day);
57
+ }
19
58
  export const RelatedRef = z.object({
20
59
  id: z.string().min(1, "related id is required"),
21
60
  type: z.enum(DocumentTypes).optional(),
@@ -39,6 +78,19 @@ export const DocumentFrontmatter = z.object({
39
78
  code_refs: z.array(z.string().min(1)).nullish().transform((v) => v ?? undefined),
40
79
  tags: z.array(z.string().min(1)).nullish().transform((v) => v ?? undefined),
41
80
  summary: z.string().nullish().transform((v) => (v === null || v === undefined || v === "") ? undefined : v),
81
+ stale_after: z
82
+ .string()
83
+ .refine(isValidStaleAfterDuration, "stale_after must be an ISO 8601 duration like P30D, P6M or P1Y2M3D (at least one non-zero component)")
84
+ .nullish()
85
+ .transform((v) => v ?? undefined),
86
+ sources: z.array(z.string().min(1)).nullish().transform((v) => v ?? undefined),
87
+ generated: z.boolean().nullish().transform((v) => v ?? undefined),
88
+ verified: z
89
+ .string()
90
+ .regex(ISO_DATE_REGEX, "verified must be an ISO 8601 date (YYYY-MM-DD)")
91
+ .refine(isIsoCalendarDate, "verified must be a real calendar date (2026-02-31 style dates are rejected)")
92
+ .nullish()
93
+ .transform((v) => v ?? undefined),
42
94
  });
43
95
  const FRONTMATTER_DELIMITER = /^---\r?\n/;
44
96
  export function parseDocumentMarkdown(content) {