projscan 4.13.0 → 4.15.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 (195) hide show
  1. package/README.md +90 -24
  2. package/dist/cli/commands/evidencePack.js +2 -0
  3. package/dist/cli/commands/evidencePack.js.map +1 -1
  4. package/dist/cli/commands/prove.js +253 -23
  5. package/dist/cli/commands/prove.js.map +1 -1
  6. package/dist/cli/commands/startConsole.d.ts +2 -2
  7. package/dist/cli/commands/startConsole.js +2 -260
  8. package/dist/cli/commands/startConsole.js.map +1 -1
  9. package/dist/cli/commands/startConsoleExecution.d.ts +5 -0
  10. package/dist/cli/commands/startConsoleExecution.js +108 -0
  11. package/dist/cli/commands/startConsoleExecution.js.map +1 -0
  12. package/dist/cli/commands/startConsoleMission.d.ts +6 -0
  13. package/dist/cli/commands/startConsoleMission.js +157 -0
  14. package/dist/cli/commands/startConsoleMission.js.map +1 -0
  15. package/dist/cli/commands/startMissionBundle.js +24 -27
  16. package/dist/cli/commands/startMissionBundle.js.map +1 -1
  17. package/dist/core/adoption.d.ts +8 -81
  18. package/dist/core/adoption.js +4 -549
  19. package/dist/core/adoption.js.map +1 -1
  20. package/dist/core/adoptionFirstRunDiagnostics.d.ts +20 -0
  21. package/dist/core/adoptionFirstRunDiagnostics.js +240 -0
  22. package/dist/core/adoptionFirstRunDiagnostics.js.map +1 -0
  23. package/dist/core/adoptionMcpConfig.d.ts +27 -0
  24. package/dist/core/adoptionMcpConfig.js +123 -0
  25. package/dist/core/adoptionMcpConfig.js.map +1 -0
  26. package/dist/core/adoptionMcpDoctor.d.ts +23 -0
  27. package/dist/core/adoptionMcpDoctor.js +87 -0
  28. package/dist/core/adoptionMcpDoctor.js.map +1 -0
  29. package/dist/core/adoptionWorkflowRecipes.d.ts +14 -0
  30. package/dist/core/adoptionWorkflowRecipes.js +110 -0
  31. package/dist/core/adoptionWorkflowRecipes.js.map +1 -0
  32. package/dist/core/bugHunt.js +26 -255
  33. package/dist/core/bugHunt.js.map +1 -1
  34. package/dist/core/bugHuntPreflightFindings.d.ts +2 -1
  35. package/dist/core/bugHuntPreflightFindings.js +20 -0
  36. package/dist/core/bugHuntPreflightFindings.js.map +1 -1
  37. package/dist/core/bugHuntReportAssembly.d.ts +20 -0
  38. package/dist/core/bugHuntReportAssembly.js +179 -0
  39. package/dist/core/bugHuntReportAssembly.js.map +1 -0
  40. package/dist/core/bugHuntSourceFindings.d.ts +3 -0
  41. package/dist/core/bugHuntSourceFindings.js +61 -0
  42. package/dist/core/bugHuntSourceFindings.js.map +1 -0
  43. package/dist/core/dogfood.js +4 -393
  44. package/dist/core/dogfood.js.map +1 -1
  45. package/dist/core/dogfoodMarketValidation.d.ts +5 -0
  46. package/dist/core/dogfoodMarketValidation.js +265 -0
  47. package/dist/core/dogfoodMarketValidation.js.map +1 -0
  48. package/dist/core/dogfoodRepoEvaluation.d.ts +4 -0
  49. package/dist/core/dogfoodRepoEvaluation.js +137 -0
  50. package/dist/core/dogfoodRepoEvaluation.js.map +1 -0
  51. package/dist/core/evidenceComment.js +50 -13
  52. package/dist/core/evidenceComment.js.map +1 -1
  53. package/dist/core/feedback.js +2 -252
  54. package/dist/core/feedback.js.map +1 -1
  55. package/dist/core/feedbackIntakeClassifier.d.ts +2 -0
  56. package/dist/core/feedbackIntakeClassifier.js +255 -0
  57. package/dist/core/feedbackIntakeClassifier.js.map +1 -0
  58. package/dist/core/intentRouterCatalog.js +34 -0
  59. package/dist/core/intentRouterCatalog.js.map +1 -1
  60. package/dist/core/intentRouterKeywordToolGuards.js +2 -46
  61. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  62. package/dist/core/intentRouterKeywordWeights.js +13 -28
  63. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  64. package/dist/core/intentRouterProductGuardSignals.d.ts +3 -0
  65. package/dist/core/intentRouterProductGuardSignals.js +59 -0
  66. package/dist/core/intentRouterProductGuardSignals.js.map +1 -0
  67. package/dist/core/intentRouterWorkflowKeywordWeights.js +29 -0
  68. package/dist/core/intentRouterWorkflowKeywordWeights.js.map +1 -1
  69. package/dist/core/markdownSafety.d.ts +3 -0
  70. package/dist/core/markdownSafety.js +14 -0
  71. package/dist/core/markdownSafety.js.map +1 -0
  72. package/dist/core/preflight.d.ts +2 -0
  73. package/dist/core/preflight.js.map +1 -1
  74. package/dist/core/preflightChangedFiles.d.ts +2 -0
  75. package/dist/core/preflightChangedFiles.js +1 -1
  76. package/dist/core/preflightChangedFiles.js.map +1 -1
  77. package/dist/core/preflightInputs.d.ts +2 -0
  78. package/dist/core/preflightInputs.js +5 -2
  79. package/dist/core/preflightInputs.js.map +1 -1
  80. package/dist/core/proofLedger.d.ts +6 -1
  81. package/dist/core/proofLedger.js +174 -15
  82. package/dist/core/proofLedger.js.map +1 -1
  83. package/dist/core/proofReplay.d.ts +9 -0
  84. package/dist/core/proofReplay.js +164 -0
  85. package/dist/core/proofReplay.js.map +1 -0
  86. package/dist/core/proofSufficiency.d.ts +19 -0
  87. package/dist/core/proofSufficiency.js +425 -0
  88. package/dist/core/proofSufficiency.js.map +1 -0
  89. package/dist/core/prove.d.ts +8 -0
  90. package/dist/core/prove.js +578 -88
  91. package/dist/core/prove.js.map +1 -1
  92. package/dist/core/qualityScorecard.js +8 -238
  93. package/dist/core/qualityScorecard.js.map +1 -1
  94. package/dist/core/qualityScorecardDimensions.d.ts +14 -0
  95. package/dist/core/qualityScorecardDimensions.js +99 -0
  96. package/dist/core/qualityScorecardDimensions.js.map +1 -0
  97. package/dist/core/qualityScorecardRisks.d.ts +8 -0
  98. package/dist/core/qualityScorecardRisks.js +107 -0
  99. package/dist/core/qualityScorecardRisks.js.map +1 -0
  100. package/dist/core/qualityScorecardSignals.d.ts +20 -0
  101. package/dist/core/qualityScorecardSignals.js +59 -0
  102. package/dist/core/qualityScorecardSignals.js.map +1 -0
  103. package/dist/core/releaseEvidence.d.ts +1 -0
  104. package/dist/core/releaseEvidence.js +15 -40
  105. package/dist/core/releaseEvidence.js.map +1 -1
  106. package/dist/core/releaseEvidenceBaseline.js +4 -1
  107. package/dist/core/releaseEvidenceBaseline.js.map +1 -1
  108. package/dist/core/releaseEvidenceProofReceipt.d.ts +6 -0
  109. package/dist/core/releaseEvidenceProofReceipt.js +140 -0
  110. package/dist/core/releaseEvidenceProofReceipt.js.map +1 -0
  111. package/dist/core/releaseEvidenceVerdict.d.ts +5 -2
  112. package/dist/core/releaseEvidenceVerdict.js +39 -1
  113. package/dist/core/releaseEvidenceVerdict.js.map +1 -1
  114. package/dist/core/repositoryScanner.d.ts +1 -0
  115. package/dist/core/repositoryScanner.js +5 -4
  116. package/dist/core/repositoryScanner.js.map +1 -1
  117. package/dist/core/sessionResources.d.ts +14 -2
  118. package/dist/core/sessionResources.js +3 -3
  119. package/dist/core/sessionResources.js.map +1 -1
  120. package/dist/core/startFixedRouteCriteria.js +4 -0
  121. package/dist/core/startFixedRouteCriteria.js.map +1 -1
  122. package/dist/core/startInputs.d.ts +1 -1
  123. package/dist/core/startIntentTargets.d.ts +1 -1
  124. package/dist/core/startIntentTargets.js +1 -16
  125. package/dist/core/startIntentTargets.js.map +1 -1
  126. package/dist/core/startMissionInputStatusPolicy.d.ts +7 -0
  127. package/dist/core/startMissionInputStatusPolicy.js +74 -0
  128. package/dist/core/startMissionInputStatusPolicy.js.map +1 -0
  129. package/dist/core/startMissionPolicy.d.ts +6 -15
  130. package/dist/core/startMissionPolicy.js +4 -305
  131. package/dist/core/startMissionPolicy.js.map +1 -1
  132. package/dist/core/startMissionProofPolicy.d.ts +6 -0
  133. package/dist/core/startMissionProofPolicy.js +84 -0
  134. package/dist/core/startMissionProofPolicy.js.map +1 -0
  135. package/dist/core/startMissionRiskPolicy.d.ts +4 -0
  136. package/dist/core/startMissionRiskPolicy.js +85 -0
  137. package/dist/core/startMissionRiskPolicy.js.map +1 -0
  138. package/dist/core/startMissionRoutingPolicy.d.ts +6 -0
  139. package/dist/core/startMissionRoutingPolicy.js +67 -0
  140. package/dist/core/startMissionRoutingPolicy.js.map +1 -0
  141. package/dist/core/startMode.d.ts +1 -2
  142. package/dist/core/startMode.js +4 -151
  143. package/dist/core/startMode.js.map +1 -1
  144. package/dist/core/startModeIntentPolicy.d.ts +12 -0
  145. package/dist/core/startModeIntentPolicy.js +41 -0
  146. package/dist/core/startModeIntentPolicy.js.map +1 -0
  147. package/dist/core/startModeRoutingPolicy.d.ts +4 -0
  148. package/dist/core/startModeRoutingPolicy.js +117 -0
  149. package/dist/core/startModeRoutingPolicy.js.map +1 -0
  150. package/dist/core/startRouteActions.js +5 -0
  151. package/dist/core/startRouteActions.js.map +1 -1
  152. package/dist/core/startSearchQueryTargets.d.ts +1 -0
  153. package/dist/core/startSearchQueryTargets.js +17 -0
  154. package/dist/core/startSearchQueryTargets.js.map +1 -0
  155. package/dist/core/workplan.d.ts +3 -2
  156. package/dist/core/workplan.js +11 -585
  157. package/dist/core/workplan.js.map +1 -1
  158. package/dist/core/workplanCoordinationTasks.d.ts +3 -0
  159. package/dist/core/workplanCoordinationTasks.js +82 -0
  160. package/dist/core/workplanCoordinationTasks.js.map +1 -0
  161. package/dist/core/workplanModeTasks.d.ts +2 -0
  162. package/dist/core/workplanModeTasks.js +192 -0
  163. package/dist/core/workplanModeTasks.js.map +1 -0
  164. package/dist/core/workplanPreflightTasks.d.ts +2 -0
  165. package/dist/core/workplanPreflightTasks.js +126 -0
  166. package/dist/core/workplanPreflightTasks.js.map +1 -0
  167. package/dist/core/workplanQualitySignals.d.ts +7 -0
  168. package/dist/core/workplanQualitySignals.js +63 -0
  169. package/dist/core/workplanQualitySignals.js.map +1 -0
  170. package/dist/core/workplanReport.d.ts +4 -0
  171. package/dist/core/workplanReport.js +79 -0
  172. package/dist/core/workplanReport.js.map +1 -0
  173. package/dist/core/workplanRiskOwnership.d.ts +5 -0
  174. package/dist/core/workplanRiskOwnership.js +97 -0
  175. package/dist/core/workplanRiskOwnership.js.map +1 -0
  176. package/dist/core/workplanSuggestedActions.d.ts +2 -0
  177. package/dist/core/workplanSuggestedActions.js +43 -0
  178. package/dist/core/workplanSuggestedActions.js.map +1 -0
  179. package/dist/mcp/tools/prove.js +24 -18
  180. package/dist/mcp/tools/prove.js.map +1 -1
  181. package/dist/projscan-sbom.cdx.json +6 -6
  182. package/dist/tool-manifest.json +3 -3
  183. package/dist/types/config.d.ts +15 -0
  184. package/dist/types/evidencePack.d.ts +21 -0
  185. package/dist/types/proofLedger.d.ts +1 -1
  186. package/dist/types/prove.d.ts +96 -1
  187. package/dist/utils/changedFiles.js +57 -16
  188. package/dist/utils/changedFiles.js.map +1 -1
  189. package/dist/utils/config.js +2 -0
  190. package/dist/utils/config.js.map +1 -1
  191. package/dist/utils/configProofRecipes.d.ts +2 -0
  192. package/dist/utils/configProofRecipes.js +91 -0
  193. package/dist/utils/configProofRecipes.js.map +1 -0
  194. package/docs/GUIDE.md +145 -25
  195. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
+ import { classifyFeedbackIntakeText } from './feedbackIntakeClassifier.js';
3
4
  export const FEEDBACK_ARTIFACT_VERSION = 1;
4
5
  export const MIN_REPEAT_FEEDBACK_PRS = 3;
5
6
  export const MIN_REPEAT_FEEDBACK_REPOS = 1;
@@ -56,28 +57,7 @@ export async function summarizeFeedbackFile(filePath) {
56
57
  return summarizeFeedback(artifact.responses, resolved);
57
58
  }
58
59
  export function classifyFeedbackIntake(rawText) {
59
- const text = rawText.trim();
60
- const lower = text.toLowerCase();
61
- const category = classifyCategory(lower);
62
- const signal = primarySignal(category, lower);
63
- const confidence = confidenceFor(category, lower);
64
- const taskTitle = taskTitleFor(category, signal);
65
- const suggestedCommand = commandFor(category, signal);
66
- const summary = summaryFor(category, signal);
67
- const agentloopTaskCommand = agentloopCommandFor(category, taskTitle, summary, suggestedCommand);
68
- return {
69
- schemaVersion: FEEDBACK_ARTIFACT_VERSION,
70
- category,
71
- confidence,
72
- summary,
73
- evidence: evidenceFor(category, lower),
74
- taskTitle,
75
- suggestedCommand,
76
- nextCommand: agentloopTaskCommand,
77
- agentloopTaskCommand,
78
- followUpCommands: [agentloopTaskCommand, suggestedCommand],
79
- feedbackResponse: feedbackResponseFor(category, signal, summary),
80
- };
60
+ return classifyFeedbackIntakeText(rawText, FEEDBACK_ARTIFACT_VERSION);
81
61
  }
82
62
  export function summarizeFeedback(responses, filePath = '.projscan-feedback.json') {
83
63
  const usefulResponses = responses.filter((response) => response.useful === true).length;
@@ -142,236 +122,6 @@ function toStoredFeedback(template) {
142
122
  responses: template.responses,
143
123
  };
144
124
  }
145
- function classifyCategory(text) {
146
- if (/\b(?:npm|npx|install|installed|global|globally)\b/.test(text) &&
147
- /allow[- ]scripts?|install scripts?|node-gyp-build|tree-sitter/.test(text)) {
148
- return 'install_warning';
149
- }
150
- if (/\bfalse[- ]positive\b|incorrectly flag|wrongly flag|flagged unused|reported unused|not actually unused/.test(text)) {
151
- return 'false_positive';
152
- }
153
- if (/\bcaution\b|\bwarning\b/.test(text) &&
154
- /noise|noisy|background|too many|low[- ]signal|spam/.test(text)) {
155
- return 'noisy_caution';
156
- }
157
- if (/missing|not detected|not detect|does not detect|doesn't detect|should detect|misses/.test(text) &&
158
- /framework|next\.?js|app router|route handler|middleware|koa|hono|fastify|express|sveltekit|astro|remix|request source|ctx\.request/.test(text)) {
159
- return 'missing_framework_rule';
160
- }
161
- if (/docs|readme|output|wording|message|copy/.test(text) &&
162
- /confusing|unclear|bigger than|overclaim|overstate|sounds bigger|not demonstrated/.test(text)) {
163
- return 'confusing_docs_output';
164
- }
165
- if (/feature breadth|breadth|too many features|feature[s]?.*without.*workflow|killer workflow|killer workflows|trusted daily|trust daily|daily workflow|daily workflows/.test(text)) {
166
- return 'workflow_focus';
167
- }
168
- if (/\buseful\b|saved .*minute|prevented|caught|helped|trusted|clear next/.test(text)) {
169
- return 'useful_signal';
170
- }
171
- return 'uncategorized';
172
- }
173
- function primarySignal(category, text) {
174
- if (category === 'false_positive') {
175
- if (/unused[- ]exports?/.test(text))
176
- return 'unused-exports';
177
- if (/unused[- ]dependenc/.test(text))
178
- return 'unused-dependencies';
179
- if (/dead[- ]code/.test(text))
180
- return 'dead-code';
181
- if (/dataflow|taint|source-to-sink/.test(text))
182
- return 'dataflow';
183
- return 'rule false positive';
184
- }
185
- if (category === 'missing_framework_rule') {
186
- if (/koa/.test(text))
187
- return 'Koa';
188
- if (/hono/.test(text))
189
- return 'Hono';
190
- if (/fastify/.test(text))
191
- return 'Fastify';
192
- if (/express/.test(text))
193
- return 'Express';
194
- if (/next\.?js|app router|middleware|route handler/.test(text))
195
- return 'Next.js';
196
- if (/sveltekit/.test(text))
197
- return 'SvelteKit';
198
- if (/astro/.test(text))
199
- return 'Astro';
200
- if (/remix/.test(text))
201
- return 'Remix';
202
- return 'framework request source';
203
- }
204
- if (category === 'install_warning') {
205
- if (/allow[- ]scripts?/.test(text))
206
- return 'npm allow-scripts';
207
- if (/node-gyp-build|install scripts?/.test(text))
208
- return 'native install scripts';
209
- if (/tree-sitter/.test(text))
210
- return 'tree-sitter install warning';
211
- return 'npm install warning';
212
- }
213
- if (category === 'noisy_caution')
214
- return 'caution';
215
- if (category === 'confusing_docs_output')
216
- return 'docs/output';
217
- if (category === 'workflow_focus')
218
- return 'workflow focus';
219
- if (category === 'useful_signal')
220
- return 'useful workflow';
221
- return 'unclassified feedback';
222
- }
223
- function confidenceFor(category, text) {
224
- if (category === 'uncategorized')
225
- return 'low';
226
- const strongSignals = [
227
- /\bfalse[- ]positive\b/,
228
- /unused[- ]exports?/,
229
- /\bcaution\b.*(?:noise|noisy|background)|(?:noise|noisy|background).*\bcaution\b/,
230
- /allow[- ]scripts?|node-gyp-build|tree-sitter/,
231
- /ctx\.request|app router|route handler|middleware/,
232
- /feature breadth|killer workflows?|trust daily|daily workflows?/,
233
- /saved .*minute|prevented/,
234
- ];
235
- return strongSignals.some((pattern) => pattern.test(text)) ? 'high' : 'medium';
236
- }
237
- function taskTitleFor(category, signal) {
238
- switch (category) {
239
- case 'false_positive':
240
- return 'Fix false-positive feedback: ' + signal;
241
- case 'noisy_caution':
242
- return 'Reduce noisy caution output';
243
- case 'install_warning':
244
- return 'Fix install warning feedback: ' + signal;
245
- case 'missing_framework_rule':
246
- return 'Add missing framework rule: ' + signal;
247
- case 'confusing_docs_output':
248
- return 'Clarify confusing docs or output';
249
- case 'workflow_focus':
250
- return 'Focus feature breadth into trusted daily workflows';
251
- case 'useful_signal':
252
- return 'Preserve useful feedback signal';
253
- case 'uncategorized':
254
- return 'Triage unclassified feedback';
255
- }
256
- }
257
- function commandFor(category, signal) {
258
- if (category === 'false_positive' && signal === 'unused-exports') {
259
- return 'npm test -- tests/analyzers/deadCodeCheck.test.ts tests/core/importGraph.test.ts';
260
- }
261
- switch (category) {
262
- case 'false_positive':
263
- return 'npm test -- tests/analyzers tests/core/importGraph.test.ts';
264
- case 'noisy_caution':
265
- return 'npm test -- tests/core/preflight*.test.ts tests/core/releaseEvidence.test.ts';
266
- case 'install_warning':
267
- return 'npm test -- tests/integration/packSmokeTest.test.ts';
268
- case 'missing_framework_rule':
269
- return 'npm test -- tests/core/dataflow.test.ts tests/analyzers/securityCheck.test.ts';
270
- case 'confusing_docs_output':
271
- return 'npm test -- tests/docs tests/cli/startConsoleGuidance.test.ts';
272
- case 'workflow_focus':
273
- return 'npm test -- tests/core/start*.test.ts tests/docs/startRoutingDocs.test.ts';
274
- case 'useful_signal':
275
- return 'projscan feedback summary --file .projscan-feedback.json --format json';
276
- case 'uncategorized':
277
- return 'projscan feedback summary --file .projscan-feedback.json --format json';
278
- }
279
- }
280
- function summaryFor(category, signal) {
281
- switch (category) {
282
- case 'false_positive':
283
- return 'Classified as false-positive feedback for ' + signal + '.';
284
- case 'noisy_caution':
285
- return 'Classified as caution noise that should be ranked or grouped.';
286
- case 'install_warning':
287
- return 'Classified as setup/install warning feedback for ' + signal + '.';
288
- case 'missing_framework_rule':
289
- return 'Classified as missing framework coverage for ' + signal + '.';
290
- case 'confusing_docs_output':
291
- return 'Classified as confusing docs or output wording.';
292
- case 'workflow_focus':
293
- return 'Classified as workflow-focus feedback about breadth versus trusted daily use.';
294
- case 'useful_signal':
295
- return 'Classified as a useful workflow signal to preserve.';
296
- case 'uncategorized':
297
- return 'Classified as feedback that needs maintainer triage.';
298
- }
299
- }
300
- function evidenceFor(category, text) {
301
- const evidence = [];
302
- if (/false[- ]positive|flagged unused|reported unused/.test(text))
303
- evidence.push('false-positive wording');
304
- if (/unused[- ]exports?/.test(text))
305
- evidence.push('unused-exports signal');
306
- if (/caution|warning/.test(text))
307
- evidence.push('caution wording');
308
- if (/\b(?:npm|npx|install|installed|global|globally)\b/.test(text))
309
- evidence.push('npm install wording');
310
- if (/allow[- ]scripts?/.test(text))
311
- evidence.push('allow-scripts warning');
312
- if (/node-gyp-build|tree-sitter/.test(text))
313
- evidence.push('native grammar install wording');
314
- if (/noise|noisy|background/.test(text))
315
- evidence.push('noise wording');
316
- if (/koa|hono|fastify|express|next\.?js|sveltekit|astro|remix/.test(text))
317
- evidence.push('framework wording');
318
- if (/docs|readme|output|wording|message/.test(text))
319
- evidence.push('docs/output wording');
320
- if (/feature breadth|breadth|too many features/.test(text))
321
- evidence.push('feature breadth wording');
322
- if (/killer workflows?|daily workflows?|trust daily|trusted daily/.test(text))
323
- evidence.push('trusted workflow wording');
324
- if (/useful|saved .*minute|prevented|caught|helped/.test(text))
325
- evidence.push('usefulness wording');
326
- if (evidence.length === 0)
327
- evidence.push(category);
328
- return evidence;
329
- }
330
- function feedbackResponseFor(category, signal, summary) {
331
- const response = {
332
- reviewer: 'agent-intake',
333
- useful: category === 'useful_signal',
334
- minutesSaved: 0,
335
- note: summary,
336
- };
337
- if (category === 'false_positive')
338
- response.falsePositiveRules = [signal];
339
- if (category === 'missing_framework_rule')
340
- response.missingSignals = [signal];
341
- if (category === 'noisy_caution')
342
- response.noisyFindings = [signal];
343
- if (category === 'install_warning')
344
- response.noisyFindings = [signal];
345
- if (category === 'confusing_docs_output')
346
- response.noisyFindings = [signal];
347
- if (category === 'workflow_focus')
348
- response.noisyFindings = [signal];
349
- return response;
350
- }
351
- function agentloopCommandFor(category, taskTitle, summary, suggestedCommand) {
352
- const taskType = category === 'useful_signal' ? 'tests' : 'bugfix';
353
- const problem = 'Reviewer feedback classified as ' +
354
- category +
355
- ': ' +
356
- summary +
357
- ' Preserve the raw signal in local feedback evidence and avoid broad product scope.';
358
- const outcome = category === 'useful_signal'
359
- ? 'Keep the useful workflow covered by focused tests or docs so later changes do not regress it.'
360
- : 'Reproduce and fix the feedback signal, or document the remaining limitation with focused verification.';
361
- return [
362
- 'npm exec agentloop -- create-task',
363
- '--type ' + taskType,
364
- '--title ' + shellQuote(taskTitle),
365
- '--problem ' + shellQuote(problem),
366
- '--outcome ' + shellQuote(outcome),
367
- '--acceptance ' + shellQuote('The feedback signal is addressed with a focused test or documented as deferred.'),
368
- '--verify-command ' + shellQuote(suggestedCommand),
369
- '--rollback ' + shellQuote('Revert the focused feedback fix if verification fails.'),
370
- ].join(' ');
371
- }
372
- function shellQuote(value) {
373
- return "'" + value.replace(/'/g, "'\\''") + "'";
374
- }
375
125
  function normalizeFeedbackInput(input) {
376
126
  if (!input || typeof input !== 'object') {
377
127
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/core/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,kBAAkB,GAAG;IACzB,kDAAkD;IAClD,gDAAgD;IAChD,0DAA0D;IAC1D,8CAA8C;IAC9C,4DAA4D;CACpD,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,UAAyC,EAAE;IAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,QAAQ,GAAG,iCAAiC,CAClF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAAE,MAAM,KAAK,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACjG,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC1C,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,QAAiC;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,QAA8B,CAAC;IACnC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;QACnD,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEjG,OAAO;QACL,aAAa,EAAE,yBAAyB;QACxC,QAAQ;QACR,UAAU;QACV,OAAO;QACP,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;QACtC,SAAS;QACT,gBAAgB;QAChB,WAAW,EAAE,oBAAoB;QACjC,oBAAoB;QACpB,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;QAC1D,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAAoC,EACpC,QAAQ,GAAG,yBAAyB;IAEpC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,YAAY,CACrC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,kBAAkB,IAAI,EAAE,CAAC,CACnE,CAAC;IACF,MAAM,cAAc,GAAG,YAAY,CACjC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAC/D,CAAC;IACF,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAElG,OAAO;QACL,aAAa,EAAE,yBAAyB;QACxC,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,eAAe;QACf,aAAa;QACb,WAAW;QACX,YAAY,EAAE;YACZ,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;SACpF;QACD,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,MAAM;QAC5F,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,MAAM;QAC7F,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,MAAM;QAC3F,SAAS,EAAE;YACT,WAAW;YACX,aAAa;YACb,mBAAmB,EAAE,uBAAuB;YAC5C,qBAAqB,EAAE,yBAAyB;YAChD,KAAK,EAAE,WAAW,IAAI,uBAAuB,IAAI,aAAa,IAAI,yBAAyB;SAC5F;QACD,aAAa,EAAE;YACb,YAAY,EAAE,kBAAkB,CAAC,MAAM;YACvC,UAAU,EAAE,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC;YACpD,cAAc,EAAE,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC;YACtD,aAAa,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;SACtD;QACD,kBAAkB,EAAE,8BAA8B,GAAG,QAAQ,GAAG,gBAAgB;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO;QACL,aAAa,EAAE,yBAAyB;QACxC,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,CAAC,GAAG,kBAAkB,CAAC;QAClC,YAAY,EAAE;YACZ,yCAAyC;YACzC,yFAAyF;YACzF,uCAAuC,GAAG,QAAQ,GAAG,gCAAgC;YACrF,2DAA2D,GAAG,QAAQ,GAAG,GAAG;SAC7E;QACD,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgC;IACxD,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IACE,mDAAmD,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9D,+DAA+D,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1E,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IACE,wGAAwG,CAAC,IAAI,CAC3G,IAAI,CACL,EACD,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IACE,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,oDAAoD,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/D,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IACE,qFAAqF,CAAC,IAAI,CACxF,IAAI,CACL;QACD,oIAAoI,CAAC,IAAI,CACvI,IAAI,CACL,EACD,CAAC;QACD,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,IACE,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,kFAAkF,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7F,CAAC;QACD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IACD,IACE,oKAAoK,CAAC,IAAI,CACvK,IAAI,CACL,EACD,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,sEAAsE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgC,EAAE,IAAY;IACnE,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,gBAAgB,CAAC;QAC7D,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,qBAAqB,CAAC;QACnE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC;QAClD,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QAClE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC;QACrC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,IAAI,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACvC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACnC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,mBAAmB,CAAC;QAC/D,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,wBAAwB,CAAC;QAClF,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,6BAA6B,CAAC;QACnE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,QAAQ,KAAK,uBAAuB;QAAE,OAAO,aAAa,CAAC;IAC/D,IAAI,QAAQ,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC3D,IAAI,QAAQ,KAAK,eAAe;QAAE,OAAO,iBAAiB,CAAC;IAC3D,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,QAAgC,EAAE,IAAY;IACnE,IAAI,QAAQ,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,aAAa,GAAG;QACpB,uBAAuB;QACvB,oBAAoB;QACpB,iFAAiF;QACjF,8CAA8C;QAC9C,kDAAkD;QAClD,gEAAgE;QAChE,0BAA0B;KAC3B,CAAC;IACF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,QAAgC,EAAE,MAAc;IACpE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,+BAA+B,GAAG,MAAM,CAAC;QAClD,KAAK,eAAe;YAClB,OAAO,6BAA6B,CAAC;QACvC,KAAK,iBAAiB;YACpB,OAAO,gCAAgC,GAAG,MAAM,CAAC;QACnD,KAAK,wBAAwB;YAC3B,OAAO,8BAA8B,GAAG,MAAM,CAAC;QACjD,KAAK,uBAAuB;YAC1B,OAAO,kCAAkC,CAAC;QAC5C,KAAK,gBAAgB;YACnB,OAAO,oDAAoD,CAAC;QAC9D,KAAK,eAAe;YAClB,OAAO,iCAAiC,CAAC;QAC3C,KAAK,eAAe;YAClB,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgC,EAAE,MAAc;IAClE,IAAI,QAAQ,KAAK,gBAAgB,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QACjE,OAAO,kFAAkF,CAAC;IAC5F,CAAC;IACD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,4DAA4D,CAAC;QACtE,KAAK,eAAe;YAClB,OAAO,8EAA8E,CAAC;QACxF,KAAK,iBAAiB;YACpB,OAAO,qDAAqD,CAAC;QAC/D,KAAK,wBAAwB;YAC3B,OAAO,+EAA+E,CAAC;QACzF,KAAK,uBAAuB;YAC1B,OAAO,+DAA+D,CAAC;QACzE,KAAK,gBAAgB;YACnB,OAAO,2EAA2E,CAAC;QACrF,KAAK,eAAe;YAClB,OAAO,wEAAwE,CAAC;QAClF,KAAK,eAAe;YAClB,OAAO,wEAAwE,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAgC,EAAE,MAAc;IAClE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,4CAA4C,GAAG,MAAM,GAAG,GAAG,CAAC;QACrE,KAAK,eAAe;YAClB,OAAO,+DAA+D,CAAC;QACzE,KAAK,iBAAiB;YACpB,OAAO,mDAAmD,GAAG,MAAM,GAAG,GAAG,CAAC;QAC5E,KAAK,wBAAwB;YAC3B,OAAO,+CAA+C,GAAG,MAAM,GAAG,GAAG,CAAC;QACxE,KAAK,uBAAuB;YAC1B,OAAO,iDAAiD,CAAC;QAC3D,KAAK,gBAAgB;YACnB,OAAO,+EAA+E,CAAC;QACzF,KAAK,eAAe;YAClB,OAAO,qDAAqD,CAAC;QAC/D,KAAK,eAAe;YAClB,OAAO,sDAAsD,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,QAAgC,EAAE,IAAY;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1C,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC5E,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnE,IAAI,mDAAmD,CAAC,IAAI,CAAC,IAAI,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACvC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC3E,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7F,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxE,IAAI,0DAA0D,CAAC,IAAI,CAAC,IAAI,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrC,IAAI,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1F,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3C,IAAI,8DAA8D,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3E,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5C,IAAI,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgC,EAChC,MAAc,EACd,OAAe;IAEf,MAAM,QAAQ,GAA4B;QACxC,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,QAAQ,KAAK,eAAe;QACpC,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,OAAO;KACd,CAAC;IACF,IAAI,QAAQ,KAAK,gBAAgB;QAAE,QAAQ,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,QAAQ,KAAK,wBAAwB;QAAE,QAAQ,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,QAAQ,KAAK,eAAe;QAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,iBAAiB;QAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,QAAQ,KAAK,uBAAuB;QAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5E,IAAI,QAAQ,KAAK,gBAAgB;QAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgC,EAChC,SAAiB,EACjB,OAAe,EACf,gBAAwB;IAExB,MAAM,QAAQ,GAAG,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnE,MAAM,OAAO,GACX,kCAAkC;QAClC,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,oFAAoF,CAAC;IACvF,MAAM,OAAO,GACX,QAAQ,KAAK,eAAe;QAC1B,CAAC,CAAC,+FAA+F;QACjG,CAAC,CAAC,wGAAwG,CAAC;IAC/G,OAAO;QACL,mCAAmC;QACnC,SAAS,GAAG,QAAQ;QACpB,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;QAClC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,eAAe,GAAG,UAAU,CAAC,iFAAiF,CAAC;QAC/G,mBAAmB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QAClD,aAAa,GAAG,UAAU,CAAC,wDAAwD,CAAC;KACrF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAClD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;YACL,aAAa,EAAE,yBAAyB;YACxC,SAAS,EAAE,CAAC,GAAG,kBAAkB,CAAC;YAClC,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,KAA6B,CAAC;IAC1C,OAAO;QACL,aAAa,EACX,GAAG,CAAC,aAAa,KAAK,yBAAyB;YAC7C,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,yBAAyB;QAC/B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC;YAClE,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;QAC3B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE;KAC5F,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,QAA2C;IAE3C,MAAM,KAAK,GACT,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjE,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACvE,IAAI,IAAI;QAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,IAAI,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;QAAE,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACrF,IAAI,eAAe;QAAE,UAAU,CAAC,eAAe,GAAG,eAAe,CAAC;IAClE,IAAI,kBAAkB;QAAE,UAAU,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC3E,IAAI,qBAAqB;QAAE,UAAU,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACpF,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACxE,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,SAAS;QAC7C,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACvD,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,SAAS;QAC9C,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACzD,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,SAAS;QAC7C,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACvD,IAAI,IAAI;QAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzD,UAAU,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC7E,UAAU,CAAC,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACrE,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,MAAiC;IACtD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACxF,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAoC;IAC9D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,SAAS;QAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CACnB,MAAgB,EAChB,GAAM;IAEN,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAA0C,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,IAAY;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,KAAK,IAAI,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACpC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,OAAO,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,MAAiC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAChF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/core/feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FeedbackIntakeReport } from '../types/dogfood.js';
2
+ export declare function classifyFeedbackIntakeText(rawText: string, schemaVersion: FeedbackIntakeReport['schemaVersion']): FeedbackIntakeReport;
@@ -0,0 +1,255 @@
1
+ export function classifyFeedbackIntakeText(rawText, schemaVersion) {
2
+ const text = rawText.trim();
3
+ const lower = text.toLowerCase();
4
+ const category = classifyCategory(lower);
5
+ const signal = primarySignal(category, lower);
6
+ const confidence = confidenceFor(category, lower);
7
+ const taskTitle = taskTitleFor(category, signal);
8
+ const suggestedCommand = commandFor(category, signal);
9
+ const summary = summaryFor(category, signal);
10
+ const agentloopTaskCommand = agentloopCommandFor(category, taskTitle, summary, suggestedCommand);
11
+ return {
12
+ schemaVersion,
13
+ category,
14
+ confidence,
15
+ summary,
16
+ evidence: evidenceFor(category, lower),
17
+ taskTitle,
18
+ suggestedCommand,
19
+ nextCommand: agentloopTaskCommand,
20
+ agentloopTaskCommand,
21
+ followUpCommands: [agentloopTaskCommand, suggestedCommand],
22
+ feedbackResponse: feedbackResponseFor(category, signal, summary),
23
+ };
24
+ }
25
+ function classifyCategory(text) {
26
+ if (/\b(?:npm|npx|install|installed|global|globally)\b/.test(text) &&
27
+ /allow[- ]scripts?|install scripts?|node-gyp-build|tree-sitter/.test(text)) {
28
+ return 'install_warning';
29
+ }
30
+ if (/\bfalse[- ]positive\b|incorrectly flag|wrongly flag|flagged unused|reported unused|not actually unused/.test(text)) {
31
+ return 'false_positive';
32
+ }
33
+ if (/\bcaution\b|\bwarning\b/.test(text) &&
34
+ /noise|noisy|background|too many|low[- ]signal|spam/.test(text)) {
35
+ return 'noisy_caution';
36
+ }
37
+ if (/missing|not detected|not detect|does not detect|doesn't detect|should detect|misses/.test(text) &&
38
+ /framework|next\.?js|app router|route handler|middleware|koa|hono|fastify|express|sveltekit|astro|remix|request source|ctx\.request/.test(text)) {
39
+ return 'missing_framework_rule';
40
+ }
41
+ if (/docs|readme|output|wording|message|copy/.test(text) &&
42
+ /confusing|unclear|bigger than|overclaim|overstate|sounds bigger|not demonstrated/.test(text)) {
43
+ return 'confusing_docs_output';
44
+ }
45
+ if (/feature breadth|breadth|too many features|feature[s]?.*without.*workflow|killer workflow|killer workflows|trusted daily|trust daily|daily workflow|daily workflows/.test(text)) {
46
+ return 'workflow_focus';
47
+ }
48
+ if (/\buseful\b|saved .*minute|prevented|caught|helped|trusted|clear next/.test(text)) {
49
+ return 'useful_signal';
50
+ }
51
+ return 'uncategorized';
52
+ }
53
+ function primarySignal(category, text) {
54
+ if (category === 'false_positive') {
55
+ if (/unused[- ]exports?/.test(text))
56
+ return 'unused-exports';
57
+ if (/unused[- ]dependenc/.test(text))
58
+ return 'unused-dependencies';
59
+ if (/dead[- ]code/.test(text))
60
+ return 'dead-code';
61
+ if (/dataflow|taint|source-to-sink/.test(text))
62
+ return 'dataflow';
63
+ return 'rule false positive';
64
+ }
65
+ if (category === 'missing_framework_rule') {
66
+ if (/koa/.test(text))
67
+ return 'Koa';
68
+ if (/hono/.test(text))
69
+ return 'Hono';
70
+ if (/fastify/.test(text))
71
+ return 'Fastify';
72
+ if (/express/.test(text))
73
+ return 'Express';
74
+ if (/next\.?js|app router|middleware|route handler/.test(text))
75
+ return 'Next.js';
76
+ if (/sveltekit/.test(text))
77
+ return 'SvelteKit';
78
+ if (/astro/.test(text))
79
+ return 'Astro';
80
+ if (/remix/.test(text))
81
+ return 'Remix';
82
+ return 'framework request source';
83
+ }
84
+ if (category === 'install_warning') {
85
+ if (/allow[- ]scripts?/.test(text))
86
+ return 'npm allow-scripts';
87
+ if (/node-gyp-build|install scripts?/.test(text))
88
+ return 'native install scripts';
89
+ if (/tree-sitter/.test(text))
90
+ return 'tree-sitter install warning';
91
+ return 'npm install warning';
92
+ }
93
+ if (category === 'noisy_caution')
94
+ return 'caution';
95
+ if (category === 'confusing_docs_output')
96
+ return 'docs/output';
97
+ if (category === 'workflow_focus')
98
+ return 'workflow focus';
99
+ if (category === 'useful_signal')
100
+ return 'useful workflow';
101
+ return 'unclassified feedback';
102
+ }
103
+ function confidenceFor(category, text) {
104
+ if (category === 'uncategorized')
105
+ return 'low';
106
+ const strongSignals = [
107
+ /\bfalse[- ]positive\b/,
108
+ /unused[- ]exports?/,
109
+ /\bcaution\b.*(?:noise|noisy|background)|(?:noise|noisy|background).*\bcaution\b/,
110
+ /allow[- ]scripts?|node-gyp-build|tree-sitter/,
111
+ /ctx\.request|app router|route handler|middleware/,
112
+ /feature breadth|killer workflows?|trust daily|daily workflows?/,
113
+ /saved .*minute|prevented/,
114
+ ];
115
+ return strongSignals.some((pattern) => pattern.test(text)) ? 'high' : 'medium';
116
+ }
117
+ function taskTitleFor(category, signal) {
118
+ switch (category) {
119
+ case 'false_positive':
120
+ return 'Fix false-positive feedback: ' + signal;
121
+ case 'noisy_caution':
122
+ return 'Reduce noisy caution output';
123
+ case 'install_warning':
124
+ return 'Fix install warning feedback: ' + signal;
125
+ case 'missing_framework_rule':
126
+ return 'Add missing framework rule: ' + signal;
127
+ case 'confusing_docs_output':
128
+ return 'Clarify confusing docs or output';
129
+ case 'workflow_focus':
130
+ return 'Focus feature breadth into trusted daily workflows';
131
+ case 'useful_signal':
132
+ return 'Preserve useful feedback signal';
133
+ case 'uncategorized':
134
+ return 'Triage unclassified feedback';
135
+ }
136
+ }
137
+ function commandFor(category, signal) {
138
+ if (category === 'false_positive' && signal === 'unused-exports') {
139
+ return 'npm test -- tests/analyzers/deadCodeCheck.test.ts tests/core/importGraph.test.ts';
140
+ }
141
+ switch (category) {
142
+ case 'false_positive':
143
+ return 'npm test -- tests/analyzers tests/core/importGraph.test.ts';
144
+ case 'noisy_caution':
145
+ return 'npm test -- tests/core/preflight*.test.ts tests/core/releaseEvidence.test.ts';
146
+ case 'install_warning':
147
+ return 'npm test -- tests/integration/packSmokeTest.test.ts';
148
+ case 'missing_framework_rule':
149
+ return 'npm test -- tests/core/dataflow.test.ts tests/analyzers/securityCheck.test.ts';
150
+ case 'confusing_docs_output':
151
+ return 'npm test -- tests/docs tests/cli/startConsoleGuidance.test.ts';
152
+ case 'workflow_focus':
153
+ return 'npm test -- tests/core/start*.test.ts tests/docs/startRoutingDocs.test.ts';
154
+ case 'useful_signal':
155
+ return 'projscan feedback summary --file .projscan-feedback.json --format json';
156
+ case 'uncategorized':
157
+ return 'projscan feedback summary --file .projscan-feedback.json --format json';
158
+ }
159
+ }
160
+ function summaryFor(category, signal) {
161
+ switch (category) {
162
+ case 'false_positive':
163
+ return 'Classified as false-positive feedback for ' + signal + '.';
164
+ case 'noisy_caution':
165
+ return 'Classified as caution noise that should be ranked or grouped.';
166
+ case 'install_warning':
167
+ return 'Classified as setup/install warning feedback for ' + signal + '.';
168
+ case 'missing_framework_rule':
169
+ return 'Classified as missing framework coverage for ' + signal + '.';
170
+ case 'confusing_docs_output':
171
+ return 'Classified as confusing docs or output wording.';
172
+ case 'workflow_focus':
173
+ return 'Classified as workflow-focus feedback about breadth versus trusted daily use.';
174
+ case 'useful_signal':
175
+ return 'Classified as a useful workflow signal to preserve.';
176
+ case 'uncategorized':
177
+ return 'Classified as feedback that needs maintainer triage.';
178
+ }
179
+ }
180
+ function evidenceFor(category, text) {
181
+ const evidence = [];
182
+ if (/false[- ]positive|flagged unused|reported unused/.test(text))
183
+ evidence.push('false-positive wording');
184
+ if (/unused[- ]exports?/.test(text))
185
+ evidence.push('unused-exports signal');
186
+ if (/caution|warning/.test(text))
187
+ evidence.push('caution wording');
188
+ if (/\b(?:npm|npx|install|installed|global|globally)\b/.test(text))
189
+ evidence.push('npm install wording');
190
+ if (/allow[- ]scripts?/.test(text))
191
+ evidence.push('allow-scripts warning');
192
+ if (/node-gyp-build|tree-sitter/.test(text))
193
+ evidence.push('native grammar install wording');
194
+ if (/noise|noisy|background/.test(text))
195
+ evidence.push('noise wording');
196
+ if (/koa|hono|fastify|express|next\.?js|sveltekit|astro|remix/.test(text))
197
+ evidence.push('framework wording');
198
+ if (/docs|readme|output|wording|message/.test(text))
199
+ evidence.push('docs/output wording');
200
+ if (/feature breadth|breadth|too many features/.test(text))
201
+ evidence.push('feature breadth wording');
202
+ if (/killer workflows?|daily workflows?|trust daily|trusted daily/.test(text))
203
+ evidence.push('trusted workflow wording');
204
+ if (/useful|saved .*minute|prevented|caught|helped/.test(text))
205
+ evidence.push('usefulness wording');
206
+ if (evidence.length === 0)
207
+ evidence.push(category);
208
+ return evidence;
209
+ }
210
+ function feedbackResponseFor(category, signal, summary) {
211
+ const response = {
212
+ reviewer: 'agent-intake',
213
+ useful: category === 'useful_signal',
214
+ minutesSaved: 0,
215
+ note: summary,
216
+ };
217
+ if (category === 'false_positive')
218
+ response.falsePositiveRules = [signal];
219
+ if (category === 'missing_framework_rule')
220
+ response.missingSignals = [signal];
221
+ if (category === 'noisy_caution')
222
+ response.noisyFindings = [signal];
223
+ if (category === 'install_warning')
224
+ response.noisyFindings = [signal];
225
+ if (category === 'confusing_docs_output')
226
+ response.noisyFindings = [signal];
227
+ if (category === 'workflow_focus')
228
+ response.noisyFindings = [signal];
229
+ return response;
230
+ }
231
+ function agentloopCommandFor(category, taskTitle, summary, suggestedCommand) {
232
+ const taskType = category === 'useful_signal' ? 'tests' : 'bugfix';
233
+ const problem = 'Reviewer feedback classified as ' +
234
+ category +
235
+ ': ' +
236
+ summary +
237
+ ' Preserve the raw signal in local feedback evidence and avoid broad product scope.';
238
+ const outcome = category === 'useful_signal'
239
+ ? 'Keep the useful workflow covered by focused tests or docs so later changes do not regress it.'
240
+ : 'Reproduce and fix the feedback signal, or document the remaining limitation with focused verification.';
241
+ return [
242
+ 'npm exec agentloop -- create-task',
243
+ '--type ' + taskType,
244
+ '--title ' + shellQuote(taskTitle),
245
+ '--problem ' + shellQuote(problem),
246
+ '--outcome ' + shellQuote(outcome),
247
+ '--acceptance ' + shellQuote('The feedback signal is addressed with a focused test or documented as deferred.'),
248
+ '--verify-command ' + shellQuote(suggestedCommand),
249
+ '--rollback ' + shellQuote('Revert the focused feedback fix if verification fails.'),
250
+ ].join(' ');
251
+ }
252
+ function shellQuote(value) {
253
+ return "'" + value.replace(/'/g, "'\\''") + "'";
254
+ }
255
+ //# sourceMappingURL=feedbackIntakeClassifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackIntakeClassifier.js","sourceRoot":"","sources":["../../src/core/feedbackIntakeClassifier.ts"],"names":[],"mappings":"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"}
@@ -494,6 +494,40 @@ export const ROUTE_CATALOG = [
494
494
  'stuck',
495
495
  ],
496
496
  },
497
+ {
498
+ intent: 'Create a Proof Contract for an agent change',
499
+ category: 'Proof',
500
+ tool: 'projscan_prove',
501
+ cli: 'projscan prove',
502
+ what: 'Executable Proof Contract and replayed Proof Receipt for a bounded change.',
503
+ why: 'Before an agent edits, constrain allowed files, forbidden files, proof commands, and reviewer evidence.',
504
+ example: 'projscan prove --intent "is my agent allowed to change billing retry logic?" --save-contract .projscan/proof-contract.json --format json',
505
+ keywords: [
506
+ 'agent',
507
+ 'allowed',
508
+ 'allow',
509
+ 'permission',
510
+ 'permissions',
511
+ 'proof',
512
+ 'prove',
513
+ 'contract',
514
+ 'contracts',
515
+ 'scope',
516
+ 'scoped',
517
+ 'forbidden',
518
+ 'receipt',
519
+ 'receipts',
520
+ 'replay',
521
+ 'ledger',
522
+ 'stale',
523
+ 'fresh',
524
+ 'bounded',
525
+ 'change',
526
+ 'changed',
527
+ 'edit',
528
+ 'edits',
529
+ ],
530
+ },
497
531
  {
498
532
  intent: 'Find the riskiest files / where to start',
499
533
  category: 'Hotspots',