projscan 4.6.0 → 4.7.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 (176) hide show
  1. package/README.md +24 -11
  2. package/dist/cli/_shared.js +12 -44
  3. package/dist/cli/_shared.js.map +1 -1
  4. package/dist/cli/changedOnly.d.ts +16 -0
  5. package/dist/cli/changedOnly.js +28 -0
  6. package/dist/cli/changedOnly.js.map +1 -0
  7. package/dist/cli/formatOptions.d.ts +4 -0
  8. package/dist/cli/formatOptions.js +30 -0
  9. package/dist/cli/formatOptions.js.map +1 -0
  10. package/dist/core/agentBrief.js +6 -1
  11. package/dist/core/agentBrief.js.map +1 -1
  12. package/dist/core/astBodySignals.js +2 -3
  13. package/dist/core/astBodySignals.js.map +1 -1
  14. package/dist/core/astMembers.d.ts +1 -0
  15. package/dist/core/astMembers.js +38 -9
  16. package/dist/core/astMembers.js.map +1 -1
  17. package/dist/core/bugHunt.js +2 -142
  18. package/dist/core/bugHunt.js.map +1 -1
  19. package/dist/core/bugHuntHotspotFindings.d.ts +2 -0
  20. package/dist/core/bugHuntHotspotFindings.js +68 -0
  21. package/dist/core/bugHuntHotspotFindings.js.map +1 -0
  22. package/dist/core/bugHuntPreflightFindings.d.ts +3 -0
  23. package/dist/core/bugHuntPreflightFindings.js +115 -0
  24. package/dist/core/bugHuntPreflightFindings.js.map +1 -0
  25. package/dist/core/codeGraph.d.ts +1 -8
  26. package/dist/core/codeGraph.js +4 -30
  27. package/dist/core/codeGraph.js.map +1 -1
  28. package/dist/core/codeGraphFileSelection.d.ts +7 -0
  29. package/dist/core/codeGraphFileSelection.js +19 -0
  30. package/dist/core/codeGraphFileSelection.js.map +1 -0
  31. package/dist/core/codeGraphQueries.d.ts +9 -0
  32. package/dist/core/codeGraphQueries.js +25 -0
  33. package/dist/core/codeGraphQueries.js.map +1 -0
  34. package/dist/core/dataflow.js +3 -338
  35. package/dist/core/dataflow.js.map +1 -1
  36. package/dist/core/dataflowDatabaseSinks.d.ts +8 -0
  37. package/dist/core/dataflowDatabaseSinks.js +78 -0
  38. package/dist/core/dataflowDatabaseSinks.js.map +1 -0
  39. package/dist/core/dataflowRiskAssembly.d.ts +11 -0
  40. package/dist/core/dataflowRiskAssembly.js +117 -0
  41. package/dist/core/dataflowRiskAssembly.js.map +1 -0
  42. package/dist/core/dataflowTraversal.d.ts +25 -0
  43. package/dist/core/dataflowTraversal.js +200 -0
  44. package/dist/core/dataflowTraversal.js.map +1 -0
  45. package/dist/core/fileInspectionReport.d.ts +13 -0
  46. package/dist/core/fileInspectionReport.js +49 -0
  47. package/dist/core/fileInspectionReport.js.map +1 -0
  48. package/dist/core/fileInspector.d.ts +3 -11
  49. package/dist/core/fileInspector.js +2 -46
  50. package/dist/core/fileInspector.js.map +1 -1
  51. package/dist/core/fixSuggest.d.ts +1 -9
  52. package/dist/core/fixSuggest.js +2 -58
  53. package/dist/core/fixSuggest.js.map +1 -1
  54. package/dist/core/fixSuggestDependencyNames.d.ts +1 -0
  55. package/dist/core/fixSuggestDependencyNames.js +9 -0
  56. package/dist/core/fixSuggestDependencyNames.js.map +1 -0
  57. package/dist/core/fixSuggestPreview.d.ts +10 -0
  58. package/dist/core/fixSuggestPreview.js +87 -0
  59. package/dist/core/fixSuggestPreview.js.map +1 -0
  60. package/dist/core/frameworkHonoSources.js +7 -0
  61. package/dist/core/frameworkHonoSources.js.map +1 -1
  62. package/dist/core/frameworkNextRouteSources.d.ts +6 -1
  63. package/dist/core/frameworkNextRouteSources.js +31 -1
  64. package/dist/core/frameworkNextRouteSources.js.map +1 -1
  65. package/dist/core/frameworkRemixSources.d.ts +2 -0
  66. package/dist/core/frameworkRemixSources.js +63 -0
  67. package/dist/core/frameworkRemixSources.js.map +1 -0
  68. package/dist/core/frameworkSources.d.ts +15 -3
  69. package/dist/core/frameworkSources.js +41 -10
  70. package/dist/core/frameworkSources.js.map +1 -1
  71. package/dist/core/intentRouter.d.ts +4 -14
  72. package/dist/core/intentRouter.js +4 -29
  73. package/dist/core/intentRouter.js.map +1 -1
  74. package/dist/core/intentRouterCatalog.js +17 -0
  75. package/dist/core/intentRouterCatalog.js.map +1 -1
  76. package/dist/core/intentRouterKeywordWeights.js +13 -0
  77. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  78. package/dist/core/intentRouterReleaseSignals.js +119 -39
  79. package/dist/core/intentRouterReleaseSignals.js.map +1 -1
  80. package/dist/core/intentRouterResult.d.ts +16 -0
  81. package/dist/core/intentRouterResult.js +34 -0
  82. package/dist/core/intentRouterResult.js.map +1 -0
  83. package/dist/core/intentRouterWorkSignals.js +18 -0
  84. package/dist/core/intentRouterWorkSignals.js.map +1 -1
  85. package/dist/core/languages/pythonLockfiles.d.ts +4 -0
  86. package/dist/core/languages/pythonLockfiles.js +6 -2
  87. package/dist/core/languages/pythonLockfiles.js.map +1 -1
  88. package/dist/core/languages/pythonManifests.js +5 -5
  89. package/dist/core/languages/pythonManifests.js.map +1 -1
  90. package/dist/core/languages/pythonProjectEvidence.js +1 -1
  91. package/dist/core/languages/pythonProjectEvidence.js.map +1 -1
  92. package/dist/core/languages/pythonRequirements.js +144 -18
  93. package/dist/core/languages/pythonRequirements.js.map +1 -1
  94. package/dist/core/pluginManifestValidation.d.ts +41 -0
  95. package/dist/core/pluginManifestValidation.js +179 -0
  96. package/dist/core/pluginManifestValidation.js.map +1 -0
  97. package/dist/core/plugins.d.ts +3 -41
  98. package/dist/core/plugins.js +2 -129
  99. package/dist/core/plugins.js.map +1 -1
  100. package/dist/core/regressionPlan.d.ts +2 -1
  101. package/dist/core/regressionPlan.js +7 -1
  102. package/dist/core/regressionPlan.js.map +1 -1
  103. package/dist/core/releaseEvidence.js +6 -120
  104. package/dist/core/releaseEvidence.js.map +1 -1
  105. package/dist/core/releaseEvidenceArtifacts.d.ts +3 -0
  106. package/dist/core/releaseEvidenceArtifacts.js +65 -0
  107. package/dist/core/releaseEvidenceArtifacts.js.map +1 -0
  108. package/dist/core/releaseEvidenceVerdict.d.ts +6 -0
  109. package/dist/core/releaseEvidenceVerdict.js +54 -0
  110. package/dist/core/releaseEvidenceVerdict.js.map +1 -0
  111. package/dist/core/reportPathRedaction.d.ts +4 -0
  112. package/dist/core/reportPathRedaction.js +64 -0
  113. package/dist/core/reportPathRedaction.js.map +1 -0
  114. package/dist/core/reportScope.js +2 -163
  115. package/dist/core/reportScope.js.map +1 -1
  116. package/dist/core/reportScopeFiltering.d.ts +9 -0
  117. package/dist/core/reportScopeFiltering.js +102 -0
  118. package/dist/core/reportScopeFiltering.js.map +1 -0
  119. package/dist/core/searchIndex.d.ts +2 -14
  120. package/dist/core/searchIndex.js +4 -227
  121. package/dist/core/searchIndex.js.map +1 -1
  122. package/dist/core/searchIndexFiles.d.ts +1 -0
  123. package/dist/core/searchIndexFiles.js +26 -0
  124. package/dist/core/searchIndexFiles.js.map +1 -0
  125. package/dist/core/searchIndexText.d.ts +15 -0
  126. package/dist/core/searchIndexText.js +204 -0
  127. package/dist/core/searchIndexText.js.map +1 -0
  128. package/dist/core/start.js +5 -46
  129. package/dist/core/start.js.map +1 -1
  130. package/dist/core/startEvidence.d.ts +1 -1
  131. package/dist/core/startEvidence.js +16 -1
  132. package/dist/core/startEvidence.js.map +1 -1
  133. package/dist/core/startInputs.d.ts +1 -0
  134. package/dist/core/startInputs.js +4 -1
  135. package/dist/core/startInputs.js.map +1 -1
  136. package/dist/core/startMissionPolicy.js +10 -0
  137. package/dist/core/startMissionPolicy.js.map +1 -1
  138. package/dist/core/startReportBuilder.d.ts +1 -0
  139. package/dist/core/startReportBuilder.js +1 -0
  140. package/dist/core/startReportBuilder.js.map +1 -1
  141. package/dist/core/startReportContext.d.ts +23 -0
  142. package/dist/core/startReportContext.js +51 -0
  143. package/dist/core/startReportContext.js.map +1 -0
  144. package/dist/core/startRoadmapPreview.d.ts +2 -0
  145. package/dist/core/startRoadmapPreview.js +31 -0
  146. package/dist/core/startRoadmapPreview.js.map +1 -0
  147. package/dist/core/taint.d.ts +2 -67
  148. package/dist/core/taint.js +41 -164
  149. package/dist/core/taint.js.map +1 -1
  150. package/dist/core/taintIndex.d.ts +20 -0
  151. package/dist/core/taintIndex.js +81 -0
  152. package/dist/core/taintIndex.js.map +1 -0
  153. package/dist/core/taintTraversal.d.ts +8 -0
  154. package/dist/core/taintTraversal.js +113 -0
  155. package/dist/core/taintTraversal.js.map +1 -0
  156. package/dist/core/taintTypes.d.ts +67 -0
  157. package/dist/core/taintTypes.js +2 -0
  158. package/dist/core/taintTypes.js.map +1 -0
  159. package/dist/core/telemetry.js +36 -30
  160. package/dist/core/telemetry.js.map +1 -1
  161. package/dist/core/upgradePreviewPython.js +1 -1
  162. package/dist/core/upgradePreviewPython.js.map +1 -1
  163. package/dist/mcp/tools.js +11 -12
  164. package/dist/mcp/tools.js.map +1 -1
  165. package/dist/projscan-sbom.cdx.json +6 -6
  166. package/dist/reporters/consoleFixReporter.d.ts +3 -0
  167. package/dist/reporters/consoleFixReporter.js +41 -0
  168. package/dist/reporters/consoleFixReporter.js.map +1 -0
  169. package/dist/reporters/consoleReporter.d.ts +1 -3
  170. package/dist/reporters/consoleReporter.js +1 -42
  171. package/dist/reporters/consoleReporter.js.map +1 -1
  172. package/dist/tool-manifest.json +2 -2
  173. package/dist/types/start.d.ts +14 -0
  174. package/docs/GUIDE.md +1 -1
  175. package/docs/ROADMAP.md +16 -5
  176. package/package.json +1 -1
@@ -1,6 +1,9 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
+ import { isSearchIndexableFile } from './searchIndexFiles.js';
4
+ import { countHits, expandQuery, tokenize } from './searchIndexText.js';
3
5
  import { mapWithConcurrency, DEFAULT_FILE_IO_CONCURRENCY } from '../utils/concurrency.js';
6
+ export { expandQuery, tokenize };
4
7
  /**
5
8
  * Lightweight BM25-ranked inverted index over source files.
6
9
  *
@@ -16,138 +19,10 @@ import { mapWithConcurrency, DEFAULT_FILE_IO_CONCURRENCY } from '../utils/concur
16
19
  * zero-dependency and fast enough for sub-second queries on 10k-file repos.
17
20
  */
18
21
  const MAX_FILE_SIZE = 512 * 1024;
19
- const STOPWORDS = new Set([
20
- 'the',
21
- 'a',
22
- 'an',
23
- 'and',
24
- 'or',
25
- 'not',
26
- 'of',
27
- 'to',
28
- 'in',
29
- 'is',
30
- 'it',
31
- 'for',
32
- 'on',
33
- 'with',
34
- 'this',
35
- 'that',
36
- 'by',
37
- 'as',
38
- 'at',
39
- 'be',
40
- 'are',
41
- 'was',
42
- 'were',
43
- 'has',
44
- 'have',
45
- 'had',
46
- ]);
47
- const TS_KEYWORDS = new Set([
48
- 'const',
49
- 'let',
50
- 'var',
51
- 'function',
52
- 'return',
53
- 'if',
54
- 'else',
55
- 'while',
56
- 'for',
57
- 'do',
58
- 'break',
59
- 'continue',
60
- 'switch',
61
- 'case',
62
- 'default',
63
- 'new',
64
- 'class',
65
- 'extends',
66
- 'implements',
67
- 'interface',
68
- 'type',
69
- 'enum',
70
- 'public',
71
- 'private',
72
- 'protected',
73
- 'static',
74
- 'readonly',
75
- 'async',
76
- 'await',
77
- 'try',
78
- 'catch',
79
- 'finally',
80
- 'throw',
81
- 'import',
82
- 'export',
83
- 'from',
84
- 'as',
85
- 'typeof',
86
- 'instanceof',
87
- 'void',
88
- 'null',
89
- 'undefined',
90
- 'true',
91
- 'false',
92
- 'this',
93
- 'super',
94
- 'yield',
95
- 'delete',
96
- 'in',
97
- 'of',
98
- 'any',
99
- 'never',
100
- 'unknown',
101
- 'string',
102
- 'number',
103
- 'boolean',
104
- 'object',
105
- 'symbol',
106
- 'bigint',
107
- ]);
108
- const PY_KEYWORDS = new Set([
109
- 'def',
110
- 'class',
111
- 'self',
112
- 'cls',
113
- 'lambda',
114
- 'yield',
115
- 'pass',
116
- 'elif',
117
- 'none',
118
- 'true',
119
- 'false',
120
- 'and',
121
- 'or',
122
- 'not',
123
- 'is',
124
- 'in',
125
- 'import',
126
- 'from',
127
- 'as',
128
- 'with',
129
- 'try',
130
- 'except',
131
- 'finally',
132
- 'raise',
133
- 'assert',
134
- 'global',
135
- 'nonlocal',
136
- 'del',
137
- 'async',
138
- 'await',
139
- 'return',
140
- 'if',
141
- 'else',
142
- 'for',
143
- 'while',
144
- 'break',
145
- 'continue',
146
- ]);
147
22
  export async function buildSearchIndex(rootPath, files, graph) {
148
23
  const indexed = new Map();
149
24
  const postings = new Map();
150
- const parseable = files.filter((f) => f.sizeBytes <= MAX_FILE_SIZE && isIndexable(f.relativePath));
25
+ const parseable = files.filter((f) => f.sizeBytes <= MAX_FILE_SIZE && isSearchIndexableFile(f.relativePath));
151
26
  // Bounded concurrency on file reads — avoids tripping the OS open-files
152
27
  // ulimit on large repos. See utils/concurrency.ts for the rationale.
153
28
  await mapWithConcurrency(parseable, DEFAULT_FILE_IO_CONCURRENCY, async (file) => {
@@ -286,102 +161,4 @@ export async function attachExcerpts(rootPath, hits, queryTokens) {
286
161
  return hit;
287
162
  });
288
163
  }
289
- /**
290
- * Tokenize a string for indexing/querying:
291
- * - lowercase
292
- * - split on non-identifier chars
293
- * - split camelCase and snake_case
294
- * - drop tokens shorter than 2 chars, stopwords, TS keywords
295
- * - apply basic stem (drop trailing s / ing / ed)
296
- */
297
- export function tokenize(input) {
298
- const out = [];
299
- // Split on non-identifier boundaries. Keep original case so we can also
300
- // split on camelCase boundaries below.
301
- const rawTokens = input.match(/[A-Za-z0-9_]+/g) ?? [];
302
- for (const raw of rawTokens) {
303
- // Split on underscore and camelCase. camelCase: insert a boundary before
304
- // each uppercase that follows a lowercase or digit (OR before runs of
305
- // uppercase followed by lowercase to handle acronyms like "XMLParser").
306
- const camelSplit = raw
307
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
308
- .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
309
- const parts = camelSplit.split(/[_\s]+/).filter(Boolean);
310
- for (const part of parts) {
311
- // Split embedded digits from letters - e.g. "v1api" → "v", "1", "api"
312
- const subparts = part.split(/(\d+)/).filter(Boolean);
313
- for (const sp of subparts) {
314
- const lower = sp.toLowerCase();
315
- const stemmed = stem(lower);
316
- if (!keepToken(stemmed))
317
- continue;
318
- out.push(stemmed);
319
- }
320
- }
321
- }
322
- return out;
323
- }
324
- /**
325
- * Expand a user query into a set of candidate tokens. Same rules as tokenize
326
- * plus: if the raw query has no hits, try progressively looser tokenization.
327
- */
328
- export function expandQuery(query) {
329
- const tokens = tokenize(query);
330
- return [...new Set(tokens)];
331
- }
332
- function stem(token) {
333
- if (token.length <= 3)
334
- return token;
335
- if (token.endsWith('ing'))
336
- return token.slice(0, -3);
337
- if (token.endsWith('ed') && token.length > 4)
338
- return token.slice(0, -2);
339
- if (token.endsWith('es') && token.length > 4)
340
- return token.slice(0, -2);
341
- if (token.endsWith('s') && !token.endsWith('ss'))
342
- return token.slice(0, -1);
343
- return token;
344
- }
345
- function keepToken(token) {
346
- if (token.length < 2)
347
- return false;
348
- if (STOPWORDS.has(token))
349
- return false;
350
- if (TS_KEYWORDS.has(token))
351
- return false;
352
- if (PY_KEYWORDS.has(token))
353
- return false;
354
- return true;
355
- }
356
- function countHits(tokens, query) {
357
- let count = 0;
358
- const set = new Set(tokens);
359
- for (const q of query)
360
- if (set.has(q))
361
- count++;
362
- return count;
363
- }
364
- function isIndexable(relativePath) {
365
- const ext = path.extname(relativePath).toLowerCase();
366
- // Index source and markup/docs where it's likely useful
367
- return (ext === '.ts' ||
368
- ext === '.tsx' ||
369
- ext === '.js' ||
370
- ext === '.jsx' ||
371
- ext === '.mjs' ||
372
- ext === '.cjs' ||
373
- ext === '.mts' ||
374
- ext === '.cts' ||
375
- ext === '.py' ||
376
- ext === '.go' ||
377
- ext === '.rb' ||
378
- ext === '.java' ||
379
- ext === '.rs' ||
380
- ext === '.php' ||
381
- ext === '.cs' ||
382
- ext === '.swift' ||
383
- ext === '.kt' ||
384
- ext === '.md' ||
385
- ext === '.mdx');
386
- }
387
164
  //# sourceMappingURL=searchIndex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchIndex.js","sourceRoot":"","sources":["../../src/core/searchIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchIndex.js","sourceRoot":"","sources":["../../src/core/searchIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AAEH,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;AAyCjC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,KAAkB,EAClB,KAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAExD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,aAAa,IAAI,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAC7E,CAAC;IAEF,wEAAwE;IACxE,qEAAqE;IACrE,MAAM,kBAAkB,CAAC,SAAS,EAAE,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,YAAY;YACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7E,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CACrB,CAAC;QAEF,MAAM,KAAK,GAAgB;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU;YACV,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEtC,qCAAqC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACrD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO;QACL,KAAK,EAAE,OAAO;QACd,QAAQ;QACR,YAAY;QACZ,QAAQ,EAAE,OAAO,CAAC,IAAI;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,KAAkB,EAClB,KAAa,EACb,UAAyB,EAAE;IAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAE7C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,kBAAkB;IAClB,MAAM,EAAE,GAAG,GAAG,CAAC;IACf,MAAM,CAAC,GAAG,IAAI,CAAC;IAEf,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE1E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAEnE,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;YAExB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;gBACvB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,UAAU,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;YAC7E,OAAO,CAAC,KAAK,IAAI,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;YACnE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBAChE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,gCAAgC;IAChC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE7F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACrC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;YACzC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,WAAW;YACX,SAAS;YACT,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,IAAiB,EACjB,WAAqB;IAErB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,gEAAgE;IAChE,OAAO,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function isSearchIndexableFile(relativePath: string): boolean;
@@ -0,0 +1,26 @@
1
+ import path from 'node:path';
2
+ const SEARCH_INDEXABLE_EXTENSIONS = new Set([
3
+ '.ts',
4
+ '.tsx',
5
+ '.js',
6
+ '.jsx',
7
+ '.mjs',
8
+ '.cjs',
9
+ '.mts',
10
+ '.cts',
11
+ '.py',
12
+ '.go',
13
+ '.rb',
14
+ '.java',
15
+ '.rs',
16
+ '.php',
17
+ '.cs',
18
+ '.swift',
19
+ '.kt',
20
+ '.md',
21
+ '.mdx',
22
+ ]);
23
+ export function isSearchIndexableFile(relativePath) {
24
+ return SEARCH_INDEXABLE_EXTENSIONS.has(path.extname(relativePath).toLowerCase());
25
+ }
26
+ //# sourceMappingURL=searchIndexFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchIndexFiles.js","sourceRoot":"","sources":["../../src/core/searchIndexFiles.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Tokenize a string for indexing/querying:
3
+ * - lowercase
4
+ * - split on non-identifier chars
5
+ * - split camelCase and snake_case
6
+ * - drop tokens shorter than 2 chars, stopwords, TS keywords
7
+ * - apply basic stem (drop trailing s / ing / ed)
8
+ */
9
+ export declare function tokenize(input: string): string[];
10
+ /**
11
+ * Expand a user query into a set of candidate tokens. Same rules as tokenize
12
+ * plus: if the raw query has no hits, try progressively looser tokenization.
13
+ */
14
+ export declare function expandQuery(query: string): string[];
15
+ export declare function countHits(tokens: string[], query: string[]): number;
@@ -0,0 +1,204 @@
1
+ const STOPWORDS = new Set([
2
+ 'the',
3
+ 'a',
4
+ 'an',
5
+ 'and',
6
+ 'or',
7
+ 'not',
8
+ 'of',
9
+ 'to',
10
+ 'in',
11
+ 'is',
12
+ 'it',
13
+ 'for',
14
+ 'on',
15
+ 'with',
16
+ 'this',
17
+ 'that',
18
+ 'by',
19
+ 'as',
20
+ 'at',
21
+ 'be',
22
+ 'are',
23
+ 'was',
24
+ 'were',
25
+ 'has',
26
+ 'have',
27
+ 'had',
28
+ ]);
29
+ const TS_KEYWORDS = new Set([
30
+ 'const',
31
+ 'let',
32
+ 'var',
33
+ 'function',
34
+ 'return',
35
+ 'if',
36
+ 'else',
37
+ 'while',
38
+ 'for',
39
+ 'do',
40
+ 'break',
41
+ 'continue',
42
+ 'switch',
43
+ 'case',
44
+ 'default',
45
+ 'new',
46
+ 'class',
47
+ 'extends',
48
+ 'implements',
49
+ 'interface',
50
+ 'type',
51
+ 'enum',
52
+ 'public',
53
+ 'private',
54
+ 'protected',
55
+ 'static',
56
+ 'readonly',
57
+ 'async',
58
+ 'await',
59
+ 'try',
60
+ 'catch',
61
+ 'finally',
62
+ 'throw',
63
+ 'import',
64
+ 'export',
65
+ 'from',
66
+ 'as',
67
+ 'typeof',
68
+ 'instanceof',
69
+ 'void',
70
+ 'null',
71
+ 'undefined',
72
+ 'true',
73
+ 'false',
74
+ 'this',
75
+ 'super',
76
+ 'yield',
77
+ 'delete',
78
+ 'in',
79
+ 'of',
80
+ 'any',
81
+ 'never',
82
+ 'unknown',
83
+ 'string',
84
+ 'number',
85
+ 'boolean',
86
+ 'object',
87
+ 'symbol',
88
+ 'bigint',
89
+ ]);
90
+ const PY_KEYWORDS = new Set([
91
+ 'def',
92
+ 'class',
93
+ 'self',
94
+ 'cls',
95
+ 'lambda',
96
+ 'yield',
97
+ 'pass',
98
+ 'elif',
99
+ 'none',
100
+ 'true',
101
+ 'false',
102
+ 'and',
103
+ 'or',
104
+ 'not',
105
+ 'is',
106
+ 'in',
107
+ 'import',
108
+ 'from',
109
+ 'as',
110
+ 'with',
111
+ 'try',
112
+ 'except',
113
+ 'finally',
114
+ 'raise',
115
+ 'assert',
116
+ 'global',
117
+ 'nonlocal',
118
+ 'del',
119
+ 'async',
120
+ 'await',
121
+ 'return',
122
+ 'if',
123
+ 'else',
124
+ 'for',
125
+ 'while',
126
+ 'break',
127
+ 'continue',
128
+ ]);
129
+ /**
130
+ * Tokenize a string for indexing/querying:
131
+ * - lowercase
132
+ * - split on non-identifier chars
133
+ * - split camelCase and snake_case
134
+ * - drop tokens shorter than 2 chars, stopwords, TS keywords
135
+ * - apply basic stem (drop trailing s / ing / ed)
136
+ */
137
+ export function tokenize(input) {
138
+ const out = [];
139
+ // Split on non-identifier boundaries. Keep original case so we can also
140
+ // split on camelCase boundaries below.
141
+ const rawTokens = input.match(/[A-Za-z0-9_]+/g) ?? [];
142
+ for (const raw of rawTokens) {
143
+ // Split on underscore and camelCase. camelCase: insert a boundary before
144
+ // each uppercase that follows a lowercase or digit (OR before runs of
145
+ // uppercase followed by lowercase to handle acronyms like "XMLParser").
146
+ const camelSplit = raw
147
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
148
+ .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
149
+ const parts = camelSplit.split(/[_\s]+/).filter(Boolean);
150
+ for (const part of parts) {
151
+ // Split embedded digits from letters - e.g. "v1api" -> "v", "1", "api"
152
+ const subparts = part.split(/(\d+)/).filter(Boolean);
153
+ for (const sp of subparts) {
154
+ const lower = sp.toLowerCase();
155
+ const stemmed = stem(lower);
156
+ if (!keepToken(stemmed))
157
+ continue;
158
+ out.push(stemmed);
159
+ }
160
+ }
161
+ }
162
+ return out;
163
+ }
164
+ /**
165
+ * Expand a user query into a set of candidate tokens. Same rules as tokenize
166
+ * plus: if the raw query has no hits, try progressively looser tokenization.
167
+ */
168
+ export function expandQuery(query) {
169
+ const tokens = tokenize(query);
170
+ return [...new Set(tokens)];
171
+ }
172
+ export function countHits(tokens, query) {
173
+ let count = 0;
174
+ const set = new Set(tokens);
175
+ for (const q of query)
176
+ if (set.has(q))
177
+ count++;
178
+ return count;
179
+ }
180
+ function stem(token) {
181
+ if (token.length <= 3)
182
+ return token;
183
+ if (token.endsWith('ing'))
184
+ return token.slice(0, -3);
185
+ if (token.endsWith('ed') && token.length > 4)
186
+ return token.slice(0, -2);
187
+ if (token.endsWith('es') && token.length > 4)
188
+ return token.slice(0, -2);
189
+ if (token.endsWith('s') && !token.endsWith('ss'))
190
+ return token.slice(0, -1);
191
+ return token;
192
+ }
193
+ function keepToken(token) {
194
+ if (token.length < 2)
195
+ return false;
196
+ if (STOPWORDS.has(token))
197
+ return false;
198
+ if (TS_KEYWORDS.has(token))
199
+ return false;
200
+ if (PY_KEYWORDS.has(token))
201
+ return false;
202
+ return true;
203
+ }
204
+ //# sourceMappingURL=searchIndexText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchIndexText.js","sourceRoot":"","sources":["../../src/core/searchIndexText.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,12 @@
1
- import { getWorkflowRecipes } from './adoption.js';
2
- import { fixFirstFromStartRisk } from './fixFirst.js';
3
- import { buildFirstTenMinutes } from './onboarding.js';
4
- import { buildAdoptionLoop } from './startAdoptionLoop.js';
5
- import { buildStartCoordinationHints } from './startEvidence.js';
6
1
  import { loadStartInputs } from './startInputs.js';
7
- import { buildStartNextActions } from './startNextActions.js';
8
2
  import { normalizeStartOptions } from './startOptions.js';
9
- import { chooseWorkflow, combineRisks } from './startMissionPolicy.js';
10
- import { buildMissionControl } from './startMissionControl.js';
11
- import { buildStartAdoptionGaps } from './startAdoptionGaps.js';
3
+ import { buildStartReportContext } from './startReportContext.js';
12
4
  import { buildStartReport } from './startReportBuilder.js';
13
5
  export async function computeStartReport(rootPath, options = {}) {
14
6
  const { intent, modeResolution, mode, maxTasks, maxRisks } = normalizeStartOptions(options);
15
- const { setup, workplan, quality, riskSources, missionOutcome, harnessHints } = await loadStartInputs(rootPath, options, { mode, maxTasks, maxRisks });
16
- const workflow = chooseWorkflow(mode, getWorkflowRecipes().recipes);
17
- const topRisks = combineRisks(workplan, quality.topRisks, maxRisks);
18
- const fixFirst = workplan.fixFirst ?? fixFirstFromStartRisk(topRisks[0]);
19
- const adoptionGaps = buildStartAdoptionGaps(setup.diagnostics);
20
- const adoptionLoop = buildAdoptionLoop();
21
- const firstTenMinutes = buildFirstTenMinutes(mode);
22
- const coordinationHints = buildStartCoordinationHints(riskSources, mode, harnessHints);
23
- const missionControl = buildMissionControl({
24
- mode,
25
- intent,
26
- setupOverall: setup.overall,
27
- workplan,
28
- workflow,
29
- fixFirst,
30
- adoptionGaps,
31
- coordinationHints,
32
- riskSources,
33
- missionOutcome,
34
- });
35
- const nextActions = buildStartNextActions({
36
- missionControl,
37
- firstTenMinutes,
38
- workflow,
39
- adoptionLoop,
40
- workplan,
41
- quality,
42
- });
7
+ const inputs = await loadStartInputs(rootPath, options, { mode, maxTasks, maxRisks });
8
+ const { setup, workplan, quality, riskSources } = inputs;
9
+ const context = buildStartReportContext({ ...inputs, mode, intent, maxRisks });
43
10
  return buildStartReport({
44
11
  rootPath,
45
12
  mode,
@@ -49,15 +16,7 @@ export async function computeStartReport(rootPath, options = {}) {
49
16
  workplan,
50
17
  quality,
51
18
  riskSources,
52
- workflow,
53
- firstTenMinutes,
54
- missionControl,
55
- coordinationHints,
56
- topRisks,
57
- fixFirst,
58
- adoptionGaps,
59
- adoptionLoop,
60
- nextActions,
19
+ ...context,
61
20
  includeHandoff: options.includeHandoff,
62
21
  });
63
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/core/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAA4B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5F,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAC3E,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACvF,MAAM,cAAc,GAAG,mBAAmB,CAAC;QACzC,IAAI;QACJ,MAAM;QACN,YAAY,EAAE,KAAK,CAAC,OAAO;QAC3B,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,iBAAiB;QACjB,WAAW;QACX,cAAc;KACf,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,qBAAqB,CAAC;QACxC,cAAc;QACd,eAAe;QACf,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;QACtB,QAAQ;QACR,IAAI;QACJ,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,KAAK;QACL,QAAQ;QACR,OAAO;QACP,WAAW;QACX,QAAQ;QACR,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/core/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAA4B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,OAAO,GAAG,uBAAuB,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/E,OAAO,gBAAgB,CAAC;QACtB,QAAQ;QACR,IAAI;QACJ,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,UAAU,EAAE,cAAc,CAAC,MAAM;QACjC,KAAK;QACL,QAAQ;QACR,OAAO;QACP,WAAW;QACX,GAAG,OAAO;QACV,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { SessionCoordinationHint } from '../types/session.js';
2
2
  import type { StartReport } from '../types/start.js';
3
3
  import type { WorkplanMode } from '../types/workplan.js';
4
- export declare function buildStartCoordinationHints(riskSources: StartReport['evidence']['riskSources'], mode: WorkplanMode, harnessHints?: SessionCoordinationHint[]): SessionCoordinationHint[];
4
+ export declare function buildStartCoordinationHints(riskSources: StartReport['evidence']['riskSources'], mode: WorkplanMode, harnessHints?: SessionCoordinationHint[], intent?: string): SessionCoordinationHint[];
5
5
  export declare function buildStartRiskSources(rootPath: string): Promise<StartReport['evidence']['riskSources']>;
@@ -1,7 +1,8 @@
1
1
  import { loadSession } from './session.js';
2
+ import { routesForIntent } from './startMode.js';
2
3
  import { preflightModeForMission } from './startSuccessCriteria.js';
3
4
  import { getChangedFiles } from '../utils/changedFiles.js';
4
- export function buildStartCoordinationHints(riskSources, mode, harnessHints = []) {
5
+ export function buildStartCoordinationHints(riskSources, mode, harnessHints = [], intent) {
5
6
  const preflightMode = preflightModeForMission(mode);
6
7
  const hints = [
7
8
  {
@@ -11,6 +12,9 @@ export function buildStartCoordinationHints(riskSources, mode, harnessHints = []
11
12
  command: `projscan preflight --mode ${preflightMode} --format json`,
12
13
  },
13
14
  ];
15
+ const swarmHint = swarmCoordinationHintForIntent(intent);
16
+ if (swarmHint)
17
+ hints.push(swarmHint);
14
18
  hints.push(...harnessHints);
15
19
  if (riskSources.sessionMemory.totalTouchedFiles > 0) {
16
20
  hints.push({
@@ -22,6 +26,17 @@ export function buildStartCoordinationHints(riskSources, mode, harnessHints = []
22
26
  }
23
27
  return hints;
24
28
  }
29
+ function swarmCoordinationHintForIntent(intent) {
30
+ const primaryRoute = routesForIntent(intent)[0];
31
+ if (primaryRoute?.tool !== 'projscan_coordinate')
32
+ return null;
33
+ return {
34
+ id: 'swarm-coordination',
35
+ label: 'Validate swarm coordination locally',
36
+ message: 'Intent routes to the one-call swarm coordination read; run it before parallel edits so collisions, claims, and merge order are checked from local worktree evidence.',
37
+ command: 'projscan coordinate --format json',
38
+ };
39
+ }
25
40
  export async function buildStartRiskSources(rootPath) {
26
41
  const [changed, sessionResult] = await Promise.all([
27
42
  getChangedFiles(rootPath).catch((err) => ({