agentflight 0.6.0 → 0.7.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/CHANGELOG.md +284 -2
- package/README.md +86 -34
- 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/assets/agentflight-terminal-demo.gif +0 -0
- 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
package/dist/commands/status.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import { readOpenFirstArtifact } from "../core/artifacts.js";
|
|
1
2
|
import { listChangedFiles } from "../core/git.js";
|
|
2
3
|
import { filterChangedFiles } from "../core/changed-files.js";
|
|
3
4
|
import { loadConfig } from "../core/config.js";
|
|
4
5
|
import { pathExists, readJsonFile } from "../core/fs-safe.js";
|
|
5
|
-
import { compactCommandInText, formatVerifyCommandForDisplay } from "../core/output.js";
|
|
6
|
+
import { compactCommandInText, formatCommandForDisplay, formatVerificationCountLine, formatVerificationFailureContext, formatVerifyCommandForDisplay } from "../core/output.js";
|
|
6
7
|
import { resolveAgentFlightPaths } from "../core/paths.js";
|
|
7
8
|
import { analyzeRisk } from "../core/risk.js";
|
|
8
9
|
import { buildReviewIntelligence } from "../core/review-intelligence.js";
|
|
9
|
-
import { getLatestSessionEvent } from "../core/session.js";
|
|
10
|
+
import { getLatestRecordedReviewSummary, getLatestSessionEvent } from "../core/session.js";
|
|
10
11
|
import { buildVerificationSummary } from "../core/verification.js";
|
|
12
|
+
const STATUS_VERIFICATION_RUN_LIMIT = 8;
|
|
13
|
+
const readyHandoffNextAction = "Run agentflight handoff to generate the local review packet.";
|
|
11
14
|
export async function runStatusCommand(options) {
|
|
12
15
|
const format = normalizeStatusFormat(options.format);
|
|
13
16
|
const session = await readCurrentSession(options.repoRoot);
|
|
@@ -23,6 +26,13 @@ export async function runStatusCommand(options) {
|
|
|
23
26
|
const latestSnapshot = getLatestSessionEvent(session, "snapshot_created");
|
|
24
27
|
const readinessReason = compactCommandInText(review.readiness.reason, review.readiness.suggestedCommand);
|
|
25
28
|
const nextAction = compactCommandInText(review.readiness.nextAction, review.readiness.suggestedCommand);
|
|
29
|
+
const statusTextNextAction = await buildStatusTextNextAction({
|
|
30
|
+
repoRoot: options.repoRoot,
|
|
31
|
+
session,
|
|
32
|
+
readinessState: review.readiness.state,
|
|
33
|
+
nextAction
|
|
34
|
+
});
|
|
35
|
+
const verificationFailureContext = formatVerificationFailureContext(verification);
|
|
26
36
|
if (format === "json") {
|
|
27
37
|
return {
|
|
28
38
|
output: `${JSON.stringify(buildStatusJson({
|
|
@@ -57,8 +67,10 @@ Risk: ${risk.level}
|
|
|
57
67
|
${risk.reasons.map((reason) => `- ${reason}`).join("\n")}
|
|
58
68
|
|
|
59
69
|
Verification Evidence:
|
|
60
|
-
${verification
|
|
61
|
-
${formatVerificationRuns(verification.runs
|
|
70
|
+
${formatVerificationCountLine(verification)}
|
|
71
|
+
${verificationFailureContext ? `${verificationFailureContext}\n` : ""}${formatVerificationRuns(verification.runs, {
|
|
72
|
+
tuckDetails: changedFiles.length === 0 && verification.unresolvedFailed === 0
|
|
73
|
+
})}
|
|
62
74
|
|
|
63
75
|
Review first:
|
|
64
76
|
${formatReviewFocus(review.focus.slice(0, 5))}
|
|
@@ -73,7 +85,7 @@ Readiness: ${review.readiness.label}
|
|
|
73
85
|
Reason: ${readinessReason}
|
|
74
86
|
|
|
75
87
|
Next action:
|
|
76
|
-
${
|
|
88
|
+
${statusTextNextAction}
|
|
77
89
|
`
|
|
78
90
|
};
|
|
79
91
|
}
|
|
@@ -99,6 +111,8 @@ function buildStatusJson(input) {
|
|
|
99
111
|
verification: {
|
|
100
112
|
passed: input.verification.passed,
|
|
101
113
|
failed: input.verification.failed,
|
|
114
|
+
unresolvedFailed: input.verification.unresolvedFailed,
|
|
115
|
+
resolvedFailed: input.verification.resolvedFailed,
|
|
102
116
|
runs: input.verification.runs
|
|
103
117
|
},
|
|
104
118
|
review: {
|
|
@@ -133,6 +147,34 @@ function formatLatestSnapshot(event) {
|
|
|
133
147
|
- Risk: ${riskLevel}
|
|
134
148
|
- Changed files: ${changedFiles}`;
|
|
135
149
|
}
|
|
150
|
+
function formatCleanStatusNextAction(openFirst) {
|
|
151
|
+
const openLine = openFirst
|
|
152
|
+
? `Open first: ${openFirst}`
|
|
153
|
+
: "Run agentflight history --limit 1 to reopen the latest local artifacts.";
|
|
154
|
+
return `${openLine}
|
|
155
|
+
Start a new AgentFlight session when you begin the next task.`;
|
|
156
|
+
}
|
|
157
|
+
async function buildStatusTextNextAction(input) {
|
|
158
|
+
const openFirstReadiness = statusOpenFirstReadiness(input.readinessState, input.session);
|
|
159
|
+
if (openFirstReadiness === undefined)
|
|
160
|
+
return input.nextAction;
|
|
161
|
+
const openFirst = await readOpenFirstArtifact(input.repoRoot, input.session.id, openFirstReadiness);
|
|
162
|
+
if (input.readinessState === "clean_worktree")
|
|
163
|
+
return formatCleanStatusNextAction(openFirst);
|
|
164
|
+
return formatReadyStatusNextAction(input.nextAction, openFirst);
|
|
165
|
+
}
|
|
166
|
+
function statusOpenFirstReadiness(readinessState, session) {
|
|
167
|
+
if (readinessState === "clean_worktree")
|
|
168
|
+
return getLatestRecordedReviewSummary(session)?.state;
|
|
169
|
+
if (readinessState === "ready_for_review")
|
|
170
|
+
return readinessState;
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
function formatReadyStatusNextAction(nextAction, openFirst) {
|
|
174
|
+
if (openFirst && nextAction === readyHandoffNextAction)
|
|
175
|
+
return `Open first: ${openFirst}`;
|
|
176
|
+
return nextAction;
|
|
177
|
+
}
|
|
136
178
|
function readMetadataObject(event, key) {
|
|
137
179
|
const value = event.metadata?.[key];
|
|
138
180
|
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
@@ -162,12 +204,35 @@ function formatChangedAreas(categories) {
|
|
|
162
204
|
.map((summary) => `- ${summary.category}: ${summary.files.join(", ")}`)
|
|
163
205
|
.join("\n");
|
|
164
206
|
}
|
|
165
|
-
function formatVerificationRuns(runs) {
|
|
207
|
+
function formatVerificationRuns(runs, options = {}) {
|
|
166
208
|
if (!runs || runs.length === 0)
|
|
167
209
|
return "- No verification runs recorded.";
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
210
|
+
if (options.tuckDetails)
|
|
211
|
+
return formatTuckedVerificationRuns();
|
|
212
|
+
return formatVisibleVerificationRuns(runs);
|
|
213
|
+
}
|
|
214
|
+
function formatTuckedVerificationRuns() {
|
|
215
|
+
return "- Verification run details are tucked because the worktree is clean; open handoff/report/replay or JSON output for the full ledger.";
|
|
216
|
+
}
|
|
217
|
+
function formatVisibleVerificationRuns(runs) {
|
|
218
|
+
const displayRuns = runs.length > STATUS_VERIFICATION_RUN_LIMIT ? runs.slice(-STATUS_VERIFICATION_RUN_LIMIT) : runs;
|
|
219
|
+
const runLines = displayRuns.map(formatVerificationRunLine).join("\n");
|
|
220
|
+
if (displayRuns.length === runs.length)
|
|
221
|
+
return runLines;
|
|
222
|
+
return `${formatOmittedVerificationRunNote(runs.length, displayRuns.length)}
|
|
223
|
+
${runLines}`;
|
|
224
|
+
}
|
|
225
|
+
function formatVerificationRunLine(run) {
|
|
226
|
+
return `- ${run.status}: ${formatCommandForDisplay(run.command)} (exit ${run.exitCode ?? "unknown"}, ${run.durationMs}ms)`;
|
|
227
|
+
}
|
|
228
|
+
function formatOmittedVerificationRunNote(totalRuns, shownRuns) {
|
|
229
|
+
const omitted = totalRuns - shownRuns;
|
|
230
|
+
return `- Showing latest ${shownRuns} of ${totalRuns} verification runs.
|
|
231
|
+
- ${formatOmittedVerificationRunCount(omitted)} remain in report/replay and JSON output.`;
|
|
232
|
+
}
|
|
233
|
+
function formatOmittedVerificationRunCount(omitted) {
|
|
234
|
+
const runNoun = omitted === 1 ? "run" : "runs";
|
|
235
|
+
return `${omitted} earlier verification ${runNoun}`;
|
|
171
236
|
}
|
|
172
237
|
function formatReviewFocus(items) {
|
|
173
238
|
if (items.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
|
package/dist/commands/verify.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { loadConfig } from "../core/config.js";
|
|
2
|
+
import { readPackageJson } from "../core/project.js";
|
|
2
3
|
import { appendSessionEvent, appendVerificationRun } from "../core/session.js";
|
|
3
|
-
import { formatCommand, parseCommandLine, runVerificationCommand } from "../core/verification.js";
|
|
4
|
+
import { detectVerificationCommands, formatCommand, parseCommandLine, runVerificationCommand } from "../core/verification.js";
|
|
4
5
|
import { readCurrentSession } from "./status.js";
|
|
5
6
|
export async function runVerifyCommand(options) {
|
|
6
7
|
const session = await readCurrentSession(options.repoRoot);
|
|
@@ -8,8 +9,7 @@ export async function runVerifyCommand(options) {
|
|
|
8
9
|
const resolutionError = buildResolutionErrorResult(commandResolution.error);
|
|
9
10
|
if (resolutionError)
|
|
10
11
|
return resolutionError;
|
|
11
|
-
const
|
|
12
|
-
const missingCommand = buildMissingCommandResult(commandSets);
|
|
12
|
+
const missingCommand = buildMissingCommandResult(commandResolution);
|
|
13
13
|
if (missingCommand)
|
|
14
14
|
return missingCommand;
|
|
15
15
|
const { output, runs } = await runResolvedVerificationCommands(options, session, commandResolution);
|
|
@@ -95,13 +95,22 @@ ${error}
|
|
|
95
95
|
runs: []
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
function buildMissingCommandResult(
|
|
99
|
-
if (commandSets.length > 0)
|
|
98
|
+
function buildMissingCommandResult(commandResolution) {
|
|
99
|
+
if (commandResolution.commandSets.length > 0)
|
|
100
100
|
return null;
|
|
101
|
+
const suggestedCommands = commandResolution.suggestedCommands ?? [];
|
|
102
|
+
const suggestions = suggestedCommands.length > 0
|
|
103
|
+
? `
|
|
104
|
+
|
|
105
|
+
Try one of:
|
|
106
|
+
${suggestedCommands.map((command) => `- agentflight verify -- ${command}`).join("\n")}
|
|
107
|
+
|
|
108
|
+
To make this the default, add commands under verification.commands in .agentflight/config.json.`
|
|
109
|
+
: "";
|
|
101
110
|
return {
|
|
102
111
|
output: `AgentFlight verify
|
|
103
112
|
|
|
104
|
-
No verification command was provided and no commands are configured in .agentflight/config.json
|
|
113
|
+
No verification command was provided and no commands are configured in .agentflight/config.json.${suggestions}
|
|
105
114
|
`,
|
|
106
115
|
exitCode: 1,
|
|
107
116
|
runs: []
|
|
@@ -144,7 +153,7 @@ async function resolveCommandSets(options) {
|
|
|
144
153
|
if (profile.name) {
|
|
145
154
|
return resolveProfileCommandSets(config?.verification, profile.name);
|
|
146
155
|
}
|
|
147
|
-
return resolveConfiguredCommandSets(config?.verification.commands);
|
|
156
|
+
return resolveConfiguredCommandSets(options.repoRoot, config?.verification.commands);
|
|
148
157
|
}
|
|
149
158
|
function hasExplicitCommandArgs(options) {
|
|
150
159
|
return Array.isArray(options.commandArgs) && options.commandArgs.length > 0;
|
|
@@ -155,9 +164,13 @@ function normalizeProfileOption(profile) {
|
|
|
155
164
|
return { error: "Verification profile name cannot be empty." };
|
|
156
165
|
return name ? { name } : {};
|
|
157
166
|
}
|
|
158
|
-
function resolveConfiguredCommandSets(commands) {
|
|
167
|
+
async function resolveConfiguredCommandSets(repoRoot, commands) {
|
|
168
|
+
const commandSets = parseConfiguredCommands(commands ?? []);
|
|
169
|
+
if (commandSets.length > 0)
|
|
170
|
+
return { commandSets };
|
|
159
171
|
return {
|
|
160
|
-
commandSets
|
|
172
|
+
commandSets,
|
|
173
|
+
suggestedCommands: detectVerificationCommands(await readPackageJson(repoRoot))
|
|
161
174
|
};
|
|
162
175
|
}
|
|
163
176
|
function resolveProfileCommandSets(verification, profileName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReviewReadinessState } from "../types/index.js";
|
|
2
|
+
export interface ReviewArtifacts {
|
|
3
|
+
handoff: string;
|
|
4
|
+
report: string;
|
|
5
|
+
replay: string;
|
|
6
|
+
resume: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function readReviewArtifacts(repoRoot: string, sessionId: string): Promise<ReviewArtifacts>;
|
|
9
|
+
export declare function readOpenFirstArtifact(repoRoot: string, sessionId: string, readiness: ReviewReadinessState | undefined): Promise<string | null>;
|
|
10
|
+
export declare function chooseOpenFirstArtifact(readiness: ReviewReadinessState | undefined, artifacts: ReviewArtifacts): string;
|
|
11
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/core/artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAO1B;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAC1C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,GAAG,SAAS,EAC3C,SAAS,EAAE,eAAe,GACzB,MAAM,CAmBR"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { pathExists } from "./fs-safe.js";
|
|
2
|
+
import { formatRepoRelativePath, resolveAgentFlightPaths } from "./paths.js";
|
|
3
|
+
export async function readReviewArtifacts(repoRoot, sessionId) {
|
|
4
|
+
return {
|
|
5
|
+
handoff: await formatArtifactPath(repoRoot, sessionId, "handoff.md"),
|
|
6
|
+
report: await formatArtifactPath(repoRoot, sessionId, "proof.md"),
|
|
7
|
+
replay: await formatArtifactPath(repoRoot, sessionId, "replay.html"),
|
|
8
|
+
resume: await formatArtifactPath(repoRoot, sessionId, "resume.md")
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export async function readOpenFirstArtifact(repoRoot, sessionId, readiness) {
|
|
12
|
+
const artifacts = await readReviewArtifacts(repoRoot, sessionId);
|
|
13
|
+
const openFirst = chooseOpenFirstArtifact(readiness, artifacts);
|
|
14
|
+
return openFirst === "none yet" ? null : openFirst;
|
|
15
|
+
}
|
|
16
|
+
export function chooseOpenFirstArtifact(readiness, artifacts) {
|
|
17
|
+
if (readiness === "ready_for_review") {
|
|
18
|
+
return formatOpenFirstArtifact(firstExistingArtifact(["handoff", "replay", "report"], artifacts), artifacts);
|
|
19
|
+
}
|
|
20
|
+
if (readiness) {
|
|
21
|
+
return formatOpenFirstArtifact(firstExistingArtifact(["report", "handoff", "replay"], artifacts), artifacts);
|
|
22
|
+
}
|
|
23
|
+
return formatOpenFirstArtifact(firstExistingArtifact(["handoff", "replay", "report"], artifacts), artifacts);
|
|
24
|
+
}
|
|
25
|
+
function firstExistingArtifact(order, artifacts) {
|
|
26
|
+
return order.find((artifact) => artifacts[artifact] !== "missing") ?? null;
|
|
27
|
+
}
|
|
28
|
+
function formatOpenFirstArtifact(artifact, artifacts) {
|
|
29
|
+
if (!artifact)
|
|
30
|
+
return "none yet";
|
|
31
|
+
return `${artifact} ${artifacts[artifact]}`;
|
|
32
|
+
}
|
|
33
|
+
async function formatArtifactPath(repoRoot, sessionId, suffix) {
|
|
34
|
+
const artifactPath = `${resolveAgentFlightPaths(repoRoot).reports}/${sessionId}-${suffix}`;
|
|
35
|
+
return (await pathExists(artifactPath))
|
|
36
|
+
? formatRepoRelativePath(repoRoot, artifactPath)
|
|
37
|
+
: "missing";
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/core/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAY7E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,SAAiB;IAEjB,OAAO;QACL,OAAO,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC;QACpE,MAAM,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;QACjE,MAAM,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC;QACpE,MAAM,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,SAAiB,EACjB,SAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,SAA2C,EAC3C,SAA0B;IAE1B,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACrC,OAAO,uBAAuB,CAC5B,qBAAqB,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EACjE,SAAS,CACV,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,uBAAuB,CAC5B,qBAAqB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EACjE,SAAS,CACV,CAAC;IACJ,CAAC;IAED,OAAO,uBAAuB,CAC5B,qBAAqB,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EACjE,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAwB,EACxB,SAA0B;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAgC,EAChC,SAA0B;IAE1B,IAAI,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IACjC,OAAO,GAAG,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,QAAgB,EAChB,SAAiB,EACjB,MAA+D;IAE/D,MAAM,YAAY,GAAG,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;IAC3F,OAAO,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AgentFlightConfig, AgentFlightPaths } from "../types/index.js";
|
|
|
2
2
|
export interface CreateDefaultConfigOptions {
|
|
3
3
|
repoRoot: string;
|
|
4
4
|
now?: Date | undefined;
|
|
5
|
+
verificationCommands?: string[] | undefined;
|
|
5
6
|
}
|
|
6
7
|
export interface InitAgentFlightOptions {
|
|
7
8
|
repoRoot: string;
|
|
@@ -12,6 +13,7 @@ export interface InitAgentFlightResult {
|
|
|
12
13
|
config: AgentFlightConfig;
|
|
13
14
|
created: string[];
|
|
14
15
|
skipped: string[];
|
|
16
|
+
detectedVerificationCommands: string[];
|
|
15
17
|
detections: {
|
|
16
18
|
agentloopkit: boolean;
|
|
17
19
|
projscan: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI7E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CA6B1F;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyChC;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIpF"}
|
package/dist/core/config.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
2
|
import { ensureDir, pathExists, readJsonFile, writeJsonFileSafe, writeTextFileSafe } from "./fs-safe.js";
|
|
3
3
|
import { resolveAgentFlightPaths } from "./paths.js";
|
|
4
|
+
import { readPackageJson } from "./project.js";
|
|
5
|
+
import { detectVerificationCommands } from "./verification.js";
|
|
6
|
+
const runtimeGitignore = ["/sessions/", "/reports/", "/evidence/", "/current/", ""].join("\n");
|
|
4
7
|
export function createDefaultConfig(options) {
|
|
5
8
|
const now = options.now ?? new Date();
|
|
6
9
|
return {
|
|
@@ -18,7 +21,7 @@ export function createDefaultConfig(options) {
|
|
|
18
21
|
}
|
|
19
22
|
},
|
|
20
23
|
verification: {
|
|
21
|
-
commands: [],
|
|
24
|
+
commands: options.verificationCommands ?? [],
|
|
22
25
|
profiles: {}
|
|
23
26
|
},
|
|
24
27
|
changedFileFilters: {
|
|
@@ -39,19 +42,17 @@ export async function initAgentFlight(options) {
|
|
|
39
42
|
await ensureDir(paths.reports);
|
|
40
43
|
await ensureDir(paths.evidence);
|
|
41
44
|
await ensureDir(paths.current);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
const defaultConfig = createDefaultConfig({ repoRoot: options.repoRoot, now: options.now });
|
|
45
|
+
const runtimeIgnoreWrite = await writeTextFileSafe(`${paths.root}/.gitignore`, runtimeGitignore);
|
|
46
|
+
if (runtimeIgnoreWrite.status === "created")
|
|
47
|
+
created.push(runtimeIgnoreWrite.path);
|
|
48
|
+
if (runtimeIgnoreWrite.status === "skipped")
|
|
49
|
+
skipped.push(runtimeIgnoreWrite.path);
|
|
50
|
+
const verificationCommands = detectVerificationCommands(await readPackageJson(options.repoRoot));
|
|
51
|
+
const defaultConfig = createDefaultConfig({
|
|
52
|
+
repoRoot: options.repoRoot,
|
|
53
|
+
now: options.now,
|
|
54
|
+
verificationCommands
|
|
55
|
+
});
|
|
55
56
|
const configWrite = await writeJsonFileSafe(paths.config, defaultConfig);
|
|
56
57
|
if (configWrite.status === "created")
|
|
57
58
|
created.push(configWrite.path);
|
|
@@ -65,6 +66,7 @@ export async function initAgentFlight(options) {
|
|
|
65
66
|
config,
|
|
66
67
|
created,
|
|
67
68
|
skipped,
|
|
69
|
+
detectedVerificationCommands: verificationCommands,
|
|
68
70
|
detections: {
|
|
69
71
|
agentloopkit: await pathExists(`${options.repoRoot}/.agentloop`),
|
|
70
72
|
projscan: await pathExists(`${options.repoRoot}/.projscanrc.json`)
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/doctor.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export interface DoctorEvaluationInput {
|
|
|
11
11
|
currentSessionExists: boolean;
|
|
12
12
|
projscanAvailable: boolean;
|
|
13
13
|
agentloopkitAvailable: boolean;
|
|
14
|
+
configuredVerificationCommands?: number | undefined;
|
|
15
|
+
detectedVerificationCommands?: string[] | undefined;
|
|
16
|
+
projscanMemoryPresent?: boolean | undefined;
|
|
17
|
+
projscanMemoryIgnored?: boolean | undefined;
|
|
14
18
|
scripts: {
|
|
15
19
|
test: boolean;
|
|
16
20
|
build: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpD,4BAA4B,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAoJ/E"}
|
package/dist/core/doctor.js
CHANGED
|
@@ -11,7 +11,7 @@ export function evaluateDoctorChecks(input) {
|
|
|
11
11
|
? ok("git availability", "git is available.")
|
|
12
12
|
: warning("git availability", "git is not available or this repo cannot run git commands.", "Install git or run AgentFlight inside a git repository."));
|
|
13
13
|
checks.push(input.repoRoot
|
|
14
|
-
? ok("repository root",
|
|
14
|
+
? ok("repository root", "Repository root detected.")
|
|
15
15
|
: error("repository root", "Unable to determine repository root.", "Run AgentFlight from inside a git repository or project directory."));
|
|
16
16
|
checks.push(input.packageManager
|
|
17
17
|
? ok("package manager", input.packageManager)
|
|
@@ -27,13 +27,21 @@ export function evaluateDoctorChecks(input) {
|
|
|
27
27
|
: error(".agentflight writable", ".agentflight is not writable.", "Check filesystem permissions."));
|
|
28
28
|
checks.push(input.currentSessionExists
|
|
29
29
|
? ok("current session", "A current session exists.")
|
|
30
|
-
:
|
|
30
|
+
: ok("current session", 'No current session is active. Run agentflight start --task "..." when you begin work.'));
|
|
31
31
|
checks.push(input.projscanAvailable
|
|
32
32
|
? ok("ProjScan availability", "ProjScan is available.")
|
|
33
33
|
: warning("ProjScan availability", "ProjScan is not currently available.", "Install projscan locally or allow AgentFlight to use npx projscan@latest."));
|
|
34
34
|
checks.push(input.agentloopkitAvailable
|
|
35
35
|
? ok("AgentLoopKit availability", "AgentLoopKit is available.")
|
|
36
36
|
: warning("AgentLoopKit availability", "AgentLoopKit is not currently available.", "Install agentloopkit locally or allow AgentFlight to use npx agentloopkit@latest."));
|
|
37
|
+
if (input.configuredVerificationCommands !== undefined) {
|
|
38
|
+
checks.push(verificationCommandsCheck(input));
|
|
39
|
+
}
|
|
40
|
+
if (input.projscanMemoryPresent) {
|
|
41
|
+
checks.push(input.projscanMemoryIgnored
|
|
42
|
+
? ok("generated tool state", ".projscan-memory/memory.json is filtered by changedFileFilters.ignore.")
|
|
43
|
+
: warning("generated tool state", ".projscan-memory/memory.json is present and remains reviewable.", 'If ProjScan memory is generated evidence in this repo, add ".projscan-memory/**" to changedFileFilters.ignore in .agentflight/config.json.'));
|
|
44
|
+
}
|
|
37
45
|
for (const script of ["test", "build", "typecheck", "lint"]) {
|
|
38
46
|
checks.push(input.scripts[script]
|
|
39
47
|
? ok(`${script} script`, `npm run ${script} is configured.`)
|
|
@@ -48,6 +56,33 @@ export function evaluateDoctorChecks(input) {
|
|
|
48
56
|
checks
|
|
49
57
|
};
|
|
50
58
|
}
|
|
59
|
+
function verificationCommandsCheck(input) {
|
|
60
|
+
const count = Math.max(0, input.configuredVerificationCommands ?? 0);
|
|
61
|
+
if (count > 0) {
|
|
62
|
+
return ok("verification commands", `.agentflight/config.json has ${count} configured verification ${count === 1 ? "command" : "commands"}.`);
|
|
63
|
+
}
|
|
64
|
+
if (hasPackageProofScript(input.scripts)) {
|
|
65
|
+
return warning("verification commands", ".agentflight/config.json has no configured verification commands, but package proof scripts are available.", buildVerificationCommandsSuggestedFix(input.detectedVerificationCommands));
|
|
66
|
+
}
|
|
67
|
+
return ok("verification commands", "No configured verification commands and no package proof scripts detected.");
|
|
68
|
+
}
|
|
69
|
+
function hasPackageProofScript(input) {
|
|
70
|
+
return input.test || input.build || input.typecheck || input.lint;
|
|
71
|
+
}
|
|
72
|
+
function buildVerificationCommandsSuggestedFix(commands) {
|
|
73
|
+
const suggestions = (commands ?? [])
|
|
74
|
+
.filter((command) => command.trim().length > 0)
|
|
75
|
+
.slice(0, 4)
|
|
76
|
+
.map((command) => `agentflight verify -- ${command}`);
|
|
77
|
+
if (suggestions.length === 0) {
|
|
78
|
+
return "Add commands under verification.commands or run agentflight verify -- <command> explicitly.";
|
|
79
|
+
}
|
|
80
|
+
return [
|
|
81
|
+
"Try one of:",
|
|
82
|
+
...suggestions.map((suggestion) => `- ${suggestion}`),
|
|
83
|
+
"To make one command the default, add it under verification.commands."
|
|
84
|
+
].join("\n");
|
|
85
|
+
}
|
|
51
86
|
function parseNodeMajor(version) {
|
|
52
87
|
const match = /^v?(\d+)/.exec(version);
|
|
53
88
|
return match ? Number(match[1]) : 0;
|
package/dist/core/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/core/fs-safe.d.ts
CHANGED
|
@@ -6,10 +6,16 @@ export interface SafeWriteResult {
|
|
|
6
6
|
export interface SafeWriteOptions {
|
|
7
7
|
overwrite?: boolean;
|
|
8
8
|
}
|
|
9
|
+
export interface FileLockOptions {
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
pollMs?: number;
|
|
12
|
+
}
|
|
9
13
|
export declare function pathExists(path: string): Promise<boolean>;
|
|
10
14
|
export declare function isPathWritable(path: string): Promise<boolean>;
|
|
11
15
|
export declare function ensureDir(path: string): Promise<void>;
|
|
12
16
|
export declare function readJsonFile<T>(path: string): Promise<T>;
|
|
13
17
|
export declare function writeJsonFileSafe(path: string, value: unknown, options?: SafeWriteOptions): Promise<SafeWriteResult>;
|
|
14
18
|
export declare function writeTextFileSafe(path: string, value: string, options?: SafeWriteOptions): Promise<SafeWriteResult>;
|
|
19
|
+
export declare function tryWriteTextFileExclusive(path: string, value: string): Promise<boolean>;
|
|
20
|
+
export declare function withFileLock<T>(lockPath: string, callback: () => Promise<T>, options?: FileLockOptions): Promise<T>;
|
|
15
21
|
//# sourceMappingURL=fs-safe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-safe.d.ts","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs-safe.d.ts","sourceRoot":"","sources":["../../src/core/fs-safe.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAE9D;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7F;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
|