@beignet/cli 0.0.40 → 0.0.41

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +76 -10
  3. package/dist/analysis/source-index.d.ts +38 -0
  4. package/dist/analysis/source-index.d.ts.map +1 -0
  5. package/dist/analysis/source-index.js +271 -0
  6. package/dist/analysis/source-index.js.map +1 -0
  7. package/dist/analysis/workspace.d.ts +16 -0
  8. package/dist/analysis/workspace.d.ts.map +1 -0
  9. package/dist/analysis/workspace.js +134 -0
  10. package/dist/analysis/workspace.js.map +1 -0
  11. package/dist/app-map-schema.d.ts +5 -0
  12. package/dist/app-map-schema.d.ts.map +1 -0
  13. package/dist/app-map-schema.js +26 -0
  14. package/dist/app-map-schema.js.map +1 -0
  15. package/dist/app-map.d.ts +96 -0
  16. package/dist/app-map.d.ts.map +1 -0
  17. package/dist/app-map.js +1141 -0
  18. package/dist/app-map.js.map +1 -0
  19. package/dist/check.d.ts +7 -0
  20. package/dist/check.d.ts.map +1 -1
  21. package/dist/check.js +20 -5
  22. package/dist/check.js.map +1 -1
  23. package/dist/db.d.ts +32 -7
  24. package/dist/db.d.ts.map +1 -1
  25. package/dist/db.js +182 -14
  26. package/dist/db.js.map +1 -1
  27. package/dist/explain.d.ts +98 -0
  28. package/dist/explain.d.ts.map +1 -0
  29. package/dist/explain.js +512 -0
  30. package/dist/explain.js.map +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +79 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/inspect.js +53 -3
  35. package/dist/inspect.js.map +1 -1
  36. package/dist/lib.d.ts +4 -0
  37. package/dist/lib.d.ts.map +1 -1
  38. package/dist/lib.js +2 -0
  39. package/dist/lib.js.map +1 -1
  40. package/dist/make.d.ts.map +1 -1
  41. package/dist/make.js +63 -2
  42. package/dist/make.js.map +1 -1
  43. package/dist/mcp.d.ts +1 -1
  44. package/dist/mcp.d.ts.map +1 -1
  45. package/dist/mcp.js +69 -1
  46. package/dist/mcp.js.map +1 -1
  47. package/dist/preflight.d.ts.map +1 -1
  48. package/dist/preflight.js +10 -0
  49. package/dist/preflight.js.map +1 -1
  50. package/dist/provider-add.d.ts.map +1 -1
  51. package/dist/provider-add.js +167 -13
  52. package/dist/provider-add.js.map +1 -1
  53. package/dist/provider-audit.d.ts +6 -0
  54. package/dist/provider-audit.d.ts.map +1 -1
  55. package/dist/provider-audit.js +63 -15
  56. package/dist/provider-audit.js.map +1 -1
  57. package/dist/templates/agents.d.ts.map +1 -1
  58. package/dist/templates/agents.js +17 -4
  59. package/dist/templates/agents.js.map +1 -1
  60. package/dist/templates/base.d.ts.map +1 -1
  61. package/dist/templates/base.js +10 -4
  62. package/dist/templates/base.js.map +1 -1
  63. package/dist/templates/index.d.ts +1 -1
  64. package/dist/templates/index.d.ts.map +1 -1
  65. package/dist/templates/index.js +8 -1
  66. package/dist/templates/index.js.map +1 -1
  67. package/dist/templates/server.d.ts +3 -0
  68. package/dist/templates/server.d.ts.map +1 -1
  69. package/dist/templates/server.js +55 -1
  70. package/dist/templates/server.js.map +1 -1
  71. package/dist/templates/shared.js +1 -1
  72. package/package.json +2 -2
  73. package/skills/app-structure/SKILL.md +22 -4
  74. package/src/analysis/source-index.ts +395 -0
  75. package/src/analysis/workspace.ts +180 -0
  76. package/src/app-map-schema.ts +28 -0
  77. package/src/app-map.ts +1705 -0
  78. package/src/check.ts +27 -4
  79. package/src/db.ts +232 -14
  80. package/src/explain.ts +786 -0
  81. package/src/index.ts +113 -2
  82. package/src/inspect.ts +70 -2
  83. package/src/lib.ts +36 -0
  84. package/src/make.ts +90 -2
  85. package/src/mcp.ts +107 -1
  86. package/src/preflight.ts +14 -0
  87. package/src/provider-add.ts +211 -12
  88. package/src/provider-audit.ts +127 -22
  89. package/src/templates/agents.ts +17 -4
  90. package/src/templates/base.ts +22 -4
  91. package/src/templates/index.ts +18 -1
  92. package/src/templates/server.ts +58 -1
  93. package/src/templates/shared.ts +1 -1
@@ -0,0 +1,98 @@
1
+ import { type AppMapEdge, type AppMapNodeKind, type AppMapNodeStatus, type AppMapResult, type AppMapSource } from "./app-map.js";
2
+ /** Targets supported by `beignet explain` and the MCP `explain` tool. */
3
+ export declare const explainTargetKinds: readonly ["feature", "route", "provider", "diagnostic"];
4
+ /** One supported explanation target kind. */
5
+ export type ExplainTargetKind = (typeof explainTargetKinds)[number];
6
+ /** Options for resolving one app concept into a deterministic explanation. */
7
+ export type ExplainAppOptions = {
8
+ cwd?: string;
9
+ kind: ExplainTargetKind;
10
+ target: string;
11
+ };
12
+ /** Identity and source metadata for the resolved explanation target. */
13
+ export type ExplainTarget = {
14
+ kind: ExplainTargetKind;
15
+ id: string;
16
+ name: string;
17
+ source?: AppMapSource;
18
+ status?: AppMapNodeStatus;
19
+ details?: Record<string, unknown>;
20
+ };
21
+ /** Compact app-map node embedded in an explained relationship. */
22
+ export type ExplainRelatedNode = {
23
+ id: string;
24
+ kind: AppMapNodeKind;
25
+ name: string;
26
+ runtimeName?: string;
27
+ feature?: string;
28
+ source: AppMapSource;
29
+ status?: AppMapNodeStatus;
30
+ details?: Record<string, unknown>;
31
+ };
32
+ /** One source-backed relationship connected to the explanation scope. */
33
+ export type ExplainRelationship = {
34
+ kind: AppMapEdge["kind"];
35
+ from: ExplainRelatedNode;
36
+ to: ExplainRelatedNode;
37
+ evidence: AppMapEdge["evidence"];
38
+ details?: Record<string, unknown>;
39
+ };
40
+ /** Normalized doctor, lint, or app-map finding relevant to the target. */
41
+ export type ExplainFinding = {
42
+ source: "doctor" | "lint" | "app-map";
43
+ severity: "error" | "warning" | "hint";
44
+ code: string;
45
+ message: string;
46
+ location?: AppMapSource;
47
+ details?: Record<string, unknown>;
48
+ };
49
+ /** Source location supporting one part of the explanation. */
50
+ export type ExplainEvidence = {
51
+ source: AppMapSource;
52
+ reason: string;
53
+ };
54
+ /** Source file suggested for inspection, with the reasons it is relevant. */
55
+ export type ExplainSuggestedFile = {
56
+ file: string;
57
+ line?: number;
58
+ column?: number;
59
+ reasons: string[];
60
+ };
61
+ /** Deterministic next action derived from the mapped target and findings. */
62
+ export type ExplainSuggestedAction = {
63
+ kind: "inspect" | "address-finding" | "validate";
64
+ description: string;
65
+ command?: string;
66
+ cwd?: string;
67
+ file?: string;
68
+ };
69
+ /** Version 1 deterministic explanation of one app-map target. */
70
+ export type ExplainAppResult = {
71
+ schemaVersion: 1;
72
+ targetDir: string;
73
+ app: AppMapResult["app"];
74
+ query: {
75
+ kind: ExplainTargetKind;
76
+ target: string;
77
+ };
78
+ target: ExplainTarget;
79
+ summary: string;
80
+ scope: {
81
+ nodes: number;
82
+ relationships: number;
83
+ returnedRelationships: number;
84
+ findings: number;
85
+ truncated: boolean;
86
+ };
87
+ evidence: ExplainEvidence[];
88
+ relationships: ExplainRelationship[];
89
+ conventions: string[];
90
+ findings: ExplainFinding[];
91
+ suggestedFiles: ExplainSuggestedFile[];
92
+ suggestedActions: ExplainSuggestedAction[];
93
+ };
94
+ /** Explain one source-backed Beignet app concept without generating advice. */
95
+ export declare function explainApp(options: ExplainAppOptions): Promise<ExplainAppResult>;
96
+ /** Format a concise, source-backed explanation for terminal use. */
97
+ export declare function formatExplain(result: ExplainAppResult): string;
98
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,512 @@
1
+ import { mapApp, projectAppMap, } from "./app-map.js";
2
+ /** Targets supported by `beignet explain` and the MCP `explain` tool. */
3
+ export const explainTargetKinds = [
4
+ "feature",
5
+ "route",
6
+ "provider",
7
+ "diagnostic",
8
+ ];
9
+ /** Explain one source-backed Beignet app concept without generating advice. */
10
+ export async function explainApp(options) {
11
+ const targetText = options.target.trim();
12
+ if (!targetText) {
13
+ throw new Error(`Pass a non-empty ${options.kind} target to beignet explain.`);
14
+ }
15
+ const appMap = await mapApp({ cwd: options.cwd, strict: true });
16
+ const scope = options.kind === "diagnostic"
17
+ ? diagnosticScope(appMap, targetText)
18
+ : nodeScope(appMap, resolveTargetNode(appMap, options.kind, targetText));
19
+ const target = options.kind === "diagnostic"
20
+ ? diagnosticTarget(targetText, scope.findings)
21
+ : nodeTarget(options.kind, scope.nodes[0]);
22
+ const selectedEdges = selectExplanationEdges(scope.edges, target.id);
23
+ const relationships = explainRelationships(scope.nodes, selectedEdges);
24
+ const evidenceNodes = scope.nodes.filter((node) => node.id === target.id);
25
+ const evidence = explainEvidence(evidenceNodes, relationships, scope.findings, target);
26
+ const suggestedFiles = suggestedFilesFromEvidence([
27
+ ...evidence,
28
+ ...relationshipNodeEvidence(relationships),
29
+ ]);
30
+ return {
31
+ schemaVersion: 1,
32
+ targetDir: appMap.targetDir,
33
+ app: appMap.app,
34
+ query: { kind: options.kind, target: targetText },
35
+ target,
36
+ summary: explainSummary(target, scope.nodes, scope.edges, scope.findings),
37
+ scope: {
38
+ nodes: scope.nodes.length,
39
+ relationships: scope.edges.length,
40
+ returnedRelationships: relationships.length,
41
+ findings: scope.findings.length,
42
+ truncated: relationships.length < scope.edges.length,
43
+ },
44
+ evidence,
45
+ relationships,
46
+ conventions: conventionsFor(options.kind),
47
+ findings: scope.findings,
48
+ suggestedFiles,
49
+ suggestedActions: suggestedActions(target, scope.findings, appMap.targetDir),
50
+ };
51
+ }
52
+ /** Format a concise, source-backed explanation for terminal use. */
53
+ export function formatExplain(result) {
54
+ const relationshipLines = result.relationships.map((relationship) => `- ${relationship.from.id} --${relationship.kind}--> ${relationship.to.id} (${formatSource(relationship.evidence)})`);
55
+ const findingLines = result.findings.map((finding) => `- [${finding.source}/${finding.severity}] ${finding.code}: ${finding.message}${finding.location ? ` (${formatSource(finding.location)})` : ""}`);
56
+ const fileLines = result.suggestedFiles.map((file) => `- ${formatSource(file)} — ${file.reasons.join("; ")}`);
57
+ const actionLines = result.suggestedActions.map((action) => {
58
+ const details = [
59
+ ...(action.cwd ? [` cwd: ${action.cwd}`] : []),
60
+ ...(action.command ? [` ${action.command}`] : []),
61
+ ];
62
+ return `- ${action.description}${details.length > 0 ? `\n${details.join("\n")}` : ""}`;
63
+ });
64
+ return [
65
+ `Explain ${result.query.kind}: ${result.target.name}`,
66
+ `App root: ${result.targetDir}`,
67
+ `Target: ${result.target.id}${result.target.status ? ` (${result.target.status})` : ""}`,
68
+ result.target.source ? `Source: ${formatSource(result.target.source)}` : "",
69
+ `Summary: ${result.summary}`,
70
+ `Scope: ${result.scope.nodes} nodes, ${result.scope.returnedRelationships} of ${result.scope.relationships} relationships, ${result.scope.findings} findings${result.scope.truncated ? " (relationship list truncated)" : ""}`,
71
+ "",
72
+ "Conventions:",
73
+ ...result.conventions.map((convention) => `- ${convention}`),
74
+ "",
75
+ "Relationships:",
76
+ ...(relationshipLines.length > 0 ? relationshipLines : ["- None found."]),
77
+ "",
78
+ "Findings:",
79
+ ...(findingLines.length > 0 ? findingLines : ["- None found."]),
80
+ "",
81
+ "Suggested files:",
82
+ ...(fileLines.length > 0 ? fileLines : ["- None found."]),
83
+ "",
84
+ "Suggested actions:",
85
+ ...actionLines,
86
+ ]
87
+ .filter((line, index, lines) => line !== "" || lines[index - 1] !== "")
88
+ .join("\n");
89
+ }
90
+ function nodeScope(appMap, targetNode) {
91
+ if (targetNode.kind === "feature") {
92
+ const projection = projectAppMap(appMap, { feature: targetNode.name });
93
+ return {
94
+ nodes: moveTargetFirst(projection.nodes, targetNode.id),
95
+ edges: projection.edges,
96
+ findings: allFindings(projection),
97
+ };
98
+ }
99
+ const connectedEdges = appMap.edges.filter((edge) => edge.from === targetNode.id || edge.to === targetNode.id);
100
+ const connectedIds = new Set([targetNode.id]);
101
+ for (const edge of connectedEdges) {
102
+ connectedIds.add(edge.from);
103
+ connectedIds.add(edge.to);
104
+ }
105
+ const nodes = moveTargetFirst(appMap.nodes.filter((node) => connectedIds.has(node.id)), targetNode.id);
106
+ const files = scopeFiles(nodes, connectedEdges);
107
+ const terms = targetTerms(targetNode);
108
+ const findings = allFindings(appMap).filter((finding) => (finding.location && files.has(finding.location.file)) ||
109
+ terms.some((term) => normalized(finding.message).includes(term)));
110
+ return { nodes, edges: connectedEdges, findings };
111
+ }
112
+ function diagnosticScope(appMap, target) {
113
+ const code = normalized(target);
114
+ const findings = allFindings(appMap).filter((finding) => normalized(finding.code) === code);
115
+ if (findings.length === 0) {
116
+ const codes = [
117
+ ...new Set(allFindings(appMap).map((finding) => finding.code)),
118
+ ]
119
+ .sort()
120
+ .slice(0, 20);
121
+ throw new Error(`Could not explain diagnostic "${target}". ${codes.length > 0 ? `Available diagnostic codes: ${codes.join(", ")}.` : "This app has no diagnostics."}`);
122
+ }
123
+ const seedIds = new Set(appMap.nodes
124
+ .filter((node) => findings.some((finding) => findingMatchesNode(finding, node)))
125
+ .map((node) => node.id));
126
+ const connectedEdges = appMap.edges.filter((edge) => seedIds.has(edge.from) || seedIds.has(edge.to));
127
+ const connectedIds = new Set(seedIds);
128
+ for (const edge of connectedEdges) {
129
+ connectedIds.add(edge.from);
130
+ connectedIds.add(edge.to);
131
+ }
132
+ return {
133
+ nodes: appMap.nodes.filter((node) => connectedIds.has(node.id)),
134
+ edges: connectedEdges,
135
+ findings,
136
+ };
137
+ }
138
+ function resolveTargetNode(appMap, kind, target) {
139
+ const nodeKind = kind;
140
+ const candidates = appMap.nodes.filter((node) => node.kind === nodeKind);
141
+ const query = normalized(target);
142
+ let matches = candidates.filter((node) => aliasesForNode(node).some((alias) => normalized(alias) === query));
143
+ if (kind === "provider" && matches.length === 0) {
144
+ const portIds = new Set(appMap.nodes
145
+ .filter((node) => node.kind === "port" &&
146
+ [node.id, node.name].some((alias) => normalized(alias) === query))
147
+ .map((node) => node.id));
148
+ matches = candidates.filter((node) => appMap.edges.some((edge) => edge.kind === "provides" &&
149
+ edge.from === node.id &&
150
+ portIds.has(edge.to)));
151
+ const packageProviders = matches.filter((node) => node.details?.sourceType !== "app-binding");
152
+ if (packageProviders.length > 0)
153
+ matches = packageProviders;
154
+ }
155
+ if (matches.length === 1)
156
+ return matches[0];
157
+ if (matches.length > 1) {
158
+ throw new Error(`The ${kind} target "${target}" is ambiguous. Matches: ${matches.map((node) => node.id).join(", ")}.`);
159
+ }
160
+ const available = candidates
161
+ .map((node) => node.name)
162
+ .sort()
163
+ .slice(0, 20);
164
+ throw new Error(`Could not explain ${kind} "${target}". ${available.length > 0 ? `Available ${kind}s: ${available.join(", ")}.` : `This app has no mapped ${kind}s.`}`);
165
+ }
166
+ function aliasesForNode(node) {
167
+ const aliases = [node.id, node.name];
168
+ if (node.runtimeName)
169
+ aliases.push(node.runtimeName);
170
+ if (node.id.includes("#"))
171
+ aliases.push(node.id.slice(node.id.lastIndexOf("#") + 1));
172
+ if (node.kind === "route" && typeof node.details?.path === "string") {
173
+ aliases.push(node.details.path);
174
+ }
175
+ if (node.kind === "provider") {
176
+ aliases.push(node.name.replace(/^@beignet\//, ""));
177
+ if (typeof node.details?.displayName === "string") {
178
+ aliases.push(node.details.displayName);
179
+ }
180
+ }
181
+ return aliases;
182
+ }
183
+ function targetTerms(node) {
184
+ return aliasesForNode(node)
185
+ .map(normalized)
186
+ .filter((term) => term.length >= 4);
187
+ }
188
+ function diagnosticTarget(query, findings) {
189
+ const code = findings[0]?.code ?? query;
190
+ return {
191
+ kind: "diagnostic",
192
+ id: `diagnostic:${code}`,
193
+ name: code,
194
+ ...(findings[0]?.location ? { source: findings[0].location } : {}),
195
+ details: {
196
+ matches: findings.length,
197
+ sources: [...new Set(findings.map((finding) => finding.source))].sort(),
198
+ },
199
+ };
200
+ }
201
+ function nodeTarget(kind, node) {
202
+ if (!node)
203
+ throw new Error(`Could not resolve the ${kind} explanation target.`);
204
+ return {
205
+ kind,
206
+ id: node.id,
207
+ name: node.name,
208
+ source: node.source,
209
+ ...(node.status ? { status: node.status } : {}),
210
+ ...(node.details ? { details: node.details } : {}),
211
+ };
212
+ }
213
+ function explainRelationships(nodes, edges) {
214
+ const byId = new Map(nodes.map((node) => [node.id, node]));
215
+ return edges.flatMap((edge) => {
216
+ const from = byId.get(edge.from);
217
+ const to = byId.get(edge.to);
218
+ if (!from || !to)
219
+ return [];
220
+ return [
221
+ {
222
+ kind: edge.kind,
223
+ from: relatedNode(from),
224
+ to: relatedNode(to),
225
+ evidence: edge.evidence,
226
+ ...(edge.details ? { details: edge.details } : {}),
227
+ },
228
+ ];
229
+ });
230
+ }
231
+ function selectExplanationEdges(edges, targetId) {
232
+ const maximumRelationships = 80;
233
+ if (edges.length <= maximumRelationships)
234
+ return edges;
235
+ return [...edges]
236
+ .sort((left, right) => {
237
+ const priority = edgePriority(left, targetId) - edgePriority(right, targetId);
238
+ if (priority !== 0)
239
+ return priority;
240
+ return `${left.kind}:${left.from}:${left.to}`.localeCompare(`${right.kind}:${right.from}:${right.to}`);
241
+ })
242
+ .slice(0, maximumRelationships);
243
+ }
244
+ function edgePriority(edge, targetId) {
245
+ if (edge.kind === "depends-on")
246
+ return 0;
247
+ if (edge.kind === "executes" || edge.kind === "binds")
248
+ return 1;
249
+ if ([
250
+ "authorizes",
251
+ "dispatches",
252
+ "emits",
253
+ "listens-to",
254
+ "publishes",
255
+ "sends",
256
+ ].includes(edge.kind)) {
257
+ return 2;
258
+ }
259
+ if (edge.from === targetId || edge.to === targetId)
260
+ return 3;
261
+ return 4;
262
+ }
263
+ function relationshipNodeEvidence(relationships) {
264
+ const evidence = [];
265
+ for (const relationship of relationships) {
266
+ evidence.push({
267
+ source: relationship.from.source,
268
+ reason: `related ${relationship.from.kind} ${relationship.from.id}`,
269
+ });
270
+ evidence.push({
271
+ source: relationship.to.source,
272
+ reason: `related ${relationship.to.kind} ${relationship.to.id}`,
273
+ });
274
+ }
275
+ return evidence;
276
+ }
277
+ function relatedNode(node) {
278
+ return {
279
+ id: node.id,
280
+ kind: node.kind,
281
+ name: node.name,
282
+ ...(node.runtimeName ? { runtimeName: node.runtimeName } : {}),
283
+ ...(node.feature ? { feature: node.feature } : {}),
284
+ source: node.source,
285
+ ...(node.status ? { status: node.status } : {}),
286
+ ...(node.details ? { details: node.details } : {}),
287
+ };
288
+ }
289
+ function allFindings(appMap) {
290
+ return [
291
+ ...appMap.diagnostics.doctor.map((diagnostic) => ({
292
+ source: "doctor",
293
+ severity: diagnostic.severity,
294
+ code: diagnostic.code,
295
+ message: diagnostic.message,
296
+ ...(diagnostic.file
297
+ ? {
298
+ location: {
299
+ file: diagnostic.file,
300
+ ...(diagnostic.contract
301
+ ? { exportName: diagnostic.contract }
302
+ : {}),
303
+ },
304
+ }
305
+ : {}),
306
+ })),
307
+ ...appMap.diagnostics.lint.map((diagnostic) => ({
308
+ source: "lint",
309
+ severity: diagnostic.severity,
310
+ code: diagnostic.code,
311
+ message: diagnostic.message,
312
+ location: {
313
+ file: diagnostic.file,
314
+ ...(diagnostic.line ? { line: diagnostic.line } : {}),
315
+ ...(diagnostic.column ? { column: diagnostic.column } : {}),
316
+ },
317
+ details: { importPath: diagnostic.importPath },
318
+ })),
319
+ ...appMap.unresolved.map((unresolved) => ({
320
+ source: "app-map",
321
+ severity: "warning",
322
+ code: unresolved.code,
323
+ message: unresolved.message,
324
+ location: unresolved.source,
325
+ })),
326
+ ].sort(compareFindings);
327
+ }
328
+ function findingMatchesNode(finding, node) {
329
+ if (finding.location?.file === node.source.file)
330
+ return true;
331
+ if (finding.location?.exportName &&
332
+ finding.location.exportName === node.source.exportName) {
333
+ return true;
334
+ }
335
+ const message = normalized(finding.message);
336
+ if (/\.(ts|tsx|mts|cts|json)$/.test(node.source.file) &&
337
+ message.includes(normalized(node.source.file))) {
338
+ return true;
339
+ }
340
+ return [node.runtimeName, node.source.exportName]
341
+ .filter((term) => Boolean(term && term.length >= 4))
342
+ .some((term) => message.includes(normalized(term)));
343
+ }
344
+ function explainEvidence(nodes, relationships, findings, target) {
345
+ const evidence = [];
346
+ for (const node of nodes) {
347
+ evidence.push({
348
+ source: node.source,
349
+ reason: `${node.kind} ${node.id}`,
350
+ });
351
+ }
352
+ for (const relationship of relationships) {
353
+ evidence.push({
354
+ source: relationship.evidence,
355
+ reason: `${relationship.from.id} ${relationship.kind} ${relationship.to.id}`,
356
+ });
357
+ }
358
+ for (const finding of findings) {
359
+ if (finding.location) {
360
+ evidence.push({
361
+ source: finding.location,
362
+ reason: `${finding.source} finding ${finding.code}`,
363
+ });
364
+ }
365
+ }
366
+ for (const source of providerRegistrationSources(target)) {
367
+ evidence.push({
368
+ source,
369
+ reason: `provider registration ${target.id}`,
370
+ });
371
+ }
372
+ const seen = new Set();
373
+ return evidence.filter((item) => {
374
+ const key = `${sourceKey(item.source)}:${item.reason}`;
375
+ if (seen.has(key))
376
+ return false;
377
+ seen.add(key);
378
+ return true;
379
+ });
380
+ }
381
+ function suggestedFilesFromEvidence(evidence) {
382
+ const files = new Map();
383
+ for (const item of evidence) {
384
+ const key = item.source.file;
385
+ const existing = files.get(key);
386
+ if (existing) {
387
+ if (existing.line !== item.source.line ||
388
+ existing.column !== item.source.column) {
389
+ delete existing.line;
390
+ delete existing.column;
391
+ }
392
+ if (!existing.reasons.includes(item.reason)) {
393
+ existing.reasons.push(item.reason);
394
+ }
395
+ continue;
396
+ }
397
+ files.set(key, {
398
+ file: item.source.file,
399
+ ...(item.source.line ? { line: item.source.line } : {}),
400
+ ...(item.source.column ? { column: item.source.column } : {}),
401
+ reasons: [item.reason],
402
+ });
403
+ }
404
+ return [...files.values()];
405
+ }
406
+ function suggestedActions(target, findings, targetDir) {
407
+ const inspectCommand = target.kind === "feature"
408
+ ? `beignet map --feature ${target.name} --json`
409
+ : target.kind === "route"
410
+ ? "beignet routes --json"
411
+ : target.kind === "provider"
412
+ ? "beignet provider audit --json"
413
+ : findings.some((finding) => finding.source === "lint")
414
+ ? "beignet lint --json"
415
+ : "beignet doctor --strict --json";
416
+ const actions = [
417
+ {
418
+ kind: "inspect",
419
+ description: `Inspect the source-backed ${target.kind} context.`,
420
+ command: inspectCommand,
421
+ cwd: targetDir,
422
+ },
423
+ ];
424
+ for (const finding of findings) {
425
+ actions.push({
426
+ kind: "address-finding",
427
+ description: `${finding.code}: ${finding.message}`,
428
+ ...(finding.location ? { file: finding.location.file } : {}),
429
+ });
430
+ }
431
+ actions.push({
432
+ kind: "validate",
433
+ description: "Run the complete validation loop after making changes.",
434
+ command: "beignet check",
435
+ cwd: targetDir,
436
+ });
437
+ return actions;
438
+ }
439
+ function providerRegistrationSources(target) {
440
+ if (target.kind !== "provider")
441
+ return [];
442
+ const sources = target.details?.registrationSources;
443
+ if (!Array.isArray(sources))
444
+ return [];
445
+ return sources.filter(isAppMapSource);
446
+ }
447
+ function isAppMapSource(value) {
448
+ return (typeof value === "object" &&
449
+ value !== null &&
450
+ "file" in value &&
451
+ typeof value.file === "string");
452
+ }
453
+ function explainSummary(target, nodes, edges, findings) {
454
+ const fileCount = new Set([
455
+ ...nodes.map((node) => node.source.file),
456
+ ...findings.flatMap((finding) => finding.location ? [finding.location.file] : []),
457
+ ]).size;
458
+ if (target.kind === "diagnostic") {
459
+ return `${target.name} has ${countLabel(findings.length, "finding")} across ${countLabel(fileCount, "mapped source")}.`;
460
+ }
461
+ return `${target.name} is ${target.status ?? "mapped"} with ${countLabel(edges.length, "relationship")}, ${countLabel(fileCount, "source")}, and ${countLabel(findings.length, "relevant finding")}.`;
462
+ }
463
+ function conventionsFor(kind) {
464
+ switch (kind) {
465
+ case "feature":
466
+ return [
467
+ "Feature-owned contracts, use cases, policies, ports, workflows, clients, components, and tests stay under features/<feature>/.",
468
+ "Feature route groups and workflow artifacts register through the central server entrypoints.",
469
+ ];
470
+ case "route":
471
+ return [
472
+ "Contracts own HTTP method, path, schemas, responses, metadata, and route errors; routes bind contracts to use cases.",
473
+ "Feature route groups compose centrally in server/routes.ts and runtime route adapters stay thin.",
474
+ ];
475
+ case "provider":
476
+ return [
477
+ "Ports define app-facing interfaces, providers adapt external systems, and app infrastructure wires them together.",
478
+ "Lifecycle providers register in server/providers.ts and provider-backed app ports wire through infra/port-wiring.ts.",
479
+ ];
480
+ case "diagnostic":
481
+ return [
482
+ "Doctor findings describe framework convention drift; lint findings describe dependency-direction violations.",
483
+ "Fix the app structure or wiring named by the finding, then run the complete validation loop.",
484
+ ];
485
+ }
486
+ }
487
+ function scopeFiles(nodes, edges) {
488
+ return new Set([
489
+ ...nodes.map((node) => node.source.file),
490
+ ...edges.map((edge) => edge.evidence.file),
491
+ ]);
492
+ }
493
+ function moveTargetFirst(nodes, id) {
494
+ const target = nodes.find((node) => node.id === id);
495
+ return target ? [target, ...nodes.filter((node) => node.id !== id)] : nodes;
496
+ }
497
+ function compareFindings(left, right) {
498
+ return `${left.code}:${left.location?.file ?? ""}:${left.location?.line ?? 0}:${left.message}`.localeCompare(`${right.code}:${right.location?.file ?? ""}:${right.location?.line ?? 0}:${right.message}`);
499
+ }
500
+ function sourceKey(source) {
501
+ return `${source.file}:${source.line ?? 0}:${source.column ?? 0}:${source.exportName ?? ""}`;
502
+ }
503
+ function formatSource(source) {
504
+ return `${source.file}${source.line ? `:${source.line}${source.column ? `:${source.column}` : ""}` : ""}`;
505
+ }
506
+ function normalized(value) {
507
+ return value.trim().replace(/\s+/g, " ").toLowerCase();
508
+ }
509
+ function countLabel(count, noun) {
510
+ return `${count} ${noun}${count === 1 ? "" : "s"}`;
511
+ }
512
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAIL,KAAK,cAAc,EAInB,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AA2BvB,KAAK,UAAU,GAAG,cAAc,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AA2lFF,wBAAsB,IAAI,CACxB,MAAM,WAAwB,EAC9B,OAAO,GAAE,4BAA4B,CAAC,UAAU,CAAe,GAC9D,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAIL,KAAK,cAAc,EAInB,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AA6BvB,KAAK,UAAU,GAAG,cAAc,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAwsFF,wBAAsB,IAAI,CACxB,MAAM,WAAwB,EAC9B,OAAO,GAAE,4BAA4B,CAAC,UAAU,CAAe,GAC9D,OAAO,CAAC,IAAI,CAAC,CAiBf"}