agentflight 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +270 -2
- package/README.md +38 -19
- package/dist/adapters/agentloopkit.d.ts +2 -1
- package/dist/adapters/agentloopkit.d.ts.map +1 -1
- package/dist/adapters/agentloopkit.js +53 -58
- package/dist/adapters/agentloopkit.js.map +1 -1
- package/dist/adapters/projscan.d.ts +1 -0
- package/dist/adapters/projscan.d.ts.map +1 -1
- package/dist/adapters/projscan.js +36 -44
- package/dist/adapters/projscan.js.map +1 -1
- package/dist/adapters/tool-runner.d.ts +16 -0
- package/dist/adapters/tool-runner.d.ts.map +1 -0
- package/dist/adapters/tool-runner.js +43 -0
- package/dist/adapters/tool-runner.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +26 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/handoff.d.ts +17 -0
- package/dist/commands/handoff.d.ts.map +1 -0
- package/dist/commands/handoff.js +286 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/history.d.ts +11 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +251 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/replay.d.ts.map +1 -1
- package/dist/commands/replay.js +23 -16
- package/dist/commands/replay.js.map +1 -1
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +22 -16
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/resume.d.ts +1 -0
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +24 -14
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/start.d.ts +12 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +53 -33
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +74 -9
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +22 -9
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/artifacts.d.ts +11 -0
- package/dist/core/artifacts.d.ts.map +1 -0
- package/dist/core/artifacts.js +39 -0
- package/dist/core/artifacts.js.map +1 -0
- package/dist/core/config.d.ts +2 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +16 -14
- package/dist/core/config.js.map +1 -1
- package/dist/core/doctor.d.ts +4 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +37 -2
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/fs-safe.d.ts +6 -0
- package/dist/core/fs-safe.d.ts.map +1 -1
- package/dist/core/fs-safe.js +50 -4
- package/dist/core/fs-safe.js.map +1 -1
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js +7 -1
- package/dist/core/git.js.map +1 -1
- package/dist/core/output.d.ts +14 -0
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +72 -4
- package/dist/core/output.js.map +1 -1
- package/dist/core/paths.d.ts +1 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +9 -1
- package/dist/core/paths.js.map +1 -1
- package/dist/core/review-intelligence.d.ts.map +1 -1
- package/dist/core/review-intelligence.js +182 -104
- package/dist/core/review-intelligence.js.map +1 -1
- package/dist/core/risk.d.ts.map +1 -1
- package/dist/core/risk.js +9 -4
- package/dist/core/risk.js.map +1 -1
- package/dist/core/session.d.ts +47 -1
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +203 -10
- package/dist/core/session.js.map +1 -1
- package/dist/core/verification-runs.d.ts +6 -0
- package/dist/core/verification-runs.d.ts.map +1 -0
- package/dist/core/verification-runs.js +104 -0
- package/dist/core/verification-runs.js.map +1 -0
- package/dist/core/verification.d.ts +4 -3
- package/dist/core/verification.d.ts.map +1 -1
- package/dist/core/verification.js +33 -66
- package/dist/core/verification.js.map +1 -1
- package/dist/renderers/html-replay.d.ts +2 -0
- package/dist/renderers/html-replay.d.ts.map +1 -1
- package/dist/renderers/html-replay.js +169 -9
- package/dist/renderers/html-replay.js.map +1 -1
- package/dist/renderers/markdown-report.d.ts +2 -0
- package/dist/renderers/markdown-report.d.ts.map +1 -1
- package/dist/renderers/markdown-report.js +20 -6
- package/dist/renderers/markdown-report.js.map +1 -1
- package/dist/renderers/resume-prompt.d.ts +2 -0
- package/dist/renderers/resume-prompt.d.ts.map +1 -1
- package/dist/renderers/resume-prompt.js +47 -10
- package/dist/renderers/resume-prompt.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/docs/assets/agentflight-cli-demo.svg +3 -3
- package/docs/development/changed-file-filters.md +19 -7
- package/docs/development/dogfooding.md +1 -1
- package/docs/examples/basic-agentflight-session.md +21 -10
- package/docs/roadmap/index.md +11 -3
- package/docs/roadmap/v0.4.0-review-intelligence-plan.md +1 -1
- package/package.json +3 -3
|
@@ -1,33 +1,59 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
1
|
import { runCommand } from "../core/process.js";
|
|
2
|
+
import { normalizeCliVersion, runToolWithFallback, summarizeToolFailure } from "./tool-runner.js";
|
|
3
|
+
const PROJSCAN_BASELINE_TIMEOUT_MS = 1_500;
|
|
3
4
|
export async function inspectProjScan(options = {}) {
|
|
4
5
|
const run = options.run ?? runCommand;
|
|
5
6
|
const command = options.command ?? "projscan";
|
|
6
|
-
const version = await
|
|
7
|
+
const version = await runToolWithFallback({
|
|
8
|
+
run,
|
|
9
|
+
localCommand: command,
|
|
10
|
+
packageName: "projscan@latest",
|
|
11
|
+
args: ["--version"],
|
|
12
|
+
cwd: options.cwd
|
|
13
|
+
});
|
|
7
14
|
if (version.exitCode !== 0) {
|
|
8
15
|
return {
|
|
9
16
|
available: false,
|
|
10
|
-
warnings: [`ProjScan unavailable: ${
|
|
17
|
+
warnings: [`ProjScan unavailable: ${summarizeToolFailure(version)}`]
|
|
11
18
|
};
|
|
12
19
|
}
|
|
13
|
-
const help = await runWithFallback(run, command, "projscan@latest", ["--help"], options.cwd);
|
|
14
20
|
const result = {
|
|
15
21
|
available: true,
|
|
16
|
-
version:
|
|
22
|
+
version: normalizeCliVersion(version.stdout),
|
|
17
23
|
summary: "ProjScan available for repo intelligence and risk analysis.",
|
|
18
24
|
warnings: []
|
|
19
25
|
};
|
|
20
|
-
if (
|
|
21
|
-
|
|
26
|
+
if (options.includeHelp !== false) {
|
|
27
|
+
const help = await runToolWithFallback({
|
|
28
|
+
run,
|
|
29
|
+
localCommand: command,
|
|
30
|
+
packageName: "projscan@latest",
|
|
31
|
+
args: ["--help"],
|
|
32
|
+
cwd: options.cwd
|
|
33
|
+
});
|
|
34
|
+
if (help.exitCode !== 0) {
|
|
35
|
+
result.warnings.push(`ProjScan help failed: ${summarizeToolFailure(help)}`);
|
|
36
|
+
}
|
|
22
37
|
}
|
|
23
38
|
return result;
|
|
24
39
|
}
|
|
25
40
|
export async function runProjScanBaseline(cwd, run = runCommand) {
|
|
26
|
-
const result = await
|
|
41
|
+
const result = await runToolWithFallback({
|
|
42
|
+
run,
|
|
43
|
+
localCommand: "projscan",
|
|
44
|
+
packageName: "projscan@latest",
|
|
45
|
+
args: [
|
|
46
|
+
"start",
|
|
47
|
+
"--intent",
|
|
48
|
+
"Build AgentFlight, a local-first review layer for coding agent sessions"
|
|
49
|
+
],
|
|
50
|
+
cwd,
|
|
51
|
+
timeoutMs: PROJSCAN_BASELINE_TIMEOUT_MS
|
|
52
|
+
});
|
|
27
53
|
if (result.exitCode !== 0) {
|
|
28
54
|
return {
|
|
29
|
-
available:
|
|
30
|
-
warnings: [`ProjScan baseline
|
|
55
|
+
available: true,
|
|
56
|
+
warnings: [`ProjScan baseline skipped: ${summarizeToolFailure(result)}`]
|
|
31
57
|
};
|
|
32
58
|
}
|
|
33
59
|
return {
|
|
@@ -36,38 +62,4 @@ export async function runProjScanBaseline(cwd, run = runCommand) {
|
|
|
36
62
|
warnings: []
|
|
37
63
|
};
|
|
38
64
|
}
|
|
39
|
-
function summarizeFailure(result) {
|
|
40
|
-
return (result.stderr || result.stdout || "no output").trim();
|
|
41
|
-
}
|
|
42
|
-
async function runWithFallback(run, localCommand, packageName, args, cwd, timeoutMs = 10_000) {
|
|
43
|
-
const localFailures = [];
|
|
44
|
-
for (const candidate of repoLocalCommandCandidates(localCommand, cwd)) {
|
|
45
|
-
const local = await run(candidate, args, { cwd, timeoutMs });
|
|
46
|
-
if (local.exitCode === 0)
|
|
47
|
-
return local;
|
|
48
|
-
localFailures.push(local);
|
|
49
|
-
}
|
|
50
|
-
const fallback = await run("npx", ["--yes", packageName, ...args], { cwd, timeoutMs });
|
|
51
|
-
if (fallback.exitCode === 0)
|
|
52
|
-
return fallback;
|
|
53
|
-
const pathCommand = await run(localCommand, args, { cwd, timeoutMs });
|
|
54
|
-
if (pathCommand.exitCode === 0)
|
|
55
|
-
return pathCommand;
|
|
56
|
-
return {
|
|
57
|
-
exitCode: pathCommand.exitCode,
|
|
58
|
-
stdout: pathCommand.stdout,
|
|
59
|
-
stderr: `${localFailures.map(summarizeFailure).join("; ")}; npx fallback failed: ${summarizeFailure(fallback)}; PATH command failed: ${summarizeFailure(pathCommand)}`
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
function repoLocalCommandCandidates(command, cwd) {
|
|
63
|
-
if (!cwd || command.includes("/") || command.includes("\\"))
|
|
64
|
-
return [];
|
|
65
|
-
const executable = process.platform === "win32" ? `${command}.cmd` : command;
|
|
66
|
-
return [join(cwd, "node_modules", ".bin", executable)];
|
|
67
|
-
}
|
|
68
|
-
function normalizeVersion(output) {
|
|
69
|
-
const trimmed = output.trim();
|
|
70
|
-
const match = trimmed.match(/\bv?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)\b/);
|
|
71
|
-
return match?.[1] ?? trimmed;
|
|
72
|
-
}
|
|
73
65
|
//# sourceMappingURL=projscan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projscan.js","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projscan.js","sourceRoot":"","sources":["../../src/adapters/projscan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAElG,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAS3C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,GAAG;QACH,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,CAAC,yBAAyB,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAsB;QAChC,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;YACrC,GAAG;YACH,YAAY,EAAE,OAAO;YACrB,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,MAAqB,UAAU;IAE/B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,GAAG;QACH,YAAY,EAAE,UAAU;QACxB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE;YACJ,OAAO;YACP,UAAU;YACV,yEAAyE;SAC1E;QACD,GAAG;QACH,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,CAAC,8BAA8B,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAChE,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CommandResult, CommandRunner } from "../core/process.js";
|
|
2
|
+
export interface RunToolWithFallbackOptions {
|
|
3
|
+
run: CommandRunner;
|
|
4
|
+
localCommand: string;
|
|
5
|
+
packageName: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
cwd?: string | undefined;
|
|
8
|
+
timeoutMs?: number | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function runToolWithFallback(options: RunToolWithFallbackOptions): Promise<CommandResult>;
|
|
11
|
+
export declare function summarizeToolFailure(result: {
|
|
12
|
+
stdout: string;
|
|
13
|
+
stderr: string;
|
|
14
|
+
}): string;
|
|
15
|
+
export declare function normalizeCliVersion(output: string): string;
|
|
16
|
+
//# sourceMappingURL=tool-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runner.d.ts","sourceRoot":"","sources":["../../src/adapters/tool-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,aAAa,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
export async function runToolWithFallback(options) {
|
|
3
|
+
const timeoutMs = options.timeoutMs ?? 10_000;
|
|
4
|
+
const localFailures = [];
|
|
5
|
+
for (const candidate of repoLocalCommandCandidates(options.localCommand, options.cwd)) {
|
|
6
|
+
const local = await options.run(candidate, options.args, { cwd: options.cwd, timeoutMs });
|
|
7
|
+
if (local.exitCode === 0)
|
|
8
|
+
return local;
|
|
9
|
+
localFailures.push(local);
|
|
10
|
+
}
|
|
11
|
+
const fallback = await options.run("npx", ["--yes", options.packageName, ...options.args], {
|
|
12
|
+
cwd: options.cwd,
|
|
13
|
+
timeoutMs
|
|
14
|
+
});
|
|
15
|
+
if (fallback.exitCode === 0)
|
|
16
|
+
return fallback;
|
|
17
|
+
const pathCommand = await options.run(options.localCommand, options.args, {
|
|
18
|
+
cwd: options.cwd,
|
|
19
|
+
timeoutMs
|
|
20
|
+
});
|
|
21
|
+
if (pathCommand.exitCode === 0)
|
|
22
|
+
return pathCommand;
|
|
23
|
+
return {
|
|
24
|
+
exitCode: pathCommand.exitCode,
|
|
25
|
+
stdout: pathCommand.stdout,
|
|
26
|
+
stderr: `${localFailures.map(summarizeToolFailure).join("; ")}; npx fallback failed: ${summarizeToolFailure(fallback)}; PATH command failed: ${summarizeToolFailure(pathCommand)}`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function summarizeToolFailure(result) {
|
|
30
|
+
return (result.stderr || result.stdout || "no output").trim();
|
|
31
|
+
}
|
|
32
|
+
export function normalizeCliVersion(output) {
|
|
33
|
+
const trimmed = output.trim();
|
|
34
|
+
const match = trimmed.match(/\bv?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)\b/);
|
|
35
|
+
return match?.[1] ?? trimmed;
|
|
36
|
+
}
|
|
37
|
+
function repoLocalCommandCandidates(command, cwd) {
|
|
38
|
+
if (!cwd || command.includes("/") || command.includes("\\"))
|
|
39
|
+
return [];
|
|
40
|
+
const executable = process.platform === "win32" ? `${command}.cmd` : command;
|
|
41
|
+
return [join(cwd, "node_modules", ".bin", executable)];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=tool-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runner.js","sourceRoot":"","sources":["../../src/adapters/tool-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC;IAEnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAC9C,MAAM,aAAa,GAAoB,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;QACzF,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;KACV,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE;QACxE,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;KACV,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAEnD,OAAO;QACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,oBAAoB,CAAC,WAAW,CAAC,EAAE;KACnL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA0C;IAC7E,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC5E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AAC/B,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAE,GAAY;IAC/D,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,SAAS,IAAI,OAAO,CA8InC;AAeD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG5F"}
|
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,8 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
import { getRepositoryRoot } from "./core/git.js";
|
|
7
7
|
import { runDoctorCommand } from "./commands/doctor.js";
|
|
8
|
+
import { runHandoffCommand } from "./commands/handoff.js";
|
|
9
|
+
import { runHistoryCommand } from "./commands/history.js";
|
|
8
10
|
import { runInitCommand } from "./commands/init.js";
|
|
9
11
|
import { runReplayCommand } from "./commands/replay.js";
|
|
10
12
|
import { runReportCommand } from "./commands/report.js";
|
|
@@ -17,7 +19,7 @@ export function createCli() {
|
|
|
17
19
|
const program = new Command();
|
|
18
20
|
program
|
|
19
21
|
.name("agentflight")
|
|
20
|
-
.description("Local-first review layer for
|
|
22
|
+
.description("Local-first review layer for coding agent sessions.")
|
|
21
23
|
.version(readPackageVersion());
|
|
22
24
|
program
|
|
23
25
|
.command("init")
|
|
@@ -27,7 +29,7 @@ export function createCli() {
|
|
|
27
29
|
});
|
|
28
30
|
program
|
|
29
31
|
.command("start")
|
|
30
|
-
.description("Start or resume
|
|
32
|
+
.description("Start or resume a coding agent session.")
|
|
31
33
|
.requiredOption("--task <task>", "task title")
|
|
32
34
|
.option("-y, --yes", "initialise safely if AgentFlight is missing")
|
|
33
35
|
.action(async (options) => {
|
|
@@ -91,6 +93,26 @@ export function createCli() {
|
|
|
91
93
|
.action(async () => {
|
|
92
94
|
await printResult(runResumeCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
|
|
93
95
|
});
|
|
96
|
+
program
|
|
97
|
+
.command("handoff")
|
|
98
|
+
.description("Generate a local review handoff for the current session.")
|
|
99
|
+
.action(async () => {
|
|
100
|
+
await printResult(runHandoffCommand({ repoRoot: await getRepositoryRoot(process.cwd()) }));
|
|
101
|
+
});
|
|
102
|
+
program
|
|
103
|
+
.command("history")
|
|
104
|
+
.description("List recent local AgentFlight sessions.")
|
|
105
|
+
.option("--limit <count>", "number of recent sessions to show")
|
|
106
|
+
.option("--task <text>", "filter sessions by task title text")
|
|
107
|
+
.option("--state <state>", "filter sessions by state: ready, blocked, needs_verification, unknown, current")
|
|
108
|
+
.action(async (options) => {
|
|
109
|
+
await printResult(runHistoryCommand({
|
|
110
|
+
repoRoot: await getRepositoryRoot(process.cwd()),
|
|
111
|
+
limit: options.limit === undefined ? undefined : Number(options.limit),
|
|
112
|
+
task: options.task,
|
|
113
|
+
state: options.state
|
|
114
|
+
}));
|
|
115
|
+
});
|
|
94
116
|
program
|
|
95
117
|
.command("doctor")
|
|
96
118
|
.description("Check whether AgentFlight is correctly configured.")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,aAAa,CAAC;SACnB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAkE9B"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -2,12 +2,15 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { inspectAgentLoopKit } from "../adapters/agentloopkit.js";
|
|
4
4
|
import { inspectProjScan } from "../adapters/projscan.js";
|
|
5
|
+
import { filterChangedFiles } from "../core/changed-files.js";
|
|
6
|
+
import { loadConfig } from "../core/config.js";
|
|
5
7
|
import { evaluateDoctorChecks } from "../core/doctor.js";
|
|
6
8
|
import { isPathWritable, pathExists } from "../core/fs-safe.js";
|
|
7
9
|
import { getRepositoryRoot } from "../core/git.js";
|
|
8
10
|
import { renderStatus } from "../core/output.js";
|
|
9
11
|
import { detectPackageManager, readPackageJson } from "../core/project.js";
|
|
10
12
|
import { runCommand } from "../core/process.js";
|
|
13
|
+
import { detectVerificationCommands } from "../core/verification.js";
|
|
11
14
|
import { resolveAgentFlightPaths } from "../core/paths.js";
|
|
12
15
|
import { appendSessionEvent } from "../core/session.js";
|
|
13
16
|
import { readCurrentSession } from "./status.js";
|
|
@@ -15,6 +18,7 @@ export async function runDoctorCommand(options) {
|
|
|
15
18
|
const paths = resolveAgentFlightPaths(options.repoRoot);
|
|
16
19
|
const packageJson = await readPackageJson(options.repoRoot);
|
|
17
20
|
const scripts = packageJson.scripts ?? {};
|
|
21
|
+
const detectedVerificationCommands = detectVerificationCommands(packageJson);
|
|
18
22
|
const [npmVersion, repoRoot, packageManager, projscan, agentloopkit] = await Promise.all([
|
|
19
23
|
options.npmVersion !== undefined
|
|
20
24
|
? Promise.resolve(options.npmVersion)
|
|
@@ -30,6 +34,16 @@ export async function runDoctorCommand(options) {
|
|
|
30
34
|
? Promise.resolve({ available: options.agentloopkitAvailable })
|
|
31
35
|
: inspectAgentLoopKit({ cwd: options.repoRoot })
|
|
32
36
|
]);
|
|
37
|
+
const configValid = await isConfigValid(paths.config);
|
|
38
|
+
const projscanMemoryPresent = await pathExists(join(options.repoRoot, ".projscan-memory", "memory.json"));
|
|
39
|
+
const config = configValid ? await loadConfig(options.repoRoot) : null;
|
|
40
|
+
const configuredVerificationCommands = Array.isArray(config?.verification?.commands)
|
|
41
|
+
? config.verification.commands.length
|
|
42
|
+
: undefined;
|
|
43
|
+
const projscanMemoryIgnored = projscanMemoryPresent &&
|
|
44
|
+
filterChangedFiles([".projscan-memory/memory.json"], {
|
|
45
|
+
ignore: config?.changedFileFilters?.ignore
|
|
46
|
+
}).length === 0;
|
|
33
47
|
const result = evaluateDoctorChecks({
|
|
34
48
|
nodeVersion: options.nodeVersion ?? process.version,
|
|
35
49
|
npmVersion,
|
|
@@ -38,11 +52,15 @@ export async function runDoctorCommand(options) {
|
|
|
38
52
|
packageManager,
|
|
39
53
|
repoRoot,
|
|
40
54
|
agentFlightExists: await pathExists(paths.root),
|
|
41
|
-
configValid
|
|
55
|
+
configValid,
|
|
42
56
|
writable: await isPathWritable(paths.root),
|
|
43
57
|
currentSessionExists: await pathExists(paths.currentSession),
|
|
44
58
|
projscanAvailable: projscan.available,
|
|
45
59
|
agentloopkitAvailable: agentloopkit.available,
|
|
60
|
+
configuredVerificationCommands,
|
|
61
|
+
detectedVerificationCommands,
|
|
62
|
+
projscanMemoryPresent,
|
|
63
|
+
projscanMemoryIgnored,
|
|
46
64
|
scripts: {
|
|
47
65
|
test: Boolean(scripts.test),
|
|
48
66
|
build: Boolean(scripts.build),
|
|
@@ -90,10 +108,16 @@ Overall: ${renderStatus(result.status)}
|
|
|
90
108
|
|
|
91
109
|
${result.checks
|
|
92
110
|
.map((check) => {
|
|
93
|
-
const fix = check.suggestedFix ? `\n
|
|
111
|
+
const fix = check.suggestedFix ? `\n${renderSuggestedFix(check.suggestedFix)}` : "";
|
|
94
112
|
return `- ${renderStatus(check.status)} ${check.name}: ${check.message}${fix}`;
|
|
95
113
|
})
|
|
96
114
|
.join("\n")}
|
|
97
115
|
`;
|
|
98
116
|
}
|
|
117
|
+
function renderSuggestedFix(suggestedFix) {
|
|
118
|
+
const lines = suggestedFix.split("\n");
|
|
119
|
+
if (lines.length === 1)
|
|
120
|
+
return ` Suggested fix: ${suggestedFix}`;
|
|
121
|
+
return [" Suggested fix:", ...lines.map((line) => ` ${line}`)].join("\n");
|
|
122
|
+
}
|
|
99
123
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAmBjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvF,OAAO,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;YACrC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,OAAO,CAAC,cAAc,KAAK,SAAS;YAClC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;YACzC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1C,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC3D,CAAC,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9C,OAAO,CAAC,qBAAqB,KAAK,SAAS;YACzC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC/D,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;KACnD,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface HandoffCommandOptions {
|
|
2
|
+
repoRoot: string;
|
|
3
|
+
changedFiles?: string[] | undefined;
|
|
4
|
+
now?: Date | undefined;
|
|
5
|
+
}
|
|
6
|
+
export interface HandoffCommandResult {
|
|
7
|
+
output: string;
|
|
8
|
+
exitCode: number;
|
|
9
|
+
handoffPath: string;
|
|
10
|
+
sessionHandoffPath: string;
|
|
11
|
+
reportPath: string;
|
|
12
|
+
replayPath: string;
|
|
13
|
+
resumePath: string;
|
|
14
|
+
sessionResumePath: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function runHandoffCommand(options: HandoffCommandOptions): Promise<HandoffCommandResult>;
|
|
17
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA2DD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
|