@dev-guard/core 0.1.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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ai.d.ts +30 -0
  3. package/dist/ai.js +2050 -0
  4. package/dist/ai.js.map +1 -0
  5. package/dist/analyze.d.ts +2 -0
  6. package/dist/analyze.js +303 -0
  7. package/dist/analyze.js.map +1 -0
  8. package/dist/completion.d.ts +8 -0
  9. package/dist/completion.js +272 -0
  10. package/dist/completion.js.map +1 -0
  11. package/dist/context-files.d.ts +5 -0
  12. package/dist/context-files.js +44 -0
  13. package/dist/context-files.js.map +1 -0
  14. package/dist/defaults.d.ts +3 -0
  15. package/dist/defaults.js +46 -0
  16. package/dist/defaults.js.map +1 -0
  17. package/dist/diff-intent.d.ts +19 -0
  18. package/dist/diff-intent.js +517 -0
  19. package/dist/diff-intent.js.map +1 -0
  20. package/dist/drift.d.ts +19 -0
  21. package/dist/drift.js +264 -0
  22. package/dist/drift.js.map +1 -0
  23. package/dist/index-check.mjs +13 -0
  24. package/dist/index.d.ts +18 -0
  25. package/dist/index.js +16 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/prompt.d.ts +2 -0
  28. package/dist/prompt.js +633 -0
  29. package/dist/prompt.js.map +1 -0
  30. package/dist/report.d.ts +2 -0
  31. package/dist/report.js +90 -0
  32. package/dist/report.js.map +1 -0
  33. package/dist/review.d.ts +4 -0
  34. package/dist/review.js +350 -0
  35. package/dist/review.js.map +1 -0
  36. package/dist/scan.d.ts +9 -0
  37. package/dist/scan.js +322 -0
  38. package/dist/scan.js.map +1 -0
  39. package/dist/task-anchor.d.ts +21 -0
  40. package/dist/task-anchor.js +126 -0
  41. package/dist/task-anchor.js.map +1 -0
  42. package/dist/task-router.d.ts +3 -0
  43. package/dist/task-router.js +340 -0
  44. package/dist/task-router.js.map +1 -0
  45. package/dist/templates.d.ts +20 -0
  46. package/dist/templates.js +56 -0
  47. package/dist/templates.js.map +1 -0
  48. package/dist/types.d.ts +366 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/update.d.ts +2 -0
  52. package/dist/update.js +250 -0
  53. package/dist/update.js.map +1 -0
  54. package/package.json +30 -0
@@ -0,0 +1,517 @@
1
+ const commands = ["task-ai", "fix-prompt", "self-check", "done", "handoff", "status", "update", "watch", "review", "check", "prompt", "doctor", "report", "scan", "refresh", "telemetry", "self"];
2
+ const cliOutputPattern = /(console\.(log|error|warn)|format|summary|preview|success|error|warning|output|print|stdout|stderr|출력|요약|미리보기|성공|실패|경고|안내)/i;
3
+ const promptPattern = /(prompt|density|token|compact|ultra|context|프롬프트|토큰|압축)/i;
4
+ const relevancePattern = /(relevance|candidate|score|scope|drift|intent|router|routing|selection|후보|관련|범위|의도|분류)/i;
5
+ const workflowPattern = /(done|handoff|watch|review|check|report|guardrail|workflow|self|update preview|워크플로우|검증|가드)/i;
6
+ const cliCommandHandlerPattern = /(^|\/)(task-ai|fix-prompt|self-check|done|handoff|status|update|watch|review|check|prompt|doctor|report|scan|refresh|telemetry|self|index)\.ts$/i;
7
+ const appSourcePathPattern = /^(app|pages|components|src\/app|src\/pages|src\/components|lib|hooks|utils)\//i;
8
+ const livingDocumentPattern = /(living[-_]?document|thought[-_]?artifact|artifact|artifacts|brain|memo|folder|document[-_]?ui|문서|메모|폴더|생각)/i;
9
+ export function inferDiffIntent(input) {
10
+ return inferDiffIntentClusters(input).primaryIntent;
11
+ }
12
+ export function inferDiffIntentClusters(input) {
13
+ const changedFiles = normalizeFiles(input.changedFiles);
14
+ const clusters = clusterChangedFiles(changedFiles, input.diffText ?? "", input.codeGraph ?? []);
15
+ const intents = clusters.map((cluster) => inferSingleDiffIntent({
16
+ changedFiles: cluster.files,
17
+ changeFiles: input.changeFiles?.filter((file) => cluster.files.includes(file.path)),
18
+ diffText: buildClusterDiff(input.diffText ?? "", cluster.files),
19
+ codeGraph: input.codeGraph
20
+ }));
21
+ const allIntents = intents.length > 0
22
+ ? dedupeIntents(intents)
23
+ : [
24
+ inferSingleDiffIntent({
25
+ changedFiles,
26
+ changeFiles: input.changeFiles,
27
+ diffText: input.diffText,
28
+ codeGraph: input.codeGraph
29
+ })
30
+ ];
31
+ const primaryIntent = selectPrimaryIntent(allIntents, input.taskText);
32
+ const secondaryIntents = allIntents
33
+ .filter((intent) => intent !== primaryIntent)
34
+ .sort((a, b) => intentStrength(b) - intentStrength(a) || b.changedFiles.length - a.changedFiles.length);
35
+ const secondaryDetails = normalizeSecondaryDetails(secondaryIntents.map((intent) => classifySecondaryIntent(intent, primaryIntent)));
36
+ const normalizedSecondaryIntents = secondaryDetails.map((detail) => detail.intent);
37
+ const unrelatedFiles = normalizedSecondaryIntents.flatMap((intent) => intent.changedFiles);
38
+ const mixedRisk = inferMixedRisk(primaryIntent, secondaryDetails);
39
+ return { primaryIntent, secondaryIntents: normalizedSecondaryIntents, secondaryDetails, mixedRisk, unrelatedFiles };
40
+ }
41
+ function dedupeIntents(intents) {
42
+ const byKey = new Map();
43
+ for (const intent of intents) {
44
+ const key = `${intent.subtype ?? intent.type}:${intent.targetCommand ?? ""}:${intent.changedFiles.join("|")}`;
45
+ const existing = byKey.get(key);
46
+ if (!existing || intentStrength(intent) > intentStrength(existing)) {
47
+ byKey.set(key, intent);
48
+ }
49
+ }
50
+ return [...byKey.values()];
51
+ }
52
+ function normalizeSecondaryDetails(details) {
53
+ const byKey = new Map();
54
+ for (const detail of details) {
55
+ const key = secondaryMergeKey(detail, byKey);
56
+ const existing = byKey.get(key);
57
+ if (!existing) {
58
+ byKey.set(key, detail);
59
+ continue;
60
+ }
61
+ const severity = higherSeverity(existing.severity, detail.severity);
62
+ byKey.set(key, {
63
+ intent: {
64
+ ...existing.intent,
65
+ confidence: higherConfidence(existing.intent.confidence, detail.intent.confidence),
66
+ changedFiles: normalizeFiles([...existing.intent.changedFiles, ...detail.intent.changedFiles]),
67
+ evidence: [...new Set([...existing.intent.evidence, ...detail.intent.evidence])].slice(0, 3),
68
+ riskSignals: [...new Set([...existing.intent.riskSignals, ...detail.intent.riskSignals])],
69
+ supportingFiles: normalizeFiles([...existing.intent.supportingFiles, ...detail.intent.supportingFiles]).slice(0, 8),
70
+ scope: [...new Set([...existing.intent.scope, ...detail.intent.scope])].slice(0, 5)
71
+ },
72
+ severity,
73
+ reason: [...new Set([existing.reason, detail.reason])].slice(0, 2).join("; ")
74
+ });
75
+ }
76
+ return [...byKey.values()].sort((a, b) => severityRank(b.severity) - severityRank(a.severity) || b.intent.changedFiles.length - a.intent.changedFiles.length);
77
+ }
78
+ function secondaryMergeKey(detail, byKey) {
79
+ const subtype = detail.intent.subtype ?? detail.intent.type;
80
+ const target = detail.intent.targetCommand ?? "";
81
+ const exact = `${subtype}:${target}`;
82
+ if (target) {
83
+ const untargeted = `${subtype}:`;
84
+ if (byKey.has(untargeted)) {
85
+ return untargeted;
86
+ }
87
+ return exact;
88
+ }
89
+ const compatibleTargeted = [...byKey.keys()].find((key) => key.startsWith(`${subtype}:`) && key !== `${subtype}:`);
90
+ return compatibleTargeted ?? exact;
91
+ }
92
+ function higherSeverity(a, b) {
93
+ return severityRank(b) > severityRank(a) ? b : a;
94
+ }
95
+ function severityRank(severity) {
96
+ return { info: 0, caution: 1, warning: 2, high: 3 }[severity];
97
+ }
98
+ function higherConfidence(a, b) {
99
+ const rank = { low: 0, medium: 1, high: 2 };
100
+ return rank[b] > rank[a] ? b : a;
101
+ }
102
+ function inferSingleDiffIntent(input) {
103
+ const changedFiles = normalizeFiles(input.changedFiles);
104
+ const diffText = input.diffText ?? "";
105
+ const addedLines = extractChangedLines(diffText, "+");
106
+ const removedLines = extractChangedLines(diffText, "-");
107
+ const changedText = [...addedLines, ...removedLines].join("\n");
108
+ const symbols = extractChangedSymbols(diffText);
109
+ const strings = extractAddedStrings(addedLines);
110
+ const scores = new Map();
111
+ const evidence = [];
112
+ const riskSignals = [];
113
+ const supportingFiles = new Set();
114
+ const targetCommand = inferTargetCommand(changedFiles, changedText);
115
+ const cliTooling = isCliToolingContext(changedFiles);
116
+ const appContext = isAppSourceContext(changedFiles);
117
+ if (targetCommand) {
118
+ addScore(scores, "command_target", 40);
119
+ evidence.push(`target command:${targetCommand}`);
120
+ }
121
+ if (targetCommand && new RegExp(`\\b${escapeRegExp(targetCommand)}\\b`, "i").test(changedText)) {
122
+ addScore(scores, "command_token", 25);
123
+ evidence.push(`diff mentions command:${targetCommand}`);
124
+ }
125
+ if (cliTooling && (cliOutputPattern.test(changedText) || changedFiles.some((file) => /packages\/cli\/src\/|(^|\/)cli(\/|$)/i.test(file)))) {
126
+ addScore(scores, "cli_output", 20);
127
+ evidence.push("CLI output/format keywords changed");
128
+ }
129
+ else if (appContext && cliOutputPattern.test(changedText)) {
130
+ evidence.push("weak output keyword in app diff");
131
+ }
132
+ if (strings.length > 0) {
133
+ addScore(scores, "user_facing_strings", 15);
134
+ evidence.push(`added strings:${strings.slice(0, 3).join(" | ")}`);
135
+ }
136
+ if (isLivingDocumentRefactor(changedFiles, changedText)) {
137
+ addScore(scores, "living_document_refactor", 70);
138
+ evidence.push("living document/artifact migration");
139
+ }
140
+ else if (isAppSourceContext(changedFiles) && hasAppArchitectureSignal(changedFiles, changedText)) {
141
+ addScore(scores, "app_architecture_refactor", 45);
142
+ evidence.push("app API/UI architecture change");
143
+ }
144
+ if (input.codeGraph?.some((entry) => changedFiles.includes(entry.file) && entry.importedBy.length > 0)) {
145
+ addScore(scores, "graph_adjacency", 10);
146
+ evidence.push("code graph reverse dependencies found");
147
+ }
148
+ for (const file of changedFiles) {
149
+ const graph = input.codeGraph?.find((entry) => entry.file === file);
150
+ for (const candidate of graph?.importedBy.slice(0, 3) ?? []) {
151
+ supportingFiles.add(candidate);
152
+ }
153
+ }
154
+ if (changedFiles.every((file) => /\.(md|mdx)$/i.test(file) || /^docs\//i.test(file))) {
155
+ return buildIntent("docs", "docs_update", undefined, ["docs"], "high", ["docs-only diff"], changedFiles, [], [...supportingFiles]);
156
+ }
157
+ if (changedFiles.every((file) => /(^|\/)(__tests__|tests?|specs?)(\/|$)|\.(test|spec)\.[tj]sx?$/i.test(file))) {
158
+ return buildIntent("test", "test_update", undefined, ["tests"], "high", ["tests-only diff"], changedFiles, [], [...supportingFiles]);
159
+ }
160
+ if (changedFiles.every((file) => /(^|\/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock|\.npmignore|LICENSE|release|publish|npm|tsconfig|vite\.config|next\.config)/i.test(file))) {
161
+ return buildIntent("infra_config", "release_config", undefined, ["release_config"], "high", ["release/config-only diff"], changedFiles, [], [...supportingFiles]);
162
+ }
163
+ const typeSubtype = inferTypeSubtype(changedFiles, changedText, symbols, targetCommand);
164
+ const scope = inferScope(changedFiles, changedText, targetCommand);
165
+ const confidence = inferConfidence(scores, evidence, changedFiles);
166
+ if (changedFiles.some((file) => /(^|\/)(auth|session|db|database|supabase|api|network|package\.json|pnpm-lock\.yaml)(\/|$|\.)/i.test(file))) {
167
+ riskSignals.push("high-impact config/auth/db/network path changed");
168
+ }
169
+ if (changedFiles.length >= 10) {
170
+ riskSignals.push("broad diff");
171
+ }
172
+ return {
173
+ type: typeSubtype.type,
174
+ subtype: typeSubtype.subtype,
175
+ targetCommand,
176
+ scope,
177
+ confidence,
178
+ evidence: [...new Set([...evidence, ...symbols.slice(0, 4).map((symbol) => `symbol:${symbol}`)])].slice(0, 8),
179
+ changedFiles,
180
+ riskSignals,
181
+ supportingFiles: [...supportingFiles].filter((file) => !changedFiles.includes(file)).slice(0, 8)
182
+ };
183
+ }
184
+ export function inferredIntentToRequirement(intent) {
185
+ const target = intent.targetCommand ? ` for ${intent.targetCommand}` : "";
186
+ return [
187
+ `inferred from diff: ${intent.subtype ?? intent.type}${target}`,
188
+ `scope: ${intent.scope.join(", ") || "changed files"}`,
189
+ intent.evidence.length > 0 ? `evidence: ${intent.evidence.slice(0, 4).join("; ")}` : ""
190
+ ]
191
+ .filter(Boolean)
192
+ .join("\n");
193
+ }
194
+ export function inferredIntentToTaskType(intent) {
195
+ if (intent.subtype === "docs_update") {
196
+ return baseTaskType("docs", intent);
197
+ }
198
+ if (intent.subtype === "release_config") {
199
+ return baseTaskType("infra_config", intent);
200
+ }
201
+ if (intent.subtype === "internal_refactor") {
202
+ return baseTaskType("refactor", intent);
203
+ }
204
+ if (intent.subtype === "cli_output_polish" || intent.subtype === "noise_reduction") {
205
+ return baseTaskType("ui_polish", intent);
206
+ }
207
+ if (intent.subtype === "prompt_quality" || intent.subtype === "token_optimization" || intent.subtype === "relevance_fix" || intent.subtype === "workflow_guardrail") {
208
+ return baseTaskType("bugfix", intent);
209
+ }
210
+ return baseTaskType(intent.type === "polish" ? "ui_polish" : "bugfix", intent);
211
+ }
212
+ export function formatInferredDiffIntent(intent) {
213
+ const target = intent.targetCommand ? `(${intent.targetCommand})` : "";
214
+ const intentName = intent.type === "app_feature_refactor" && intent.subtype
215
+ ? `${intent.type}(${intent.subtype})`
216
+ : `${intent.subtype ?? intent.type}${target}`;
217
+ const flags = [
218
+ intent.subtype === "cli_output_polish" ? "preview_clarity✓" : "",
219
+ intent.subtype === "noise_reduction" ? "noise↓" : "",
220
+ intent.subtype === "relevance_fix" ? "relevance✓" : "",
221
+ intent.riskSignals.length > 0 ? "risk!" : ""
222
+ ].filter(Boolean);
223
+ return `INTENT: ${intentName}; SCOPE: ${intent.scope.join(", ") || "changed files"}; confidence=${intent.confidence}${flags.length ? `; FLAGS: ${flags.join(" ")}` : ""}`;
224
+ }
225
+ export function formatInferredDiffIntentClusters(clusters) {
226
+ const primary = formatInferredDiffIntent(clusters.primaryIntent);
227
+ const mixed = clusters.secondaryDetails.slice(0, 2).map(({ intent, severity }) => {
228
+ const target = intent.targetCommand ? `(${intent.targetCommand})` : "";
229
+ return `${intent.subtype ?? intent.type}${target}(${intent.changedFiles.length}) ${severity}`;
230
+ });
231
+ const remaining = clusters.secondaryDetails.length - mixed.length;
232
+ return [primary, mixed.length > 0 ? `MIXED: ${mixed.join(", ")}${remaining > 0 ? `, +${remaining} clusters` : ""}` : "", `DRIFT: ${clusters.mixedRisk}`].filter(Boolean).join("; ");
233
+ }
234
+ export function filterDiffTextForFiles(diffText, files) {
235
+ return buildClusterDiff(diffText, files);
236
+ }
237
+ function inferTypeSubtype(changedFiles, text, symbols, targetCommand) {
238
+ const cliTooling = isCliToolingContext(changedFiles);
239
+ if (isLivingDocumentRefactor(changedFiles, text)) {
240
+ return { type: "app_feature_refactor", subtype: "living_document" };
241
+ }
242
+ if (isAppSourceContext(changedFiles) && hasAppArchitectureSignal(changedFiles, text)) {
243
+ return { type: "app_feature_refactor", subtype: "app_feature_refactor" };
244
+ }
245
+ if ((cliTooling && promptPattern.test(text)) || changedFiles.some((file) => /prompt|task-ai|ai\.ts|task-router|completion|density/i.test(file))) {
246
+ return /token|density|compact|ultra|budget/i.test(text) ? { type: "polish", subtype: "token_optimization" } : { type: "bugfix", subtype: "prompt_quality" };
247
+ }
248
+ if ((cliTooling && relevancePattern.test(text)) || changedFiles.some((file) => /relevance|command-target|task-router|drift|analyze/i.test(file))) {
249
+ return { type: "bugfix", subtype: "relevance_fix" };
250
+ }
251
+ if ((cliTooling && workflowPattern.test(text)) || targetCommand) {
252
+ if (cliOutputPattern.test(text) || targetCommand === "done" || targetCommand === "status") {
253
+ return { type: "polish", subtype: "cli_output_polish" };
254
+ }
255
+ return { type: "bugfix", subtype: "workflow_guardrail" };
256
+ }
257
+ if (changedFiles.some((file) => /refactor|types|utils|core/i.test(file)) && symbols.length > 0) {
258
+ return { type: "refactor", subtype: "internal_refactor" };
259
+ }
260
+ return cliTooling && cliOutputPattern.test(text) ? { type: "polish", subtype: "cli_output_polish" } : { type: "bugfix", subtype: "command_behavior" };
261
+ }
262
+ function inferTargetCommand(changedFiles, text) {
263
+ if (!isCliToolingContext(changedFiles)) {
264
+ return undefined;
265
+ }
266
+ const scores = commands.map((command) => {
267
+ let score = 0;
268
+ const commandPattern = new RegExp(`(^|/|-)${escapeRegExp(command)}(\\.|/|-|$)`, "i");
269
+ if (changedFiles.some((file) => commandPattern.test(file))) {
270
+ score += 40;
271
+ }
272
+ if (new RegExp(`\\b${escapeRegExp(command)}\\b`, "i").test(text)) {
273
+ score += 25;
274
+ }
275
+ const camel = command.replace(/(^|-)([a-z])/g, (_, __, letter) => letter.toUpperCase());
276
+ if (new RegExp(`run${escapeRegExp(camel)}|${escapeRegExp(camel)}Options|${escapeRegExp(camel)}\\s+command`, "i").test(text)) {
277
+ score += 70;
278
+ }
279
+ return { command, score };
280
+ });
281
+ const best = scores.sort((a, b) => b.score - a.score || a.command.localeCompare(b.command))[0];
282
+ return best && best.score >= 40 ? best.command : undefined;
283
+ }
284
+ function clusterChangedFiles(changedFiles, diffText, codeGraph) {
285
+ const byKey = new Map();
286
+ for (const file of changedFiles) {
287
+ const fileDiff = buildClusterDiff(diffText, [file]);
288
+ const category = fileCategory(file);
289
+ const subtype = inferSubtypeKey([file], fileDiff);
290
+ const command = /^(docs|tests|release|high-impact)$/.test(category) ? undefined : inferTargetCommand([file], fileDiff);
291
+ const key = command ? `command:${command}` : subtype === "living_document" ? `app:${subtype}` : `${category}:${subtype}`;
292
+ const bucket = byKey.get(key) ?? new Set();
293
+ bucket.add(file);
294
+ byKey.set(key, bucket);
295
+ const graph = codeGraph.find((entry) => entry.file === file);
296
+ for (const adjacent of [...(graph?.imports ?? []), ...(graph?.importedBy ?? [])]) {
297
+ if (changedFiles.includes(adjacent) && fileCategory(adjacent) === fileCategory(file)) {
298
+ bucket.add(adjacent);
299
+ }
300
+ }
301
+ }
302
+ return [...byKey.entries()].map(([key, files]) => ({ key, files: [...files].sort() }));
303
+ }
304
+ function fileCategory(file) {
305
+ if (/\.test\.[tj]sx?$|\.spec\.[tj]sx?$|(^|\/)(__tests__|tests?|specs?)(\/|$)/i.test(file))
306
+ return "tests";
307
+ if (/\.(md|mdx)$/i.test(file) || /^docs\//i.test(file))
308
+ return "docs";
309
+ if (/(^|\/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock|\.npmignore|LICENSE|release|publish|npm|tsconfig|vite\.config|next\.config)/i.test(file))
310
+ return "release";
311
+ if (/packages\/cli\/src|(^|\/)cli(\/|$)/i.test(file))
312
+ return "cli";
313
+ if (/packages\/core\/src|(^|\/)(core|lib|src)(\/|$)/i.test(file))
314
+ return "core";
315
+ if (/(^|\/)(auth|session|db|database|supabase|api|network)(\/|$|\.)/i.test(file))
316
+ return "high-impact";
317
+ return "source";
318
+ }
319
+ function inferSubtypeKey(files, text) {
320
+ if (files.every((file) => /\.(md|mdx)$/i.test(file) || /^docs\//i.test(file)))
321
+ return "docs_update";
322
+ if (files.every((file) => /(^|\/)(__tests__|tests?|specs?)(\/|$)|\.(test|spec)\.[tj]sx?$/i.test(file)))
323
+ return "test_update";
324
+ if (files.every((file) => /(^|\/)(package\.json|pnpm-lock\.yaml|package-lock\.json|yarn\.lock|\.npmignore|LICENSE|release|publish|npm|tsconfig|vite\.config|next\.config)/i.test(file)))
325
+ return "release_config";
326
+ return inferTypeSubtype(files, text, extractChangedSymbols(text), inferTargetCommand(files, text)).subtype;
327
+ }
328
+ function selectPrimaryIntent(intents, taskText) {
329
+ const task = taskText?.trim() ?? "";
330
+ const scored = intents.map((intent) => ({
331
+ intent,
332
+ score: intentStrength(intent) + (task ? taskSimilarity(intent, task) : 0)
333
+ }));
334
+ return scored.sort((a, b) => b.score - a.score || b.intent.changedFiles.length - a.intent.changedFiles.length)[0]?.intent ?? intents[0];
335
+ }
336
+ function intentStrength(intent) {
337
+ const confidence = intent.confidence === "high" ? 40 : intent.confidence === "medium" ? 20 : 5;
338
+ return confidence + (intent.targetCommand ? 35 : 0) + intent.evidence.length * 4 + Math.min(intent.changedFiles.length, 8) * 3 - intent.riskSignals.length * 8;
339
+ }
340
+ function taskSimilarity(intent, taskText) {
341
+ const text = taskText.toLowerCase();
342
+ let score = 0;
343
+ if (intent.targetCommand && new RegExp(`\\b${escapeRegExp(intent.targetCommand)}\\b`, "i").test(text))
344
+ score += 60;
345
+ if (intent.subtype && text.includes(intent.subtype.toLowerCase()))
346
+ score += 30;
347
+ for (const scope of intent.scope) {
348
+ const token = scope.replace(/^command:/, "");
349
+ if (token && text.includes(token.toLowerCase()))
350
+ score += 10;
351
+ }
352
+ return score;
353
+ }
354
+ function inferMixedRisk(primary, secondaryDetails) {
355
+ if (secondaryDetails.length === 0) {
356
+ return primary.riskSignals.length > 0 ? "medium" : "low";
357
+ }
358
+ if (primary.confidence === "low" && secondaryDetails.some((detail) => detail.severity === "warning" || detail.severity === "high")) {
359
+ return "high";
360
+ }
361
+ if (secondaryDetails.some((detail) => detail.severity === "high")) {
362
+ return "high";
363
+ }
364
+ if (secondaryDetails.some((detail) => detail.severity === "warning")) {
365
+ return "high";
366
+ }
367
+ if (secondaryDetails.some((detail) => detail.severity === "caution")) {
368
+ return "medium";
369
+ }
370
+ return "low";
371
+ }
372
+ function classifySecondaryIntent(intent, primary) {
373
+ const subtype = intent.subtype ?? intent.type;
374
+ if (subtype === "docs_update" || subtype === "test_update" || isFormattingOnly(intent)) {
375
+ return { intent, severity: "info", reason: "safe supporting cluster" };
376
+ }
377
+ if (subtype === "release_config" || intent.scope.includes("release_config") || intent.changedFiles.some((file) => /package\.json|\.npmignore|tsconfig|vite\.config|next\.config/i.test(file))) {
378
+ return { intent, severity: "caution", reason: "release/config cluster" };
379
+ }
380
+ if (intent.riskSignals.some((signal) => /auth|db|database|network|runtime|package|config/i.test(signal)) || intent.changedFiles.some((file) => /(^|\/)(auth|session|db|database|supabase|api|network|runtime)(\/|$|\.)/i.test(file))) {
381
+ return { intent, severity: primary.confidence === "low" ? "high" : "warning", reason: "runtime/security-sensitive cluster" };
382
+ }
383
+ if (primary.confidence === "low" && intent.changedFiles.length > 1) {
384
+ return { intent, severity: "high", reason: "low-confidence primary with unrelated files" };
385
+ }
386
+ return { intent, severity: "caution", reason: "unrelated implementation cluster" };
387
+ }
388
+ function isFormattingOnly(intent) {
389
+ return intent.changedFiles.every((file) => /\.(css|scss|sass|prettierrc|editorconfig)$/i.test(file));
390
+ }
391
+ function buildClusterDiff(diffText, files) {
392
+ if (!diffText.trim() || files.length === 0) {
393
+ return diffText;
394
+ }
395
+ const fileSet = new Set(files);
396
+ const sections = diffText.split(/\n(?=diff --git )/g);
397
+ const selected = sections.filter((section) => {
398
+ const match = section.match(/^diff --git a\/(.+?) b\/(.+?)(?:\n|$)/);
399
+ if (!match) {
400
+ return files.some((file) => section.includes(file));
401
+ }
402
+ return fileSet.has(match[1]) || fileSet.has(match[2]);
403
+ });
404
+ const untracked = diffText
405
+ .split("\n")
406
+ .filter((line) => /^Untracked file: /.test(line) && files.some((file) => line.includes(file)));
407
+ return [...selected, ...untracked].join("\n\n") || diffText;
408
+ }
409
+ function inferScope(changedFiles, text, targetCommand) {
410
+ const scope = new Set();
411
+ const cliTooling = isCliToolingContext(changedFiles);
412
+ if (targetCommand) {
413
+ scope.add(`command:${targetCommand}`);
414
+ }
415
+ if (cliTooling && (changedFiles.some((file) => /packages\/cli\/src|(^|\/)cli(\/|$)/i.test(file)) || cliOutputPattern.test(text))) {
416
+ scope.add("cli_output");
417
+ }
418
+ if (isLivingDocumentRefactor(changedFiles, text)) {
419
+ const paths = changedFiles.join("\n");
420
+ if (/(^|\/)components\/brain\//i.test(paths) || /\bbrain\b/i.test(text)) {
421
+ scope.add("brain");
422
+ }
423
+ scope.add("living_document");
424
+ if (changedFiles.some((file) => /(^|\/)app\/api\/artifacts\//i.test(file))) {
425
+ scope.add("artifact_api");
426
+ }
427
+ if (/(^|\/)components\//i.test(paths) || /LivingDocumentView|ThoughtArtifactView/i.test(text)) {
428
+ scope.add("document_ui");
429
+ }
430
+ }
431
+ if (cliTooling && promptPattern.test(text)) {
432
+ scope.add("prompt");
433
+ }
434
+ if (cliTooling && relevancePattern.test(text)) {
435
+ scope.add("relevance");
436
+ }
437
+ if (changedFiles.some((file) => /\.(md|mdx)$/i.test(file) || /^docs\//i.test(file))) {
438
+ scope.add("docs");
439
+ }
440
+ if (changedFiles.some((file) => /(^|\/)(package\.json|\.npmignore|LICENSE|release)/i.test(file))) {
441
+ scope.add("release_config");
442
+ }
443
+ return [...scope].slice(0, 5);
444
+ }
445
+ function inferConfidence(scores, evidence, changedFiles) {
446
+ const total = [...scores.values()].reduce((sum, value) => sum + value, 0);
447
+ if (total >= 65 || (changedFiles.length <= 4 && evidence.length >= 3)) {
448
+ return "high";
449
+ }
450
+ if (total >= 35 || evidence.length >= 2) {
451
+ return "medium";
452
+ }
453
+ return "low";
454
+ }
455
+ function baseTaskType(type, intent) {
456
+ return {
457
+ type,
458
+ subtype: intent.subtype,
459
+ confidence: intent.confidence,
460
+ reasons: intent.evidence,
461
+ strategy: intent.subtype === "cli_output_polish" ? "minimal-output-polish" : intent.subtype === "living_document" ? "scoped-architecture-change" : "diff-inferred-scope",
462
+ riskLevel: intent.subtype === "living_document" ? "high" : intent.riskSignals.length > 0 ? "medium" : "low",
463
+ requiresPhasing: false,
464
+ domainKeywords: intent.scope
465
+ };
466
+ }
467
+ function buildIntent(type, subtype, targetCommand, scope, confidence, evidence, changedFiles, riskSignals, supportingFiles) {
468
+ return { type, subtype, targetCommand, scope, confidence, evidence, changedFiles, riskSignals, supportingFiles };
469
+ }
470
+ function extractChangedLines(diffText, prefix) {
471
+ const excluded = prefix === "+" ? "+++" : "---";
472
+ return diffText
473
+ .split("\n")
474
+ .filter((line) => line.startsWith(prefix) && !line.startsWith(excluded))
475
+ .map((line) => line.slice(1).trim())
476
+ .filter(Boolean);
477
+ }
478
+ function extractChangedSymbols(diffText) {
479
+ const matches = diffText.matchAll(/^[+-]\s*(?:export\s+)?(?:async\s+)?(?:function|const|let|class|interface|type)\s+([A-Za-z0-9_$-]+)/gm);
480
+ return [...new Set([...matches].map((match) => match[1]).filter(Boolean))].slice(0, 12);
481
+ }
482
+ function extractAddedStrings(lines) {
483
+ return [...new Set(lines.flatMap((line) => [...line.matchAll(/["'`]([^"'`]{8,100})["'`]/g)].map((match) => match[1])))]
484
+ .filter((value) => /[A-Za-z가-힣]/.test(value) && !/^[A-Z0-9_./:-]+$/.test(value))
485
+ .slice(0, 8);
486
+ }
487
+ function addScore(scores, key, value) {
488
+ scores.set(key, (scores.get(key) ?? 0) + value);
489
+ }
490
+ function normalizeFiles(files) {
491
+ return [...new Set(files.map((file) => file.trim()).filter(Boolean))].sort();
492
+ }
493
+ function escapeRegExp(value) {
494
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
495
+ }
496
+ function isCliToolingContext(changedFiles) {
497
+ return changedFiles.some((file) => /packages\/cli\/src\//i.test(file) ||
498
+ (/packages\/core\/src\//i.test(file) && /(diff-intent|prompt|report|review|check|analyze|task-router|completion|ai|types)\.ts$/i.test(file)) ||
499
+ cliCommandHandlerPattern.test(file));
500
+ }
501
+ function isAppSourceContext(changedFiles) {
502
+ return changedFiles.some((file) => appSourcePathPattern.test(file));
503
+ }
504
+ function isLivingDocumentRefactor(changedFiles, text) {
505
+ const combined = `${changedFiles.join("\n")}\n${text}`;
506
+ const hasLivingOrArtifact = livingDocumentPattern.test(combined);
507
+ const hasMigrationSignal = /LivingDocumentView|living[-_]?document/i.test(combined) &&
508
+ (/ThoughtArtifactView|thought[-_]?artifact/i.test(combined) || /(^|\/)app\/api\/artifacts\//i.test(changedFiles.join("\n")));
509
+ return isAppSourceContext(changedFiles) && (hasMigrationSignal || (hasLivingOrArtifact && /(^|\/)(components\/brain|app\/api\/artifacts)\//i.test(changedFiles.join("\n"))));
510
+ }
511
+ function hasAppArchitectureSignal(changedFiles, text) {
512
+ const paths = changedFiles.join("\n");
513
+ return (isAppSourceContext(changedFiles) &&
514
+ ((/(^|\/)app\/api\//i.test(paths) && /components?\//i.test(paths)) ||
515
+ /(rename|remove|delete|migrate|migration|refactor|replace|전환|구조|삭제|이동|재해석)/i.test(text)));
516
+ }
517
+ //# sourceMappingURL=diff-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-intent.js","sourceRoot":"","sources":["../src/diff-intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ChangeFile, ContextPriority, DriftResult, TaskTypeResult, WorkflowQualityScore } from "./types.js";
2
+ export declare function defaultContextPriority(): ContextPriority;
3
+ export declare function analyzeSemanticDrift(requirement: string, generatedText: string, taskType?: TaskTypeResult): DriftResult;
4
+ export declare function analyzeGeneratedDiffDrift(input: {
5
+ requirementText: string;
6
+ taskMarkdown?: string;
7
+ diffText: string;
8
+ changedFiles: string[];
9
+ changeFiles?: ChangeFile[];
10
+ taskType?: TaskTypeResult;
11
+ }): DriftResult;
12
+ export declare function inferDomains(text: string, taskType?: TaskTypeResult): string[];
13
+ export declare function inferSemanticZones(text: string, paths?: string[], taskType?: TaskTypeResult): string[];
14
+ export declare function scoreWorkflowQuality(input: {
15
+ drift: DriftResult;
16
+ changedFiles: string[];
17
+ diffText: string;
18
+ changeFiles?: ChangeFile[];
19
+ }): WorkflowQualityScore;