projscan 4.9.2 → 4.10.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 (185) hide show
  1. package/README.md +226 -1350
  2. package/dist/analyzers/securityCheck.js +33 -15
  3. package/dist/analyzers/securityCheck.js.map +1 -1
  4. package/dist/analyzers/supplyChainCheck.js +9 -2
  5. package/dist/analyzers/supplyChainCheck.js.map +1 -1
  6. package/dist/cli/commands/bugHunt.js +3 -1
  7. package/dist/cli/commands/bugHunt.js.map +1 -1
  8. package/dist/cli/commands/ci.js +29 -13
  9. package/dist/cli/commands/ci.js.map +1 -1
  10. package/dist/cli/commands/dogfood.js +2 -0
  11. package/dist/cli/commands/dogfood.js.map +1 -1
  12. package/dist/cli/commands/feedback.js +21 -2
  13. package/dist/cli/commands/feedback.js.map +1 -1
  14. package/dist/cli/commands/init.js +3 -0
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/route.js +3 -2
  17. package/dist/cli/commands/route.js.map +1 -1
  18. package/dist/core/adoption.js +50 -21
  19. package/dist/core/adoption.js.map +1 -1
  20. package/dist/core/agentBrief.js +2 -1
  21. package/dist/core/agentBrief.js.map +1 -1
  22. package/dist/core/bugHunt.js +51 -22
  23. package/dist/core/bugHunt.js.map +1 -1
  24. package/dist/core/bugHuntHotspotFindings.js +2 -1
  25. package/dist/core/bugHuntHotspotFindings.js.map +1 -1
  26. package/dist/core/ciGate.d.ts +10 -0
  27. package/dist/core/ciGate.js +21 -0
  28. package/dist/core/ciGate.js.map +1 -0
  29. package/dist/core/dogfood.d.ts +1 -0
  30. package/dist/core/dogfood.js +42 -20
  31. package/dist/core/dogfood.js.map +1 -1
  32. package/dist/core/dogfoodDiscovery.d.ts +8 -0
  33. package/dist/core/dogfoodDiscovery.js +119 -0
  34. package/dist/core/dogfoodDiscovery.js.map +1 -0
  35. package/dist/core/feedback.js +73 -5
  36. package/dist/core/feedback.js.map +1 -1
  37. package/dist/core/fileInspectionReport.js +37 -0
  38. package/dist/core/fileInspectionReport.js.map +1 -1
  39. package/dist/core/intentRouterArchitectureKeywordWeights.d.ts +1 -0
  40. package/dist/core/intentRouterArchitectureKeywordWeights.js +69 -0
  41. package/dist/core/intentRouterArchitectureKeywordWeights.js.map +1 -0
  42. package/dist/core/intentRouterCatalog.js +85 -31
  43. package/dist/core/intentRouterCatalog.js.map +1 -1
  44. package/dist/core/intentRouterDependencyKeywordWeights.d.ts +1 -0
  45. package/dist/core/intentRouterDependencyKeywordWeights.js +100 -0
  46. package/dist/core/intentRouterDependencyKeywordWeights.js.map +1 -0
  47. package/dist/core/intentRouterFileImpactKeywordWeights.d.ts +1 -0
  48. package/dist/core/intentRouterFileImpactKeywordWeights.js +92 -0
  49. package/dist/core/intentRouterFileImpactKeywordWeights.js.map +1 -0
  50. package/dist/core/intentRouterKeywordEarlyGuards.js +8 -3
  51. package/dist/core/intentRouterKeywordEarlyGuards.js.map +1 -1
  52. package/dist/core/intentRouterKeywordSearchGuards.js +28 -24
  53. package/dist/core/intentRouterKeywordSearchGuards.js.map +1 -1
  54. package/dist/core/intentRouterKeywordToolGuards.js +43 -0
  55. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  56. package/dist/core/intentRouterKeywordWeights.js +40 -1222
  57. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  58. package/dist/core/intentRouterOperationalKeywordWeights.d.ts +1 -0
  59. package/dist/core/intentRouterOperationalKeywordWeights.js +203 -0
  60. package/dist/core/intentRouterOperationalKeywordWeights.js.map +1 -0
  61. package/dist/core/intentRouterPlanningSignals.js +4 -1
  62. package/dist/core/intentRouterPlanningSignals.js.map +1 -1
  63. package/dist/core/intentRouterPrDiffKeywords.d.ts +4 -0
  64. package/dist/core/intentRouterPrDiffKeywords.js +64 -0
  65. package/dist/core/intentRouterPrDiffKeywords.js.map +1 -0
  66. package/dist/core/intentRouterPrDiffSignals.js +6 -0
  67. package/dist/core/intentRouterPrDiffSignals.js.map +1 -1
  68. package/dist/core/intentRouterProductImprovementSignals.d.ts +1 -0
  69. package/dist/core/intentRouterProductImprovementSignals.js +48 -0
  70. package/dist/core/intentRouterProductImprovementSignals.js.map +1 -0
  71. package/dist/core/intentRouterRegressionKeywordMatches.js +3 -0
  72. package/dist/core/intentRouterRegressionKeywordMatches.js.map +1 -1
  73. package/dist/core/intentRouterRegressionKeywordWeights.d.ts +1 -0
  74. package/dist/core/intentRouterRegressionKeywordWeights.js +118 -0
  75. package/dist/core/intentRouterRegressionKeywordWeights.js.map +1 -0
  76. package/dist/core/intentRouterReleaseSignals.d.ts +1 -0
  77. package/dist/core/intentRouterReleaseSignals.js +47 -0
  78. package/dist/core/intentRouterReleaseSignals.js.map +1 -1
  79. package/dist/core/intentRouterReviewSignals.d.ts +1 -0
  80. package/dist/core/intentRouterReviewSignals.js +23 -1
  81. package/dist/core/intentRouterReviewSignals.js.map +1 -1
  82. package/dist/core/intentRouterSearchKeywordWeights.d.ts +1 -0
  83. package/dist/core/intentRouterSearchKeywordWeights.js +407 -0
  84. package/dist/core/intentRouterSearchKeywordWeights.js.map +1 -0
  85. package/dist/core/intentRouterSecurityKeywordWeights.d.ts +1 -0
  86. package/dist/core/intentRouterSecurityKeywordWeights.js +50 -0
  87. package/dist/core/intentRouterSecurityKeywordWeights.js.map +1 -0
  88. package/dist/core/intentRouterTrustFeedbackKeywordWeights.d.ts +1 -0
  89. package/dist/core/intentRouterTrustFeedbackKeywordWeights.js +222 -0
  90. package/dist/core/intentRouterTrustFeedbackKeywordWeights.js.map +1 -0
  91. package/dist/core/intentRouterUnderstandSignals.js +1 -0
  92. package/dist/core/intentRouterUnderstandSignals.js.map +1 -1
  93. package/dist/core/intentRouterWorkSignals.js +3 -0
  94. package/dist/core/intentRouterWorkSignals.js.map +1 -1
  95. package/dist/core/intentRouterWorkflowKeywordWeights.d.ts +1 -0
  96. package/dist/core/intentRouterWorkflowKeywordWeights.js +124 -0
  97. package/dist/core/intentRouterWorkflowKeywordWeights.js.map +1 -0
  98. package/dist/core/issueEngine.js +46 -2
  99. package/dist/core/issueEngine.js.map +1 -1
  100. package/dist/core/memory.d.ts +2 -0
  101. package/dist/core/memory.js +33 -1
  102. package/dist/core/memory.js.map +1 -1
  103. package/dist/core/preflightChangedFiles.d.ts +3 -0
  104. package/dist/core/preflightChangedFiles.js +13 -0
  105. package/dist/core/preflightChangedFiles.js.map +1 -1
  106. package/dist/core/preflightEvidence.d.ts +3 -0
  107. package/dist/core/preflightEvidence.js +3 -0
  108. package/dist/core/preflightEvidence.js.map +1 -1
  109. package/dist/core/privacy.d.ts +2 -0
  110. package/dist/core/privacy.js +10 -0
  111. package/dist/core/privacy.js.map +1 -1
  112. package/dist/core/qualityScorecard.js +25 -13
  113. package/dist/core/qualityScorecard.js.map +1 -1
  114. package/dist/core/startEvidence.js +26 -1
  115. package/dist/core/startEvidence.js.map +1 -1
  116. package/dist/core/startFixedRouteCriteria.js +5 -0
  117. package/dist/core/startFixedRouteCriteria.js.map +1 -1
  118. package/dist/core/startInputs.d.ts +3 -0
  119. package/dist/core/startMissionPolicy.d.ts +1 -1
  120. package/dist/core/startMissionPolicy.js +18 -7
  121. package/dist/core/startMissionPolicy.js.map +1 -1
  122. package/dist/core/startMode.js +17 -4
  123. package/dist/core/startMode.js.map +1 -1
  124. package/dist/core/startReportBuilder.js +1 -1
  125. package/dist/core/startReportBuilder.js.map +1 -1
  126. package/dist/core/startReviewGate.js +26 -4
  127. package/dist/core/startReviewGate.js.map +1 -1
  128. package/dist/core/startRouteActions.js +6 -0
  129. package/dist/core/startRouteActions.js.map +1 -1
  130. package/dist/core/understand.js +60 -13
  131. package/dist/core/understand.js.map +1 -1
  132. package/dist/core/workplan.js +99 -17
  133. package/dist/core/workplan.js.map +1 -1
  134. package/dist/projscan-sbom.cdx.json +6 -6
  135. package/dist/reporters/ciIssueDetails.d.ts +10 -0
  136. package/dist/reporters/ciIssueDetails.js +37 -0
  137. package/dist/reporters/ciIssueDetails.js.map +1 -0
  138. package/dist/reporters/consoleCiReporter.d.ts +2 -1
  139. package/dist/reporters/consoleCiReporter.js +26 -9
  140. package/dist/reporters/consoleCiReporter.js.map +1 -1
  141. package/dist/reporters/consoleFileReporter.js +10 -0
  142. package/dist/reporters/consoleFileReporter.js.map +1 -1
  143. package/dist/reporters/consoleHealthReporter.js +3 -1
  144. package/dist/reporters/consoleHealthReporter.js.map +1 -1
  145. package/dist/reporters/jsonReporter.d.ts +2 -1
  146. package/dist/reporters/jsonReporter.js +17 -10
  147. package/dist/reporters/jsonReporter.js.map +1 -1
  148. package/dist/reporters/markdownFileReporter.js +11 -0
  149. package/dist/reporters/markdownFileReporter.js.map +1 -1
  150. package/dist/reporters/markdownHealthReporter.d.ts +2 -1
  151. package/dist/reporters/markdownHealthReporter.js +5 -5
  152. package/dist/reporters/markdownHealthReporter.js.map +1 -1
  153. package/dist/reporters/scoreBreakdownReporter.d.ts +2 -0
  154. package/dist/reporters/scoreBreakdownReporter.js +24 -0
  155. package/dist/reporters/scoreBreakdownReporter.js.map +1 -0
  156. package/dist/tool-manifest.json +2 -2
  157. package/dist/types/analysis.d.ts +21 -1
  158. package/dist/types/bugHunt.d.ts +3 -0
  159. package/dist/types/config.d.ts +9 -0
  160. package/dist/types/dogfood.d.ts +15 -1
  161. package/dist/types/inspection.d.ts +3 -0
  162. package/dist/types/preflight.d.ts +3 -0
  163. package/dist/types/startMissionControl.d.ts +3 -0
  164. package/dist/types/startMissionReview.d.ts +2 -0
  165. package/dist/utils/ciFailOn.d.ts +5 -0
  166. package/dist/utils/ciFailOn.js +12 -0
  167. package/dist/utils/ciFailOn.js.map +1 -0
  168. package/dist/utils/config.js +3 -1
  169. package/dist/utils/config.js.map +1 -1
  170. package/dist/utils/configBasics.d.ts +2 -0
  171. package/dist/utils/configBasics.js +21 -0
  172. package/dist/utils/configBasics.js.map +1 -1
  173. package/dist/utils/configIssueRules.js +64 -0
  174. package/dist/utils/configIssueRules.js.map +1 -1
  175. package/dist/utils/scoreCalculator.js +77 -16
  176. package/dist/utils/scoreCalculator.js.map +1 -1
  177. package/docs/GUIDE.md +36 -6
  178. package/docs/demos/projscan-4-1-demo.html +8 -8
  179. package/docs/demos/projscan-mission-control.tape +2 -2
  180. package/docs/demos/projscan-mission-proof.tape +9 -5
  181. package/docs/projscan-mission-control.gif +0 -0
  182. package/docs/projscan-mission-control.png +0 -0
  183. package/docs/projscan-mission-proof.gif +0 -0
  184. package/docs/projscan-proof-router.png +0 -0
  185. package/package.json +1 -1
@@ -1,1226 +1,44 @@
1
+ import { architectureKeywordWeight } from './intentRouterArchitectureKeywordWeights.js';
2
+ import { dependencyKeywordWeight } from './intentRouterDependencyKeywordWeights.js';
3
+ import { fileImpactKeywordWeight } from './intentRouterFileImpactKeywordWeights.js';
4
+ import { operationalKeywordWeight } from './intentRouterOperationalKeywordWeights.js';
5
+ import { regressionPlanKeywordWeight } from './intentRouterRegressionKeywordWeights.js';
6
+ import { searchKeywordWeight } from './intentRouterSearchKeywordWeights.js';
7
+ import { securityKeywordWeight } from './intentRouterSecurityKeywordWeights.js';
8
+ import { trustFeedbackKeywordWeight } from './intentRouterTrustFeedbackKeywordWeights.js';
9
+ import { workflowKeywordWeight } from './intentRouterWorkflowKeywordWeights.js';
1
10
  export function keywordWeight(entry, keyword) {
2
- if (entry.tool === 'projscan_privacy_check') {
3
- if ([
4
- 'privacy',
5
- 'trust',
6
- 'boundary',
7
- 'env',
8
- 'upload',
9
- 'telemetry',
10
- 'network',
11
- 'offline',
12
- 'leave',
13
- 'machine',
14
- ].includes(keyword))
15
- return 3;
16
- if ([
17
- 'read',
18
- 'code',
19
- 'source',
20
- 'values',
21
- 'contact',
22
- 'contacted',
23
- 'write',
24
- 'writes',
25
- 'projscan',
26
- ].includes(keyword))
27
- return 2;
28
- }
29
- if (entry.tool === 'projscan_understand' &&
30
- [
31
- 'read',
32
- 'summarize',
33
- 'summary',
34
- 'contract',
35
- 'contracts',
36
- 'api',
37
- 'apis',
38
- 'deprecate',
39
- 'deprecates',
40
- 'deprecated',
41
- 'deprecation',
42
- 'compatibility',
43
- 'compatible',
44
- 'architecture',
45
- 'repo',
46
- 'codebase',
47
- 'service',
48
- 'services',
49
- 'main',
50
- 'entrypoint',
51
- 'entrypoints',
52
- 'entry',
53
- 'point',
54
- 'important',
55
- 'look',
56
- 'first',
57
- 'tour',
58
- 'walk',
59
- 'through',
60
- 'new',
61
- 'onboard',
62
- 'onboarding',
63
- 'run',
64
- 'runs',
65
- 'start',
66
- 'app',
67
- 'command',
68
- 'commands',
69
- 'dev',
70
- 'server',
71
- 'local',
72
- 'locally',
73
- 'docker',
74
- 'compose',
75
- 'npm',
76
- 'script',
77
- 'scripts',
78
- 'test',
79
- 'tests',
80
- 'e2e',
81
- 'unit',
82
- 'integration',
83
- 'storybook',
84
- 'cypress',
85
- 'playwright',
86
- 'eslint',
87
- 'prettier',
88
- 'format',
89
- 'lint',
90
- 'typecheck',
91
- 'typechecking',
92
- 'verify',
93
- 'verification',
94
- 'proof',
95
- 'prove',
96
- 'checks',
97
- 'environment',
98
- 'environments',
99
- 'variable',
100
- 'variables',
101
- 'missing',
102
- 'required',
103
- 'feature',
104
- 'endpoint',
105
- 'button',
106
- 'put',
107
- 'need',
108
- 'change',
109
- 'files',
110
- 'add',
111
- 'implement',
112
- 'build',
113
- 'create',
114
- 'wire',
115
- 'route',
116
- 'component',
117
- 'page',
118
- 'screen',
119
- 'view',
120
- 'webhook',
121
- 'login',
122
- 'support',
123
- 'checkout',
124
- 'search',
125
- 'doc',
126
- 'docs',
127
- 'document',
128
- 'documentation',
129
- 'readme',
130
- 'examples',
131
- 'example',
132
- 'migration',
133
- 'migrations',
134
- 'migrate',
135
- 'migrates',
136
- 'database',
137
- 'db',
138
- 'schema',
139
- 'table',
140
- 'column',
141
- 'seed',
142
- 'seeds',
143
- 'reset',
144
- 'resets',
145
- 'guide',
146
- 'update',
147
- 'updating',
148
- ].includes(keyword))
149
- return 2;
150
- if (entry.tool === 'projscan_file' && keyword === 'read')
151
- return 3;
152
- if (entry.tool === 'projscan_file' && ['review', 'reviewer', 'reviewers'].includes(keyword))
153
- return 5;
154
- if (entry.tool === 'projscan_file' &&
155
- ['file', 'explain', 'inspect', 'owns', 'risk', 'risks', 'risky', 'dangerous'].includes(keyword))
156
- return 2;
157
- if (entry.tool === 'projscan_file' &&
158
- [
159
- 'last',
160
- 'touched',
161
- 'touch',
162
- 'changed',
163
- 'recently',
164
- 'history',
165
- 'author',
166
- 'authors',
167
- 'blame',
168
- ].includes(keyword))
169
- return 2;
170
- if (entry.tool === 'projscan_file' && ['add', 'write'].includes(keyword))
171
- return 2;
172
- if (entry.tool === 'projscan_file' &&
173
- ['coverage', 'covered', 'uncovered', 'test', 'tests'].includes(keyword))
174
- return 2;
175
- if (entry.tool === 'projscan_impact' && ['delete', 'remove'].includes(keyword))
176
- return 2;
177
- if (entry.tool === 'projscan_impact' &&
178
- ['drop', 'schema', 'table', 'column', 'database', 'db', 'migration', 'migrations'].includes(keyword))
179
- return 2;
180
- if (entry.tool === 'projscan_impact' &&
181
- ['revert', 'rollback', 'undo', 'backout', 'back', 'out', 'recover'].includes(keyword))
182
- return 2;
183
- if (entry.tool === 'projscan_impact' &&
184
- ['depends', 'used', 'usage', 'referenced', 'called'].includes(keyword))
185
- return 2;
186
- if (entry.tool === 'projscan_impact' &&
187
- [
188
- 'api',
189
- 'apis',
190
- 'endpoint',
191
- 'endpoints',
192
- 'client',
193
- 'clients',
194
- 'contract',
195
- 'contracts',
196
- 'deprecate',
197
- 'deprecates',
198
- 'deprecated',
199
- 'deprecation',
200
- 'compatibility',
201
- 'compatible',
202
- 'version',
203
- 'versions',
204
- ].includes(keyword))
205
- return 2;
206
- if (entry.tool === 'projscan_impact' && ['change', 'changes', 'changing'].includes(keyword))
207
- return 3;
208
- if (entry.tool === 'projscan_explain_issue' && keyword === 'explain')
209
- return 2;
210
- if (entry.tool === 'projscan_semantic_graph' &&
211
- [
212
- 'import',
213
- 'imports',
214
- 'importers',
215
- 'exports',
216
- 'defined',
217
- 'definition',
218
- 'uses',
219
- 'depend',
220
- 'depends',
221
- 'installed',
222
- ].includes(keyword))
223
- return 2;
224
- if (entry.tool === 'projscan_coupling') {
225
- if (['circular', 'cycle', 'cycles'].includes(keyword))
226
- return 3;
227
- if ([
228
- 'coupling',
229
- 'coupled',
230
- 'tightly',
231
- 'module',
232
- 'modules',
233
- 'dependency',
234
- 'dependencies',
235
- 'import',
236
- 'imports',
237
- 'fan',
238
- 'instability',
239
- 'architecture',
240
- 'boundary',
241
- 'boundaries',
242
- ].includes(keyword))
243
- return 2;
244
- }
245
- if (entry.tool === 'projscan_coverage' &&
246
- [
247
- 'coverage',
248
- 'untested',
249
- 'uncovered',
250
- 'scariest',
251
- 'gap',
252
- 'gaps',
253
- 'test',
254
- 'tests',
255
- 'file',
256
- 'files',
257
- 'no',
258
- 'missing',
259
- 'without',
260
- ].includes(keyword))
261
- return 2;
262
- if (entry.tool === 'projscan_dependencies' &&
263
- ['dependencies', 'dependency', 'deps', 'package', 'packages', 'inventory', 'declared'].includes(keyword))
264
- return 2;
265
- if (entry.tool === 'projscan_dependencies' &&
266
- [
267
- 'bundle',
268
- 'bundles',
269
- 'size',
270
- 'sizes',
271
- 'large',
272
- 'heavy',
273
- 'bloat',
274
- 'bloated',
275
- 'weight',
276
- 'footprint',
277
- 'reduce',
278
- 'slim',
279
- ].includes(keyword))
280
- return 2;
281
- if (entry.tool === 'projscan_dependencies' &&
282
- [
283
- 'license',
284
- 'licenses',
285
- 'gpl',
286
- 'copyleft',
287
- 'notice',
288
- 'notices',
289
- 'third',
290
- 'party',
291
- 'open',
292
- 'source',
293
- 'compliance',
294
- ].includes(keyword))
295
- return 2;
296
- if (entry.tool === 'projscan_workspaces' &&
297
- [
298
- 'workspace',
299
- 'workspaces',
300
- 'monorepo',
301
- 'package',
302
- 'packages',
303
- 'map',
304
- 'list',
305
- 'owns',
306
- 'contains',
307
- 'put',
308
- 'change',
309
- ].includes(keyword))
310
- return 2;
311
- if (entry.tool === 'projscan_upgrade' &&
312
- ['upgrade', 'bump', 'update', 'remove', 'drop', 'uninstall', 'package'].includes(keyword))
313
- return 2;
314
- if (entry.tool === 'projscan_audit') {
315
- if ([
316
- 'audit',
317
- 'cve',
318
- 'cves',
319
- 'vulnerable',
320
- 'vulnerability',
321
- 'vulnerabilities',
322
- 'security',
323
- 'secure',
324
- 'safe',
325
- ].includes(keyword))
326
- return 2;
327
- if (['dependency', 'dependencies', 'package', 'packages', 'npm'].includes(keyword))
328
- return 1;
329
- }
330
- if (entry.tool === 'projscan_dataflow' &&
331
- [
332
- 'dataflow',
333
- 'taint',
334
- 'security',
335
- 'injection',
336
- 'secret',
337
- 'secrets',
338
- 'expose',
339
- 'exposes',
340
- 'exposed',
341
- 'sanitize',
342
- 'sanitized',
343
- 'request',
344
- 'data',
345
- 'reach',
346
- 'reaches',
347
- 'exec',
348
- 'auth',
349
- 'bypass',
350
- 'pii',
351
- 'gdpr',
352
- 'compliance',
353
- 'personal',
354
- 'customer',
355
- 'email',
356
- 'emails',
357
- 'password',
358
- 'token',
359
- 'tokens',
360
- 'leak',
361
- 'leaks',
362
- 'logged',
363
- 'logging',
364
- 'log',
365
- 'logs',
366
- 'store',
367
- 'stores',
368
- 'retention',
369
- 'handled',
370
- 'handles',
371
- 'process',
372
- 'processes',
373
- 'processing',
374
- ].includes(keyword))
375
- return 2;
376
- if (entry.tool === 'projscan_search' &&
377
- [
378
- 'welcome',
379
- 'template',
380
- 'templates',
381
- 'copy',
382
- 'push',
383
- 'sms',
384
- 'verification',
385
- 'receipt',
386
- 'invoice',
387
- 'pdf',
388
- ].includes(keyword))
389
- return 2;
390
- if (entry.tool === 'projscan_search' &&
391
- [
392
- 'password',
393
- 'reset',
394
- 'invite',
395
- 'invites',
396
- 'onboarding',
397
- 'flow',
398
- 'flows',
399
- 'csv',
400
- 'export',
401
- 'exports',
402
- 'audit',
403
- 'entries',
404
- 'refund',
405
- 'handling',
406
- 'payments',
407
- 'subscription',
408
- 'renewal',
409
- 'users',
410
- 'creates',
411
- ].includes(keyword))
412
- return 2;
413
- if (entry.tool === 'projscan_search' &&
414
- [
415
- 'prisma',
416
- 'drizzle',
417
- 'typeorm',
418
- 'sequelize',
419
- 'sql',
420
- 'model',
421
- 'models',
422
- 'entity',
423
- 'entities',
424
- 'repository',
425
- 'repositories',
426
- 'dao',
427
- 'daos',
428
- 'saves',
429
- 'save',
430
- 'persist',
431
- 'persists',
432
- 'orders',
433
- ].includes(keyword))
434
- return 2;
435
- if (entry.tool === 'projscan_search' &&
436
- [
437
- 'docker',
438
- 'dockerfile',
439
- 'compose',
440
- 'containerfile',
441
- 'kubernetes',
442
- 'k8s',
443
- 'manifest',
444
- 'manifests',
445
- 'helm',
446
- 'chart',
447
- 'charts',
448
- 'terraform',
449
- 'tf',
450
- 'module',
451
- 'modules',
452
- 'cloudformation',
453
- 'cdk',
454
- 'pulumi',
455
- 'vercel',
456
- 'netlify',
457
- 'railway',
458
- 'fly',
459
- 'workflow',
460
- 'workflows',
461
- 'deploy',
462
- 'deploys',
463
- 'deployment',
464
- 'staging',
465
- 'production',
466
- ].includes(keyword))
467
- return 2;
468
- if (entry.tool === 'projscan_search' &&
469
- [
470
- 'openapi',
471
- 'swagger',
472
- 'trpc',
473
- 'grpc',
474
- 'protobuf',
475
- 'proto',
476
- 'protos',
477
- 'router',
478
- 'routers',
479
- 'resolver',
480
- 'resolvers',
481
- ].includes(keyword))
482
- return 2;
483
- if (entry.tool === 'projscan_search' &&
484
- [
485
- 'call',
486
- 'calls',
487
- 'called',
488
- 'client',
489
- 'clients',
490
- 'sdk',
491
- 'sdks',
492
- 'integration',
493
- 'integrations',
494
- 'stripe',
495
- 'sendgrid',
496
- 's3',
497
- 'github',
498
- 'graphql',
499
- 'websocket',
500
- 'websockets',
501
- 'socket',
502
- 'sockets',
503
- 'connection',
504
- 'connections',
505
- 'rest',
506
- 'http',
507
- 'fetch',
508
- 'axios',
509
- 'external',
510
- 'service',
511
- 'services',
512
- 'upload',
513
- 'uploads',
514
- 'uploaded',
515
- 'sent',
516
- 'opened',
517
- ].includes(keyword))
518
- return 2;
519
- if (entry.tool === 'projscan_search' &&
520
- [
521
- 'store',
522
- 'stores',
523
- 'stored',
524
- 'redux',
525
- 'slice',
526
- 'slices',
527
- 'selector',
528
- 'selectors',
529
- 'zustand',
530
- 'jotai',
531
- 'recoil',
532
- 'context',
533
- 'provider',
534
- 'providers',
535
- 'supplies',
536
- 'supplied',
537
- 'provides',
538
- 'provided',
539
- 'hook',
540
- 'hooks',
541
- 'react',
542
- 'query',
543
- 'queries',
544
- 'mutation',
545
- 'mutations',
546
- 'fetches',
547
- 'fetched',
548
- 'invoices',
549
- ].includes(keyword))
550
- return 2;
551
- if (entry.tool === 'projscan_search' &&
552
- [
553
- 'sidebar',
554
- 'nav',
555
- 'navigation',
556
- 'menu',
557
- 'item',
558
- 'items',
559
- 'breadcrumb',
560
- 'breadcrumbs',
561
- 'layout',
562
- 'next',
563
- 'js',
564
- 'title',
565
- 'metadata',
566
- 'meta',
567
- 'billing',
568
- 'settings',
569
- 'checkout',
570
- ].includes(keyword))
571
- return 2;
572
- if (entry.tool === 'projscan_search' &&
573
- [
574
- 'page',
575
- 'segment',
576
- 'segments',
577
- 'not',
578
- 'found',
579
- '404',
580
- 'render',
581
- 'renders',
582
- 'rendered',
583
- 'handled',
584
- 'route',
585
- 'routes',
586
- 'dashboard',
587
- ].includes(keyword))
588
- return 2;
589
- if (entry.tool === 'projscan_search' &&
590
- [
591
- 'design',
592
- 'token',
593
- 'tokens',
594
- 'tailwind',
595
- 'theme',
596
- 'themes',
597
- 'css',
598
- 'global',
599
- 'imported',
600
- 'style',
601
- 'styles',
602
- 'styled',
603
- 'class',
604
- 'classes',
605
- 'dark',
606
- 'mode',
607
- 'breakpoint',
608
- 'breakpoints',
609
- 'color',
610
- 'colors',
611
- ].includes(keyword))
612
- return 2;
613
- if (entry.tool === 'projscan_search' &&
614
- [
615
- 'form',
616
- 'forms',
617
- 'submit',
618
- 'submits',
619
- 'submitted',
620
- 'loading',
621
- 'state',
622
- 'empty',
623
- 'results',
624
- 'boundary',
625
- 'toast',
626
- 'notification',
627
- 'notifications',
628
- 'success',
629
- 'keyboard',
630
- 'shortcut',
631
- 'shortcuts',
632
- 'command',
633
- 'palette',
634
- 'action',
635
- 'actions',
636
- 'modal',
637
- 'opened',
638
- 'component',
639
- 'page',
640
- 'i18n',
641
- 'translation',
642
- 'translations',
643
- 'aria',
644
- 'label',
645
- 'button',
646
- 'buttons',
647
- 'focus',
648
- 'trap',
649
- ].includes(keyword))
650
- return 2;
651
- if (entry.tool === 'projscan_search' &&
652
- [
653
- 'check',
654
- 'checked',
655
- 'test',
656
- 'tests',
657
- 'spec',
658
- 'specs',
659
- 'cover',
660
- 'covers',
661
- 'covering',
662
- 'code',
663
- 'handles',
664
- 'handled',
665
- 'handler',
666
- 'contains',
667
- 'logic',
668
- 'implemented',
669
- 'configured',
670
- 'created',
671
- 'loaded',
672
- 'loader',
673
- 'parse',
674
- 'parses',
675
- 'middleware',
676
- 'api',
677
- 'apis',
678
- 'route',
679
- 'routes',
680
- 'endpoint',
681
- 'endpoints',
682
- 'feature',
683
- 'features',
684
- 'flag',
685
- 'flags',
686
- 'env',
687
- 'var',
688
- 'vars',
689
- 'variable',
690
- 'variables',
691
- 'process',
692
- 'processes',
693
- 'used',
694
- 'controls',
695
- 'control',
696
- 'error',
697
- 'errors',
698
- 'message',
699
- 'messages',
700
- 'throw',
701
- 'throws',
702
- 'thrown',
703
- 'log',
704
- 'logs',
705
- 'logged',
706
- 'logging',
707
- 'metric',
708
- 'metrics',
709
- 'prometheus',
710
- 'analytics',
711
- 'event',
712
- 'events',
713
- 'alert',
714
- 'alerts',
715
- 'sentry',
716
- 'datadog',
717
- 'dashboard',
718
- 'dashboards',
719
- 'emit',
720
- 'emits',
721
- 'emitted',
722
- 'send',
723
- 'sends',
724
- 'initialize',
725
- 'initialise',
726
- 'init',
727
- 'permission',
728
- 'permissions',
729
- 'role',
730
- 'roles',
731
- 'access',
732
- 'admin',
733
- 'guard',
734
- 'guards',
735
- 'authorization',
736
- 'authorize',
737
- 'authorized',
738
- 'policy',
739
- 'policies',
740
- 'rbac',
741
- 'require',
742
- 'requires',
743
- 'required',
744
- 'login',
745
- 'seed',
746
- 'seeds',
747
- 'data',
748
- 'fixture',
749
- 'fixtures',
750
- 'mock',
751
- 'mocks',
752
- 'factory',
753
- 'factories',
754
- 'storybook',
755
- 'story',
756
- 'stories',
757
- 'render',
758
- 'renders',
759
- 'background',
760
- 'job',
761
- 'jobs',
762
- 'cron',
763
- 'scheduled',
764
- 'schedule',
765
- 'scheduler',
766
- 'schedulers',
767
- 'worker',
768
- 'workers',
769
- 'queue',
770
- 'queues',
771
- 'processor',
772
- 'processors',
773
- 'task',
774
- 'tasks',
775
- 'defined',
776
- 'config',
777
- 'configuration',
778
- 'alias',
779
- 'aliases',
780
- 'define',
781
- 'defines',
782
- 'migration',
783
- 'migrations',
784
- 'generated',
785
- 'exist',
786
- 'exists',
787
- 'ran',
788
- 'file',
789
- 'files',
790
- 'show',
791
- 'owner',
792
- 'owners',
793
- 'ownership',
794
- 'owns',
795
- 'team',
796
- 'area',
797
- 'ask',
798
- 'help',
799
- 'knows',
800
- 'expert',
801
- 'experts',
802
- 'contact',
803
- 'contacts',
804
- 'doc',
805
- 'docs',
806
- 'document',
807
- 'documentation',
808
- 'documented',
809
- 'readme',
810
- 'examples',
811
- 'example',
812
- 'guide',
813
- ].includes(keyword))
814
- return 2;
815
- if (entry.tool === 'projscan_search' &&
816
- [
817
- 'tsconfig',
818
- 'typescript',
819
- 'vite',
820
- 'vitest',
821
- 'jest',
822
- 'babel',
823
- 'webpack',
824
- 'pnpm',
825
- 'yarn',
826
- 'npm',
827
- 'package',
828
- 'manager',
829
- 'workspace',
830
- 'workspaces',
831
- 'lockfile',
832
- 'lockfiles',
833
- 'path',
834
- 'paths',
835
- ].includes(keyword))
836
- return 2;
837
- if (entry.tool === 'projscan_regression_plan' &&
838
- ['warn', 'warning', 'warnings', 'allow', 'approve'].includes(keyword))
839
- return 4;
840
- if (entry.tool === 'projscan_regression_plan' &&
841
- [
842
- 'port',
843
- 'ports',
844
- 'eaddrinuse',
845
- 'listen',
846
- 'address',
847
- 'permission',
848
- 'denied',
849
- 'enoent',
850
- 'eresolve',
851
- 'peer',
852
- ].includes(keyword))
853
- return 3;
854
- if (entry.tool === 'projscan_regression_plan' &&
855
- [
856
- 'github',
857
- 'action',
858
- 'actions',
859
- 'workflow',
860
- 'workflows',
861
- 'pipeline',
862
- 'pipelines',
863
- 'job',
864
- 'jobs',
865
- 'fail',
866
- 'build',
867
- 'builds',
868
- 'lint',
869
- 'typecheck',
870
- 'typechecking',
871
- 'install',
872
- 'failed',
873
- 'error',
874
- 'errors',
875
- 'warn',
876
- 'warning',
877
- 'warnings',
878
- 'failure',
879
- 'failures',
880
- 'debug',
881
- 'stack',
882
- 'trace',
883
- 'production',
884
- 'prod',
885
- 'down',
886
- 'outage',
887
- 'incident',
888
- 'triage',
889
- 'runtime',
890
- 'crash',
891
- 'crashes',
892
- 'crashing',
893
- 'connection',
894
- 'refused',
895
- 'root',
896
- 'cause',
897
- 'returning',
898
- 'returns',
899
- 'log',
900
- 'logs',
901
- '500',
902
- '502',
903
- '503',
904
- '504',
905
- '404',
906
- '403',
907
- '401',
908
- 'proof',
909
- 'prove',
910
- 'regression',
911
- 'verification',
912
- 'verify',
913
- 'smoke',
914
- 'focused',
915
- 'full',
916
- 'test',
917
- 'tests',
918
- 'slow',
919
- 'slower',
920
- 'speed',
921
- 'speedup',
922
- 'faster',
923
- 'benchmark',
924
- 'benchmarks',
925
- 'reproduce',
926
- 'reproduces',
927
- 'reproducing',
928
- 'flake',
929
- 'flaky',
930
- 'flakes',
931
- 'intermittent',
932
- 'intermittently',
933
- 'nondeterministic',
934
- 'nondeterminism',
935
- 'race',
936
- 'condition',
937
- 'stabilize',
938
- 'stabilise',
939
- 'quarantine',
940
- ].includes(keyword))
941
- return 2;
942
- if (entry.tool === 'projscan_regression_plan' &&
943
- ['agentflight', 'agentloop', 'agentloopkit', 'harness'].includes(keyword))
944
- return 4;
945
- if (entry.tool === 'projscan_agent_brief' && ['brief', 'handoff', 'agent'].includes(keyword))
946
- return 2;
947
- if (entry.tool === 'projscan_session' &&
948
- [
949
- 'session',
950
- 'touched',
951
- 'touch',
952
- 'resume',
953
- 'leave',
954
- 'left',
955
- 'off',
956
- 'agent',
957
- 'asleep',
958
- 'slept',
959
- 'away',
960
- 'offline',
961
- 'changed',
962
- 'events',
963
- 'history',
964
- ].includes(keyword))
965
- return 2;
966
- if (entry.tool === 'projscan_quality_scorecard' &&
967
- ['quality', 'scorecard', 'risk', 'risks', 'risky', 'picture'].includes(keyword))
968
- return 2;
969
- if (entry.tool === 'projscan_hotspots' &&
970
- [
971
- 'files',
972
- 'file',
973
- 'touch',
974
- 'complexity',
975
- 'complex',
976
- 'refactor',
977
- 'refactoring',
978
- 'simplify',
979
- 'simplification',
980
- 'tech',
981
- 'debt',
982
- 'duplicate',
983
- 'duplicated',
984
- 'duplication',
985
- 'over',
986
- 'engineered',
987
- 'performance',
988
- 'perf',
989
- 'bottleneck',
990
- 'bottlenecks',
991
- 'optimize',
992
- 'optimise',
993
- 'faster',
994
- 'slow',
995
- ].includes(keyword))
996
- return 2;
997
- if (entry.tool === 'projscan_coordinate' &&
998
- [
999
- 'who',
1000
- 'else',
1001
- 'working',
1002
- 'editing',
1003
- 'coordinate',
1004
- 'coordination',
1005
- 'status',
1006
- 'readiness',
1007
- 'parallel',
1008
- 'agents',
1009
- 'agent',
1010
- 'collide',
1011
- 'colliding',
1012
- 'swarm',
1013
- 'conflict',
1014
- 'conflicts',
1015
- 'conflicting',
1016
- 'conflicted',
1017
- 'active',
1018
- ].includes(keyword))
1019
- return 2;
1020
- if (entry.tool === 'projscan_preflight' && keyword === 'ready')
1021
- return 2;
1022
- if (entry.tool === 'projscan_preflight' &&
1023
- ['block', 'blocked', 'blocker', 'blockers', 'blocking'].includes(keyword))
1024
- return 2;
1025
- if (entry.tool === 'projscan_preflight' && ['risk', 'risks'].includes(keyword))
1026
- return 2;
1027
- if (entry.tool === 'projscan_preflight' &&
1028
- [
1029
- 'rebase',
1030
- 'rebasing',
1031
- 'conflict',
1032
- 'conflicts',
1033
- 'resolve',
1034
- 'resolving',
1035
- 'wrong',
1036
- 'stuck',
1037
- ].includes(keyword))
1038
- return 2;
1039
- if (entry.tool === 'projscan_claim') {
1040
- if (keyword === 'active')
1041
- return 0.5;
1042
- if (['claim', 'claims', 'lease', 'leases', 'reserve', 'lock'].includes(keyword))
1043
- return 2;
1044
- }
1045
- if (entry.tool === 'projscan_analyze') {
1046
- if (['redact', 'redacted', 'redaction', 'scoped', 'scope'].includes(keyword))
1047
- return 3;
1048
- if ([
1049
- 'share',
1050
- 'shared',
1051
- 'shareable',
1052
- 'sharing',
1053
- 'evidence',
1054
- 'artifact',
1055
- 'artifacts',
1056
- 'export',
1057
- 'exports',
1058
- 'external',
1059
- 'partner',
1060
- 'vendor',
1061
- 'security',
1062
- 'paths',
1063
- 'report',
1064
- 'reports',
1065
- ].includes(keyword))
1066
- return 2;
1067
- }
1068
- if (entry.tool === 'projscan_evidence_pack') {
1069
- if (keyword === 'pr')
1070
- return 0.25;
1071
- if (['changed', 'file', 'files'].includes(keyword))
1072
- return 1;
1073
- if ([
1074
- 'evidence',
1075
- 'proof',
1076
- 'approval',
1077
- 'approve',
1078
- 'comment',
1079
- 'summarize',
1080
- 'changes',
1081
- 'description',
1082
- 'draft',
1083
- 'say',
1084
- 'checklist',
1085
- 'tell',
1086
- 'team',
1087
- 'change',
1088
- 'share',
1089
- 'reviewer',
1090
- 'reviewers',
1091
- 'summary',
1092
- 'packet',
1093
- 'paste',
1094
- 'who',
1095
- 'review',
1096
- 'ready',
1097
- 'open',
1098
- 'opening',
1099
- 'before',
1100
- 'prepare',
1101
- 'owner',
1102
- 'owners',
1103
- 'owns',
1104
- 'routing',
1105
- ].includes(keyword))
1106
- return 2;
1107
- }
1108
- if (entry.tool === 'projscan_doctor') {
1109
- if (keyword === 'unused')
1110
- return 3;
1111
- if (['dead', 'orphaned'].includes(keyword))
1112
- return 2;
1113
- if (['delete', 'remove'].includes(keyword))
1114
- return 2;
1115
- if (['safe', 'safely'].includes(keyword))
1116
- return 1;
1117
- }
1118
- if (entry.tool === 'projscan_review' && keyword === 'review')
1119
- return 2;
1120
- if (entry.tool === 'projscan_review' && keyword === 'pr')
1121
- return 0.25;
1122
- if (entry.tool === 'projscan_review' && ['secure', 'security'].includes(keyword))
1123
- return 2;
1124
- if (entry.tool === 'projscan_review' && ['risk', 'risks', 'risky'].includes(keyword))
1125
- return 2;
1126
- if (entry.tool === 'projscan_regression_plan' && keyword === 'pr')
1127
- return 0.25;
1128
- if (entry.tool === 'projscan_pr_diff') {
1129
- if (keyword === 'pr')
1130
- return 0.25;
1131
- if (['since', 'branch', 'main', 'base', 'head'].includes(keyword))
1132
- return 0.5;
1133
- if ([
1134
- 'commit',
1135
- 'message',
1136
- 'summarize',
1137
- 'summary',
1138
- 'diff',
1139
- 'changed',
1140
- 'changes',
1141
- 'change',
1142
- 'compare',
1143
- 'stale',
1144
- 'branched',
1145
- 'behind',
1146
- 'ahead',
1147
- 'sync',
1148
- 'synced',
1149
- 'large',
1150
- 'big',
1151
- 'size',
1152
- 'sizes',
1153
- 'exports',
1154
- 'imports',
1155
- 'calls',
1156
- 'callers',
1157
- ].includes(keyword))
1158
- return 2;
1159
- }
1160
- if (entry.tool === 'projscan_collision' && ['overlapping'].includes(keyword))
1161
- return 3;
1162
- if (entry.tool === 'projscan_collision' && ['collide', 'colliding'].includes(keyword))
1163
- return 2;
1164
- if (entry.tool === 'projscan_merge_risk' && keyword === 'first')
1165
- return 1;
1166
- if (entry.tool === 'projscan_release_train') {
1167
- if (keyword === 'releasing')
1168
- return 2;
1169
- if (['deploy', 'deploying', 'deployed', 'deployment'].includes(keyword))
1170
- return 2;
1171
- if ([
1172
- 'build',
1173
- 'next',
1174
- 'roadmap',
1175
- 'plan',
1176
- 'product',
1177
- 'products',
1178
- 'feature',
1179
- 'features',
1180
- 'workstream',
1181
- 'workstreams',
1182
- ].includes(keyword))
1183
- return 2;
1184
- if (['changed', 'since', 'last'].includes(keyword))
1185
- return 2;
1186
- if (['changelog', 'note', 'notes', 'entry', 'summarize', 'summary'].includes(keyword))
1187
- return 2;
1188
- }
1189
- if (entry.tool === 'projscan_bug_hunt') {
1190
- if ([
1191
- 'bug',
1192
- 'bugs',
1193
- 'hunt',
1194
- 'defect',
1195
- 'broken',
1196
- 'first',
1197
- 'fastest',
1198
- 'quickest',
1199
- 'quick',
1200
- 'smallest',
1201
- 'small',
1202
- 'low',
1203
- 'lowest',
1204
- 'improve',
1205
- 'improvement',
1206
- 'useful',
1207
- 'easy',
1208
- 'beginner',
1209
- 'starter',
1210
- 'intern',
1211
- 'interns',
1212
- 'task',
1213
- 'tasks',
1214
- 'five',
1215
- 'minutes',
1216
- 'today',
1217
- 'win',
1218
- 'wins',
1219
- ].includes(keyword))
1220
- return 2;
1221
- if (['find', 'fix', 'pr'].includes(keyword))
1222
- return 0.25;
1223
- }
11
+ const trustFeedbackWeight = trustFeedbackKeywordWeight(entry.tool, keyword);
12
+ if (trustFeedbackWeight !== undefined)
13
+ return trustFeedbackWeight;
14
+ const fileImpactWeight = fileImpactKeywordWeight(entry.tool, keyword);
15
+ if (fileImpactWeight !== undefined)
16
+ return fileImpactWeight;
17
+ const architectureWeight = architectureKeywordWeight(entry.tool, keyword);
18
+ if (architectureWeight !== undefined)
19
+ return architectureWeight;
20
+ const dependencyWeight = dependencyKeywordWeight(entry.tool, keyword);
21
+ if (dependencyWeight !== undefined)
22
+ return dependencyWeight;
23
+ const securityWeight = securityKeywordWeight(entry.tool, keyword);
24
+ if (securityWeight !== undefined)
25
+ return securityWeight;
26
+ if (entry.tool === 'projscan_search') {
27
+ const weight = searchKeywordWeight(keyword);
28
+ if (weight !== undefined)
29
+ return weight;
30
+ }
31
+ if (entry.tool === 'projscan_regression_plan') {
32
+ const weight = regressionPlanKeywordWeight(keyword);
33
+ if (weight !== undefined)
34
+ return weight;
35
+ }
36
+ const workflowWeight = workflowKeywordWeight(entry.tool, keyword);
37
+ if (workflowWeight !== undefined)
38
+ return workflowWeight;
39
+ const operationalWeight = operationalKeywordWeight(entry.tool, keyword);
40
+ if (operationalWeight !== undefined)
41
+ return operationalWeight;
1224
42
  return 1;
1225
43
  }
1226
44
  //# sourceMappingURL=intentRouterKeywordWeights.js.map