sequant 1.2.4 → 1.2.7

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 (53) hide show
  1. package/README.md +18 -0
  2. package/dist/bin/cli.js +10 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/src/commands/doctor.d.ts.map +1 -1
  5. package/dist/src/commands/doctor.js +33 -1
  6. package/dist/src/commands/doctor.js.map +1 -1
  7. package/dist/src/commands/doctor.test.js +84 -1
  8. package/dist/src/commands/doctor.test.js.map +1 -1
  9. package/dist/src/commands/init.d.ts.map +1 -1
  10. package/dist/src/commands/init.js +5 -0
  11. package/dist/src/commands/init.js.map +1 -1
  12. package/dist/src/commands/logs.d.ts +2 -0
  13. package/dist/src/commands/logs.d.ts.map +1 -1
  14. package/dist/src/commands/logs.js +41 -0
  15. package/dist/src/commands/logs.js.map +1 -1
  16. package/dist/src/commands/run.js +5 -1
  17. package/dist/src/commands/run.js.map +1 -1
  18. package/dist/src/commands/stats.d.ts +16 -0
  19. package/dist/src/commands/stats.d.ts.map +1 -0
  20. package/dist/src/commands/stats.js +271 -0
  21. package/dist/src/commands/stats.js.map +1 -0
  22. package/dist/src/commands/stats.test.d.ts +7 -0
  23. package/dist/src/commands/stats.test.d.ts.map +1 -0
  24. package/dist/src/commands/stats.test.js +218 -0
  25. package/dist/src/commands/stats.test.js.map +1 -0
  26. package/dist/src/commands/update.d.ts.map +1 -1
  27. package/dist/src/commands/update.js +2 -2
  28. package/dist/src/commands/update.js.map +1 -1
  29. package/dist/src/lib/settings.d.ts +17 -0
  30. package/dist/src/lib/settings.d.ts.map +1 -1
  31. package/dist/src/lib/settings.js +9 -0
  32. package/dist/src/lib/settings.js.map +1 -1
  33. package/dist/src/lib/system.d.ts +26 -0
  34. package/dist/src/lib/system.d.ts.map +1 -1
  35. package/dist/src/lib/system.js +72 -1
  36. package/dist/src/lib/system.js.map +1 -1
  37. package/dist/src/lib/workflow/log-rotation.d.ts +138 -0
  38. package/dist/src/lib/workflow/log-rotation.d.ts.map +1 -0
  39. package/dist/src/lib/workflow/log-rotation.js +232 -0
  40. package/dist/src/lib/workflow/log-rotation.js.map +1 -0
  41. package/dist/src/lib/workflow/log-rotation.test.d.ts +7 -0
  42. package/dist/src/lib/workflow/log-rotation.test.d.ts.map +1 -0
  43. package/dist/src/lib/workflow/log-rotation.test.js +248 -0
  44. package/dist/src/lib/workflow/log-rotation.test.js.map +1 -0
  45. package/dist/src/lib/workflow/log-writer.d.ts +6 -0
  46. package/dist/src/lib/workflow/log-writer.d.ts.map +1 -1
  47. package/dist/src/lib/workflow/log-writer.js +12 -0
  48. package/dist/src/lib/workflow/log-writer.js.map +1 -1
  49. package/dist/src/lib/workflow/log-writer.test.js +4 -1
  50. package/dist/src/lib/workflow/log-writer.test.js.map +1 -1
  51. package/package.json +1 -1
  52. package/templates/skills/exec/SKILL.md +75 -0
  53. package/templates/skills/qa/SKILL.md +8 -0
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Unit tests for stats command
3
+ *
4
+ * Tests the aggregate statistics functionality.
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
7
+ import * as fs from "fs";
8
+ import { statsCommand } from "./stats.js";
9
+ // Mock fs module before imports
10
+ vi.mock("fs");
11
+ // Mock path module to control joins
12
+ vi.mock("path", async () => {
13
+ const actual = await vi.importActual("path");
14
+ return {
15
+ ...actual,
16
+ join: (...args) => args.join("/"),
17
+ };
18
+ });
19
+ describe("statsCommand", () => {
20
+ const mockLog = {
21
+ version: 1,
22
+ runId: "12345678-1234-4234-a234-123456789abc",
23
+ startTime: "2024-01-15T10:00:00.000Z",
24
+ endTime: "2024-01-15T10:05:00.000Z",
25
+ config: {
26
+ phases: ["spec", "exec", "qa"],
27
+ sequential: false,
28
+ qualityLoop: false,
29
+ maxIterations: 3,
30
+ },
31
+ issues: [
32
+ {
33
+ issueNumber: 123,
34
+ title: "Test Issue 1",
35
+ labels: ["bug"],
36
+ status: "success",
37
+ phases: [
38
+ {
39
+ phase: "spec",
40
+ issueNumber: 123,
41
+ startTime: "2024-01-15T10:00:00.000Z",
42
+ endTime: "2024-01-15T10:01:00.000Z",
43
+ durationSeconds: 60,
44
+ status: "success",
45
+ },
46
+ {
47
+ phase: "exec",
48
+ issueNumber: 123,
49
+ startTime: "2024-01-15T10:01:00.000Z",
50
+ endTime: "2024-01-15T10:03:00.000Z",
51
+ durationSeconds: 120,
52
+ status: "success",
53
+ },
54
+ ],
55
+ totalDurationSeconds: 180,
56
+ },
57
+ {
58
+ issueNumber: 456,
59
+ title: "Test Issue 2",
60
+ labels: ["feature"],
61
+ status: "failure",
62
+ phases: [
63
+ {
64
+ phase: "spec",
65
+ issueNumber: 456,
66
+ startTime: "2024-01-15T10:03:00.000Z",
67
+ endTime: "2024-01-15T10:04:00.000Z",
68
+ durationSeconds: 60,
69
+ status: "success",
70
+ },
71
+ {
72
+ phase: "exec",
73
+ issueNumber: 456,
74
+ startTime: "2024-01-15T10:04:00.000Z",
75
+ endTime: "2024-01-15T10:05:00.000Z",
76
+ durationSeconds: 60,
77
+ status: "failure",
78
+ error: "Build failed",
79
+ },
80
+ ],
81
+ totalDurationSeconds: 120,
82
+ },
83
+ ],
84
+ summary: {
85
+ totalIssues: 2,
86
+ passed: 1,
87
+ failed: 1,
88
+ totalDurationSeconds: 300,
89
+ },
90
+ };
91
+ let consoleSpy;
92
+ beforeEach(() => {
93
+ vi.clearAllMocks();
94
+ consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
95
+ });
96
+ afterEach(() => {
97
+ consoleSpy.mockRestore();
98
+ });
99
+ describe("with no logs", () => {
100
+ beforeEach(() => {
101
+ fs.existsSync.mockReturnValue(true);
102
+ fs.readdirSync.mockReturnValue([]);
103
+ });
104
+ it("should show no logs message for human output", async () => {
105
+ await statsCommand({});
106
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("No logs found"));
107
+ });
108
+ it("should output error JSON for --json", async () => {
109
+ await statsCommand({ json: true });
110
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('"error"'));
111
+ });
112
+ it("should output header only for --csv", async () => {
113
+ await statsCommand({ csv: true });
114
+ expect(consoleSpy).toHaveBeenCalledWith("runId,startTime,duration,issues,passed,failed,phases");
115
+ });
116
+ });
117
+ describe("with logs", () => {
118
+ beforeEach(() => {
119
+ fs.existsSync.mockReturnValue(true);
120
+ fs.readdirSync.mockReturnValue([
121
+ "run-2024-01-15-abc.json",
122
+ ]);
123
+ fs.readFileSync.mockImplementation(() => JSON.stringify(mockLog));
124
+ });
125
+ it("should show statistics for human output", async () => {
126
+ await statsCommand({});
127
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Sequant Run Statistics"));
128
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Total runs analyzed: 1"));
129
+ });
130
+ it("should output valid JSON for --json", async () => {
131
+ await statsCommand({ json: true });
132
+ const output = consoleSpy.mock.calls[0][0];
133
+ const parsed = JSON.parse(output);
134
+ expect(parsed.totalRuns).toBe(1);
135
+ expect(parsed.totalIssues).toBe(2);
136
+ expect(parsed.passed).toBe(1);
137
+ expect(parsed.failed).toBe(1);
138
+ expect(parsed.successRate).toBe(50);
139
+ });
140
+ it("should output valid CSV for --csv", async () => {
141
+ await statsCommand({ csv: true });
142
+ const output = consoleSpy.mock.calls[0][0];
143
+ const lines = output.split("\n");
144
+ expect(lines[0]).toBe("runId,startTime,duration,issues,passed,failed,phases");
145
+ expect(lines[1]).toContain(mockLog.runId);
146
+ expect(lines[1]).toContain('"spec;exec;qa"');
147
+ });
148
+ });
149
+ describe("statistics calculation", () => {
150
+ const mockLog2 = {
151
+ ...mockLog,
152
+ runId: "87654321-4321-4321-a321-cba987654321",
153
+ summary: {
154
+ totalIssues: 3,
155
+ passed: 3,
156
+ failed: 0,
157
+ totalDurationSeconds: 600,
158
+ },
159
+ issues: [
160
+ {
161
+ issueNumber: 789,
162
+ title: "Test Issue 3",
163
+ labels: [],
164
+ status: "success",
165
+ phases: [
166
+ {
167
+ phase: "spec",
168
+ issueNumber: 789,
169
+ startTime: "2024-01-16T10:00:00.000Z",
170
+ endTime: "2024-01-16T10:02:00.000Z",
171
+ durationSeconds: 120,
172
+ status: "success",
173
+ },
174
+ ],
175
+ totalDurationSeconds: 120,
176
+ },
177
+ ],
178
+ };
179
+ beforeEach(() => {
180
+ fs.existsSync.mockReturnValue(true);
181
+ fs.readdirSync.mockReturnValue([
182
+ "run-1.json",
183
+ "run-2.json",
184
+ ]);
185
+ fs.readFileSync.mockImplementation((path) => {
186
+ if (path.includes("run-1"))
187
+ return JSON.stringify(mockLog);
188
+ return JSON.stringify(mockLog2);
189
+ });
190
+ });
191
+ it("should aggregate statistics across multiple logs", async () => {
192
+ await statsCommand({ json: true });
193
+ const output = consoleSpy.mock.calls[0][0];
194
+ const parsed = JSON.parse(output);
195
+ expect(parsed.totalRuns).toBe(2);
196
+ // mockLog has 2 issues (1 pass, 1 fail), mockLog2 has 1 issue (1 pass)
197
+ expect(parsed.totalIssues).toBe(3);
198
+ expect(parsed.passed).toBe(2);
199
+ expect(parsed.failed).toBe(1);
200
+ });
201
+ it("should calculate phase durations", async () => {
202
+ await statsCommand({ json: true });
203
+ const output = consoleSpy.mock.calls[0][0];
204
+ const parsed = JSON.parse(output);
205
+ // spec phase: 60s + 60s + 120s = 240s across 3 runs
206
+ expect(parsed.phaseDurations.spec).toBeDefined();
207
+ expect(parsed.phaseDurations.spec.count).toBe(3);
208
+ });
209
+ it("should track common failures", async () => {
210
+ await statsCommand({ json: true });
211
+ const output = consoleSpy.mock.calls[0][0];
212
+ const parsed = JSON.parse(output);
213
+ expect(Object.keys(parsed.commonFailures).length).toBeGreaterThan(0);
214
+ expect(parsed.commonFailures["exec: Build failed"]).toBe(1);
215
+ });
216
+ });
217
+ });
218
+ //# sourceMappingURL=stats.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.test.js","sourceRoot":"","sources":["../../../src/commands/stats.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsNzE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkNzE"}
@@ -28,8 +28,8 @@ export async function updateCommand(options) {
28
28
  console.log(chalk.gray(`Dev URL: ${tokens.DEV_URL || "(not set)"}\n`));
29
29
  }
30
30
  else {
31
- // Legacy install - migrate by prompting for tokens
32
- console.log(chalk.yellow("⚠️ No configuration found - migrating from legacy install\n"));
31
+ // First-time config setup
32
+ console.log(chalk.blue("📝 Setting up configuration (one-time setup)\n"));
33
33
  const stackConfig = getStackConfig(manifest.stack);
34
34
  const defaultDevUrl = stackConfig.devUrl;
35
35
  if (options.force) {
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,17 @@
14
14
  export declare const SETTINGS_PATH = ".sequant/settings.json";
15
15
  /** Current settings schema version */
16
16
  export declare const SETTINGS_VERSION = "1.0";
17
+ /**
18
+ * Log rotation settings
19
+ */
20
+ export interface RotationSettings {
21
+ /** Enable automatic log rotation (default: true) */
22
+ enabled: boolean;
23
+ /** Maximum total size in MB before rotation (default: 10) */
24
+ maxSizeMB: number;
25
+ /** Maximum file count before rotation (default: 100) */
26
+ maxFiles: number;
27
+ }
17
28
  /**
18
29
  * Run command settings
19
30
  */
@@ -34,6 +45,8 @@ export interface RunSettings {
34
45
  maxIterations: number;
35
46
  /** Enable smart test detection */
36
47
  smartTests: boolean;
48
+ /** Log rotation settings */
49
+ rotation: RotationSettings;
37
50
  }
38
51
  /**
39
52
  * Full settings schema
@@ -44,6 +57,10 @@ export interface SequantSettings {
44
57
  /** Run command settings */
45
58
  run: RunSettings;
46
59
  }
60
+ /**
61
+ * Default rotation settings
62
+ */
63
+ export declare const DEFAULT_ROTATION_SETTINGS: RotationSettings;
47
64
  /**
48
65
  * Default settings
49
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,0CAA0C;AAC1C,eAAO,MAAM,aAAa,2BAA2B,CAAC;AAEtD,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,GAAG,EAAE,WAAW,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAY9B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAoB5D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAEtD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,0CAA0C;AAC1C,eAAO,MAAM,aAAa,2BAA2B,CAAC;AAEtD,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,GAAG,EAAE,WAAW,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAIvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAa9B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAoB5D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAEtD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D"}
@@ -16,6 +16,14 @@ import { dirname } from "path";
16
16
  export const SETTINGS_PATH = ".sequant/settings.json";
17
17
  /** Current settings schema version */
18
18
  export const SETTINGS_VERSION = "1.0";
19
+ /**
20
+ * Default rotation settings
21
+ */
22
+ export const DEFAULT_ROTATION_SETTINGS = {
23
+ enabled: true,
24
+ maxSizeMB: 10,
25
+ maxFiles: 100,
26
+ };
19
27
  /**
20
28
  * Default settings
21
29
  */
@@ -30,6 +38,7 @@ export const DEFAULT_SETTINGS = {
30
38
  qualityLoop: false,
31
39
  maxIterations: 3,
32
40
  smartTests: true,
41
+ rotation: DEFAULT_ROTATION_SETTINGS,
33
42
  },
34
43
  };
35
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAEtD,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAkCtC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,OAAO,EAAE,gBAAgB;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,IAAI;KACjB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6B,CAAC;QAE/D,iDAAiD;QACjD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;YACnD,GAAG,EAAE;gBACH,GAAG,gBAAgB,CAAC,GAAG;gBACvB,GAAG,MAAM,CAAC,GAAG;aACd;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAyB;IAC1D,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAEtD,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAgDtC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,OAAO,EAAE,gBAAgB;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,eAAe;QACxB,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,yBAAyB;KACpC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6B,CAAC;QAE/D,iDAAiD;QACjD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;YACnD,GAAG,EAAE;gBACH,GAAG,gBAAgB,CAAC,GAAG;gBACvB,GAAG,MAAM,CAAC,GAAG;aACd;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAyB;IAC1D,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACvC,CAAC"}
@@ -21,4 +21,30 @@ export declare function isNativeWindows(): boolean;
21
21
  * Get platform-specific install hint for a package
22
22
  */
23
23
  export declare function getInstallHint(pkg: string): string;
24
+ /**
25
+ * MCP server information for Sequant integrations
26
+ */
27
+ export interface McpServerInfo {
28
+ name: string;
29
+ purpose: string;
30
+ skills: string[];
31
+ installUrl: string;
32
+ }
33
+ /**
34
+ * Optional MCP servers that enhance Sequant functionality
35
+ */
36
+ export declare const OPTIONAL_MCP_SERVERS: McpServerInfo[];
37
+ /**
38
+ * Get the path to Claude Desktop config file
39
+ */
40
+ export declare function getClaudeConfigPath(): string;
41
+ /**
42
+ * Read configured MCP servers from Claude Desktop config
43
+ */
44
+ export declare function getConfiguredMcpServers(): string[];
45
+ /**
46
+ * Check which optional MCP servers are configured
47
+ * Returns an object with server names as keys and configured status as values
48
+ */
49
+ export declare function checkOptionalMcpServers(): Record<string, boolean>;
24
50
  //# sourceMappingURL=system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/lib/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAc/B;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBlD"}
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/lib/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAa/B;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBlD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAqB/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAYlD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAejE"}
@@ -2,6 +2,7 @@
2
2
  * System utility functions for checking prerequisites
3
3
  */
4
4
  import { execSync } from "child_process";
5
+ import fs from "fs";
5
6
  /**
6
7
  * Check if a command exists on the system
7
8
  */
@@ -34,7 +35,6 @@ export function isWSL() {
34
35
  return false;
35
36
  }
36
37
  try {
37
- const fs = require("fs");
38
38
  const procVersion = fs.readFileSync("/proc/version", "utf8");
39
39
  return (procVersion.toLowerCase().includes("microsoft") ||
40
40
  procVersion.toLowerCase().includes("wsl"));
@@ -72,4 +72,75 @@ export function getInstallHint(pkg) {
72
72
  }
73
73
  return pkgHints[platform] || pkgHints["linux"] || `Install ${pkg}`;
74
74
  }
75
+ /**
76
+ * Optional MCP servers that enhance Sequant functionality
77
+ */
78
+ export const OPTIONAL_MCP_SERVERS = [
79
+ {
80
+ name: "chrome-devtools",
81
+ purpose: "Browser automation for UI testing",
82
+ skills: ["/test", "/testgen", "/loop"],
83
+ installUrl: "https://github.com/anthropics/anthropic-quickstarts/tree/main/mcp-chrome-devtools",
84
+ },
85
+ {
86
+ name: "context7",
87
+ purpose: "External library documentation lookup",
88
+ skills: ["/exec", "/fullsolve"],
89
+ installUrl: "https://github.com/upstash/context7",
90
+ },
91
+ {
92
+ name: "sequential-thinking",
93
+ purpose: "Complex multi-step reasoning",
94
+ skills: ["/fullsolve"],
95
+ installUrl: "https://github.com/anthropics/anthropic-quickstarts/tree/main/mcp-sequential-thinking",
96
+ },
97
+ ];
98
+ /**
99
+ * Get the path to Claude Desktop config file
100
+ */
101
+ export function getClaudeConfigPath() {
102
+ const platform = process.platform;
103
+ const home = process.env.HOME || process.env.USERPROFILE || "";
104
+ if (platform === "darwin") {
105
+ return `${home}/Library/Application Support/Claude/claude_desktop_config.json`;
106
+ }
107
+ else if (platform === "win32") {
108
+ return `${process.env.APPDATA}\\Claude\\claude_desktop_config.json`;
109
+ }
110
+ else {
111
+ // Linux
112
+ return `${home}/.config/claude/claude_desktop_config.json`;
113
+ }
114
+ }
115
+ /**
116
+ * Read configured MCP servers from Claude Desktop config
117
+ */
118
+ export function getConfiguredMcpServers() {
119
+ const configPath = getClaudeConfigPath();
120
+ try {
121
+ const content = fs.readFileSync(configPath, "utf8");
122
+ const config = JSON.parse(content);
123
+ const servers = config.mcpServers || {};
124
+ return Object.keys(servers);
125
+ }
126
+ catch {
127
+ // Config file doesn't exist or is invalid
128
+ return [];
129
+ }
130
+ }
131
+ /**
132
+ * Check which optional MCP servers are configured
133
+ * Returns an object with server names as keys and configured status as values
134
+ */
135
+ export function checkOptionalMcpServers() {
136
+ const configuredServers = getConfiguredMcpServers();
137
+ const result = {};
138
+ for (const server of OPTIONAL_MCP_SERVERS) {
139
+ // Check for various naming conventions
140
+ const found = configuredServers.some((configured) => configured.toLowerCase().includes(server.name.toLowerCase()) ||
141
+ server.name.toLowerCase().includes(configured.toLowerCase()));
142
+ result[server.name] = found;
143
+ }
144
+ return result;
145
+ }
75
146
  //# sourceMappingURL=system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/lib/system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,CACL,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/C,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,MAAM,KAAK,GAA2C;QACpD,EAAE,EAAE;YACF,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,sCAAsC;YAC7C,KAAK,EAAE,0CAA0C;SAClD;QACD,EAAE,EAAE;YACF,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,+CAA+C;YACtD,KAAK,EAAE,mDAAmD;SAC3D;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,GAAG,EAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/lib/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Log rotation management for workflow run logs
3
+ *
4
+ * Implements automatic log rotation based on size and file count thresholds.
5
+ * Deletes oldest logs first until within limits.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { rotateIfNeeded, getLogStats, manualRotate } from './log-rotation';
10
+ *
11
+ * // Auto-rotate after a run
12
+ * await rotateIfNeeded('.sequant/logs');
13
+ *
14
+ * // Get statistics
15
+ * const stats = await getLogStats('.sequant/logs');
16
+ * console.log(`${stats.fileCount} files, ${stats.totalSizeMB.toFixed(2)}MB`);
17
+ *
18
+ * // Manual rotation with dry-run
19
+ * const result = await manualRotate('.sequant/logs', { dryRun: true });
20
+ * console.log(`Would delete ${result.deletedCount} files`);
21
+ * ```
22
+ */
23
+ /**
24
+ * Rotation settings
25
+ */
26
+ export interface RotationSettings {
27
+ /** Enable automatic rotation (default: true) */
28
+ enabled: boolean;
29
+ /** Maximum total size in MB before rotation (default: 10) */
30
+ maxSizeMB: number;
31
+ /** Maximum file count before rotation (default: 100) */
32
+ maxFiles: number;
33
+ }
34
+ /**
35
+ * Default rotation settings
36
+ */
37
+ export declare const DEFAULT_ROTATION_SETTINGS: RotationSettings;
38
+ /**
39
+ * Log directory statistics
40
+ */
41
+ export interface LogStats {
42
+ /** Total size in bytes */
43
+ totalSizeBytes: number;
44
+ /** Total size in megabytes */
45
+ totalSizeMB: number;
46
+ /** Number of log files */
47
+ fileCount: number;
48
+ /** Oldest log file */
49
+ oldestFile: string | null;
50
+ /** Newest log file */
51
+ newestFile: string | null;
52
+ /** Whether size threshold is exceeded */
53
+ exceedsSizeThreshold: boolean;
54
+ /** Whether file count threshold is exceeded */
55
+ exceedsCountThreshold: boolean;
56
+ }
57
+ /**
58
+ * Result of a rotation operation
59
+ */
60
+ export interface RotationResult {
61
+ /** Files that were deleted (or would be in dry-run) */
62
+ deletedFiles: string[];
63
+ /** Number of files deleted */
64
+ deletedCount: number;
65
+ /** Bytes reclaimed (or would be in dry-run) */
66
+ bytesReclaimed: number;
67
+ /** Whether rotation was performed */
68
+ rotated: boolean;
69
+ /** Error message if rotation failed */
70
+ error?: string;
71
+ }
72
+ /**
73
+ * File info for sorting by age
74
+ */
75
+ interface LogFileInfo {
76
+ filename: string;
77
+ filePath: string;
78
+ mtime: Date;
79
+ size: number;
80
+ }
81
+ /**
82
+ * Get list of log files with metadata, sorted by modification time (oldest first)
83
+ */
84
+ export declare function getLogFiles(logDir: string): LogFileInfo[];
85
+ /**
86
+ * Get statistics about the log directory
87
+ *
88
+ * @param logDir - Path to log directory
89
+ * @param settings - Rotation settings for threshold comparison
90
+ * @returns Log directory statistics
91
+ */
92
+ export declare function getLogStats(logDir: string, settings?: RotationSettings): LogStats;
93
+ /**
94
+ * Calculate which files need to be deleted to meet thresholds
95
+ *
96
+ * Applies a 10% buffer (stops at 90% of threshold) to prevent
97
+ * immediate re-rotation on next run.
98
+ *
99
+ * @param logDir - Path to log directory
100
+ * @param settings - Rotation settings
101
+ * @returns List of files to delete (oldest first)
102
+ */
103
+ export declare function getFilesToDelete(logDir: string, settings: RotationSettings): LogFileInfo[];
104
+ /**
105
+ * Rotate logs if needed (automatic rotation)
106
+ *
107
+ * Called after LogWriter.finalize() to clean up old logs.
108
+ *
109
+ * @param logDir - Path to log directory
110
+ * @param settings - Rotation settings
111
+ * @returns Rotation result
112
+ */
113
+ export declare function rotateIfNeeded(logDir: string, settings?: RotationSettings): RotationResult;
114
+ /**
115
+ * Options for manual rotation
116
+ */
117
+ export interface ManualRotateOptions {
118
+ /** Dry run - don't actually delete files */
119
+ dryRun?: boolean;
120
+ /** Custom rotation settings */
121
+ settings?: RotationSettings;
122
+ }
123
+ /**
124
+ * Manual rotation triggered by CLI command
125
+ *
126
+ * Supports dry-run mode to preview what would be deleted.
127
+ *
128
+ * @param logDir - Path to log directory
129
+ * @param options - Manual rotation options
130
+ * @returns Rotation result
131
+ */
132
+ export declare function manualRotate(logDir: string, options?: ManualRotateOptions): RotationResult;
133
+ /**
134
+ * Format bytes for human-readable display
135
+ */
136
+ export declare function formatBytes(bytes: number): string;
137
+ export {};
138
+ //# sourceMappingURL=log-rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-rotation.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/log-rotation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAIvC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sBAAsB;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yCAAyC;IACzC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AASD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAwBzD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,gBAA4C,GACrD,QAAQ,CA2BV;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GACzB,WAAW,EAAE,CAqCf;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,gBAA4C,GACrD,cAAc,CA+ChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,cAAc,CAyBhB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}