sequant 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cli.js +12 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +1 -25
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/doctor.test.js +28 -97
- package/dist/src/commands/doctor.test.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +3 -27
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/init.test.js +32 -75
- package/dist/src/commands/init.test.js.map +1 -1
- package/dist/src/commands/logs.d.ts +18 -0
- package/dist/src/commands/logs.d.ts.map +1 -0
- package/dist/src/commands/logs.js +188 -0
- package/dist/src/commands/logs.js.map +1 -0
- package/dist/src/commands/run.d.ts +2 -0
- package/dist/src/commands/run.d.ts.map +1 -1
- package/dist/src/commands/run.js +114 -29
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/lib/system.d.ts +16 -0
- package/dist/src/lib/system.d.ts.map +1 -0
- package/dist/src/lib/system.js +52 -0
- package/dist/src/lib/system.js.map +1 -0
- package/dist/src/lib/system.test.d.ts +2 -0
- package/dist/src/lib/system.test.d.ts.map +1 -0
- package/dist/src/lib/system.test.js +80 -0
- package/dist/src/lib/system.test.js.map +1 -0
- package/dist/src/lib/workflow/log-writer.d.ts +83 -0
- package/dist/src/lib/workflow/log-writer.d.ts.map +1 -0
- package/dist/src/lib/workflow/log-writer.js +193 -0
- package/dist/src/lib/workflow/log-writer.js.map +1 -0
- package/dist/src/lib/workflow/run-log-schema.d.ts +261 -0
- package/dist/src/lib/workflow/run-log-schema.d.ts.map +1 -0
- package/dist/src/lib/workflow/run-log-schema.js +234 -0
- package/dist/src/lib/workflow/run-log-schema.js.map +1 -0
- package/package.json +3 -2
- package/templates/skills/assess/SKILL.md +15 -0
- package/templates/skills/clean/SKILL.md +15 -0
- package/templates/skills/docs/SKILL.md +16 -0
- package/templates/skills/exec/SKILL.md +14 -0
- package/templates/skills/fullsolve/SKILL.md +16 -0
- package/templates/skills/loop/SKILL.md +14 -0
- package/templates/skills/qa/SKILL.md +67 -0
- package/templates/skills/reflect/SKILL.md +14 -0
- package/templates/skills/security-review/SKILL.md +15 -0
- package/templates/skills/solve/SKILL.md +44 -0
- package/templates/skills/spec/SKILL.md +59 -0
- package/templates/skills/test/SKILL.md +14 -0
- package/templates/skills/testgen/SKILL.md +15 -0
- package/templates/skills/verify/SKILL.md +15 -0
package/dist/src/commands/run.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import { spawn, spawnSync } from "child_process";
|
|
8
8
|
import { getManifest } from "../lib/manifest.js";
|
|
9
|
+
import { LogWriter, createPhaseLogFromTiming, } from "../lib/workflow/log-writer.js";
|
|
9
10
|
/**
|
|
10
11
|
* Check if claude CLI is available
|
|
11
12
|
*/
|
|
@@ -101,36 +102,32 @@ async function executePhase(issueNumber, phase, config) {
|
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
104
|
/**
|
|
104
|
-
*
|
|
105
|
+
* Fetch issue info from GitHub
|
|
105
106
|
*/
|
|
106
|
-
async function
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
107
|
+
async function getIssueInfo(issueNumber) {
|
|
108
|
+
try {
|
|
109
|
+
const result = spawnSync("gh", [
|
|
110
|
+
"issue",
|
|
111
|
+
"view",
|
|
112
|
+
String(issueNumber),
|
|
113
|
+
"--json",
|
|
114
|
+
"title,labels",
|
|
115
|
+
"--jq",
|
|
116
|
+
'"\(.title)|\(.labels | map(.name) | join(","))"',
|
|
117
|
+
], { stdio: "pipe", shell: true });
|
|
118
|
+
if (result.status === 0) {
|
|
119
|
+
const output = result.stdout.toString().trim().replace(/^"|"$/g, "");
|
|
120
|
+
const [title, labelsStr] = output.split("|");
|
|
121
|
+
return {
|
|
122
|
+
title: title || `Issue #${issueNumber}`,
|
|
123
|
+
labels: labelsStr ? labelsStr.split(",").filter(Boolean) : [],
|
|
124
|
+
};
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
success,
|
|
131
|
-
phaseResults,
|
|
132
|
-
durationSeconds,
|
|
133
|
-
};
|
|
127
|
+
catch {
|
|
128
|
+
// Ignore errors, use defaults
|
|
129
|
+
}
|
|
130
|
+
return { title: `Issue #${issueNumber}`, labels: [] };
|
|
134
131
|
}
|
|
135
132
|
/**
|
|
136
133
|
* Main run command
|
|
@@ -170,6 +167,21 @@ export async function runCommand(issues, options) {
|
|
|
170
167
|
verbose: options.verbose ?? false,
|
|
171
168
|
phaseTimeout: options.timeout ?? DEFAULT_CONFIG.phaseTimeout,
|
|
172
169
|
};
|
|
170
|
+
// Initialize log writer if JSON logging enabled
|
|
171
|
+
let logWriter = null;
|
|
172
|
+
if (options.logJson && !config.dryRun) {
|
|
173
|
+
const runConfig = {
|
|
174
|
+
phases: config.phases,
|
|
175
|
+
sequential: config.sequential,
|
|
176
|
+
qualityLoop: config.qualityLoop,
|
|
177
|
+
maxIterations: config.maxIterations,
|
|
178
|
+
};
|
|
179
|
+
logWriter = new LogWriter({
|
|
180
|
+
logPath: options.logPath,
|
|
181
|
+
verbose: config.verbose,
|
|
182
|
+
});
|
|
183
|
+
await logWriter.initialize(runConfig);
|
|
184
|
+
}
|
|
173
185
|
// Display configuration
|
|
174
186
|
console.log(chalk.gray(` Stack: ${manifest.stack}`));
|
|
175
187
|
console.log(chalk.gray(` Phases: ${config.phases.join(" → ")}`));
|
|
@@ -177,14 +189,26 @@ export async function runCommand(issues, options) {
|
|
|
177
189
|
if (config.dryRun) {
|
|
178
190
|
console.log(chalk.yellow(` ⚠️ DRY RUN - no actual execution`));
|
|
179
191
|
}
|
|
192
|
+
if (logWriter) {
|
|
193
|
+
console.log(chalk.gray(` Logging: JSON (run ${logWriter.getRunId()?.slice(0, 8)}...)`));
|
|
194
|
+
}
|
|
180
195
|
console.log(chalk.gray(` Issues: ${issueNumbers.map((n) => `#${n}`).join(", ")}`));
|
|
181
196
|
// Execute
|
|
182
197
|
const results = [];
|
|
183
198
|
if (config.sequential) {
|
|
184
199
|
// Sequential execution
|
|
185
200
|
for (const issueNumber of issueNumbers) {
|
|
186
|
-
|
|
201
|
+
// Start issue logging
|
|
202
|
+
if (logWriter) {
|
|
203
|
+
const issueInfo = await getIssueInfo(issueNumber);
|
|
204
|
+
logWriter.startIssue(issueNumber, issueInfo.title, issueInfo.labels);
|
|
205
|
+
}
|
|
206
|
+
const result = await runIssueWithLogging(issueNumber, config, logWriter);
|
|
187
207
|
results.push(result);
|
|
208
|
+
// Complete issue logging
|
|
209
|
+
if (logWriter) {
|
|
210
|
+
logWriter.completeIssue();
|
|
211
|
+
}
|
|
188
212
|
if (!result.success) {
|
|
189
213
|
console.log(chalk.yellow(`\n ⚠️ Issue #${issueNumber} failed, stopping sequential execution`));
|
|
190
214
|
break;
|
|
@@ -195,10 +219,24 @@ export async function runCommand(issues, options) {
|
|
|
195
219
|
// Parallel execution (for now, just run sequentially but don't stop on failure)
|
|
196
220
|
// TODO: Add proper parallel execution with listr2
|
|
197
221
|
for (const issueNumber of issueNumbers) {
|
|
198
|
-
|
|
222
|
+
// Start issue logging
|
|
223
|
+
if (logWriter) {
|
|
224
|
+
const issueInfo = await getIssueInfo(issueNumber);
|
|
225
|
+
logWriter.startIssue(issueNumber, issueInfo.title, issueInfo.labels);
|
|
226
|
+
}
|
|
227
|
+
const result = await runIssueWithLogging(issueNumber, config, logWriter);
|
|
199
228
|
results.push(result);
|
|
229
|
+
// Complete issue logging
|
|
230
|
+
if (logWriter) {
|
|
231
|
+
logWriter.completeIssue();
|
|
232
|
+
}
|
|
200
233
|
}
|
|
201
234
|
}
|
|
235
|
+
// Finalize log
|
|
236
|
+
let logPath = null;
|
|
237
|
+
if (logWriter) {
|
|
238
|
+
logPath = await logWriter.finalize();
|
|
239
|
+
}
|
|
202
240
|
// Summary
|
|
203
241
|
console.log(chalk.blue("\n" + "━".repeat(50)));
|
|
204
242
|
console.log(chalk.blue(" Summary"));
|
|
@@ -217,6 +255,10 @@ export async function runCommand(issues, options) {
|
|
|
217
255
|
console.log(` ${status} #${result.issueNumber}: ${phases}${duration}`);
|
|
218
256
|
}
|
|
219
257
|
console.log("");
|
|
258
|
+
if (logPath) {
|
|
259
|
+
console.log(chalk.gray(` 📝 Log: ${logPath}`));
|
|
260
|
+
console.log("");
|
|
261
|
+
}
|
|
220
262
|
if (config.dryRun) {
|
|
221
263
|
console.log(chalk.yellow(" ℹ️ This was a dry run. Use without --dry-run to execute."));
|
|
222
264
|
console.log("");
|
|
@@ -226,4 +268,47 @@ export async function runCommand(issues, options) {
|
|
|
226
268
|
process.exit(1);
|
|
227
269
|
}
|
|
228
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Execute all phases for a single issue with logging
|
|
273
|
+
*/
|
|
274
|
+
async function runIssueWithLogging(issueNumber, config, logWriter) {
|
|
275
|
+
const startTime = Date.now();
|
|
276
|
+
const phaseResults = [];
|
|
277
|
+
console.log(chalk.blue(`\n Issue #${issueNumber}`));
|
|
278
|
+
for (const phase of config.phases) {
|
|
279
|
+
console.log(chalk.gray(` ⏳ ${phase}...`));
|
|
280
|
+
const phaseStartTime = new Date();
|
|
281
|
+
const result = await executePhase(issueNumber, phase, config);
|
|
282
|
+
const phaseEndTime = new Date();
|
|
283
|
+
phaseResults.push(result);
|
|
284
|
+
// Log phase result
|
|
285
|
+
if (logWriter) {
|
|
286
|
+
const phaseLog = createPhaseLogFromTiming(phase, issueNumber, phaseStartTime, phaseEndTime, result.success
|
|
287
|
+
? "success"
|
|
288
|
+
: result.error?.includes("Timeout")
|
|
289
|
+
? "timeout"
|
|
290
|
+
: "failure", { error: result.error });
|
|
291
|
+
logWriter.logPhase(phaseLog);
|
|
292
|
+
}
|
|
293
|
+
if (result.success) {
|
|
294
|
+
const duration = result.durationSeconds
|
|
295
|
+
? ` (${formatDuration(result.durationSeconds)})`
|
|
296
|
+
: "";
|
|
297
|
+
console.log(chalk.green(` ✓ ${phase}${duration}`));
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
console.log(chalk.red(` ✗ ${phase}: ${result.error}`));
|
|
301
|
+
// Stop on first failure
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const durationSeconds = (Date.now() - startTime) / 1000;
|
|
306
|
+
const success = phaseResults.every((r) => r.success);
|
|
307
|
+
return {
|
|
308
|
+
issueNumber,
|
|
309
|
+
success,
|
|
310
|
+
phaseResults,
|
|
311
|
+
durationSeconds,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
229
314
|
//# sourceMappingURL=run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System utility functions for checking prerequisites
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a command exists on the system
|
|
6
|
+
*/
|
|
7
|
+
export declare function commandExists(cmd: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Check if gh CLI is authenticated
|
|
10
|
+
*/
|
|
11
|
+
export declare function isGhAuthenticated(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Get platform-specific install hint for a package
|
|
14
|
+
*/
|
|
15
|
+
export declare function getInstallHint(pkg: string): string;
|
|
16
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +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,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBlD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System utility functions for checking prerequisites
|
|
3
|
+
*/
|
|
4
|
+
import { execSync } from "child_process";
|
|
5
|
+
/**
|
|
6
|
+
* Check if a command exists on the system
|
|
7
|
+
*/
|
|
8
|
+
export function commandExists(cmd) {
|
|
9
|
+
try {
|
|
10
|
+
execSync(`command -v ${cmd}`, { stdio: "ignore" });
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if gh CLI is authenticated
|
|
19
|
+
*/
|
|
20
|
+
export function isGhAuthenticated() {
|
|
21
|
+
try {
|
|
22
|
+
execSync("gh auth status", { stdio: "ignore" });
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get platform-specific install hint for a package
|
|
31
|
+
*/
|
|
32
|
+
export function getInstallHint(pkg) {
|
|
33
|
+
const platform = process.platform;
|
|
34
|
+
const hints = {
|
|
35
|
+
jq: {
|
|
36
|
+
darwin: "brew install jq",
|
|
37
|
+
linux: "apt install jq # or: yum install jq",
|
|
38
|
+
win32: "choco install jq # or: scoop install jq",
|
|
39
|
+
},
|
|
40
|
+
gh: {
|
|
41
|
+
darwin: "brew install gh",
|
|
42
|
+
linux: "apt install gh # see: https://cli.github.com",
|
|
43
|
+
win32: "choco install gh # or: winget install GitHub.cli",
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
const pkgHints = hints[pkg];
|
|
47
|
+
if (!pkgHints) {
|
|
48
|
+
return `Install ${pkg}`;
|
|
49
|
+
}
|
|
50
|
+
return pkgHints[platform] || pkgHints["linux"] || `Install ${pkg}`;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.test.d.ts","sourceRoot":"","sources":["../../../src/lib/system.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
// Mock child_process
|
|
4
|
+
vi.mock("child_process", () => ({
|
|
5
|
+
execSync: vi.fn(),
|
|
6
|
+
}));
|
|
7
|
+
import { commandExists, isGhAuthenticated, getInstallHint } from "./system.js";
|
|
8
|
+
const mockExecSync = vi.mocked(execSync);
|
|
9
|
+
describe("system utilities", () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
vi.resetAllMocks();
|
|
12
|
+
});
|
|
13
|
+
describe("commandExists", () => {
|
|
14
|
+
it("returns true when command exists", () => {
|
|
15
|
+
mockExecSync.mockReturnValue(Buffer.from("/usr/local/bin/gh"));
|
|
16
|
+
expect(commandExists("gh")).toBe(true);
|
|
17
|
+
expect(mockExecSync).toHaveBeenCalledWith("command -v gh", {
|
|
18
|
+
stdio: "ignore",
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
it("returns false when command does not exist", () => {
|
|
22
|
+
mockExecSync.mockImplementation(() => {
|
|
23
|
+
throw new Error("command not found");
|
|
24
|
+
});
|
|
25
|
+
expect(commandExists("nonexistent")).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
it("checks different commands correctly", () => {
|
|
28
|
+
mockExecSync.mockReturnValue(Buffer.from("/usr/local/bin/jq"));
|
|
29
|
+
expect(commandExists("jq")).toBe(true);
|
|
30
|
+
expect(mockExecSync).toHaveBeenCalledWith("command -v jq", {
|
|
31
|
+
stdio: "ignore",
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("isGhAuthenticated", () => {
|
|
36
|
+
it("returns true when gh is authenticated", () => {
|
|
37
|
+
mockExecSync.mockReturnValue(Buffer.from(""));
|
|
38
|
+
expect(isGhAuthenticated()).toBe(true);
|
|
39
|
+
expect(mockExecSync).toHaveBeenCalledWith("gh auth status", {
|
|
40
|
+
stdio: "ignore",
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it("returns false when gh is not authenticated", () => {
|
|
44
|
+
mockExecSync.mockImplementation(() => {
|
|
45
|
+
throw new Error("not authenticated");
|
|
46
|
+
});
|
|
47
|
+
expect(isGhAuthenticated()).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("getInstallHint", () => {
|
|
51
|
+
const originalPlatform = process.platform;
|
|
52
|
+
beforeEach(() => {
|
|
53
|
+
// Reset platform after each test
|
|
54
|
+
Object.defineProperty(process, "platform", {
|
|
55
|
+
value: originalPlatform,
|
|
56
|
+
writable: true,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
it("returns macOS hint for gh on darwin", () => {
|
|
60
|
+
Object.defineProperty(process, "platform", { value: "darwin" });
|
|
61
|
+
expect(getInstallHint("gh")).toBe("brew install gh");
|
|
62
|
+
});
|
|
63
|
+
it("returns macOS hint for jq on darwin", () => {
|
|
64
|
+
Object.defineProperty(process, "platform", { value: "darwin" });
|
|
65
|
+
expect(getInstallHint("jq")).toBe("brew install jq");
|
|
66
|
+
});
|
|
67
|
+
it("returns Linux hint for gh on linux", () => {
|
|
68
|
+
Object.defineProperty(process, "platform", { value: "linux" });
|
|
69
|
+
expect(getInstallHint("gh")).toContain("apt install gh");
|
|
70
|
+
});
|
|
71
|
+
it("returns Windows hint for gh on win32", () => {
|
|
72
|
+
Object.defineProperty(process, "platform", { value: "win32" });
|
|
73
|
+
expect(getInstallHint("gh")).toContain("choco install gh");
|
|
74
|
+
});
|
|
75
|
+
it("returns generic hint for unknown package", () => {
|
|
76
|
+
expect(getInstallHint("unknown-package")).toBe("Install unknown-package");
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=system.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.test.js","sourceRoot":"","sources":["../../../src/lib/system.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log writer for structured workflow run logs
|
|
3
|
+
*
|
|
4
|
+
* Writes JSON logs to disk for analysis and debugging.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { LogWriter } from './log-writer';
|
|
9
|
+
*
|
|
10
|
+
* const writer = new LogWriter({ projectPath: '.sequant/logs' });
|
|
11
|
+
* await writer.initialize(config);
|
|
12
|
+
* await writer.logPhase(phaseLog);
|
|
13
|
+
* await writer.finalize();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import { type RunLog, type RunConfig, type PhaseLog, type Phase } from "./run-log-schema.js";
|
|
17
|
+
export interface LogWriterOptions {
|
|
18
|
+
/** Path to log directory (default: .sequant/logs in current directory) */
|
|
19
|
+
logPath?: string;
|
|
20
|
+
/** Whether to also write to user-level logs */
|
|
21
|
+
writeToUserLogs?: boolean;
|
|
22
|
+
/** Enable verbose logging */
|
|
23
|
+
verbose?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Manages writing structured run logs to disk
|
|
27
|
+
*/
|
|
28
|
+
export declare class LogWriter {
|
|
29
|
+
private runLog;
|
|
30
|
+
private currentIssue;
|
|
31
|
+
private logPath;
|
|
32
|
+
private writeToUserLogs;
|
|
33
|
+
private verbose;
|
|
34
|
+
constructor(options?: LogWriterOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Initialize a new run log
|
|
37
|
+
*
|
|
38
|
+
* @param config - Run configuration
|
|
39
|
+
*/
|
|
40
|
+
initialize(config: RunConfig): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Start logging a new issue
|
|
43
|
+
*
|
|
44
|
+
* @param issueNumber - GitHub issue number
|
|
45
|
+
* @param title - Issue title
|
|
46
|
+
* @param labels - Issue labels
|
|
47
|
+
*/
|
|
48
|
+
startIssue(issueNumber: number, title: string, labels: string[]): void;
|
|
49
|
+
/**
|
|
50
|
+
* Log a completed phase
|
|
51
|
+
*
|
|
52
|
+
* @param phaseLog - Complete phase log entry
|
|
53
|
+
*/
|
|
54
|
+
logPhase(phaseLog: PhaseLog): void;
|
|
55
|
+
/**
|
|
56
|
+
* Complete the current issue and add it to the run log
|
|
57
|
+
*/
|
|
58
|
+
completeIssue(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Finalize the run log and write to disk
|
|
61
|
+
*
|
|
62
|
+
* @returns Path to the written log file
|
|
63
|
+
*/
|
|
64
|
+
finalize(): Promise<string>;
|
|
65
|
+
/**
|
|
66
|
+
* Get the current run log (for inspection)
|
|
67
|
+
*/
|
|
68
|
+
getRunLog(): Omit<RunLog, "endTime"> | null;
|
|
69
|
+
/**
|
|
70
|
+
* Get the run ID
|
|
71
|
+
*/
|
|
72
|
+
getRunId(): string | null;
|
|
73
|
+
private resolvePath;
|
|
74
|
+
private ensureLogDirectory;
|
|
75
|
+
private writeLogFile;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a simple phase log from timing data
|
|
79
|
+
*
|
|
80
|
+
* Utility function for creating phase logs when you have start/end times.
|
|
81
|
+
*/
|
|
82
|
+
export declare function createPhaseLogFromTiming(phase: Phase, issueNumber: number, startTime: Date, endTime: Date, status: PhaseLog["status"], options?: Partial<Pick<PhaseLog, "error" | "iterations" | "filesModified" | "testsRun" | "testsPassed">>): PhaseLog;
|
|
83
|
+
//# sourceMappingURL=log-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-writer.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/log-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,KAAK,MAAM,EACX,KAAK,SAAS,EAEd,KAAK,QAAQ,EACb,KAAK,KAAK,EAMX,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,gBAAqB;IAM1C;;;;OAIG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD;;;;;;OAMG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAmBtE;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwBlC;;OAEG;IACH,aAAa,IAAI,IAAI;IA+BrB;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAiCjC;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,OAAO,CAAC,WAAW;YAIL,kBAAkB;YAOlB,YAAY;CAO3B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CACF,QAAQ,EACR,OAAO,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CACtE,CACF,GACA,QAAQ,CAYV"}
|