@securecode-ai/mcp 0.5.5 → 0.5.7

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 (186) hide show
  1. package/README.md +52 -12
  2. package/dist/api/types.d.ts +7 -0
  3. package/dist/approval/auditLog.d.ts +1 -1
  4. package/dist/approval/auditLog.js +11 -3
  5. package/dist/approval/auditLog.js.map +1 -1
  6. package/dist/approval/broker.d.ts +7 -2
  7. package/dist/approval/broker.js +239 -110
  8. package/dist/approval/broker.js.map +1 -1
  9. package/dist/approval/policy.d.ts +10 -0
  10. package/dist/approval/policy.js +104 -0
  11. package/dist/approval/policy.js.map +1 -0
  12. package/dist/approval/types.d.ts +11 -2
  13. package/dist/approval/types.js +10 -1
  14. package/dist/approval/types.js.map +1 -1
  15. package/dist/attack/agentScanExecutor.d.ts +35 -1
  16. package/dist/attack/agentScanExecutor.js +405 -76
  17. package/dist/attack/agentScanExecutor.js.map +1 -1
  18. package/dist/attack/agentScanLoop.d.ts +20 -0
  19. package/dist/attack/agentScanLoop.js +1264 -60
  20. package/dist/attack/agentScanLoop.js.map +1 -1
  21. package/dist/attack/agentScanProtocol.d.ts +382 -6
  22. package/dist/attack/agentScanProtocol.js +110 -4
  23. package/dist/attack/agentScanProtocol.js.map +1 -1
  24. package/dist/attack/agentTrace.d.ts +73 -0
  25. package/dist/attack/agentTrace.js +228 -0
  26. package/dist/attack/agentTrace.js.map +1 -0
  27. package/dist/attack/architectureScoutExecutor.d.ts +18 -0
  28. package/dist/attack/architectureScoutExecutor.js +211 -0
  29. package/dist/attack/architectureScoutExecutor.js.map +1 -0
  30. package/dist/attack/architectureScoutLoop.d.ts +36 -0
  31. package/dist/attack/architectureScoutLoop.js +403 -0
  32. package/dist/attack/architectureScoutLoop.js.map +1 -0
  33. package/dist/attack/architectureScoutProtocol.d.ts +209 -0
  34. package/dist/attack/architectureScoutProtocol.js +47 -0
  35. package/dist/attack/architectureScoutProtocol.js.map +1 -0
  36. package/dist/attack/candidateStore.d.ts +95 -0
  37. package/dist/attack/candidateStore.js +231 -0
  38. package/dist/attack/candidateStore.js.map +1 -0
  39. package/dist/attack/evidenceLedger.d.ts +67 -0
  40. package/dist/attack/evidenceLedger.js +192 -0
  41. package/dist/attack/evidenceLedger.js.map +1 -0
  42. package/dist/attack/finishGate.d.ts +62 -0
  43. package/dist/attack/finishGate.js +209 -0
  44. package/dist/attack/finishGate.js.map +1 -0
  45. package/dist/attack/fixCodeMerge.d.ts +27 -0
  46. package/dist/attack/fixCodeMerge.js +42 -0
  47. package/dist/attack/fixCodeMerge.js.map +1 -0
  48. package/dist/attack/fixVerifyLoop.d.ts +55 -0
  49. package/dist/attack/fixVerifyLoop.js +187 -0
  50. package/dist/attack/fixVerifyLoop.js.map +1 -0
  51. package/dist/attack/investigationProfiles.d.ts +36 -0
  52. package/dist/attack/investigationProfiles.js +144 -0
  53. package/dist/attack/investigationProfiles.js.map +1 -0
  54. package/dist/attack/investigationState.d.ts +227 -0
  55. package/dist/attack/investigationState.js +666 -0
  56. package/dist/attack/investigationState.js.map +1 -0
  57. package/dist/attack/mutationOperators.d.ts +22 -0
  58. package/dist/attack/mutationOperators.js +170 -0
  59. package/dist/attack/mutationOperators.js.map +1 -0
  60. package/dist/attack/mutationTest.d.ts +33 -0
  61. package/dist/attack/mutationTest.js +110 -0
  62. package/dist/attack/mutationTest.js.map +1 -0
  63. package/dist/attack/proofGate.d.ts +20 -0
  64. package/dist/attack/proofGate.js +104 -0
  65. package/dist/attack/proofGate.js.map +1 -0
  66. package/dist/attack/proofTypes.d.ts +57 -0
  67. package/dist/attack/proofTypes.js +32 -0
  68. package/dist/attack/proofTypes.js.map +1 -0
  69. package/dist/attack/protocolValidator.d.ts +50 -0
  70. package/dist/attack/protocolValidator.js +427 -0
  71. package/dist/attack/protocolValidator.js.map +1 -0
  72. package/dist/attack/qualityMetrics.d.ts +133 -0
  73. package/dist/attack/qualityMetrics.js +226 -0
  74. package/dist/attack/qualityMetrics.js.map +1 -0
  75. package/dist/attack/scanScheduler.d.ts +52 -0
  76. package/dist/attack/scanScheduler.js +265 -0
  77. package/dist/attack/scanScheduler.js.map +1 -0
  78. package/dist/attack/scanState.d.ts +58 -0
  79. package/dist/attack/scanState.js +102 -0
  80. package/dist/attack/scanState.js.map +1 -0
  81. package/dist/attack/searchIntent.d.ts +16 -0
  82. package/dist/attack/searchIntent.js +57 -0
  83. package/dist/attack/searchIntent.js.map +1 -0
  84. package/dist/attack/verifyLoop.d.ts +43 -0
  85. package/dist/attack/verifyLoop.js +314 -14
  86. package/dist/attack/verifyLoop.js.map +1 -1
  87. package/dist/attack/workItem.d.ts +57 -0
  88. package/dist/attack/workItem.js +225 -0
  89. package/dist/attack/workItem.js.map +1 -0
  90. package/dist/audit/findingReviewQueue.d.ts +109 -0
  91. package/dist/audit/findingReviewQueue.js +335 -0
  92. package/dist/audit/findingReviewQueue.js.map +1 -0
  93. package/dist/audit/scanAuditLog.d.ts +160 -0
  94. package/dist/audit/scanAuditLog.js +404 -0
  95. package/dist/audit/scanAuditLog.js.map +1 -0
  96. package/dist/dependency/dependencyChecker.js +35 -9
  97. package/dist/dependency/dependencyChecker.js.map +1 -1
  98. package/dist/dependency/exploitPriority.d.ts +33 -0
  99. package/dist/dependency/exploitPriority.js +78 -0
  100. package/dist/dependency/exploitPriority.js.map +1 -0
  101. package/dist/dependency/finding.d.ts +16 -0
  102. package/dist/dependency/osvClient.js +2 -0
  103. package/dist/dependency/osvClient.js.map +1 -1
  104. package/dist/dependency/types.d.ts +12 -1
  105. package/dist/mcp/server.js +13 -2
  106. package/dist/mcp/server.js.map +1 -1
  107. package/dist/mcp/tools.d.ts +1 -0
  108. package/dist/mcp/tools.js +127 -6
  109. package/dist/mcp/tools.js.map +1 -1
  110. package/dist/project-map/agentMemory.d.ts +83 -1
  111. package/dist/project-map/agentMemory.js +197 -7
  112. package/dist/project-map/agentMemory.js.map +1 -1
  113. package/dist/project-map/architectureContext.d.ts +202 -0
  114. package/dist/project-map/architectureContext.js +421 -0
  115. package/dist/project-map/architectureContext.js.map +1 -0
  116. package/dist/project-map/blastRadius.d.ts +54 -0
  117. package/dist/project-map/blastRadius.js +196 -0
  118. package/dist/project-map/blastRadius.js.map +1 -0
  119. package/dist/project-map/callGraphExtractor.d.ts +13 -0
  120. package/dist/project-map/callGraphExtractor.js +222 -0
  121. package/dist/project-map/callGraphExtractor.js.map +1 -0
  122. package/dist/project-map/capabilityRegistry.d.ts +46 -0
  123. package/dist/project-map/capabilityRegistry.js +91 -0
  124. package/dist/project-map/capabilityRegistry.js.map +1 -0
  125. package/dist/project-map/findTests.d.ts +29 -0
  126. package/dist/project-map/findTests.js +236 -0
  127. package/dist/project-map/findTests.js.map +1 -0
  128. package/dist/project-map/handlerInventory.d.ts +112 -0
  129. package/dist/project-map/handlerInventory.js +184 -0
  130. package/dist/project-map/handlerInventory.js.map +1 -0
  131. package/dist/project-map/implementationResolver.d.ts +43 -0
  132. package/dist/project-map/implementationResolver.js +217 -0
  133. package/dist/project-map/implementationResolver.js.map +1 -0
  134. package/dist/project-map/mapContext.d.ts +6 -1
  135. package/dist/project-map/mapContext.js +1 -0
  136. package/dist/project-map/mapContext.js.map +1 -1
  137. package/dist/project-map/scanCache.d.ts +57 -3
  138. package/dist/project-map/scanCache.js +61 -2
  139. package/dist/project-map/scanCache.js.map +1 -1
  140. package/dist/project-map/symbolIndex.d.ts +39 -0
  141. package/dist/project-map/symbolIndex.js +385 -0
  142. package/dist/project-map/symbolIndex.js.map +1 -0
  143. package/dist/tooling/agentEvalScoring.d.ts +77 -0
  144. package/dist/tooling/agentEvalScoring.js +140 -0
  145. package/dist/tooling/agentEvalScoring.js.map +1 -0
  146. package/dist/tooling/agentRegression.d.ts +53 -0
  147. package/dist/tooling/agentRegression.js +99 -0
  148. package/dist/tooling/agentRegression.js.map +1 -0
  149. package/dist/tools/agentScan.d.ts +69 -0
  150. package/dist/tools/agentScan.js +702 -43
  151. package/dist/tools/agentScan.js.map +1 -1
  152. package/dist/tools/findingReviewTools.d.ts +22 -0
  153. package/dist/tools/findingReviewTools.js +121 -0
  154. package/dist/tools/findingReviewTools.js.map +1 -0
  155. package/dist/tools/fix.js +1 -1
  156. package/dist/tools/fix.js.map +1 -1
  157. package/dist/tools/map.js +191 -1
  158. package/dist/tools/map.js.map +1 -1
  159. package/dist/tools/runTests.d.ts +2 -0
  160. package/dist/tools/runTests.js +29 -0
  161. package/dist/tools/runTests.js.map +1 -0
  162. package/dist/utils/effectMock.d.ts +1 -0
  163. package/dist/utils/effectMock.js +162 -0
  164. package/dist/utils/effectMock.js.map +1 -0
  165. package/dist/utils/gitContext.d.ts +26 -0
  166. package/dist/utils/gitContext.js +317 -0
  167. package/dist/utils/gitContext.js.map +1 -0
  168. package/dist/utils/localTestRunner.d.ts +57 -2
  169. package/dist/utils/localTestRunner.js +122 -115
  170. package/dist/utils/localTestRunner.js.map +1 -1
  171. package/dist/utils/securityConfig.d.ts +17 -0
  172. package/dist/utils/securityConfig.js +192 -0
  173. package/dist/utils/securityConfig.js.map +1 -0
  174. package/dist/utils/testCommandPolicy.d.ts +36 -0
  175. package/dist/utils/testCommandPolicy.js +252 -0
  176. package/dist/utils/testCommandPolicy.js.map +1 -0
  177. package/dist/utils/testRunner.d.ts +56 -0
  178. package/dist/utils/testRunner.js +246 -0
  179. package/dist/utils/testRunner.js.map +1 -0
  180. package/dist/utils/testSafety.d.ts +40 -2
  181. package/dist/utils/testSafety.js +205 -26
  182. package/dist/utils/testSafety.js.map +1 -1
  183. package/dist/utils/verificationSandbox.d.ts +113 -0
  184. package/dist/utils/verificationSandbox.js +656 -0
  185. package/dist/utils/verificationSandbox.js.map +1 -0
  186. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architectureScoutLoop.js","sourceRoot":"","sources":["../../src/attack/architectureScoutLoop.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAmIH,oDAmRC;AApZD,0CAA0C;AAE1C,2EAAiE;AACjE,2EAcqC;AAsZ5B,4GAnaL,uDAA2B,OAmaK;AApZpC,4EAAkF;AAElF,yEAAyE;AACzE,oEAAoE;AACpE,sEAAsE;AACtE,0EAA0E;AAC1E,wCAAwC;AACxC,2DAE6B;AAY7B,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,0EAA0E;AAC1E,oCAAoC;AAEpC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACrC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc;IACxD,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB;IAClE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ;CACjD,CAAC,CAAC;AAMH,SAAS,mBAAmB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACtF,CAAC;IACD,wEAAwE;IACxE,oEAAoE;IACpE,8BAA8B;IAC9B,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACpF,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QAC3E,CAAC;IACL,CAAC;IACD,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACvE,CAAC;IACL,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QACzE,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAA8B,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAC3F,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACzF,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC/F,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACnG,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;IACzG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAoC,EAAE,CAAC;AACrE,CAAC;AAED,+EAA+E;AAExE,KAAK,UAAU,oBAAoB,CACtC,GAAkB,EAClB,MAA+B,EAC/B,UAAoC,EAAE;IAEtC,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAA,iDAAqB,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAA4B;QACpC,cAAc,EAAE,QAAQ,CAAC,QAAQ;QACjC,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,QAAQ,CAAC,UAAU;KAClC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CACtC,2BAA2B,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,MAAM,CACzD,CAAC;QACF,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,eAAe,GAAG,IAAA,yCAA0B,EAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO;gBACH,MAAM,EAAE,cAAc;gBACtB,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,2CAA2C,eAAe,CAAC,KAAK,EAAE;aAC5E,CAAC;QACN,CAAC;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;QAExC,MAAM,UAAU,GAAsC,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,MAAM,kBAAkB,GAAG,CAAC,CAAC;QAC7B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;gBACvC,OAAO;oBACH,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE,IAAI;oBAClB,UAAU;oBACV,SAAS,EAAE,UAAU;oBACrB,YAAY;oBACZ,OAAO,EAAE,qBAAqB,WAAW,eAAe;iBAC3D,CAAC;YACN,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC1B,OAAO;oBACH,MAAM,EAAE,WAAW;oBACnB,YAAY,EAAE,IAAI;oBAClB,UAAU;oBACV,SAAS,EAAE,UAAU;oBACrB,YAAY;oBACZ,OAAO,EAAE,oBAAoB;iBAChC,CAAC;YACN,CAAC;YAED,MAAM,OAAO,GAAiC;gBAC1C,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,MAAM;gBACN,UAAU;gBACV,MAAM,EAAE;oBACJ,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,YAAY;oBACZ,UAAU,EAAE,MAAM,CAAC,UAAU;iBAChC;aACJ,CAAC;YAEF,IAAI,QAAuC,CAAC;YAC5C,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CACrC,0BAA0B,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CACtD,CAAC;gBACF,MAAM,cAAc,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC,6BAA6B,UAAU,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;oBACnG,iBAAiB,EAAE,CAAC;oBACpB,UAAU,EAAE,CAAC;oBACb,MAAM,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,2CAA2C,IAAI,EAAE,CAAC;oBACjE,UAAU,CAAC,IAAI,CAAC;wBACZ,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAS,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAS;wBAC7F,WAAW,EAAE,MAAM;qBACtB,CAAC,CAAC;oBACH,IAAI,iBAAiB,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;wBACvD,OAAO;4BACH,MAAM,EAAE,QAAQ;4BAChB,YAAY,EAAE,IAAI;4BAClB,UAAU;4BACV,SAAS,EAAE,UAAU;4BACrB,YAAY;4BACZ,OAAO,EAAE,+BAA+B,iBAAiB,qDAAqD,IAAI,EAAE;yBACvH,CAAC;oBACN,CAAC;oBACD,SAAS;gBACb,CAAC;gBACD,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;YACpC,CAAC;YAAC,OAAO,OAAY,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAI,OAAe,EAAE,OAAO,IAAI,EAAE,CAAC;gBAEhD,IAAI,OAAO,KAAK,qBAAqB,IAAI,mDAAmD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxG,OAAO;wBACH,MAAM,EAAE,cAAc;wBACtB,YAAY,EAAE,IAAI;wBAClB,UAAU;wBACV,SAAS,EAAE,UAAU;wBACrB,YAAY;wBACZ,KAAK,EAAE,kEAAkE;qBAC5E,CAAC;gBACN,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrD,OAAO;wBACH,MAAM,EAAE,WAAW;wBACnB,YAAY,EAAE,IAAI;wBAClB,UAAU;wBACV,SAAS,EAAE,UAAU;wBACrB,YAAY;wBACZ,OAAO,EAAE,oBAAoB;qBAChC,CAAC;gBACN,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,6BAA6B,UAAU,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;gBAC7E,iBAAiB,EAAE,CAAC;gBACpB,UAAU,EAAE,CAAC;gBACb,MAAM,CAAC,cAAc,EAAE,CAAC;gBAExB,MAAM,QAAQ,GAAG,6CAA6C,MAAM,2DAA2D,CAAC;gBAChI,UAAU,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAS,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAS;oBAC/F,WAAW,EAAE,QAAQ;iBACxB,CAAC,CAAC;gBAEH,IAAI,iBAAiB,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;oBACvD,OAAO;wBACH,MAAM,EAAE,QAAQ;wBAChB,YAAY,EAAE,IAAI;wBAClB,UAAU;wBACV,SAAS,EAAE,UAAU;wBACrB,YAAY;wBACZ,OAAO,EAAE,+BAA+B,iBAAiB,wCAAwC,MAAM,EAAE;qBAC5G,CAAC;gBACN,CAAC;gBACD,SAAS;YACb,CAAC;YACD,YAAY,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;YACtC,iBAAiB,GAAG,CAAC,CAAC;YAEtB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,MAAM,GAA+B,QAAQ,CAAC,UAAU;oBAC1D,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACrD,OAAO;oBACH,MAAM;oBACN,YAAY,EAAE,IAAI;oBAClB,UAAU;oBACV,SAAS,EAAE,UAAU;oBACrB,YAAY;oBACZ,OAAO,EAAE,QAAQ,CAAC,UAAU;wBACxB,CAAC,CAAC,cAAc,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;wBACxD,CAAC,CAAC,0CAA0C;iBACnD,CAAC;YACN,CAAC;YAED,MAAM,MAAM,GAA4B,QAAQ,CAAC,IAAI,CAAC;YACtD,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;YAEhD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,UAAU,KAAK,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAA,+CAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,uDAAuD;oBACvD,OAAO;wBACH,MAAM,EAAE,cAAc;wBACtB,YAAY,EAAE,IAAI;wBAClB,UAAU;wBACV,SAAS,EAAE,UAAU;wBACrB,YAAY;wBACZ,KAAK,EAAE,wCAAwC;qBAClD,CAAC;gBACN,CAAC;gBACD,0DAA0D;gBAC1D,iDAAiD;gBACjD,MAAM,IAAI,GAAG,MAAM,CAAC,YAAmC,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,kDAA4B,CAAC;gBAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,IAAI,CAAC,YAAY;oBAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBACtD,wDAAwD;gBACxD,iDAAiD;gBACjD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC/E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;yBACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;yBAC3C,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO;oBACH,MAAM,EAAE,WAAW;oBACnB,YAAY,EAAE,IAAI;oBAClB,UAAU;oBACV,SAAS,EAAE,UAAU;oBACrB,YAAY;oBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;iBAC1B,CAAC;YACN,CAAC;YAED,+DAA+D;YAC/D,2DAA2D;YAC3D,IAAI,WAAmB,CAAC;YACxB,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrE,MAAM,QAAQ,GAAG,GAAG,cAAc,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;gBACrF,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,WAAW,GAAG,SAAS,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,SAAS,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,6GAA6G,CAAC;oBAChN,UAAU,GAAG,IAAI,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5D,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;oBAC1C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxB,WAAW,GAAG,MAAM,IAAA,8CAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACpD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACb,WAAW,IAAI,4BAA4B,MAAM,CAAC,IAAI,KAAK,KAAK,wFAAwF,CAAC;oBAC7J,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;oBAAE,OAAO,GAAG,eAAe,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;qBAC7F,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAO,GAAG,cAAc,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;qBACzG,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;oBAAE,OAAO,GAAG,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC;qBAChF,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB;oBAAE,OAAO,GAAG,mBAAmB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;qBACvG,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB;oBAAE,OAAO,GAAG,mBAAmB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAE5G,IAAI,OAAO,EAAE,CAAC;oBACV,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBACnC,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;wBAC7B,WAAW,GAAG,mEAAmE,kBAAkB,wGAAwG,CAAC;wBAC5M,UAAU,GAAG,IAAI,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACJ,WAAW,GAAG,MAAM,IAAA,8CAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACxD,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,MAAM,IAAA,8CAAkB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO;YACH,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,UAAU;YACrB,YAAY;YACZ,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;SACpC,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA+B;IACxD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,MAAM,CAAC,IAAI,GAAG,CAAC;QACrD,KAAK,aAAa,CAAC,CAAC,OAAO,gBAAgB,MAAM,CAAC,OAAO,IAAI,CAAC;QAC9D,KAAK,YAAY,CAAC,CAAC,OAAO,cAAe,MAAc,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;QAC1E,KAAK,cAAc,CAAC,CAAC,OAAO,gBAAgB,MAAM,CAAC,QAAQ,GAAG,CAAC;QAC/D,KAAK,eAAe,CAAC,CAAC,OAAO,iBAAkB,MAAc,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC;QAC/E,KAAK,YAAY,CAAC,CAAC,OAAO,cAAc,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QACtH,KAAK,aAAa,CAAC,CAAC,OAAO,eAAe,MAAM,CAAC,UAAU,GAAG,CAAC;QAC/D,KAAK,oBAAoB,CAAC,CAAC,OAAO,oBAAoB,CAAC;QACvD,KAAK,iBAAiB,CAAC,CAAC,OAAO,mBAAmB,MAAM,CAAC,MAAM,GAAG,CAAC;QACnE,KAAK,iBAAiB,CAAC,CAAC,OAAO,mBAAmB,MAAM,CAAC,MAAM,GAAG,CAAC;QACnE,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Architecture scout protocol — wire contract between the MCP loop and the
3
+ * API brain for the architecture-scout subagent.
4
+ *
5
+ * Mirror: api/src/attacker/architectureScoutProtocol.ts — keep string values
6
+ * in step. Types are duplicated (not shared) between the API and MCP repos,
7
+ * same pattern as agentScanProtocol.
8
+ */
9
+ import type { ArchitectureContext, ArchitectureDepth } from '../project-map/architectureContext';
10
+ export type { ArchitectureDepth };
11
+ /** Default budgets for one architecture scout run, by depth. */
12
+ export declare const ARCHITECTURE_SCOUT_DEFAULTS: {
13
+ readonly quick: {
14
+ readonly maxSteps: 12;
15
+ readonly costCapUsd: 0.5;
16
+ readonly wallClockMs: 120000;
17
+ readonly perStepEstimateUsd: 0.08;
18
+ readonly creditsPerRun: 5;
19
+ readonly maxImportantFiles: 20;
20
+ };
21
+ readonly standard: {
22
+ readonly maxSteps: 25;
23
+ readonly costCapUsd: 1.5;
24
+ readonly wallClockMs: 240000;
25
+ readonly perStepEstimateUsd: 0.08;
26
+ readonly creditsPerRun: 10;
27
+ readonly maxImportantFiles: 50;
28
+ };
29
+ readonly deep: {
30
+ readonly maxSteps: 50;
31
+ readonly costCapUsd: 3;
32
+ readonly wallClockMs: 480000;
33
+ readonly perStepEstimateUsd: 0.08;
34
+ readonly creditsPerRun: 20;
35
+ readonly maxImportantFiles: 100;
36
+ };
37
+ };
38
+ export interface ArchitectureScoutBudget {
39
+ stepsRemaining: number;
40
+ costSpentUsd: number;
41
+ costCapUsd: number;
42
+ }
43
+ export interface ArchitectureScoutReadFileAction {
44
+ type: 'read_file';
45
+ path: string;
46
+ startLine?: number;
47
+ endLine?: number;
48
+ rationale: string;
49
+ }
50
+ export interface ArchitectureScoutSearchCodeAction {
51
+ type: 'search_code';
52
+ pattern: string;
53
+ glob?: string;
54
+ rationale: string;
55
+ }
56
+ export interface ArchitectureScoutListFilesAction {
57
+ type: 'list_files';
58
+ path?: string;
59
+ glob?: string;
60
+ rationale: string;
61
+ }
62
+ export interface ArchitectureScoutListImportsAction {
63
+ type: 'list_imports';
64
+ filePath: string;
65
+ rationale: string;
66
+ }
67
+ export interface ArchitectureScoutGetEndpointsAction {
68
+ type: 'get_endpoints';
69
+ glob?: string;
70
+ rationale: string;
71
+ }
72
+ export interface ArchitectureScoutCallGraphAction {
73
+ type: 'call_graph';
74
+ filePath: string;
75
+ functionName?: string;
76
+ rationale: string;
77
+ }
78
+ export interface ArchitectureScoutReadConfigAction {
79
+ type: 'read_config';
80
+ configKind: 'auth' | 'cors' | 'rate_limit' | 'headers' | 'env' | 'all';
81
+ rationale: string;
82
+ }
83
+ export interface ArchitectureScoutCheckDependenciesAction {
84
+ type: 'check_dependencies';
85
+ rationale: string;
86
+ }
87
+ export interface ArchitectureScoutFindDefinitionAction {
88
+ type: 'find_definition';
89
+ filePath: string;
90
+ symbol: string;
91
+ line?: number;
92
+ rationale: string;
93
+ }
94
+ export interface ArchitectureScoutFindReferencesAction {
95
+ type: 'find_references';
96
+ filePath: string;
97
+ symbol: string;
98
+ line?: number;
99
+ rationale: string;
100
+ }
101
+ export interface ArchitectureScoutFinishAction {
102
+ type: 'finish';
103
+ architecture: ArchitectureContext;
104
+ summary: string;
105
+ selfCritique: string;
106
+ }
107
+ export type ArchitectureScoutAction = ArchitectureScoutReadFileAction | ArchitectureScoutSearchCodeAction | ArchitectureScoutListFilesAction | ArchitectureScoutListImportsAction | ArchitectureScoutGetEndpointsAction | ArchitectureScoutCallGraphAction | ArchitectureScoutReadConfigAction | ArchitectureScoutCheckDependenciesAction | ArchitectureScoutFindDefinitionAction | ArchitectureScoutFindReferencesAction | ArchitectureScoutFinishAction;
108
+ export type ArchitectureScoutActionType = 'read_file' | 'search_code' | 'list_files' | 'list_imports' | 'get_endpoints' | 'call_graph' | 'read_config' | 'check_dependencies' | 'find_definition' | 'find_references' | 'finish';
109
+ export interface ArchitectureScoutTranscriptStep {
110
+ action: ArchitectureScoutAction;
111
+ observation: string;
112
+ }
113
+ export interface ArchitectureInventory {
114
+ files: Array<{
115
+ file: string;
116
+ language: string;
117
+ lines: number;
118
+ endpointCount: number;
119
+ importCount: number;
120
+ }>;
121
+ endpoints: Array<{
122
+ method: string;
123
+ path: string;
124
+ handler: string;
125
+ sourceFile: string;
126
+ line: number;
127
+ authScheme: string;
128
+ dataLayer: string;
129
+ }>;
130
+ runtimes: string[];
131
+ packageManager: string | null;
132
+ languages: string[];
133
+ dependencyFindings?: Array<{
134
+ name: string;
135
+ installedVersion: string;
136
+ fixedVersion: string | null;
137
+ severity: string;
138
+ }>;
139
+ configSummary?: {
140
+ auth?: string | null;
141
+ cors?: string | null;
142
+ rateLimit?: string | null;
143
+ headers?: string | null;
144
+ envKeys?: string[];
145
+ };
146
+ }
147
+ export interface ArchitectureScoutTarget {
148
+ depth: ArchitectureDepth;
149
+ inventory: ArchitectureInventory;
150
+ maxImportantFiles: number;
151
+ }
152
+ export interface ArchitectureScoutStartResponse {
153
+ runId: string;
154
+ budget: ArchitectureScoutBudget;
155
+ scanCredits: number;
156
+ refundId: string;
157
+ }
158
+ export interface ArchitectureScoutStepRequest {
159
+ runId: string;
160
+ target: ArchitectureScoutTarget;
161
+ transcript: ArchitectureScoutTranscriptStep[];
162
+ budget: ArchitectureScoutBudget;
163
+ }
164
+ export interface ArchitectureScoutStepResponse {
165
+ next: ArchitectureScoutAction | null;
166
+ costUsd: number;
167
+ tokens: number;
168
+ degraded: boolean;
169
+ costCapped: boolean;
170
+ stepsRemaining: number;
171
+ callBreakdown?: {
172
+ decision: number;
173
+ retry: number;
174
+ critique: number;
175
+ };
176
+ }
177
+ export type ArchitectureScoutRunStatus = 'completed' | 'capped' | 'degraded' | 'spawn_failed' | 'cancelled';
178
+ export interface ArchitectureScoutResult {
179
+ status: ArchitectureScoutRunStatus;
180
+ architecture: ArchitectureContext | null;
181
+ summary?: string;
182
+ transcript: ArchitectureScoutTranscriptStep[];
183
+ stepsUsed: number;
184
+ costSpentUsd: number;
185
+ error?: string;
186
+ }
187
+ export declare function isScoutFinishAction(a: ArchitectureScoutAction): a is ArchitectureScoutFinishAction;
188
+ export declare function scoutDefaultsForDepth(depth: ArchitectureDepth): {
189
+ readonly maxSteps: 12;
190
+ readonly costCapUsd: 0.5;
191
+ readonly wallClockMs: 120000;
192
+ readonly perStepEstimateUsd: 0.08;
193
+ readonly creditsPerRun: 5;
194
+ readonly maxImportantFiles: 20;
195
+ } | {
196
+ readonly maxSteps: 25;
197
+ readonly costCapUsd: 1.5;
198
+ readonly wallClockMs: 240000;
199
+ readonly perStepEstimateUsd: 0.08;
200
+ readonly creditsPerRun: 10;
201
+ readonly maxImportantFiles: 50;
202
+ } | {
203
+ readonly maxSteps: 50;
204
+ readonly costCapUsd: 3;
205
+ readonly wallClockMs: 480000;
206
+ readonly perStepEstimateUsd: 0.08;
207
+ readonly creditsPerRun: 20;
208
+ readonly maxImportantFiles: 100;
209
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Architecture scout protocol — wire contract between the MCP loop and the
4
+ * API brain for the architecture-scout subagent.
5
+ *
6
+ * Mirror: api/src/attacker/architectureScoutProtocol.ts — keep string values
7
+ * in step. Types are duplicated (not shared) between the API and MCP repos,
8
+ * same pattern as agentScanProtocol.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ARCHITECTURE_SCOUT_DEFAULTS = void 0;
12
+ exports.isScoutFinishAction = isScoutFinishAction;
13
+ exports.scoutDefaultsForDepth = scoutDefaultsForDepth;
14
+ /** Default budgets for one architecture scout run, by depth. */
15
+ exports.ARCHITECTURE_SCOUT_DEFAULTS = {
16
+ quick: {
17
+ maxSteps: 12,
18
+ costCapUsd: 0.50,
19
+ wallClockMs: 120_000,
20
+ perStepEstimateUsd: 0.08,
21
+ creditsPerRun: 5,
22
+ maxImportantFiles: 20,
23
+ },
24
+ standard: {
25
+ maxSteps: 25,
26
+ costCapUsd: 1.50,
27
+ wallClockMs: 240_000,
28
+ perStepEstimateUsd: 0.08,
29
+ creditsPerRun: 10,
30
+ maxImportantFiles: 50,
31
+ },
32
+ deep: {
33
+ maxSteps: 50,
34
+ costCapUsd: 3.00,
35
+ wallClockMs: 480_000,
36
+ perStepEstimateUsd: 0.08,
37
+ creditsPerRun: 20,
38
+ maxImportantFiles: 100,
39
+ },
40
+ };
41
+ function isScoutFinishAction(a) {
42
+ return a.type === 'finish';
43
+ }
44
+ function scoutDefaultsForDepth(depth) {
45
+ return exports.ARCHITECTURE_SCOUT_DEFAULTS[depth] ?? exports.ARCHITECTURE_SCOUT_DEFAULTS.standard;
46
+ }
47
+ //# sourceMappingURL=architectureScoutProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architectureScoutProtocol.js","sourceRoot":"","sources":["../../src/attack/architectureScoutProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAgOH,kDAEC;AAED,sDAEC;AA9ND,gEAAgE;AACnD,QAAA,2BAA2B,GAAG;IACvC,KAAK,EAAE;QACH,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,EAAE;KACxB;IACD,QAAQ,EAAE;QACN,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,EAAE;QACjB,iBAAiB,EAAE,EAAE;KACxB;IACD,IAAI,EAAE;QACF,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,EAAE;QACjB,iBAAiB,EAAE,GAAG;KACzB;CACK,CAAC;AA8LX,SAAgB,mBAAmB,CAAC,CAA0B;IAC1D,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAwB;IAC1D,OAAO,mCAA2B,CAAC,KAAK,CAAC,IAAI,mCAA2B,CAAC,QAAQ,CAAC;AACtF,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Candidate store — tracks vulnerability candidates before finish, accumulates
3
+ * evidence, and guarantees every candidate becomes terminal before the scan
4
+ * can complete.
5
+ *
6
+ * Candidates are NOT findings. A candidate is a structured concern that the
7
+ * agent is investigating. Only after verification does a candidate become a
8
+ * finding (or get rejected/unproven).
9
+ *
10
+ * Rules:
11
+ * - Every final finding must originate from a candidate.
12
+ * - The model cannot mark a candidate as 'verified' — only the verifier can.
13
+ * - The model may propose 'rejected' or 'unproven', but the MCP validates evidence.
14
+ * - Duplicate root causes are merged.
15
+ * - Candidates cannot disappear between steps.
16
+ */
17
+ import type { EvidenceRequirement } from './evidenceLedger';
18
+ export type CandidateStatus = 'discovered' | 'investigating' | 'supported' | 'rejected' | 'unproven' | 'verified' | 'merged' | 'blocked';
19
+ export type CandidateSeverity = 'critical' | 'high' | 'medium' | 'low';
20
+ export interface EvidenceLocation {
21
+ filePath: string;
22
+ line: number;
23
+ symbol?: string;
24
+ }
25
+ export interface CandidateVerification {
26
+ verdict: 'PROVEN' | 'UNPROVEN' | 'INCONCLUSIVE';
27
+ reason: string;
28
+ repeatedRuns: number;
29
+ repeatPasses: number;
30
+ mutationDiscriminating: boolean;
31
+ }
32
+ export type ProofDimension = 'source' | 'reachability' | 'control' | 'threat-model' | 'impact' | 'verification';
33
+ export interface Candidate {
34
+ id: string;
35
+ rootCauseId: string;
36
+ type: string;
37
+ severity: CandidateSeverity;
38
+ locations: EvidenceLocation[];
39
+ claim: string;
40
+ status: CandidateStatus;
41
+ evidenceRefs: string[];
42
+ evidenceCategories?: EvidenceCategory[];
43
+ requiredEvidence: EvidenceRequirement[];
44
+ requiredProofDimensions?: ProofDimension[];
45
+ satisfiedDimensions?: ProofDimension[];
46
+ verification?: CandidateVerification;
47
+ mergedInto?: string;
48
+ blockedReason?: string;
49
+ createdAt: number;
50
+ updatedAt: number;
51
+ }
52
+ export interface CandidateRegistration {
53
+ rootCauseId: string;
54
+ type: string;
55
+ severity: CandidateSeverity;
56
+ locations: EvidenceLocation[];
57
+ claim: string;
58
+ requiredEvidence?: EvidenceRequirement[];
59
+ requiredProofDimensions?: ProofDimension[];
60
+ }
61
+ export type EvidenceCategory = 'source' | 'flow' | 'guard' | 'policy' | 'impact' | 'test' | 'negative' | 'cross-file';
62
+ export declare class CandidateStore {
63
+ private candidates;
64
+ private rootCauseIndex;
65
+ register(input: CandidateRegistration): string;
66
+ get(id: string): Candidate | undefined;
67
+ update(id: string, update: Partial<Candidate>): void;
68
+ setVerified(id: string, verification: CandidateVerification): void;
69
+ setUnproven(id: string, reason: string): void;
70
+ setBlocked(id: string, reason: string): void;
71
+ addEvidence(id: string, evidenceRef: string, category?: EvidenceCategory, dimension?: ProofDimension): void;
72
+ isReadyForJuror(id: string): boolean;
73
+ getCandidatesByRootCause(rootCauseId: string): Candidate[];
74
+ getAll(): Candidate[];
75
+ getActive(): Candidate[];
76
+ getTerminal(): Candidate[];
77
+ getVerified(): Candidate[];
78
+ allTerminal(): boolean;
79
+ allReadyForJuror(): boolean;
80
+ getUnderInvestigation(): Candidate[];
81
+ size(): number;
82
+ snapshot(): {
83
+ total: number;
84
+ discovered: number;
85
+ investigating: number;
86
+ supported: number;
87
+ verified: number;
88
+ unproven: number;
89
+ rejected: number;
90
+ merged: number;
91
+ blocked: number;
92
+ terminal: number;
93
+ };
94
+ clear(): void;
95
+ }
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * Candidate store — tracks vulnerability candidates before finish, accumulates
4
+ * evidence, and guarantees every candidate becomes terminal before the scan
5
+ * can complete.
6
+ *
7
+ * Candidates are NOT findings. A candidate is a structured concern that the
8
+ * agent is investigating. Only after verification does a candidate become a
9
+ * finding (or get rejected/unproven).
10
+ *
11
+ * Rules:
12
+ * - Every final finding must originate from a candidate.
13
+ * - The model cannot mark a candidate as 'verified' — only the verifier can.
14
+ * - The model may propose 'rejected' or 'unproven', but the MCP validates evidence.
15
+ * - Duplicate root causes are merged.
16
+ * - Candidates cannot disappear between steps.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.CandidateStore = void 0;
20
+ let candidateIdCounter = 0;
21
+ class CandidateStore {
22
+ candidates = new Map();
23
+ rootCauseIndex = new Map();
24
+ register(input) {
25
+ // Check for existing candidates with the same root cause
26
+ const existing = this.rootCauseIndex.get(input.rootCauseId);
27
+ if (existing && existing.length > 0) {
28
+ // Merge into the first candidate with this root cause
29
+ const firstId = existing[0];
30
+ const first = this.candidates.get(firstId);
31
+ if (first) {
32
+ // Add new locations
33
+ for (const loc of input.locations) {
34
+ if (!first.locations.some(l => l.filePath === loc.filePath && l.line === loc.line)) {
35
+ first.locations.push(loc);
36
+ }
37
+ }
38
+ first.updatedAt = Date.now();
39
+ return firstId;
40
+ }
41
+ }
42
+ const id = `candidate-${++candidateIdCounter}`;
43
+ const now = Date.now();
44
+ const defaultDimensions = input.severity === 'critical' || input.severity === 'high'
45
+ ? ['source', 'reachability', 'control', 'threat-model', 'impact', 'verification']
46
+ : input.severity === 'medium'
47
+ ? ['source', 'reachability', 'control', 'threat-model']
48
+ : ['source', 'control'];
49
+ const requiredProofDimensions = input.requiredProofDimensions || defaultDimensions;
50
+ const candidate = {
51
+ id,
52
+ rootCauseId: input.rootCauseId,
53
+ type: input.type,
54
+ severity: input.severity,
55
+ locations: input.locations,
56
+ claim: input.claim,
57
+ status: 'discovered',
58
+ evidenceRefs: [],
59
+ requiredEvidence: input.requiredEvidence || [],
60
+ requiredProofDimensions,
61
+ satisfiedDimensions: [],
62
+ createdAt: now,
63
+ updatedAt: now,
64
+ };
65
+ this.candidates.set(id, candidate);
66
+ // Index by root cause
67
+ const rcList = this.rootCauseIndex.get(input.rootCauseId) || [];
68
+ rcList.push(id);
69
+ this.rootCauseIndex.set(input.rootCauseId, rcList);
70
+ return id;
71
+ }
72
+ get(id) {
73
+ return this.candidates.get(id);
74
+ }
75
+ update(id, update) {
76
+ const candidate = this.candidates.get(id);
77
+ if (!candidate)
78
+ return;
79
+ // The model cannot set status to 'verified' — only the verifier can
80
+ if (update.status === 'verified' && candidate.status !== 'verified') {
81
+ throw new Error('Cannot mark candidate as verified — only the verifier can set this status');
82
+ }
83
+ Object.assign(candidate, update, { updatedAt: Date.now() });
84
+ }
85
+ setVerified(id, verification) {
86
+ const candidate = this.candidates.get(id);
87
+ if (!candidate)
88
+ return;
89
+ candidate.status = 'verified';
90
+ candidate.verification = verification;
91
+ candidate.updatedAt = Date.now();
92
+ }
93
+ setUnproven(id, reason) {
94
+ const candidate = this.candidates.get(id);
95
+ if (!candidate)
96
+ return;
97
+ candidate.status = 'unproven';
98
+ candidate.verification = {
99
+ verdict: 'UNPROVEN',
100
+ reason,
101
+ repeatedRuns: 0,
102
+ repeatPasses: 0,
103
+ mutationDiscriminating: false,
104
+ };
105
+ candidate.updatedAt = Date.now();
106
+ }
107
+ setBlocked(id, reason) {
108
+ const candidate = this.candidates.get(id);
109
+ if (!candidate)
110
+ return;
111
+ candidate.status = 'blocked';
112
+ candidate.blockedReason = reason;
113
+ candidate.verification = undefined;
114
+ candidate.updatedAt = Date.now();
115
+ }
116
+ addEvidence(id, evidenceRef, category, dimension) {
117
+ const candidate = this.candidates.get(id);
118
+ if (candidate && !candidate.evidenceRefs.includes(evidenceRef)) {
119
+ candidate.evidenceRefs.push(evidenceRef);
120
+ if (category) {
121
+ if (!candidate.evidenceCategories)
122
+ candidate.evidenceCategories = [];
123
+ if (!candidate.evidenceCategories.includes(category)) {
124
+ candidate.evidenceCategories.push(category);
125
+ }
126
+ }
127
+ if (dimension) {
128
+ if (!candidate.satisfiedDimensions)
129
+ candidate.satisfiedDimensions = [];
130
+ if (!candidate.satisfiedDimensions.includes(dimension)) {
131
+ candidate.satisfiedDimensions.push(dimension);
132
+ }
133
+ }
134
+ if (candidate.status === 'discovered') {
135
+ candidate.status = 'investigating';
136
+ }
137
+ const required = candidate.requiredProofDimensions || [];
138
+ const satisfied = candidate.satisfiedDimensions || [];
139
+ if (candidate.status === 'investigating' && required.length > 0) {
140
+ const allDimensionsSatisfied = required.every(d => satisfied.includes(d));
141
+ if (allDimensionsSatisfied) {
142
+ candidate.status = 'supported';
143
+ }
144
+ }
145
+ else if (candidate.status === 'investigating' && required.length === 0) {
146
+ const categories = candidate.evidenceCategories || [];
147
+ const categoryCount = categories.length;
148
+ const minCategories = (candidate.severity === 'critical' || candidate.severity === 'high') ? 2 : 1;
149
+ if (categoryCount >= minCategories) {
150
+ candidate.status = 'supported';
151
+ }
152
+ else if (candidate.evidenceRefs.length >= 1 && categoryCount === 0) {
153
+ candidate.status = 'supported';
154
+ }
155
+ }
156
+ candidate.updatedAt = Date.now();
157
+ }
158
+ }
159
+ isReadyForJuror(id) {
160
+ const candidate = this.candidates.get(id);
161
+ if (!candidate)
162
+ return false;
163
+ if (candidate.status !== 'supported')
164
+ return false;
165
+ const required = candidate.requiredProofDimensions || [];
166
+ if (required.length === 0)
167
+ return true;
168
+ const satisfied = candidate.satisfiedDimensions || [];
169
+ return required.every(d => satisfied.includes(d));
170
+ }
171
+ getCandidatesByRootCause(rootCauseId) {
172
+ const ids = this.rootCauseIndex.get(rootCauseId) || [];
173
+ return ids.map(id => this.candidates.get(id)).filter(Boolean);
174
+ }
175
+ getAll() {
176
+ return [...this.candidates.values()];
177
+ }
178
+ getActive() {
179
+ return [...this.candidates.values()].filter(c => c.status === 'discovered' || c.status === 'investigating' || c.status === 'supported');
180
+ }
181
+ getTerminal() {
182
+ return [...this.candidates.values()].filter(c => c.status === 'verified' || c.status === 'unproven' ||
183
+ c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked');
184
+ }
185
+ getVerified() {
186
+ return [...this.candidates.values()].filter(c => c.status === 'verified');
187
+ }
188
+ allTerminal() {
189
+ const all = this.getAll();
190
+ if (all.length === 0)
191
+ return true;
192
+ return all.every(c => c.status === 'verified' || c.status === 'unproven' ||
193
+ c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked');
194
+ }
195
+ allReadyForJuror() {
196
+ const all = this.getAll();
197
+ if (all.length === 0)
198
+ return true;
199
+ return all.every(c => c.status === 'supported' || c.status === 'verified' ||
200
+ c.status === 'unproven' || c.status === 'rejected' ||
201
+ c.status === 'merged' || c.status === 'blocked');
202
+ }
203
+ getUnderInvestigation() {
204
+ return [...this.candidates.values()].filter(c => c.status === 'discovered' || c.status === 'investigating');
205
+ }
206
+ size() {
207
+ return this.candidates.size;
208
+ }
209
+ snapshot() {
210
+ const all = this.getAll();
211
+ return {
212
+ total: all.length,
213
+ discovered: all.filter(c => c.status === 'discovered').length,
214
+ investigating: all.filter(c => c.status === 'investigating').length,
215
+ supported: all.filter(c => c.status === 'supported').length,
216
+ verified: all.filter(c => c.status === 'verified').length,
217
+ unproven: all.filter(c => c.status === 'unproven').length,
218
+ rejected: all.filter(c => c.status === 'rejected').length,
219
+ merged: all.filter(c => c.status === 'merged').length,
220
+ blocked: all.filter(c => c.status === 'blocked').length,
221
+ terminal: all.filter(c => c.status === 'verified' || c.status === 'unproven' ||
222
+ c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked').length,
223
+ };
224
+ }
225
+ clear() {
226
+ this.candidates.clear();
227
+ this.rootCauseIndex.clear();
228
+ }
229
+ }
230
+ exports.CandidateStore = CandidateStore;
231
+ //# sourceMappingURL=candidateStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidateStore.js","sourceRoot":"","sources":["../../src/attack/candidateStore.ts"],"names":[],"mappings":"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"}