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.
@@ -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
- return withFreshClientRetry(agent, async (client) => {
7
- const thread = await client.startTextThread(input.repoPath);
8
- try {
9
- let response = await thread.send(prompt, progress?.onActivity);
10
- let lastError = "";
11
- for (let attempt = 0; attempt <= REPAIR_ATTEMPTS; attempt += 1) {
12
- try {
13
- return parseAnalysisResponse(response, input, attempt === REPAIR_ATTEMPTS ? "salvage" : "require");
14
- }
15
- catch (error) {
16
- lastError = error instanceof Error ? error.message : String(error);
17
- if (attempt === REPAIR_ATTEMPTS)
18
- break;
19
- progress?.onRepair?.(attempt + 1, REPAIR_ATTEMPTS, lastError);
20
- response = await thread.send(analysisRepairPrompt(lastError), progress?.onActivity);
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
- throw new Error(`${agent.name} produced an analysis that still failed validation after ${REPAIR_ATTEMPTS} repair turns: ${lastError}`);
24
- }
25
- finally {
26
- await thread.close();
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 Error(`JSON parsing failed: ${jsonParseDiagnostic(error)} Response metadata: ${responseMetadata(response, extracted)}.`);
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 phase = reason.startsWith("Analysis document did not match") ? "wire document validation" : "review invariant validation";
46
- throw new Error(`${phase} failed: ${reason} Response metadata: ${responseMetadata(response, extracted)}.`);
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 minified JSON object; do not return Markdown, commentary, or a partial document.
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
- The compact shape is {s,c:[{id,title,kind,synopsis,before,after,confidence,attention,riskCategories,evidenceIndexes}],t:[{id,title,goal,youNowHave,deferred,dependsOn,forwardRefs,advancesChapterIds,evidenceIndexes}],o:[{title,reason,evidenceIndexes}],u:[evidenceIndex],f:{evidenceIndex:[[startLine,endLine]]},x:[[command,outcome,summary,source]]}. Chapters and steps are named objects, never positional arrays. 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.`;
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 responseMetadata(response, extracted) {
57
- return `response ${response.length} characters; extracted candidate ${extracted.length} characters; fenced=${response.includes("```")}; candidateStartsWithObject=${extracted.trimStart().startsWith("{")}`;
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":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/server/analyze.ts"],"names":[],"mappings":"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"}
@@ -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
- const input = await new GitReader().collectReviewInput(repoPath, targetArg, baseRef);
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(error instanceof Error ? error.message : String(error));
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
@@ -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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"}