ndrstnd 0.1.2 → 0.2.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 +41 -0
- package/README.md +6 -0
- package/dist/server/analysis-core.js +173 -21
- package/dist/server/analysis-core.js.map +1 -1
- package/dist/server/analyze.d.ts +13 -0
- package/dist/server/analyze.js +102 -28
- package/dist/server/analyze.js.map +1 -1
- package/dist/server/cli.js +39 -10
- package/dist/server/cli.js.map +1 -1
- package/dist/server/diagnostic.d.ts +34 -0
- package/dist/server/diagnostic.js +155 -0
- package/dist/server/diagnostic.js.map +1 -0
- package/dist/shared/diagnostic-schema.d.ts +572 -0
- package/dist/shared/diagnostic-schema.js +83 -0
- package/dist/shared/diagnostic-schema.js.map +1 -0
- package/package.json +3 -2
- package/src/skill-assets/ndrstnd/SKILL.md +4 -3
package/dist/server/analyze.js
CHANGED
|
@@ -1,60 +1,132 @@
|
|
|
1
1
|
import { analysisPrompt, extractJson, parseAnalysisDocument } from "./analysis-core.js";
|
|
2
|
+
import { activitySnapshot, responseMetadata as makeResponseMetadata, textMetadata } from "./diagnostic.js";
|
|
2
3
|
export { analysisPrompt, buildPromptReviewInput, parseAnalysisDocument } from "./analysis-core.js";
|
|
3
4
|
const REPAIR_ATTEMPTS = 2;
|
|
5
|
+
export class AnalysisFailure extends Error {
|
|
6
|
+
trace;
|
|
7
|
+
constructor(message, trace) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.trace = trace;
|
|
10
|
+
this.name = "AnalysisFailure";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class AnalysisResponseError extends Error {
|
|
14
|
+
phase;
|
|
15
|
+
response;
|
|
16
|
+
extracted;
|
|
17
|
+
metadata;
|
|
18
|
+
constructor(phase, response, extracted, metadata, message) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.phase = phase;
|
|
21
|
+
this.response = response;
|
|
22
|
+
this.extracted = extracted;
|
|
23
|
+
this.metadata = metadata;
|
|
24
|
+
this.name = "AnalysisResponseError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
4
27
|
export async function analyzeWithAgent(agent, input, conversation, progress) {
|
|
5
28
|
const prompt = analysisPrompt(input, conversation);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
const attempts = [];
|
|
30
|
+
try {
|
|
31
|
+
return await withFreshClientRetry(agent, async (client) => {
|
|
32
|
+
const thread = await client.startTextThread(input.repoPath);
|
|
33
|
+
try {
|
|
34
|
+
let response = await sendAnalysisTurn(thread, prompt, "initial", attempts, progress);
|
|
35
|
+
let lastError = "";
|
|
36
|
+
for (let attempt = 0; attempt <= REPAIR_ATTEMPTS; attempt += 1) {
|
|
37
|
+
try {
|
|
38
|
+
return parseAnalysisResponse(response, input, attempt === REPAIR_ATTEMPTS ? "salvage" : "require");
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
lastError = error instanceof Error ? error.message : String(error);
|
|
42
|
+
recordValidationFailure(attempts.at(-1), error);
|
|
43
|
+
if (attempt === REPAIR_ATTEMPTS)
|
|
44
|
+
break;
|
|
45
|
+
progress?.onRepair?.(attempt + 1, REPAIR_ATTEMPTS, lastError);
|
|
46
|
+
response = await sendAnalysisTurn(thread, analysisRepairPrompt(lastError), "repair", attempts, progress);
|
|
47
|
+
}
|
|
21
48
|
}
|
|
49
|
+
throw new AnalysisFailure(`${agent.name} produced an analysis that still failed validation after ${REPAIR_ATTEMPTS} repair turns: ${lastError}`, {
|
|
50
|
+
phase: "analysis",
|
|
51
|
+
message: lastError,
|
|
52
|
+
attempts,
|
|
53
|
+
});
|
|
22
54
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
55
|
+
finally {
|
|
56
|
+
await thread.close();
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof AnalysisFailure)
|
|
62
|
+
throw error;
|
|
63
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
64
|
+
throw new AnalysisFailure(`${agent.name} analysis failed: ${message}`, { phase: "analysis", message, attempts });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function sendAnalysisTurn(thread, prompt, kind, attempts, progress) {
|
|
68
|
+
const trace = { kind, durationMs: 0, prompt: textMetadata(prompt) };
|
|
69
|
+
attempts.push(trace);
|
|
70
|
+
const startedAt = Date.now();
|
|
71
|
+
let latestActivity;
|
|
72
|
+
try {
|
|
73
|
+
const response = await thread.send(prompt, (activity) => {
|
|
74
|
+
latestActivity = activity;
|
|
75
|
+
progress?.onActivity?.(activity);
|
|
76
|
+
});
|
|
77
|
+
trace.durationMs = Date.now() - startedAt;
|
|
78
|
+
trace.activity = activitySnapshot(latestActivity);
|
|
79
|
+
trace.response = makeResponseMetadata(response, extractJson(response));
|
|
80
|
+
trace.rawResponse = response;
|
|
81
|
+
return response;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
trace.durationMs = Date.now() - startedAt;
|
|
85
|
+
trace.activity = activitySnapshot(latestActivity);
|
|
86
|
+
trace.error = error instanceof Error ? error.message : String(error);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function recordValidationFailure(trace, error) {
|
|
91
|
+
if (trace === undefined)
|
|
92
|
+
return;
|
|
93
|
+
if (error instanceof AnalysisResponseError) {
|
|
94
|
+
trace.validation = { phase: error.phase, message: error.message };
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
trace.error = error instanceof Error ? error.message : String(error);
|
|
98
|
+
}
|
|
29
99
|
}
|
|
30
100
|
/** Parses one complete agent response while retaining which boundary failed for repair and CLI diagnostics. */
|
|
31
101
|
export function parseAnalysisResponse(response, input, focus = "require") {
|
|
32
102
|
const extracted = extractJson(response);
|
|
103
|
+
const metadata = makeResponseMetadata(response, extracted);
|
|
33
104
|
let value;
|
|
34
105
|
try {
|
|
35
106
|
value = JSON.parse(extracted);
|
|
36
107
|
}
|
|
37
108
|
catch (error) {
|
|
38
|
-
throw new
|
|
109
|
+
throw new AnalysisResponseError("json-parsing", response, extracted, metadata, `JSON parsing failed: ${jsonParseDiagnostic(error)} Response metadata: ${responseMetadataSummary(metadata)}.`);
|
|
39
110
|
}
|
|
40
111
|
try {
|
|
41
112
|
return parseAnalysisDocument(value, input, { focus });
|
|
42
113
|
}
|
|
43
114
|
catch (error) {
|
|
44
115
|
const reason = error instanceof Error ? error.message : String(error);
|
|
45
|
-
const
|
|
46
|
-
|
|
116
|
+
const validationPhase = reason.startsWith("Analysis document did not match") ? "wire-validation" : "review-validation";
|
|
117
|
+
const phase = validationPhase === "wire-validation" ? "wire document validation" : "review invariant validation";
|
|
118
|
+
throw new AnalysisResponseError(validationPhase, response, extracted, metadata, `${phase} failed: ${reason} Response metadata: ${responseMetadataSummary(metadata)}.`);
|
|
47
119
|
}
|
|
48
120
|
}
|
|
49
121
|
export function analysisRepairPrompt(problem) {
|
|
50
|
-
return `Your prior response failed during analysis document validation. Fix the specific problem below and return only one valid
|
|
122
|
+
return `Your prior response failed during analysis document validation. Fix the specific problem below and return only one valid JSON object in the explicit named-object format; do not return Markdown, commentary, short keys, positional arrays, or a partial document.
|
|
51
123
|
|
|
52
124
|
Problem: ${problem}
|
|
53
125
|
|
|
54
|
-
|
|
126
|
+
Use these top-level properties: summary, chapters, steps, omittedGroups, unclassifiedEvidenceIndexes, and optional focus and testExecution. Every chapter, step, omitted group, focus entry, and test execution is an object with the explicit property names described in the initial prompt. A step's deferred items are {concern,resolvedByStepId}, where resolvedByStepId may be null or omitted; forwardRefs is [{symbol,introducedByStepId}]; focus is [{evidenceIndex,ranges:[{startLine,endLine}]}]. Evidence references are zero-based integer indexes into the original review input manifest, never hunk ID strings. Use only manifest indexes, preserve valid fields, and correct every issue named above.`;
|
|
55
127
|
}
|
|
56
|
-
function
|
|
57
|
-
return `response ${
|
|
128
|
+
function responseMetadataSummary(metadata) {
|
|
129
|
+
return `response ${metadata.length} characters; extracted candidate ${metadata.extractedLength} characters; fenced=${metadata.fenced}; candidateStartsWithObject=${metadata.candidateStartsWithObject}`;
|
|
58
130
|
}
|
|
59
131
|
function jsonParseDiagnostic(error) {
|
|
60
132
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -94,6 +166,8 @@ async function withFreshClientRetry(agent, run) {
|
|
|
94
166
|
return await attempt();
|
|
95
167
|
}
|
|
96
168
|
catch (error) {
|
|
169
|
+
if (error instanceof AnalysisFailure)
|
|
170
|
+
throw error;
|
|
97
171
|
if (!TRANSIENT_AGENT_FAILURE.test(error instanceof Error ? error.message : String(error)))
|
|
98
172
|
throw error;
|
|
99
173
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/server/analyze.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/server/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/server/cli.js
CHANGED
|
@@ -3,12 +3,13 @@ import { spawn } from "node:child_process";
|
|
|
3
3
|
import { realpath } from "node:fs/promises";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { resolveReviewAgent, reviewAgents } from "./agent.js";
|
|
6
|
-
import { analyzeWithAgent, formatAnalysisHeartbeat } from "./analyze.js";
|
|
6
|
+
import { AnalysisFailure, analyzeWithAgent, formatAnalysisHeartbeat } from "./analyze.js";
|
|
7
7
|
import { importConversation } from "./conversation.js";
|
|
8
8
|
import { GitReader, describeReviewScope, ensureArtifactDirectoryIgnored } from "./git.js";
|
|
9
9
|
import { ReviewStore, selectReusableRevision } from "./store.js";
|
|
10
10
|
import { installSkill, installedSkillIsStale } from "./skill.js";
|
|
11
11
|
import { writeReviewArtifact } from "./artifact.js";
|
|
12
|
+
import { formatDiagnosticInstructions, writeDiagnosticArtifact } from "./diagnostic.js";
|
|
12
13
|
import { browserOpenCommand } from "./cli-support.js";
|
|
13
14
|
import { packageVersion } from "./version.js";
|
|
14
15
|
import { pathToFileURL } from "node:url";
|
|
@@ -136,7 +137,7 @@ async function runAgentLogin(agent) {
|
|
|
136
137
|
async function runReview(args) {
|
|
137
138
|
if (wantsHelp(args))
|
|
138
139
|
return printHelp();
|
|
139
|
-
const { positional, values, flags } = parseCommandArgs("review", args, ["--base", "--repo", "--conversation", "--agent"], ["--uncommitted", "--no-open", "--fresh"], 1);
|
|
140
|
+
const { positional, values, flags } = parseCommandArgs("review", args, ["--base", "--repo", "--conversation", "--agent"], ["--uncommitted", "--no-open", "--fresh", "--diagnostic-include-agent-output"], 1);
|
|
140
141
|
const targetArg = positional[0];
|
|
141
142
|
const uncommitted = flags.has("--uncommitted");
|
|
142
143
|
const explicitBase = values.get("--base");
|
|
@@ -150,10 +151,11 @@ async function runReview(args) {
|
|
|
150
151
|
const agent = await resolveReviewAgent(values.get("--agent")).catch((error) => fail(error instanceof Error ? error.message : String(error)));
|
|
151
152
|
const conversationPath = values.get("--conversation");
|
|
152
153
|
const store = openReviewStore();
|
|
154
|
+
let input;
|
|
153
155
|
try {
|
|
154
156
|
const conversation = conversationPath === undefined ? undefined : await importConversation(conversationPath);
|
|
155
157
|
await ensureArtifactDirectoryIgnored(repoPath);
|
|
156
|
-
|
|
158
|
+
input = await new GitReader().collectReviewInput(repoPath, targetArg, baseRef);
|
|
157
159
|
const meaningfulFiles = input.files.filter((file) => file.signal === "meaningful").length;
|
|
158
160
|
const scope = await describeReviewScope(repoPath, input);
|
|
159
161
|
process.stdout.write(`Reviewing ${scope.targetLabel} against ${input.baseRef}${input.includesWorkingTree ? ", including uncommitted changes" : ""}: ${input.files.length} changed file${input.files.length === 1 ? "" : "s"} (${meaningfulFiles} meaningful).\n`);
|
|
@@ -180,9 +182,6 @@ async function runReview(args) {
|
|
|
180
182
|
const document = await analyzeWithAgent(agent, input, conversation, heartbeat.progress);
|
|
181
183
|
revision = store.createRevision(session.id, agent.id, "complete", document);
|
|
182
184
|
}
|
|
183
|
-
catch (error) {
|
|
184
|
-
throw new Error(`${agent.name} analysis failed, so no review artifact was written: ${error instanceof Error ? error.message : String(error)} Nothing was persisted; re-run the same ndrstnd review command to retry.`);
|
|
185
|
-
}
|
|
186
185
|
finally {
|
|
187
186
|
heartbeat.stop();
|
|
188
187
|
}
|
|
@@ -195,12 +194,42 @@ async function runReview(args) {
|
|
|
195
194
|
openBrowser(pathToFileURL(artifactPath).href);
|
|
196
195
|
}
|
|
197
196
|
catch (error) {
|
|
197
|
+
const message = error instanceof AnalysisFailure
|
|
198
|
+
? `${agent.name} analysis failed, so no review artifact was written: ${error.message} Nothing was persisted; re-run the same ndrstnd review command to retry.`
|
|
199
|
+
: error instanceof Error ? error.message : String(error);
|
|
200
|
+
let diagnosticPath;
|
|
201
|
+
let diagnosticWriteError;
|
|
202
|
+
try {
|
|
203
|
+
diagnosticPath = await writeDiagnosticArtifact({
|
|
204
|
+
directory: join(repoPath, ".ndrstnd"),
|
|
205
|
+
toolVersion: await packageVersion().catch(() => "unknown"),
|
|
206
|
+
commandArgs: ["review", ...args],
|
|
207
|
+
agent,
|
|
208
|
+
input,
|
|
209
|
+
failure: error instanceof AnalysisFailure ? error.trace : { phase: classifyDiagnosticPhase(message), message, attempts: [] },
|
|
210
|
+
includeAgentOutput: flags.has("--diagnostic-include-agent-output"),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (diagnosticError) {
|
|
214
|
+
diagnosticWriteError = diagnosticError instanceof Error ? diagnosticError.message : String(diagnosticError);
|
|
215
|
+
}
|
|
198
216
|
// fail() exits the process immediately, so the store must close first rather than in a finally.
|
|
199
217
|
store.close();
|
|
200
|
-
fail(
|
|
218
|
+
fail(`${message}`, formatDiagnosticInstructions(diagnosticPath, diagnosticWriteError));
|
|
201
219
|
}
|
|
202
220
|
store.close();
|
|
203
221
|
}
|
|
222
|
+
function classifyDiagnosticPhase(message) {
|
|
223
|
+
if (/not signed|authentication|login/i.test(message))
|
|
224
|
+
return "authentication";
|
|
225
|
+
if (/Git could not|repository|merge-base|base|branch|working-tree/i.test(message))
|
|
226
|
+
return "collection";
|
|
227
|
+
if (/artifact|\.ndrstnd/i.test(message))
|
|
228
|
+
return "artifact-writing";
|
|
229
|
+
if (/agent|analysis/i.test(message))
|
|
230
|
+
return "analysis";
|
|
231
|
+
return "unknown";
|
|
232
|
+
}
|
|
204
233
|
/** Resolving and de-symlinking the repository path keeps session identity independent of how the path was spelled. */
|
|
205
234
|
async function canonicalRepoPath(repoArgument) {
|
|
206
235
|
const requested = resolve(repoArgument ?? process.cwd());
|
|
@@ -274,10 +303,10 @@ function formatAgentLaunchError(agent, error) {
|
|
|
274
303
|
return `${agent.name} login could not start: ${message}`;
|
|
275
304
|
}
|
|
276
305
|
function printHelp() {
|
|
277
|
-
process.stdout.write(`ndrstnd: understand agent-produced branch changes\n\nUsage:\n ndrstnd auth <status|login> [--agent <codex|claude>]\n ndrstnd skill install [--force] [--agent <codex|claude>]\n ndrstnd review [branch] [--base <branch>] [--uncommitted] [--repo <path>] [--conversation <path>] [--agent <codex|claude>] [--fresh] [--no-open]\n ndrstnd --version\n\nWithout a branch, ndrstnd reviews the checked-out branch including uncommitted changes.\n--uncommitted reviews only the uncommitted working-tree changes (an alias for --base HEAD).\n--agent picks the analysis agent; without it ndrstnd uses NDRSTND_AGENT, then the Codex or Claude Code session it runs inside, then the first installed CLI, preferring Codex.\n--fresh re-analyzes even when a cached analysis exists for the same input.\n`);
|
|
306
|
+
process.stdout.write(`ndrstnd: understand agent-produced branch changes\n\nUsage:\n ndrstnd auth <status|login> [--agent <codex|claude>]\n ndrstnd skill install [--force] [--agent <codex|claude>]\n ndrstnd review [branch] [--base <branch>] [--uncommitted] [--repo <path>] [--conversation <path>] [--agent <codex|claude>] [--fresh] [--no-open] [--diagnostic-include-agent-output]\n ndrstnd --version\n\nWithout a branch, ndrstnd reviews the checked-out branch including uncommitted changes.\n--uncommitted reviews only the uncommitted working-tree changes (an alias for --base HEAD).\n--agent picks the analysis agent; without it ndrstnd uses NDRSTND_AGENT, then the Codex or Claude Code session it runs inside, then the first installed CLI, preferring Codex.\n--fresh re-analyzes even when a cached analysis exists for the same input.\n--diagnostic-include-agent-output includes raw agent responses in the failure diagnostic; share that file only through a private channel.\n`);
|
|
278
307
|
}
|
|
279
|
-
function fail(message) {
|
|
280
|
-
process.stderr.write(`${message}\n`);
|
|
308
|
+
function fail(message, instructions = formatDiagnosticInstructions(undefined)) {
|
|
309
|
+
process.stderr.write(`${message}\n\n${instructions}\n`);
|
|
281
310
|
process.exit(1);
|
|
282
311
|
}
|
|
283
312
|
//# sourceMappingURL=cli.js.map
|
package/dist/server/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/server/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/server/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ReviewAgent, TurnActivity } from "./agent.js";
|
|
2
|
+
import type { CollectedReviewInput } from "./git.js";
|
|
3
|
+
import { type DiagnosticActivity, type DiagnosticPhase, type DiagnosticResponseMetadata, type DiagnosticTextMetadata, type DiagnosticValidation } from "../shared/diagnostic-schema.js";
|
|
4
|
+
export interface AnalysisAttemptTrace {
|
|
5
|
+
kind: "initial" | "repair";
|
|
6
|
+
durationMs: number;
|
|
7
|
+
prompt: DiagnosticTextMetadata;
|
|
8
|
+
response?: DiagnosticResponseMetadata;
|
|
9
|
+
activity?: DiagnosticActivity;
|
|
10
|
+
validation?: DiagnosticValidation;
|
|
11
|
+
error?: string;
|
|
12
|
+
rawResponse?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AnalysisFailureTrace {
|
|
15
|
+
phase: DiagnosticPhase;
|
|
16
|
+
message: string;
|
|
17
|
+
attempts: AnalysisAttemptTrace[];
|
|
18
|
+
}
|
|
19
|
+
export declare function textMetadata(value: string): DiagnosticTextMetadata;
|
|
20
|
+
export declare function responseMetadata(response: string, extracted: string): DiagnosticResponseMetadata;
|
|
21
|
+
export declare function activitySnapshot(activity: TurnActivity | undefined): DiagnosticActivity | undefined;
|
|
22
|
+
export interface DiagnosticArtifactOptions {
|
|
23
|
+
directory: string;
|
|
24
|
+
toolVersion: string;
|
|
25
|
+
commandArgs: readonly string[];
|
|
26
|
+
agent?: ReviewAgent;
|
|
27
|
+
input?: CollectedReviewInput;
|
|
28
|
+
failure: AnalysisFailureTrace;
|
|
29
|
+
includeAgentOutput?: boolean;
|
|
30
|
+
now?: Date;
|
|
31
|
+
}
|
|
32
|
+
/** Writes a shareable failure trace without persisting prompts, diffs, environment variables, or agent output by default. */
|
|
33
|
+
export declare function writeDiagnosticArtifact(options: DiagnosticArtifactOptions): Promise<string>;
|
|
34
|
+
export declare function formatDiagnosticInstructions(artifactPath: string | undefined, writeError?: string): string;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { DIAGNOSTIC_ARTIFACT_VERSION, DiagnosticArtifactSchema, } from "../shared/diagnostic-schema.js";
|
|
6
|
+
export function textMetadata(value) {
|
|
7
|
+
return { length: value.length, sha256: sha256(value) };
|
|
8
|
+
}
|
|
9
|
+
export function responseMetadata(response, extracted) {
|
|
10
|
+
return {
|
|
11
|
+
...textMetadata(response),
|
|
12
|
+
extractedLength: extracted.length,
|
|
13
|
+
extractedSha256: sha256(extracted),
|
|
14
|
+
fenced: response.includes("```"),
|
|
15
|
+
candidateStartsWithObject: extracted.trimStart().startsWith("{"),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function activitySnapshot(activity) {
|
|
19
|
+
return activity === undefined ? undefined : { ...activity };
|
|
20
|
+
}
|
|
21
|
+
/** Writes a shareable failure trace without persisting prompts, diffs, environment variables, or agent output by default. */
|
|
22
|
+
export async function writeDiagnosticArtifact(options) {
|
|
23
|
+
const repoPath = options.input?.repoPath;
|
|
24
|
+
const includeAgentOutput = options.includeAgentOutput === true;
|
|
25
|
+
const rawAgentResponses = includeAgentOutput
|
|
26
|
+
? options.failure.attempts.flatMap((attempt, index) => attempt.rawResponse === undefined ? [] : [{ turn: index + 1, response: attempt.rawResponse }])
|
|
27
|
+
: [];
|
|
28
|
+
const artifact = DiagnosticArtifactSchema.parse({
|
|
29
|
+
kind: "ndrstnd-analysis-diagnostic",
|
|
30
|
+
version: DIAGNOSTIC_ARTIFACT_VERSION,
|
|
31
|
+
createdAt: (options.now ?? new Date()).toISOString(),
|
|
32
|
+
tool: {
|
|
33
|
+
version: options.toolVersion,
|
|
34
|
+
node: process.versions.node,
|
|
35
|
+
platform: process.platform,
|
|
36
|
+
arch: process.arch,
|
|
37
|
+
},
|
|
38
|
+
command: {
|
|
39
|
+
name: "review",
|
|
40
|
+
args: redactCommandArgs(options.commandArgs, repoPath),
|
|
41
|
+
},
|
|
42
|
+
agent: options.agent === undefined ? undefined : {
|
|
43
|
+
id: options.agent.id,
|
|
44
|
+
name: options.agent.name,
|
|
45
|
+
command: options.agent.command,
|
|
46
|
+
},
|
|
47
|
+
scope: repoPath === undefined || options.input === undefined ? undefined : diagnosticScope(options.input),
|
|
48
|
+
failure: {
|
|
49
|
+
phase: options.failure.phase,
|
|
50
|
+
message: redactText(options.failure.message, repoPath),
|
|
51
|
+
},
|
|
52
|
+
attempts: options.failure.attempts.map((attempt) => diagnosticAttempt(attempt, repoPath)),
|
|
53
|
+
sensitiveDataIncluded: rawAgentResponses.length > 0,
|
|
54
|
+
rawAgentResponses: rawAgentResponses.length === 0 ? undefined : rawAgentResponses,
|
|
55
|
+
nextSteps: diagnosticNextSteps(),
|
|
56
|
+
});
|
|
57
|
+
await mkdir(options.directory, { recursive: true, mode: 0o700 });
|
|
58
|
+
const filename = `ndrstnd-diagnostic-${fileTimestamp(artifact.createdAt)}-${randomUUID().slice(0, 8)}.json`;
|
|
59
|
+
const path = join(options.directory, filename);
|
|
60
|
+
await writeFile(path, `${JSON.stringify(artifact, null, 2)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
61
|
+
return path;
|
|
62
|
+
}
|
|
63
|
+
export function formatDiagnosticInstructions(artifactPath, writeError) {
|
|
64
|
+
const lines = ["To report this problem:"];
|
|
65
|
+
if (artifactPath !== undefined) {
|
|
66
|
+
lines.push(`1. Keep the diagnostic artifact unchanged: ${artifactPath}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
lines.push("1. Save the complete terminal output because no diagnostic artifact could be written.");
|
|
70
|
+
}
|
|
71
|
+
lines.push(artifactPath === undefined
|
|
72
|
+
? "2. Share that terminal output and the exact ndrstnd command; for a review, include the selected agent and base."
|
|
73
|
+
: "2. Share that artifact and the exact ndrstnd review command, including the selected agent and base.");
|
|
74
|
+
lines.push("3. If the failure needs agent-output details, rerun with --diagnostic-include-agent-output and share that file only through a private channel.");
|
|
75
|
+
lines.push("4. Do not include credentials, tokens, or repository contents unless they are requested through a secure channel.");
|
|
76
|
+
if (writeError !== undefined)
|
|
77
|
+
lines.push(`Diagnostic artifact write failed: ${writeError}`);
|
|
78
|
+
return lines.join("\n");
|
|
79
|
+
}
|
|
80
|
+
function diagnosticAttempt(attempt, repoPath) {
|
|
81
|
+
return {
|
|
82
|
+
kind: attempt.kind,
|
|
83
|
+
durationMs: Math.max(0, Math.round(attempt.durationMs)),
|
|
84
|
+
prompt: attempt.prompt,
|
|
85
|
+
response: attempt.response,
|
|
86
|
+
activity: attempt.activity,
|
|
87
|
+
validation: attempt.validation === undefined ? undefined : {
|
|
88
|
+
phase: attempt.validation.phase,
|
|
89
|
+
message: redactText(attempt.validation.message, repoPath),
|
|
90
|
+
},
|
|
91
|
+
error: attempt.error === undefined ? undefined : redactText(attempt.error, repoPath),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function diagnosticScope(input) {
|
|
95
|
+
const hunkCounts = new Map();
|
|
96
|
+
for (const hunk of input.hunks)
|
|
97
|
+
hunkCounts.set(hunk.fileId, (hunkCounts.get(hunk.fileId) ?? 0) + 1);
|
|
98
|
+
const meaningfulFileCount = input.files.filter((file) => file.signal === "meaningful").length;
|
|
99
|
+
return {
|
|
100
|
+
repoPath: "<repo>",
|
|
101
|
+
targetRef: redactText(input.targetRef, input.repoPath),
|
|
102
|
+
baseRef: redactText(input.baseRef, input.repoPath),
|
|
103
|
+
mergeBase: redactText(input.mergeBase, input.repoPath),
|
|
104
|
+
includesWorkingTree: input.includesWorkingTree === true,
|
|
105
|
+
inputHash: sha256(JSON.stringify(input)),
|
|
106
|
+
fileCount: input.files.length,
|
|
107
|
+
meaningfulFileCount,
|
|
108
|
+
hunkCount: input.hunks.length,
|
|
109
|
+
files: input.files.map((file) => ({
|
|
110
|
+
path: redactText(file.path, input.repoPath),
|
|
111
|
+
status: file.status,
|
|
112
|
+
binary: file.binary,
|
|
113
|
+
signal: file.signal,
|
|
114
|
+
signalReason: file.signalReason === undefined ? undefined : redactText(file.signalReason, input.repoPath),
|
|
115
|
+
hunkCount: hunkCounts.get(file.id) ?? 0,
|
|
116
|
+
})),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function redactCommandArgs(args, repoPath) {
|
|
120
|
+
const redacted = [];
|
|
121
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
122
|
+
const argument = args[index];
|
|
123
|
+
if (argument === "--repo" || argument === "--conversation") {
|
|
124
|
+
redacted.push(argument, argument === "--repo" ? "<repo>" : "<conversation>");
|
|
125
|
+
index += 1;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
redacted.push(redactText(argument, repoPath));
|
|
129
|
+
}
|
|
130
|
+
return redacted;
|
|
131
|
+
}
|
|
132
|
+
function redactText(value, repoPath) {
|
|
133
|
+
let redacted = value;
|
|
134
|
+
if (repoPath !== undefined && repoPath !== "")
|
|
135
|
+
redacted = redacted.split(repoPath).join("<repo>");
|
|
136
|
+
const home = homedir();
|
|
137
|
+
if (home !== "")
|
|
138
|
+
redacted = redacted.split(home).join("<home>");
|
|
139
|
+
return redacted.slice(0, 8_000);
|
|
140
|
+
}
|
|
141
|
+
function diagnosticNextSteps() {
|
|
142
|
+
return [
|
|
143
|
+
"Keep this JSON artifact unchanged when sharing it with the ndrstnd maintainer.",
|
|
144
|
+
"Include the exact review command, selected agent, and intended base/target scope.",
|
|
145
|
+
"Use --diagnostic-include-agent-output only for a private escalation when the maintainer asks for the raw response.",
|
|
146
|
+
"Remove credentials or tokens before sharing; the default artifact intentionally excludes prompts, diffs, environment variables, and raw responses.",
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
function fileTimestamp(value) {
|
|
150
|
+
return value.replace(/[:.]/g, "-").replace(/Z$/, "");
|
|
151
|
+
}
|
|
152
|
+
function sha256(value) {
|
|
153
|
+
return createHash("sha256").update(value).digest("hex");
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/server/diagnostic.ts"],"names":[],"mappings":"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"}
|