@dataparade/cli 0.0.1

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 (621) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +592 -0
  3. package/dist/bin/cli.d.ts +2 -0
  4. package/dist/bin/cli.js +7 -0
  5. package/dist/bin/load-env.d.ts +2 -0
  6. package/dist/bin/load-env.js +4 -0
  7. package/dist/src/ai-enrichment/agent-orchestrator.d.ts +28 -0
  8. package/dist/src/ai-enrichment/agent-orchestrator.js +476 -0
  9. package/dist/src/ai-enrichment/agents/index.d.ts +4 -0
  10. package/dist/src/ai-enrichment/agents/index.js +50 -0
  11. package/dist/src/ai-enrichment/candidate-selector.d.ts +10 -0
  12. package/dist/src/ai-enrichment/candidate-selector.js +158 -0
  13. package/dist/src/ai-enrichment/fallbacks.d.ts +6 -0
  14. package/dist/src/ai-enrichment/fallbacks.js +762 -0
  15. package/dist/src/ai-enrichment/index.d.ts +15 -0
  16. package/dist/src/ai-enrichment/index.js +31 -0
  17. package/dist/src/ai-enrichment/merge-rules.d.ts +12 -0
  18. package/dist/src/ai-enrichment/merge-rules.js +321 -0
  19. package/dist/src/ai-enrichment/non-pii-signal-rules.d.ts +10 -0
  20. package/dist/src/ai-enrichment/non-pii-signal-rules.js +72 -0
  21. package/dist/src/ai-enrichment/openai-proposals-response.schema.d.ts +94 -0
  22. package/dist/src/ai-enrichment/openai-proposals-response.schema.js +82 -0
  23. package/dist/src/ai-enrichment/pii-signal-rules.d.ts +8 -0
  24. package/dist/src/ai-enrichment/pii-signal-rules.js +68 -0
  25. package/dist/src/ai-enrichment/pipeline.d.ts +2 -0
  26. package/dist/src/ai-enrichment/pipeline.js +48 -0
  27. package/dist/src/ai-enrichment/planner.d.ts +2 -0
  28. package/dist/src/ai-enrichment/planner.js +60 -0
  29. package/dist/src/ai-enrichment/prompts/provider-enrichment-prompts.d.ts +12 -0
  30. package/dist/src/ai-enrichment/prompts/provider-enrichment-prompts.js +45 -0
  31. package/dist/src/ai-enrichment/provider-prompt.d.ts +32 -0
  32. package/dist/src/ai-enrichment/provider-prompt.js +222 -0
  33. package/dist/src/ai-enrichment/provider-topology-rules.d.ts +52 -0
  34. package/dist/src/ai-enrichment/provider-topology-rules.js +190 -0
  35. package/dist/src/ai-enrichment/provider-topology-shared.d.ts +48 -0
  36. package/dist/src/ai-enrichment/provider-topology-shared.js +329 -0
  37. package/dist/src/ai-enrichment/providers/endpoint-resolution.d.ts +13 -0
  38. package/dist/src/ai-enrichment/providers/endpoint-resolution.js +41 -0
  39. package/dist/src/ai-enrichment/providers/families/chat-completions-family.d.ts +13 -0
  40. package/dist/src/ai-enrichment/providers/families/chat-completions-family.js +181 -0
  41. package/dist/src/ai-enrichment/providers/families/generate-content-family.d.ts +10 -0
  42. package/dist/src/ai-enrichment/providers/families/generate-content-family.js +93 -0
  43. package/dist/src/ai-enrichment/providers/families/messages-family.d.ts +10 -0
  44. package/dist/src/ai-enrichment/providers/families/messages-family.js +86 -0
  45. package/dist/src/ai-enrichment/providers/families/ollama-generate-family.d.ts +10 -0
  46. package/dist/src/ai-enrichment/providers/families/ollama-generate-family.js +69 -0
  47. package/dist/src/ai-enrichment/providers/fetch-with-timeout.d.ts +2 -0
  48. package/dist/src/ai-enrichment/providers/fetch-with-timeout.js +22 -0
  49. package/dist/src/ai-enrichment/providers/index.d.ts +16 -0
  50. package/dist/src/ai-enrichment/providers/index.js +40 -0
  51. package/dist/src/ai-enrichment/providers/mock.d.ts +5 -0
  52. package/dist/src/ai-enrichment/providers/mock.js +12 -0
  53. package/dist/src/ai-enrichment/providers/platform-proxy-provider.d.ts +20 -0
  54. package/dist/src/ai-enrichment/providers/platform-proxy-provider.js +116 -0
  55. package/dist/src/ai-enrichment/providers/presets.d.ts +14 -0
  56. package/dist/src/ai-enrichment/providers/presets.js +50 -0
  57. package/dist/src/ai-enrichment/providers/provider-contract.d.ts +20 -0
  58. package/dist/src/ai-enrichment/providers/provider-contract.js +703 -0
  59. package/dist/src/ai-enrichment/providers/provider-json-parse.d.ts +23 -0
  60. package/dist/src/ai-enrichment/providers/provider-json-parse.js +96 -0
  61. package/dist/src/ai-enrichment/providers/provider-output-token-budget.d.ts +5 -0
  62. package/dist/src/ai-enrichment/providers/provider-output-token-budget.js +11 -0
  63. package/dist/src/ai-enrichment/providers/provider-pricing.d.ts +7 -0
  64. package/dist/src/ai-enrichment/providers/provider-pricing.js +32 -0
  65. package/dist/src/ai-enrichment/providers/provider-runtime.d.ts +9 -0
  66. package/dist/src/ai-enrichment/providers/provider-runtime.js +54 -0
  67. package/dist/src/ai-enrichment/providers/resolve-provider.d.ts +27 -0
  68. package/dist/src/ai-enrichment/providers/resolve-provider.js +41 -0
  69. package/dist/src/ai-enrichment/providers/types.d.ts +24 -0
  70. package/dist/src/ai-enrichment/providers/types.js +2 -0
  71. package/dist/src/ai-enrichment/scan-paths.d.ts +9 -0
  72. package/dist/src/ai-enrichment/scan-paths.js +28 -0
  73. package/dist/src/ai-enrichment/sensitive-paths.d.ts +5 -0
  74. package/dist/src/ai-enrichment/sensitive-paths.js +10 -0
  75. package/dist/src/ai-enrichment/third-party-data-flow.d.ts +27 -0
  76. package/dist/src/ai-enrichment/third-party-data-flow.js +518 -0
  77. package/dist/src/ai-enrichment/third-party-evidence.d.ts +14 -0
  78. package/dist/src/ai-enrichment/third-party-evidence.js +426 -0
  79. package/dist/src/ai-enrichment/third-party-property-matrix.d.ts +14 -0
  80. package/dist/src/ai-enrichment/third-party-property-matrix.js +52 -0
  81. package/dist/src/ai-enrichment/third-party-subtype.d.ts +14 -0
  82. package/dist/src/ai-enrichment/third-party-subtype.js +166 -0
  83. package/dist/src/ai-enrichment/tools/index.d.ts +39 -0
  84. package/dist/src/ai-enrichment/tools/index.js +121 -0
  85. package/dist/src/ai-enrichment/types.d.ts +170 -0
  86. package/dist/src/ai-enrichment/types.js +12 -0
  87. package/dist/src/analyzers/python/dependency-manifests.d.ts +8 -0
  88. package/dist/src/analyzers/python/dependency-manifests.js +131 -0
  89. package/dist/src/analyzers/python/detector.d.ts +3 -0
  90. package/dist/src/analyzers/python/detector.js +22 -0
  91. package/dist/src/analyzers/python/index.d.ts +2 -0
  92. package/dist/src/analyzers/python/index.js +11 -0
  93. package/dist/src/analyzers/python/manifest-parsers.d.ts +3 -0
  94. package/dist/src/analyzers/python/manifest-parsers.js +134 -0
  95. package/dist/src/analyzers/python/parser.d.ts +26 -0
  96. package/dist/src/analyzers/python/parser.js +187 -0
  97. package/dist/src/analyzers/python/patterns.d.ts +7 -0
  98. package/dist/src/analyzers/python/patterns.js +106 -0
  99. package/dist/src/analyzers/python/python-detection-config.d.ts +75 -0
  100. package/dist/src/analyzers/python/python-detection-config.js +148 -0
  101. package/dist/src/analyzers/registry.d.ts +13 -0
  102. package/dist/src/analyzers/registry.js +60 -0
  103. package/dist/src/analyzers/shared/manifest-budgets.d.ts +19 -0
  104. package/dist/src/analyzers/shared/manifest-budgets.js +21 -0
  105. package/dist/src/analyzers/shared/manifest-fs.d.ts +13 -0
  106. package/dist/src/analyzers/shared/manifest-fs.js +138 -0
  107. package/dist/src/analyzers/shared/property-inference.d.ts +8 -0
  108. package/dist/src/analyzers/shared/property-inference.js +165 -0
  109. package/dist/src/analyzers/terraform/detector.d.ts +10 -0
  110. package/dist/src/analyzers/terraform/detector.js +198 -0
  111. package/dist/src/analyzers/terraform/index.d.ts +2 -0
  112. package/dist/src/analyzers/terraform/index.js +13 -0
  113. package/dist/src/analyzers/terraform/parser.d.ts +29 -0
  114. package/dist/src/analyzers/terraform/parser.js +202 -0
  115. package/dist/src/analyzers/terraform/terraform-detection-config.d.ts +48 -0
  116. package/dist/src/analyzers/terraform/terraform-detection-config.js +218 -0
  117. package/dist/src/analyzers/terraform/terraform-exec.d.ts +11 -0
  118. package/dist/src/analyzers/terraform/terraform-exec.js +35 -0
  119. package/dist/src/analyzers/terraform/terraform-module-manifest.d.ts +19 -0
  120. package/dist/src/analyzers/terraform/terraform-module-manifest.js +75 -0
  121. package/dist/src/analyzers/terraform/terraform-show-json.d.ts +15 -0
  122. package/dist/src/analyzers/terraform/terraform-show-json.js +188 -0
  123. package/dist/src/analyzers/terraform/terraform-utility-resource.d.ts +12 -0
  124. package/dist/src/analyzers/terraform/terraform-utility-resource.js +30 -0
  125. package/dist/src/analyzers/types.d.ts +5 -0
  126. package/dist/src/analyzers/types.js +2 -0
  127. package/dist/src/analyzers/typescript/actor-detection.d.ts +4 -0
  128. package/dist/src/analyzers/typescript/actor-detection.js +15 -0
  129. package/dist/src/analyzers/typescript/dependency-manifests.d.ts +9 -0
  130. package/dist/src/analyzers/typescript/dependency-manifests.js +131 -0
  131. package/dist/src/analyzers/typescript/detector.d.ts +3 -0
  132. package/dist/src/analyzers/typescript/detector.js +23 -0
  133. package/dist/src/analyzers/typescript/index.d.ts +2 -0
  134. package/dist/src/analyzers/typescript/index.js +11 -0
  135. package/dist/src/analyzers/typescript/manifest-parsers.d.ts +1 -0
  136. package/dist/src/analyzers/typescript/manifest-parsers.js +30 -0
  137. package/dist/src/analyzers/typescript/parser.d.ts +44 -0
  138. package/dist/src/analyzers/typescript/parser.js +287 -0
  139. package/dist/src/analyzers/typescript/third-party-detection.d.ts +4 -0
  140. package/dist/src/analyzers/typescript/third-party-detection.js +16 -0
  141. package/dist/src/analyzers/typescript/typescript-detection-config.d.ts +68 -0
  142. package/dist/src/analyzers/typescript/typescript-detection-config.js +171 -0
  143. package/dist/src/analyzers/typescript/typescript-detection.d.ts +10 -0
  144. package/dist/src/analyzers/typescript/typescript-detection.js +57 -0
  145. package/dist/src/classifier/application-injection.d.ts +12 -0
  146. package/dist/src/classifier/application-injection.js +335 -0
  147. package/dist/src/classifier/classify.d.ts +3 -0
  148. package/dist/src/classifier/classify.js +15 -0
  149. package/dist/src/classifier/component-factory.d.ts +3 -0
  150. package/dist/src/classifier/component-factory.js +488 -0
  151. package/dist/src/classifier/config.d.ts +38 -0
  152. package/dist/src/classifier/config.js +260 -0
  153. package/dist/src/classifier/enhance-defaults.d.ts +28 -0
  154. package/dist/src/classifier/enhance-defaults.js +369 -0
  155. package/dist/src/classifier/enhance.d.ts +13 -0
  156. package/dist/src/classifier/enhance.js +295 -0
  157. package/dist/src/classifier/external-url-third-party.d.ts +26 -0
  158. package/dist/src/classifier/external-url-third-party.js +195 -0
  159. package/dist/src/classifier/grouping.d.ts +1 -0
  160. package/dist/src/classifier/grouping.js +2 -0
  161. package/dist/src/classifier/main-application-selection.d.ts +41 -0
  162. package/dist/src/classifier/main-application-selection.js +222 -0
  163. package/dist/src/classifier/naming.d.ts +4 -0
  164. package/dist/src/classifier/naming.js +78 -0
  165. package/dist/src/classifier/postprocessing.d.ts +12 -0
  166. package/dist/src/classifier/postprocessing.js +510 -0
  167. package/dist/src/classifier/sectioning.d.ts +5 -0
  168. package/dist/src/classifier/sectioning.js +60 -0
  169. package/dist/src/classifier/terraform-provider-hub.d.ts +6 -0
  170. package/dist/src/classifier/terraform-provider-hub.js +38 -0
  171. package/dist/src/cli.d.ts +2 -0
  172. package/dist/src/cli.js +498 -0
  173. package/dist/src/config/actor-detection-config.d.ts +21 -0
  174. package/dist/src/config/actor-detection-config.js +97 -0
  175. package/dist/src/config/env.d.ts +2 -0
  176. package/dist/src/config/env.js +75 -0
  177. package/dist/src/config/file.d.ts +6 -0
  178. package/dist/src/config/file.js +74 -0
  179. package/dist/src/config/inference-scope.d.ts +2 -0
  180. package/dist/src/config/inference-scope.js +15 -0
  181. package/dist/src/config/load-cli-env.d.ts +1 -0
  182. package/dist/src/config/load-cli-env.js +54 -0
  183. package/dist/src/config/normalize-ai-provider.d.ts +5 -0
  184. package/dist/src/config/normalize-ai-provider.js +18 -0
  185. package/dist/src/config/property-detection-config.d.ts +27 -0
  186. package/dist/src/config/property-detection-config.js +355 -0
  187. package/dist/src/config/redact.d.ts +3 -0
  188. package/dist/src/config/redact.js +14 -0
  189. package/dist/src/config/resolve.d.ts +15 -0
  190. package/dist/src/config/resolve.js +361 -0
  191. package/dist/src/config/scan-env.d.ts +7 -0
  192. package/dist/src/config/scan-env.js +38 -0
  193. package/dist/src/config/third-party-detection-config.d.ts +25 -0
  194. package/dist/src/config/third-party-detection-config.js +97 -0
  195. package/dist/src/config/types.d.ts +106 -0
  196. package/dist/src/config/types.js +2 -0
  197. package/dist/src/config/validate-scan-ai.d.ts +3 -0
  198. package/dist/src/config/validate-scan-ai.js +33 -0
  199. package/dist/src/core/pipeline/ai-orchestrator-options.d.ts +6 -0
  200. package/dist/src/core/pipeline/ai-orchestrator-options.js +46 -0
  201. package/dist/src/core/pipeline/classifier-phase.d.ts +7 -0
  202. package/dist/src/core/pipeline/classifier-phase.js +78 -0
  203. package/dist/src/core/pipeline/dataflow-phase.d.ts +7 -0
  204. package/dist/src/core/pipeline/dataflow-phase.js +10 -0
  205. package/dist/src/core/pipeline/diagram-layout/app-section-layout.d.ts +7 -0
  206. package/dist/src/core/pipeline/diagram-layout/app-section-layout.js +74 -0
  207. package/dist/src/core/pipeline/diagram-layout/constants.d.ts +11 -0
  208. package/dist/src/core/pipeline/diagram-layout/constants.js +14 -0
  209. package/dist/src/core/pipeline/diagram-layout/edge-handles.d.ts +3 -0
  210. package/dist/src/core/pipeline/diagram-layout/edge-handles.js +26 -0
  211. package/dist/src/core/pipeline/diagram-layout/managed-provider-layout.d.ts +3 -0
  212. package/dist/src/core/pipeline/diagram-layout/managed-provider-layout.js +40 -0
  213. package/dist/src/core/pipeline/diagram-layout/minimal-terraform-layout.d.ts +6 -0
  214. package/dist/src/core/pipeline/diagram-layout/minimal-terraform-layout.js +53 -0
  215. package/dist/src/core/pipeline/diagram-layout/section-helpers.d.ts +30 -0
  216. package/dist/src/core/pipeline/diagram-layout/section-helpers.js +62 -0
  217. package/dist/src/core/pipeline/diagram-layout/terraform-lane-layout.d.ts +3 -0
  218. package/dist/src/core/pipeline/diagram-layout/terraform-lane-layout.js +109 -0
  219. package/dist/src/core/pipeline/diagram-layout/types.d.ts +2 -0
  220. package/dist/src/core/pipeline/diagram-layout/types.js +2 -0
  221. package/dist/src/core/pipeline/graph-mapping.d.ts +6 -0
  222. package/dist/src/core/pipeline/graph-mapping.js +308 -0
  223. package/dist/src/core/pipeline/mixed-app-terraform-scan.d.ts +13 -0
  224. package/dist/src/core/pipeline/mixed-app-terraform-scan.js +81 -0
  225. package/dist/src/core/pipeline/orchestrator-result.d.ts +6 -0
  226. package/dist/src/core/pipeline/orchestrator-result.js +2 -0
  227. package/dist/src/core/pipeline/orchestrator.d.ts +26 -0
  228. package/dist/src/core/pipeline/orchestrator.js +79 -0
  229. package/dist/src/core/pipeline/resolve-path-under-scan-root.d.ts +7 -0
  230. package/dist/src/core/pipeline/resolve-path-under-scan-root.js +55 -0
  231. package/dist/src/core/pipeline/scan-pipeline.d.ts +6 -0
  232. package/dist/src/core/pipeline/scan-pipeline.js +364 -0
  233. package/dist/src/core/pipeline/sorting.d.ts +3 -0
  234. package/dist/src/core/pipeline/sorting.js +48 -0
  235. package/dist/src/core/pipeline/stable-component-ids.d.ts +15 -0
  236. package/dist/src/core/pipeline/stable-component-ids.js +68 -0
  237. package/dist/src/core/pipeline/structural-scan.d.ts +19 -0
  238. package/dist/src/core/pipeline/structural-scan.js +304 -0
  239. package/dist/src/core/pipeline/terraform-flow-utils.d.ts +6 -0
  240. package/dist/src/core/pipeline/terraform-flow-utils.js +32 -0
  241. package/dist/src/core/pipeline/terraform-minimal-services.d.ts +31 -0
  242. package/dist/src/core/pipeline/terraform-minimal-services.js +225 -0
  243. package/dist/src/core/schema/dataflow-wrapper.schema.d.ts +83 -0
  244. package/dist/src/core/schema/dataflow-wrapper.schema.js +40 -0
  245. package/dist/src/core/schema/diagram-graph.schema.d.ts +93 -0
  246. package/dist/src/core/schema/diagram-graph.schema.js +55 -0
  247. package/dist/src/core/schema/index.d.ts +4 -0
  248. package/dist/src/core/schema/index.js +20 -0
  249. package/dist/src/core/schema/scan-config.schema.d.ts +66 -0
  250. package/dist/src/core/schema/scan-config.schema.js +67 -0
  251. package/dist/src/core/schema/scan-result.schema.d.ts +450 -0
  252. package/dist/src/core/schema/scan-result.schema.js +236 -0
  253. package/dist/src/core/sectioning/discover-service-sections.d.ts +80 -0
  254. package/dist/src/core/sectioning/discover-service-sections.js +468 -0
  255. package/dist/src/core/sectioning/section-runtime.d.ts +21 -0
  256. package/dist/src/core/sectioning/section-runtime.js +148 -0
  257. package/dist/src/core/terraform/component-predicates.d.ts +13 -0
  258. package/dist/src/core/terraform/component-predicates.js +71 -0
  259. package/dist/src/core/types/component.d.ts +18 -0
  260. package/dist/src/core/types/component.js +2 -0
  261. package/dist/src/core/types/config.d.ts +57 -0
  262. package/dist/src/core/types/config.js +2 -0
  263. package/dist/src/core/types/data-flow.d.ts +24 -0
  264. package/dist/src/core/types/data-flow.js +2 -0
  265. package/dist/src/core/types/detection.d.ts +12 -0
  266. package/dist/src/core/types/detection.js +19 -0
  267. package/dist/src/core/types/file.d.ts +14 -0
  268. package/dist/src/core/types/file.js +2 -0
  269. package/dist/src/core/types/index.d.ts +7 -0
  270. package/dist/src/core/types/index.js +23 -0
  271. package/dist/src/core/types/progress.d.ts +9 -0
  272. package/dist/src/core/types/progress.js +2 -0
  273. package/dist/src/core/types/result.d.ts +140 -0
  274. package/dist/src/core/types/result.js +2 -0
  275. package/dist/src/data-flow/application-hub.d.ts +7 -0
  276. package/dist/src/data-flow/application-hub.js +88 -0
  277. package/dist/src/data-flow/dedupe.d.ts +7 -0
  278. package/dist/src/data-flow/dedupe.js +92 -0
  279. package/dist/src/data-flow/detect.d.ts +16 -0
  280. package/dist/src/data-flow/detect.js +203 -0
  281. package/dist/src/data-flow/detector.d.ts +15 -0
  282. package/dist/src/data-flow/detector.js +18 -0
  283. package/dist/src/data-flow/drop-cross-section-flows.d.ts +8 -0
  284. package/dist/src/data-flow/drop-cross-section-flows.js +32 -0
  285. package/dist/src/data-flow/ensure-actor-flow.d.ts +16 -0
  286. package/dist/src/data-flow/ensure-actor-flow.js +101 -0
  287. package/dist/src/data-flow/ensure-manifest-declared-flows.d.ts +14 -0
  288. package/dist/src/data-flow/ensure-manifest-declared-flows.js +76 -0
  289. package/dist/src/data-flow/ensure-section-api-flows.d.ts +6 -0
  290. package/dist/src/data-flow/ensure-section-api-flows.js +57 -0
  291. package/dist/src/data-flow/flow-builder.d.ts +5 -0
  292. package/dist/src/data-flow/flow-builder.js +80 -0
  293. package/dist/src/data-flow/import-graph.d.ts +10 -0
  294. package/dist/src/data-flow/import-graph.js +147 -0
  295. package/dist/src/data-flow/index.d.ts +8 -0
  296. package/dist/src/data-flow/index.js +20 -0
  297. package/dist/src/data-flow/internal-fetch.d.ts +8 -0
  298. package/dist/src/data-flow/internal-fetch.js +209 -0
  299. package/dist/src/data-flow/postprocess.d.ts +9 -0
  300. package/dist/src/data-flow/postprocess.js +63 -0
  301. package/dist/src/data-flow/rewire.d.ts +10 -0
  302. package/dist/src/data-flow/rewire.js +93 -0
  303. package/dist/src/data-flow/source-attribution.d.ts +8 -0
  304. package/dist/src/data-flow/source-attribution.js +131 -0
  305. package/dist/src/data-flow/source-resolution.d.ts +13 -0
  306. package/dist/src/data-flow/source-resolution.js +61 -0
  307. package/dist/src/data-flow/target-matching.d.ts +21 -0
  308. package/dist/src/data-flow/target-matching.js +253 -0
  309. package/dist/src/data-flow/terraform-flows.d.ts +32 -0
  310. package/dist/src/data-flow/terraform-flows.js +170 -0
  311. package/dist/src/evals/metrics.d.ts +18 -0
  312. package/dist/src/evals/metrics.js +58 -0
  313. package/dist/src/evals/run-model-matrix.d.ts +1 -0
  314. package/dist/src/evals/run-model-matrix.js +68 -0
  315. package/dist/src/index.d.ts +2 -0
  316. package/dist/src/index.js +20 -0
  317. package/dist/src/ingest/file-system.d.ts +17 -0
  318. package/dist/src/ingest/file-system.js +239 -0
  319. package/dist/src/ingest/gitignore.d.ts +12 -0
  320. package/dist/src/ingest/gitignore.js +127 -0
  321. package/dist/src/ingest/sensitive-paths.d.ts +2 -0
  322. package/dist/src/ingest/sensitive-paths.js +8 -0
  323. package/dist/src/observability/scan-sentry.d.ts +20 -0
  324. package/dist/src/observability/scan-sentry.js +133 -0
  325. package/dist/src/output/json.d.ts +51 -0
  326. package/dist/src/output/json.js +59 -0
  327. package/dist/src/patterns/config.d.ts +22 -0
  328. package/dist/src/patterns/config.js +119 -0
  329. package/dist/src/patterns/detectors/helpers.d.ts +19 -0
  330. package/dist/src/patterns/detectors/helpers.js +68 -0
  331. package/dist/src/patterns/detectors/python.d.ts +8 -0
  332. package/dist/src/patterns/detectors/python.js +412 -0
  333. package/dist/src/patterns/detectors/typescript.d.ts +8 -0
  334. package/dist/src/patterns/detectors/typescript.js +328 -0
  335. package/dist/src/patterns/engine.d.ts +40 -0
  336. package/dist/src/patterns/engine.js +111 -0
  337. package/dist/src/patterns/flow-source-patterns.d.ts +6 -0
  338. package/dist/src/patterns/flow-source-patterns.js +39 -0
  339. package/dist/src/patterns/frontend-frameworks.d.ts +4 -0
  340. package/dist/src/patterns/frontend-frameworks.js +25 -0
  341. package/dist/src/patterns/scan-exclusions.d.ts +14 -0
  342. package/dist/src/patterns/scan-exclusions.js +76 -0
  343. package/dist/src/platform-api/dataparade-api-base-url.d.ts +8 -0
  344. package/dist/src/platform-api/dataparade-api-base-url.js +17 -0
  345. package/dist/src/platform-api/estimate-scan-footprint.d.ts +8 -0
  346. package/dist/src/platform-api/estimate-scan-footprint.js +120 -0
  347. package/dist/src/platform-api/scan-quota-client.d.ts +28 -0
  348. package/dist/src/platform-api/scan-quota-client.js +79 -0
  349. package/dist/src/tracing/langsmith-tracing.d.ts +37 -0
  350. package/dist/src/tracing/langsmith-tracing.js +171 -0
  351. package/dist/tests/cli/cli.spec.d.ts +1 -0
  352. package/dist/tests/cli/cli.spec.js +87 -0
  353. package/dist/tests/fixtures/e2e-ts-sample/db-client-import.d.ts +2 -0
  354. package/dist/tests/fixtures/e2e-ts-sample/db-client-import.js +8 -0
  355. package/dist/tests/fixtures/e2e-ts-sample/db.d.ts +3 -0
  356. package/dist/tests/fixtures/e2e-ts-sample/db.js +7 -0
  357. package/dist/tests/fixtures/e2e-ts-sample/external-api.d.ts +1 -0
  358. package/dist/tests/fixtures/e2e-ts-sample/external-api.js +18 -0
  359. package/dist/tests/fixtures/e2e-ts-sample/pg-client.d.ts +3 -0
  360. package/dist/tests/fixtures/e2e-ts-sample/pg-client.js +7 -0
  361. package/dist/tests/fixtures/e2e-ts-sample/server.d.ts +14 -0
  362. package/dist/tests/fixtures/e2e-ts-sample/server.js +4 -0
  363. package/dist/tests/fixtures/e2e-ts-sentry-route-env/server.d.ts +1 -0
  364. package/dist/tests/fixtures/e2e-ts-sentry-route-env/server.js +24 -0
  365. package/dist/tests/fixtures/ingest-basic/src/index.d.ts +1 -0
  366. package/dist/tests/fixtures/ingest-basic/src/index.js +6 -0
  367. package/dist/tests/fixtures/mixed-language-basic/api.d.ts +2 -0
  368. package/dist/tests/fixtures/mixed-language-basic/api.js +12 -0
  369. package/dist/tests/fixtures/monorepo-app-plus-terraform/packages/app/app/route.d.ts +1 -0
  370. package/dist/tests/fixtures/monorepo-app-plus-terraform/packages/app/app/route.js +6 -0
  371. package/dist/tests/fixtures/monorepo-front-back-sections/backend/app/route.d.ts +1 -0
  372. package/dist/tests/fixtures/monorepo-front-back-sections/backend/app/route.js +6 -0
  373. package/dist/tests/fixtures/monorepo-front-back-sections/frontend/app/route.d.ts +1 -0
  374. package/dist/tests/fixtures/monorepo-front-back-sections/frontend/app/route.js +7 -0
  375. package/dist/tests/fixtures/typescript-basic/app/route.d.ts +1 -0
  376. package/dist/tests/fixtures/typescript-basic/app/route.js +7 -0
  377. package/dist/tests/fixtures/typescript-basic/db-client-import.d.ts +2 -0
  378. package/dist/tests/fixtures/typescript-basic/db-client-import.js +8 -0
  379. package/dist/tests/fixtures/typescript-basic/db.d.ts +3 -0
  380. package/dist/tests/fixtures/typescript-basic/db.js +7 -0
  381. package/dist/tests/fixtures/typescript-basic/external-api.d.ts +1 -0
  382. package/dist/tests/fixtures/typescript-basic/external-api.js +18 -0
  383. package/dist/tests/fixtures/typescript-basic/pg-client.d.ts +3 -0
  384. package/dist/tests/fixtures/typescript-basic/pg-client.js +7 -0
  385. package/dist/tests/fixtures/typescript-basic/server.d.ts +14 -0
  386. package/dist/tests/fixtures/typescript-basic/server.js +4 -0
  387. package/dist/tests/fixtures/typescript-dependency-manifests-basic/src/index.d.ts +0 -0
  388. package/dist/tests/fixtures/typescript-dependency-manifests-basic/src/index.js +2 -0
  389. package/dist/tests/helpers/scan-result-builders.d.ts +2 -0
  390. package/dist/tests/helpers/scan-result-builders.js +15 -0
  391. package/dist/tests/schema/dataflow-wrapper.schema.spec.d.ts +1 -0
  392. package/dist/tests/schema/dataflow-wrapper.schema.spec.js +89 -0
  393. package/dist/tests/schema/diagram-graph.schema.spec.d.ts +1 -0
  394. package/dist/tests/schema/diagram-graph.schema.spec.js +48 -0
  395. package/dist/tests/schema/scan-config.schema.spec.d.ts +1 -0
  396. package/dist/tests/schema/scan-config.schema.spec.js +135 -0
  397. package/dist/tests/schema/scan-result.schema.spec.d.ts +1 -0
  398. package/dist/tests/schema/scan-result.schema.spec.js +177 -0
  399. package/dist/tests/unit/ai-enrichment/agent-orchestrator.spec.d.ts +1 -0
  400. package/dist/tests/unit/ai-enrichment/agent-orchestrator.spec.js +483 -0
  401. package/dist/tests/unit/ai-enrichment/candidate-selector.spec.d.ts +1 -0
  402. package/dist/tests/unit/ai-enrichment/candidate-selector.spec.js +106 -0
  403. package/dist/tests/unit/ai-enrichment/create-ai-provider.spec.d.ts +1 -0
  404. package/dist/tests/unit/ai-enrichment/create-ai-provider.spec.js +32 -0
  405. package/dist/tests/unit/ai-enrichment/endpoint-resolution.spec.d.ts +1 -0
  406. package/dist/tests/unit/ai-enrichment/endpoint-resolution.spec.js +47 -0
  407. package/dist/tests/unit/ai-enrichment/fallbacks.spec.d.ts +1 -0
  408. package/dist/tests/unit/ai-enrichment/fallbacks.spec.js +1304 -0
  409. package/dist/tests/unit/ai-enrichment/families/chat-completions-family.spec.d.ts +1 -0
  410. package/dist/tests/unit/ai-enrichment/families/chat-completions-family.spec.js +219 -0
  411. package/dist/tests/unit/ai-enrichment/families/generate-content-family.spec.d.ts +1 -0
  412. package/dist/tests/unit/ai-enrichment/families/generate-content-family.spec.js +119 -0
  413. package/dist/tests/unit/ai-enrichment/families/messages-family.spec.d.ts +1 -0
  414. package/dist/tests/unit/ai-enrichment/families/messages-family.spec.js +129 -0
  415. package/dist/tests/unit/ai-enrichment/families/ollama-generate-family.spec.d.ts +1 -0
  416. package/dist/tests/unit/ai-enrichment/families/ollama-generate-family.spec.js +69 -0
  417. package/dist/tests/unit/ai-enrichment/merge-rules.spec.d.ts +1 -0
  418. package/dist/tests/unit/ai-enrichment/merge-rules.spec.js +422 -0
  419. package/dist/tests/unit/ai-enrichment/openai-proposals-response.schema.spec.d.ts +1 -0
  420. package/dist/tests/unit/ai-enrichment/openai-proposals-response.schema.spec.js +30 -0
  421. package/dist/tests/unit/ai-enrichment/pipeline.spec.d.ts +1 -0
  422. package/dist/tests/unit/ai-enrichment/pipeline.spec.js +120 -0
  423. package/dist/tests/unit/ai-enrichment/planner.spec.d.ts +1 -0
  424. package/dist/tests/unit/ai-enrichment/planner.spec.js +106 -0
  425. package/dist/tests/unit/ai-enrichment/platform-proxy-provider.spec.d.ts +1 -0
  426. package/dist/tests/unit/ai-enrichment/platform-proxy-provider.spec.js +51 -0
  427. package/dist/tests/unit/ai-enrichment/provider-contract.spec.d.ts +1 -0
  428. package/dist/tests/unit/ai-enrichment/provider-contract.spec.js +244 -0
  429. package/dist/tests/unit/ai-enrichment/provider-json-parse.spec.d.ts +1 -0
  430. package/dist/tests/unit/ai-enrichment/provider-json-parse.spec.js +24 -0
  431. package/dist/tests/unit/ai-enrichment/provider-output-token-budget.spec.d.ts +1 -0
  432. package/dist/tests/unit/ai-enrichment/provider-output-token-budget.spec.js +15 -0
  433. package/dist/tests/unit/ai-enrichment/provider-prompt-env.spec.d.ts +1 -0
  434. package/dist/tests/unit/ai-enrichment/provider-prompt-env.spec.js +54 -0
  435. package/dist/tests/unit/ai-enrichment/provider-prompt.spec.d.ts +1 -0
  436. package/dist/tests/unit/ai-enrichment/provider-prompt.spec.js +206 -0
  437. package/dist/tests/unit/ai-enrichment/provider-topology-terraform-aws.spec.d.ts +1 -0
  438. package/dist/tests/unit/ai-enrichment/provider-topology-terraform-aws.spec.js +43 -0
  439. package/dist/tests/unit/ai-enrichment/provider-topology-terraform-kubernetes.spec.d.ts +1 -0
  440. package/dist/tests/unit/ai-enrichment/provider-topology-terraform-kubernetes.spec.js +40 -0
  441. package/dist/tests/unit/ai-enrichment/providers/fetch-with-timeout.spec.d.ts +1 -0
  442. package/dist/tests/unit/ai-enrichment/providers/fetch-with-timeout.spec.js +22 -0
  443. package/dist/tests/unit/ai-enrichment/resolve-provider.spec.d.ts +1 -0
  444. package/dist/tests/unit/ai-enrichment/resolve-provider.spec.js +67 -0
  445. package/dist/tests/unit/ai-enrichment/scan-paths-exact.spec.d.ts +1 -0
  446. package/dist/tests/unit/ai-enrichment/scan-paths-exact.spec.js +35 -0
  447. package/dist/tests/unit/ai-enrichment/scan-paths.spec.d.ts +1 -0
  448. package/dist/tests/unit/ai-enrichment/scan-paths.spec.js +21 -0
  449. package/dist/tests/unit/ai-enrichment/sensitive-paths.spec.d.ts +1 -0
  450. package/dist/tests/unit/ai-enrichment/sensitive-paths.spec.js +20 -0
  451. package/dist/tests/unit/ai-enrichment/third-party-data-flow.spec.d.ts +1 -0
  452. package/dist/tests/unit/ai-enrichment/third-party-data-flow.spec.js +963 -0
  453. package/dist/tests/unit/ai-enrichment/third-party-evidence.spec.d.ts +1 -0
  454. package/dist/tests/unit/ai-enrichment/third-party-evidence.spec.js +117 -0
  455. package/dist/tests/unit/ai-enrichment/third-party-subtype.spec.d.ts +1 -0
  456. package/dist/tests/unit/ai-enrichment/third-party-subtype.spec.js +45 -0
  457. package/dist/tests/unit/ai-enrichment/tools-validation.spec.d.ts +1 -0
  458. package/dist/tests/unit/ai-enrichment/tools-validation.spec.js +66 -0
  459. package/dist/tests/unit/analyzers/python/parser.spec.d.ts +1 -0
  460. package/dist/tests/unit/analyzers/python/parser.spec.js +104 -0
  461. package/dist/tests/unit/analyzers/python/patterns.spec.d.ts +1 -0
  462. package/dist/tests/unit/analyzers/python/patterns.spec.js +289 -0
  463. package/dist/tests/unit/analyzers/registry.spec.d.ts +1 -0
  464. package/dist/tests/unit/analyzers/registry.spec.js +234 -0
  465. package/dist/tests/unit/analyzers/terraform/classifier-subtype-parity.spec.d.ts +1 -0
  466. package/dist/tests/unit/analyzers/terraform/classifier-subtype-parity.spec.js +87 -0
  467. package/dist/tests/unit/analyzers/terraform/detector.spec.d.ts +1 -0
  468. package/dist/tests/unit/analyzers/terraform/detector.spec.js +110 -0
  469. package/dist/tests/unit/analyzers/terraform/generated-provider-hints.spec.d.ts +1 -0
  470. package/dist/tests/unit/analyzers/terraform/generated-provider-hints.spec.js +53 -0
  471. package/dist/tests/unit/analyzers/terraform/parser.spec.d.ts +1 -0
  472. package/dist/tests/unit/analyzers/terraform/parser.spec.js +56 -0
  473. package/dist/tests/unit/analyzers/terraform/terraform-module-manifest.spec.d.ts +1 -0
  474. package/dist/tests/unit/analyzers/terraform/terraform-module-manifest.spec.js +63 -0
  475. package/dist/tests/unit/analyzers/terraform/terraform-utility-resource.spec.d.ts +1 -0
  476. package/dist/tests/unit/analyzers/terraform/terraform-utility-resource.spec.js +19 -0
  477. package/dist/tests/unit/analyzers/terraform-exec.spec.d.ts +1 -0
  478. package/dist/tests/unit/analyzers/terraform-exec.spec.js +27 -0
  479. package/dist/tests/unit/analyzers/terraform-show-json.spec.d.ts +1 -0
  480. package/dist/tests/unit/analyzers/terraform-show-json.spec.js +77 -0
  481. package/dist/tests/unit/analyzers/typescript/dependency-manifests.spec.d.ts +1 -0
  482. package/dist/tests/unit/analyzers/typescript/dependency-manifests.spec.js +61 -0
  483. package/dist/tests/unit/analyzers/typescript/detector.spec.d.ts +1 -0
  484. package/dist/tests/unit/analyzers/typescript/detector.spec.js +225 -0
  485. package/dist/tests/unit/analyzers/typescript/external-apis-auth0.spec.d.ts +1 -0
  486. package/dist/tests/unit/analyzers/typescript/external-apis-auth0.spec.js +49 -0
  487. package/dist/tests/unit/analyzers/typescript/external-apis-sentry.spec.d.ts +1 -0
  488. package/dist/tests/unit/analyzers/typescript/external-apis-sentry.spec.js +27 -0
  489. package/dist/tests/unit/analyzers/typescript/fixture-integration.spec.d.ts +1 -0
  490. package/dist/tests/unit/analyzers/typescript/fixture-integration.spec.js +64 -0
  491. package/dist/tests/unit/analyzers/typescript/parser.spec.d.ts +1 -0
  492. package/dist/tests/unit/analyzers/typescript/parser.spec.js +99 -0
  493. package/dist/tests/unit/analyzers/typescript/pattern-config.spec.d.ts +1 -0
  494. package/dist/tests/unit/analyzers/typescript/pattern-config.spec.js +24 -0
  495. package/dist/tests/unit/analyzers/typescript/property-detection.spec.d.ts +1 -0
  496. package/dist/tests/unit/analyzers/typescript/property-detection.spec.js +138 -0
  497. package/dist/tests/unit/classifier/classify.spec.d.ts +1 -0
  498. package/dist/tests/unit/classifier/classify.spec.js +1453 -0
  499. package/dist/tests/unit/classifier/enhance.spec.d.ts +1 -0
  500. package/dist/tests/unit/classifier/enhance.spec.js +400 -0
  501. package/dist/tests/unit/classifier/external-url-third-party.spec.d.ts +1 -0
  502. package/dist/tests/unit/classifier/external-url-third-party.spec.js +83 -0
  503. package/dist/tests/unit/classifier/frontend-framework-grouping.spec.d.ts +1 -0
  504. package/dist/tests/unit/classifier/frontend-framework-grouping.spec.js +44 -0
  505. package/dist/tests/unit/classifier/terraform-grouping.spec.d.ts +1 -0
  506. package/dist/tests/unit/classifier/terraform-grouping.spec.js +96 -0
  507. package/dist/tests/unit/cli/config-command.spec.d.ts +1 -0
  508. package/dist/tests/unit/cli/config-command.spec.js +51 -0
  509. package/dist/tests/unit/cli/scan-command-ai-flags.spec.d.ts +0 -0
  510. package/dist/tests/unit/cli/scan-command-ai-flags.spec.js +149 -0
  511. package/dist/tests/unit/cli/scan-command-diagram-graph.spec.d.ts +1 -0
  512. package/dist/tests/unit/cli/scan-command-diagram-graph.spec.js +26 -0
  513. package/dist/tests/unit/cli/scan-command-e2e-monorepo-app-plus-terraform.spec.d.ts +1 -0
  514. package/dist/tests/unit/cli/scan-command-e2e-monorepo-app-plus-terraform.spec.js +107 -0
  515. package/dist/tests/unit/cli/scan-command-e2e-monorepo-front-back-sections.spec.d.ts +1 -0
  516. package/dist/tests/unit/cli/scan-command-e2e-monorepo-front-back-sections.spec.js +74 -0
  517. package/dist/tests/unit/cli/scan-command-e2e-python-basic.spec.d.ts +1 -0
  518. package/dist/tests/unit/cli/scan-command-e2e-python-basic.spec.js +43 -0
  519. package/dist/tests/unit/cli/scan-command-e2e-terraform-basic.spec.d.ts +1 -0
  520. package/dist/tests/unit/cli/scan-command-e2e-terraform-basic.spec.js +62 -0
  521. package/dist/tests/unit/cli/scan-command-e2e-ts-sample.spec.d.ts +1 -0
  522. package/dist/tests/unit/cli/scan-command-e2e-ts-sample.spec.js +41 -0
  523. package/dist/tests/unit/cli/scan-command-e2e-ts-sentry-route-env.spec.d.ts +1 -0
  524. package/dist/tests/unit/cli/scan-command-e2e-ts-sentry-route-env.spec.js +85 -0
  525. package/dist/tests/unit/cli/scan-command-exit-code.spec.d.ts +1 -0
  526. package/dist/tests/unit/cli/scan-command-exit-code.spec.js +131 -0
  527. package/dist/tests/unit/cli/scan-quota-flow.spec.d.ts +1 -0
  528. package/dist/tests/unit/cli/scan-quota-flow.spec.js +76 -0
  529. package/dist/tests/unit/config/property-detection-config.spec.d.ts +1 -0
  530. package/dist/tests/unit/config/property-detection-config.spec.js +38 -0
  531. package/dist/tests/unit/config/redact.spec.d.ts +1 -0
  532. package/dist/tests/unit/config/redact.spec.js +19 -0
  533. package/dist/tests/unit/config/resolve-config.spec.d.ts +1 -0
  534. package/dist/tests/unit/config/resolve-config.spec.js +172 -0
  535. package/dist/tests/unit/config/scan-env-debug.spec.d.ts +1 -0
  536. package/dist/tests/unit/config/scan-env-debug.spec.js +17 -0
  537. package/dist/tests/unit/config/validate-scan-ai.spec.d.ts +1 -0
  538. package/dist/tests/unit/config/validate-scan-ai.spec.js +53 -0
  539. package/dist/tests/unit/core/classifier-phase-regressions.spec.d.ts +1 -0
  540. package/dist/tests/unit/core/classifier-phase-regressions.spec.js +68 -0
  541. package/dist/tests/unit/core/dependency-manifest-performance-budgets.spec.d.ts +1 -0
  542. package/dist/tests/unit/core/dependency-manifest-performance-budgets.spec.js +66 -0
  543. package/dist/tests/unit/core/dependency-manifest-toggles-confidence.spec.d.ts +1 -0
  544. package/dist/tests/unit/core/dependency-manifest-toggles-confidence.spec.js +132 -0
  545. package/dist/tests/unit/core/discover-service-sections.spec.d.ts +1 -0
  546. package/dist/tests/unit/core/discover-service-sections.spec.js +204 -0
  547. package/dist/tests/unit/core/graph-mapping.spec.d.ts +1 -0
  548. package/dist/tests/unit/core/graph-mapping.spec.js +779 -0
  549. package/dist/tests/unit/core/invariant-tests-dedupe-determinism.spec.d.ts +1 -0
  550. package/dist/tests/unit/core/invariant-tests-dedupe-determinism.spec.js +64 -0
  551. package/dist/tests/unit/core/manifest-package-hub.spec.d.ts +1 -0
  552. package/dist/tests/unit/core/manifest-package-hub.spec.js +53 -0
  553. package/dist/tests/unit/core/monorepo-package-sections.spec.d.ts +1 -0
  554. package/dist/tests/unit/core/monorepo-package-sections.spec.js +121 -0
  555. package/dist/tests/unit/core/no-source-code-leakage.spec.d.ts +1 -0
  556. package/dist/tests/unit/core/no-source-code-leakage.spec.js +48 -0
  557. package/dist/tests/unit/core/orchestrator.spec.d.ts +1 -0
  558. package/dist/tests/unit/core/orchestrator.spec.js +252 -0
  559. package/dist/tests/unit/core/output-json.spec.d.ts +1 -0
  560. package/dist/tests/unit/core/output-json.spec.js +65 -0
  561. package/dist/tests/unit/core/parsing-error-handling-nonfatal.spec.d.ts +1 -0
  562. package/dist/tests/unit/core/parsing-error-handling-nonfatal.spec.js +42 -0
  563. package/dist/tests/unit/core/resolve-path-under-scan-root.spec.d.ts +1 -0
  564. package/dist/tests/unit/core/resolve-path-under-scan-root.spec.js +54 -0
  565. package/dist/tests/unit/core/scan-result-language-stats.spec.d.ts +1 -0
  566. package/dist/tests/unit/core/scan-result-language-stats.spec.js +15 -0
  567. package/dist/tests/unit/core/section-discovery-excludes.spec.d.ts +1 -0
  568. package/dist/tests/unit/core/section-discovery-excludes.spec.js +49 -0
  569. package/dist/tests/unit/core/section-runtime.spec.d.ts +1 -0
  570. package/dist/tests/unit/core/section-runtime.spec.js +166 -0
  571. package/dist/tests/unit/core/stable-component-ids.spec.d.ts +1 -0
  572. package/dist/tests/unit/core/stable-component-ids.spec.js +112 -0
  573. package/dist/tests/unit/core/structural-scan.spec.d.ts +1 -0
  574. package/dist/tests/unit/core/structural-scan.spec.js +83 -0
  575. package/dist/tests/unit/core/terraform-json-overlay.spec.d.ts +1 -0
  576. package/dist/tests/unit/core/terraform-json-overlay.spec.js +36 -0
  577. package/dist/tests/unit/core/terraform-minimal-services.spec.d.ts +1 -0
  578. package/dist/tests/unit/core/terraform-minimal-services.spec.js +378 -0
  579. package/dist/tests/unit/data-flow/application-hub.spec.d.ts +1 -0
  580. package/dist/tests/unit/data-flow/application-hub.spec.js +48 -0
  581. package/dist/tests/unit/data-flow/cross-section-terraform-bridge.spec.d.ts +1 -0
  582. package/dist/tests/unit/data-flow/cross-section-terraform-bridge.spec.js +95 -0
  583. package/dist/tests/unit/data-flow/dedupe.spec.d.ts +1 -0
  584. package/dist/tests/unit/data-flow/dedupe.spec.js +134 -0
  585. package/dist/tests/unit/data-flow/detector.spec.d.ts +1 -0
  586. package/dist/tests/unit/data-flow/detector.spec.js +1254 -0
  587. package/dist/tests/unit/data-flow/drop-cross-section-flows.spec.d.ts +1 -0
  588. package/dist/tests/unit/data-flow/drop-cross-section-flows.spec.js +132 -0
  589. package/dist/tests/unit/data-flow/ensure-actor-flow.spec.d.ts +1 -0
  590. package/dist/tests/unit/data-flow/ensure-actor-flow.spec.js +233 -0
  591. package/dist/tests/unit/data-flow/ensure-manifest-declared-flows.spec.d.ts +1 -0
  592. package/dist/tests/unit/data-flow/ensure-manifest-declared-flows.spec.js +125 -0
  593. package/dist/tests/unit/data-flow/ensure-section-api-flows.spec.d.ts +1 -0
  594. package/dist/tests/unit/data-flow/ensure-section-api-flows.spec.js +40 -0
  595. package/dist/tests/unit/data-flow/postprocess.spec.d.ts +1 -0
  596. package/dist/tests/unit/data-flow/postprocess.spec.js +78 -0
  597. package/dist/tests/unit/data-flow/rewire.spec.d.ts +1 -0
  598. package/dist/tests/unit/data-flow/rewire.spec.js +194 -0
  599. package/dist/tests/unit/data-flow/terraform-flows.spec.d.ts +1 -0
  600. package/dist/tests/unit/data-flow/terraform-flows.spec.js +199 -0
  601. package/dist/tests/unit/evals/metrics.spec.d.ts +1 -0
  602. package/dist/tests/unit/evals/metrics.spec.js +54 -0
  603. package/dist/tests/unit/ingest/env-exclusion.spec.d.ts +1 -0
  604. package/dist/tests/unit/ingest/env-exclusion.spec.js +43 -0
  605. package/dist/tests/unit/ingest/file-system.spec.d.ts +1 -0
  606. package/dist/tests/unit/ingest/file-system.spec.js +180 -0
  607. package/dist/tests/unit/ingest/gitignore.spec.d.ts +1 -0
  608. package/dist/tests/unit/ingest/gitignore.spec.js +30 -0
  609. package/dist/tests/unit/observability/scan-sentry.spec.d.ts +1 -0
  610. package/dist/tests/unit/observability/scan-sentry.spec.js +60 -0
  611. package/dist/tests/unit/patterns/scan-exclusions.spec.d.ts +1 -0
  612. package/dist/tests/unit/patterns/scan-exclusions.spec.js +58 -0
  613. package/dist/tests/unit/pipeline/ai-orchestrator-options.spec.d.ts +1 -0
  614. package/dist/tests/unit/pipeline/ai-orchestrator-options.spec.js +19 -0
  615. package/dist/tests/unit/platform-api/dataparade-api-base-url.spec.d.ts +1 -0
  616. package/dist/tests/unit/platform-api/dataparade-api-base-url.spec.js +19 -0
  617. package/dist/tests/unit/platform-api/estimate-scan-footprint.spec.d.ts +1 -0
  618. package/dist/tests/unit/platform-api/estimate-scan-footprint.spec.js +50 -0
  619. package/dist/tests/unit/tracing/langsmith-tracing.spec.d.ts +1 -0
  620. package/dist/tests/unit/tracing/langsmith-tracing.spec.js +118 -0
  621. package/package.json +84 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enhanceComponent = enhanceComponent;
4
+ exports.enhanceComponents = enhanceComponents;
5
+ const enhance_defaults_1 = require("./enhance-defaults");
6
+ const property_detection_config_1 = require("../config/property-detection-config");
7
+ const main_application_selection_1 = require("./main-application-selection");
8
+ const application_injection_1 = require("./application-injection");
9
+ const frontend_frameworks_1 = require("../patterns/frontend-frameworks");
10
+ function setIfMissing(props, key, value) {
11
+ const current = props[key];
12
+ if (current === undefined || current === "" || current === null) {
13
+ props[key] = value;
14
+ }
15
+ }
16
+ function toTitleCase(s) {
17
+ return s
18
+ .split(/\s+/)
19
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())
20
+ .join(" ");
21
+ }
22
+ function normalizeApiDisplayName(rawName, properties) {
23
+ const name = (rawName || "").trim();
24
+ if (!name)
25
+ return name;
26
+ const lower = name.toLowerCase();
27
+ const isGenericApiName = lower === "route handler" ||
28
+ lower.startsWith("nest_controller") ||
29
+ /^(get|post|put|delete|patch|options|head)\s+/.test(lower);
30
+ if (!isGenericApiName)
31
+ return name;
32
+ const sectionLabel = properties?.section_label;
33
+ if (typeof sectionLabel === "string" && sectionLabel.trim()) {
34
+ return `${sectionLabel.trim()} API`;
35
+ }
36
+ const sectionId = properties?.section_id;
37
+ if (typeof sectionId === "string" &&
38
+ sectionId.trim() &&
39
+ sectionId !== "root" &&
40
+ sectionId !== "global" &&
41
+ sectionId !== "<unsectioned>") {
42
+ return `${sectionId.trim()} API`;
43
+ }
44
+ return "API";
45
+ }
46
+ /**
47
+ * Enhances a single component with defaults for all inferrable properties
48
+ * per node type (asset, actor, third_party). Does not set isMainApplication
49
+ * (that is applied in enhanceComponents).
50
+ */
51
+ function enhanceComponent(component) {
52
+ const properties = { ...component.properties };
53
+ // Apply all Engineering, Privacy, and Security property defaults for this type (only when missing)
54
+ const defaults = (0, enhance_defaults_1.getDefaultsForType)(component.type);
55
+ for (const key of Object.keys(defaults)) {
56
+ if (properties[key] === undefined) {
57
+ properties[key] = defaults[key];
58
+ }
59
+ }
60
+ switch (component.type) {
61
+ case "asset":
62
+ enhanceAsset(component, properties);
63
+ break;
64
+ case "third_party":
65
+ enhanceThirdParty(component, properties);
66
+ break;
67
+ case "actor":
68
+ enhanceActor(component, properties);
69
+ break;
70
+ }
71
+ return {
72
+ ...component,
73
+ properties,
74
+ };
75
+ }
76
+ function enhanceAsset(component, properties) {
77
+ const { subType } = component;
78
+ const { cloudAssetSubtypes, onPremAssetSubtypes, supportedOperationsBySubType } = (0, property_detection_config_1.loadPropertyDetectionConfig)().enhance;
79
+ // technology_stack: infer from databaseType or known name (only when we have a value)
80
+ const techStack = inferTechnologyStack(component);
81
+ if (techStack) {
82
+ setIfMissing(properties, "technology_stack", techStack);
83
+ }
84
+ // hosting_type: cloud for api/database/cache/etc., on_premise for config
85
+ if (subType && cloudAssetSubtypes.has(subType)) {
86
+ setIfMissing(properties, "hosting_type", "cloud");
87
+ }
88
+ else if (subType && onPremAssetSubtypes.has(subType)) {
89
+ setIfMissing(properties, "hosting_type", "on_premise");
90
+ }
91
+ else {
92
+ setIfMissing(properties, "hosting_type", "cloud");
93
+ }
94
+ // database_engine: for database/cache, from databaseType
95
+ if (subType === "database" || subType === "cache") {
96
+ const dbType = component.properties.databaseType;
97
+ if (typeof dbType === "string" && dbType.trim()) {
98
+ setIfMissing(properties, "database_engine", `${dbType.trim().charAt(0).toUpperCase()}${dbType.trim().slice(1).toLowerCase()}`);
99
+ }
100
+ }
101
+ // supported_operations: by subType from config
102
+ if (subType && supportedOperationsBySubType[subType]?.length) {
103
+ setIfMissing(properties, "supported_operations", supportedOperationsBySubType[subType]);
104
+ }
105
+ }
106
+ function inferTechnologyStack(component) {
107
+ const existing = component.properties.technology_stack;
108
+ if (existing !== undefined && existing !== "") {
109
+ return String(existing);
110
+ }
111
+ const dbType = component.properties.databaseType;
112
+ if (typeof dbType === "string" && dbType.trim()) {
113
+ return dbType.trim().toLowerCase();
114
+ }
115
+ const name = component.name?.trim().toLowerCase();
116
+ const { knownDatabaseNames } = (0, property_detection_config_1.loadPropertyDetectionConfig)();
117
+ if (name &&
118
+ (component.subType === "database" || component.subType === "cache") &&
119
+ knownDatabaseNames.has(name)) {
120
+ return name;
121
+ }
122
+ // Do not fall back to generic "database" / "cache" — leave technology_stack unset (default null)
123
+ return "";
124
+ }
125
+ function enhanceThirdParty(component, properties) {
126
+ const { defaultThirdPartyHosting } = (0, property_detection_config_1.loadPropertyDetectionConfig)().enhance;
127
+ setIfMissing(properties, "hosting_type", defaultThirdPartyHosting);
128
+ setIfMissing(properties, "integration_method", "api");
129
+ if (component.name && !properties.vendor) {
130
+ properties.vendor = toTitleCase(component.name.trim());
131
+ }
132
+ }
133
+ function enhanceActor(component, properties) {
134
+ if (component.subType === "customer") {
135
+ properties.isDataSubject = true; // override default false for customer
136
+ }
137
+ }
138
+ function isSingleRouteApiAsset(component) {
139
+ if (component.type !== "asset" || component.subType !== "api") {
140
+ return false;
141
+ }
142
+ const name = (component.name || "").trim();
143
+ if (!name)
144
+ return false;
145
+ const lower = name.toLowerCase();
146
+ if (lower === "route handler") {
147
+ return true;
148
+ }
149
+ if (lower.startsWith("nest_controller")) {
150
+ return true;
151
+ }
152
+ if (/^(get|post|put|delete|patch|options|head)\s+/.test(lower)) {
153
+ return true;
154
+ }
155
+ return false;
156
+ }
157
+ function getFrameworkPriority(component) {
158
+ const value = component.properties.framework;
159
+ const frameworks = [];
160
+ if (typeof value === "string") {
161
+ frameworks.push(value);
162
+ }
163
+ else if (Array.isArray(value)) {
164
+ for (const v of value) {
165
+ if (typeof v === "string") {
166
+ frameworks.push(v);
167
+ }
168
+ }
169
+ }
170
+ if (frameworks.length === 0)
171
+ return 100;
172
+ let best = 100;
173
+ for (const raw of frameworks) {
174
+ const fw = raw.toLowerCase();
175
+ if (frontend_frameworks_1.FRONTEND_FRAMEWORK_HINTS_SET.has(fw)) {
176
+ best = Math.min(best, 0);
177
+ }
178
+ else if (frontend_frameworks_1.SERVER_FRAMEWORK_HINTS.has(fw)) {
179
+ best = Math.min(best, 1);
180
+ }
181
+ else {
182
+ best = Math.min(best, 2);
183
+ }
184
+ }
185
+ return best;
186
+ }
187
+ /**
188
+ * Enhances all components with defaults for all node types, then sets
189
+ * isMainApplication on a "primary" app asset per section_id (framework-aware),
190
+ * and normalizes generic API display names.
191
+ */
192
+ function enhanceComponents(components) {
193
+ const enhanced = components.map(enhanceComponent);
194
+ const { mainAppSubtypes } = (0, property_detection_config_1.loadPropertyDetectionConfig)().enhance;
195
+ // Clear any existing isMainApplication markers so the selection is deterministic.
196
+ for (const c of enhanced) {
197
+ if (c.type === "asset" &&
198
+ c.subType !== undefined &&
199
+ mainAppSubtypes.has(c.subType)) {
200
+ if ("isMainApplication" in c.properties) {
201
+ delete c.properties.isMainApplication;
202
+ }
203
+ }
204
+ }
205
+ const sectionIdFor = (c) => typeof c.properties?.section_id === "string" && c.properties.section_id.trim()
206
+ ? c.properties.section_id.trim()
207
+ : "<unsectioned>";
208
+ const bySectionRegular = new Map();
209
+ const bySectionSingleRoute = new Map();
210
+ for (let i = 0; i < enhanced.length; i++) {
211
+ const c = enhanced[i];
212
+ if (c.type === "asset" &&
213
+ c.subType !== undefined &&
214
+ mainAppSubtypes.has(c.subType)) {
215
+ if ((0, main_application_selection_1.isTerraformGraphResourceAsset)(c)) {
216
+ continue;
217
+ }
218
+ if ((0, main_application_selection_1.isTerraformUtilityInfrastructureAsset)(c)) {
219
+ continue;
220
+ }
221
+ if ((0, main_application_selection_1.isTerraformStructuralInfrastructureAsset)(c)) {
222
+ continue;
223
+ }
224
+ if ((0, main_application_selection_1.isTerraformModuleCallShellAsset)(c)) {
225
+ continue;
226
+ }
227
+ const sid = sectionIdFor(c);
228
+ const priority = getFrameworkPriority(c);
229
+ if (isSingleRouteApiAsset(c)) {
230
+ const list = bySectionSingleRoute.get(sid);
231
+ if (list)
232
+ list.push({ index: i, frameworkPriority: priority });
233
+ else
234
+ bySectionSingleRoute.set(sid, [{ index: i, frameworkPriority: priority }]);
235
+ }
236
+ else {
237
+ const list = bySectionRegular.get(sid);
238
+ if (list)
239
+ list.push({ index: i, frameworkPriority: priority });
240
+ else
241
+ bySectionRegular.set(sid, [{ index: i, frameworkPriority: priority }]);
242
+ }
243
+ }
244
+ }
245
+ if (bySectionRegular.size + bySectionSingleRoute.size === 0)
246
+ return enhanced;
247
+ const sectionKeys = new Set([
248
+ ...Array.from(bySectionRegular.keys()),
249
+ ...Array.from(bySectionSingleRoute.keys()),
250
+ ]);
251
+ const hasNonGlobal = Array.from(sectionKeys).some((sid) => sid !== "global");
252
+ const updated = [...enhanced];
253
+ for (const sid of sectionKeys) {
254
+ if (hasNonGlobal && sid === "global")
255
+ continue;
256
+ const candidates = bySectionRegular.get(sid) ?? bySectionSingleRoute.get(sid);
257
+ if (!candidates || candidates.length === 0)
258
+ continue;
259
+ candidates.sort((a, b) => {
260
+ const aCtx = updated[a.index]?.properties?.sourceContext;
261
+ const bCtx = updated[b.index]?.properties?.sourceContext;
262
+ const aInj = aCtx === application_injection_1.INJECTED_PROJECT_PLACEHOLDER_SOURCE_CONTEXT ? 0 : 1;
263
+ const bInj = bCtx === application_injection_1.INJECTED_PROJECT_PLACEHOLDER_SOURCE_CONTEXT ? 0 : 1;
264
+ if (aInj !== bInj)
265
+ return aInj - bInj;
266
+ if (a.frameworkPriority !== b.frameworkPriority) {
267
+ return a.frameworkPriority - b.frameworkPriority;
268
+ }
269
+ return a.index - b.index;
270
+ });
271
+ const pick = candidates[0];
272
+ const main = updated[pick.index];
273
+ const sectionLabelRaw = main.properties?.section_label;
274
+ const sectionLabel = typeof sectionLabelRaw === "string" && sectionLabelRaw.trim()
275
+ ? sectionLabelRaw.trim()
276
+ : undefined;
277
+ const preferredMainName = sid !== "<unsectioned>" && sid !== "root"
278
+ ? sectionLabel ?? sid
279
+ : main.name;
280
+ updated[pick.index] = {
281
+ ...main,
282
+ name: preferredMainName,
283
+ properties: { ...main.properties, isMainApplication: true },
284
+ };
285
+ }
286
+ return updated.map((component) => {
287
+ if (component.type === "asset" && component.subType === "api") {
288
+ return {
289
+ ...component,
290
+ name: normalizeApiDisplayName(component.name, component.properties),
291
+ };
292
+ }
293
+ return component;
294
+ });
295
+ }
@@ -0,0 +1,26 @@
1
+ import type { RawFinding } from "../core/types/detection";
2
+ export declare function shouldIgnoreExternalHttpUrl(url: string | undefined): boolean;
3
+ /**
4
+ * Stable third-party key: registrable-style host (last two DNS labels), e.g.
5
+ * api.openai.com → openai.com, clipdrop-api.co → clipdrop-api.co.
6
+ */
7
+ export declare function deriveServiceKeyFromHostname(host: string): string;
8
+ /**
9
+ * Hostname + registrable domain keys from an absolute http(s) URL (for matching
10
+ * external_api_call findings to third_party nodes by endpoint).
11
+ */
12
+ export declare function urlHostMatchKeys(url: string): Set<string>;
13
+ /**
14
+ * When YAML `url_host_patterns` do not match, derive a stable service key from the
15
+ * URL hostname (registrable-style). Skips env-interpolated and local/private hosts.
16
+ * Used at detection time so we do not maintain an exhaustive vendor URL list.
17
+ */
18
+ export declare function defaultServiceNameFromLiteralPublicUrl(url: string | undefined): string | undefined;
19
+ /**
20
+ * When a finding is an external_api_call with a literal public http(s) URL and no
21
+ * env interpolation, treat it as a third-party SaaS/API for classification.
22
+ */
23
+ export declare function inferThirdPartyFromLiteralHttpUrl(finding: RawFinding): {
24
+ serviceName: string;
25
+ subType: string;
26
+ } | undefined;
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldIgnoreExternalHttpUrl = shouldIgnoreExternalHttpUrl;
4
+ exports.deriveServiceKeyFromHostname = deriveServiceKeyFromHostname;
5
+ exports.urlHostMatchKeys = urlHostMatchKeys;
6
+ exports.defaultServiceNameFromLiteralPublicUrl = defaultServiceNameFromLiteralPublicUrl;
7
+ exports.inferThirdPartyFromLiteralHttpUrl = inferThirdPartyFromLiteralHttpUrl;
8
+ const config_1 = require("./config");
9
+ /**
10
+ * Structural heuristics (not a vendor list): URLs that are obviously templated or
11
+ * env-driven should not be treated as static third-party endpoints.
12
+ */
13
+ const ENV_OR_DYNAMIC_URL = /\$\{|process\.env|import\.meta\.env|\bgetenv\s*\(/i;
14
+ function extractLiteralHttpUrl(finding) {
15
+ if (finding.pattern !== "external_api_call") {
16
+ return undefined;
17
+ }
18
+ const props = finding.properties ?? {};
19
+ const fromProp = typeof props.url === "string" ? props.url.trim() : "";
20
+ const fromName = typeof finding.name === "string" && /^https?:\/\//i.test(finding.name)
21
+ ? finding.name.trim()
22
+ : "";
23
+ const raw = fromProp || fromName;
24
+ if (!raw || !/^https?:\/\//i.test(raw)) {
25
+ return undefined;
26
+ }
27
+ if (ENV_OR_DYNAMIC_URL.test(raw)) {
28
+ return undefined;
29
+ }
30
+ return raw;
31
+ }
32
+ function isLocalOrPrivateHost(hostname) {
33
+ const h = hostname.toLowerCase();
34
+ if (h === "localhost" || h.endsWith(".localhost"))
35
+ return true;
36
+ if (h === "127.0.0.1" || h === "0.0.0.0" || h === "::1")
37
+ return true;
38
+ if (h.endsWith(".local") || h.endsWith(".internal"))
39
+ return true;
40
+ if (/^\d{1,3}(\.\d{1,3}){3}$/.test(h)) {
41
+ const p = h.split(".").map((x) => Number(x));
42
+ if (p[0] === 10)
43
+ return true;
44
+ if (p[0] === 172 && p[1] >= 16 && p[1] <= 31)
45
+ return true;
46
+ if (p[0] === 192 && p[1] === 168)
47
+ return true;
48
+ }
49
+ return false;
50
+ }
51
+ function shouldIgnoreExternalHttpUrl(url) {
52
+ if (typeof url !== "string")
53
+ return true;
54
+ const t = url.trim();
55
+ if (!/^https?:\/\//i.test(t))
56
+ return true;
57
+ if (ENV_OR_DYNAMIC_URL.test(t))
58
+ return true;
59
+ if (/^https?:\/\/\.\.\.(\/|$)/i.test(t))
60
+ return true;
61
+ try {
62
+ const hostnameRaw = new URL(t).hostname;
63
+ if (hostnameRaw == null || !hostnameRaw || hostnameRaw.includes("${")) {
64
+ return true;
65
+ }
66
+ const hostname = hostnameRaw.toLowerCase();
67
+ if (!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$/i.test(hostname)) {
68
+ return true;
69
+ }
70
+ if (isLocalOrPrivateHost(hostname))
71
+ return true;
72
+ }
73
+ catch {
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ /**
79
+ * Stable third-party key: registrable-style host (last two DNS labels), e.g.
80
+ * api.openai.com → openai.com, clipdrop-api.co → clipdrop-api.co.
81
+ */
82
+ function deriveServiceKeyFromHostname(host) {
83
+ const h = host.replace(/^www\./, "").toLowerCase();
84
+ const parts = h.split(".").filter(Boolean);
85
+ if (parts.length < 2) {
86
+ return parts[0] ?? h;
87
+ }
88
+ return `${parts[parts.length - 2]}.${parts[parts.length - 1]}`;
89
+ }
90
+ /**
91
+ * Hostname + registrable domain keys from an absolute http(s) URL (for matching
92
+ * external_api_call findings to third_party nodes by endpoint).
93
+ */
94
+ function urlHostMatchKeys(url) {
95
+ const keys = new Set();
96
+ const t = url.trim();
97
+ if (!/^https?:\/\//i.test(t)) {
98
+ return keys;
99
+ }
100
+ try {
101
+ const hostnameRaw = new URL(t).hostname;
102
+ if (hostnameRaw == null || !hostnameRaw) {
103
+ return keys;
104
+ }
105
+ const hostname = hostnameRaw.toLowerCase();
106
+ keys.add(hostname);
107
+ keys.add(deriveServiceKeyFromHostname(hostname));
108
+ }
109
+ catch {
110
+ // ignore malformed URLs
111
+ }
112
+ return keys;
113
+ }
114
+ /**
115
+ * When YAML `url_host_patterns` do not match, derive a stable service key from the
116
+ * URL hostname (registrable-style). Skips env-interpolated and local/private hosts.
117
+ * Used at detection time so we do not maintain an exhaustive vendor URL list.
118
+ */
119
+ function defaultServiceNameFromLiteralPublicUrl(url) {
120
+ if (shouldIgnoreExternalHttpUrl(url)) {
121
+ return undefined;
122
+ }
123
+ const t = url.trim();
124
+ try {
125
+ const hostname = new URL(t).hostname;
126
+ if (hostname == null || !hostname) {
127
+ return undefined;
128
+ }
129
+ return deriveServiceKeyFromHostname(hostname);
130
+ }
131
+ catch {
132
+ return undefined;
133
+ }
134
+ }
135
+ const DEFAULT_INFERRED_THIRD_PARTY_SUBTYPE = "saas_service";
136
+ /**
137
+ * Pick subType from third-party.classifier.yaml by longest matchKey substring
138
+ * contained in the hostname (import-style keys like @scope/pkg are skipped).
139
+ */
140
+ function inferSubTypeFromClassifierCatalog(hostname) {
141
+ const hostLower = hostname.toLowerCase();
142
+ const { thirdParties } = (0, config_1.loadClassifierConfig)();
143
+ let bestLen = 0;
144
+ let bestSubType = DEFAULT_INFERRED_THIRD_PARTY_SUBTYPE;
145
+ for (const tp of thirdParties) {
146
+ for (const mk of tp.matchKeys) {
147
+ const k = mk.toLowerCase().trim();
148
+ if (k.length < 3)
149
+ continue;
150
+ if (k.startsWith("@"))
151
+ continue;
152
+ if (k.includes("/") && !k.includes("."))
153
+ continue;
154
+ if (!hostLower.includes(k))
155
+ continue;
156
+ if (k.length > bestLen) {
157
+ bestLen = k.length;
158
+ bestSubType = tp.subType;
159
+ }
160
+ }
161
+ }
162
+ return bestSubType;
163
+ }
164
+ /**
165
+ * When a finding is an external_api_call with a literal public http(s) URL and no
166
+ * env interpolation, treat it as a third-party SaaS/API for classification.
167
+ */
168
+ function inferThirdPartyFromLiteralHttpUrl(finding) {
169
+ const urlString = extractLiteralHttpUrl(finding);
170
+ if (!urlString || shouldIgnoreExternalHttpUrl(urlString)) {
171
+ return undefined;
172
+ }
173
+ let hostname;
174
+ try {
175
+ const hostnameRaw = new URL(urlString).hostname;
176
+ if (hostnameRaw == null || !hostnameRaw) {
177
+ return undefined;
178
+ }
179
+ hostname = hostnameRaw;
180
+ }
181
+ catch {
182
+ return undefined;
183
+ }
184
+ if (isLocalOrPrivateHost(hostname)) {
185
+ return undefined;
186
+ }
187
+ const serviceName = deriveServiceKeyFromHostname(hostname);
188
+ if (!serviceName) {
189
+ return undefined;
190
+ }
191
+ return {
192
+ serviceName,
193
+ subType: inferSubTypeFromClassifierCatalog(hostname),
194
+ };
195
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,41 @@
1
+ import type { DetectedComponent } from "../core/types/component";
2
+ import { PREFERRED_WEB_APP_FRAMEWORKS } from "../patterns/frontend-frameworks";
3
+ export { PREFERRED_WEB_APP_FRAMEWORKS };
4
+ /**
5
+ * Thin / single-endpoint API surfaces that should not be treated as the primary
6
+ * application hub (e.g. one handler named "POST /foo").
7
+ */
8
+ export declare function isSingleRouteApiAsset(component: DetectedComponent): boolean;
9
+ /**
10
+ * Outbound HTTP client calls to absolute URLs (e.g. fetch("https://api.vendor/..."))
11
+ * classified as api assets — not the project's own HTTP API surface.
12
+ */
13
+ export declare function isOutboundExternalHttpApiAsset(component: DetectedComponent): boolean;
14
+ /**
15
+ * Terraform resources from utility providers (names, time sleeps, etc.) are not
16
+ * application entrypoints; they should not win isMainApplication when that is
17
+ * the only "application" subtype asset in a section.
18
+ */
19
+ export declare function isTerraformUtilityInfrastructureAsset(component: DetectedComponent): boolean;
20
+ /**
21
+ * Networking / IAM / orchestration / data-plane stores from Terraform should not
22
+ * become the product "main app" when no real service code exists — use the injected
23
+ * placeholder instead.
24
+ */
25
+ export declare function isTerraformStructuralInfrastructureAsset(component: DetectedComponent): boolean;
26
+ /**
27
+ * Terraform resource/data blocks in the diagram are infrastructure, not the
28
+ * product application hub (e.g. `kubernetes_deployment.*`, `aws_s3_bucket.*`).
29
+ */
30
+ export declare function isTerraformGraphResourceAsset(component: DetectedComponent): boolean;
31
+ /**
32
+ * `module.vpc` / `module.frontend` call shells: not the product application.
33
+ */
34
+ export declare function isTerraformModuleCallShellAsset(component: DetectedComponent): boolean;
35
+ export declare function isExcludedFromMainApplicationHub(component: DetectedComponent): boolean;
36
+ /**
37
+ * Index of the asset that should be the main application hub, or -1 if none.
38
+ * Uses the same rules as enhanceComponents (subtype allowlist, exclusions, then
39
+ * framework priority).
40
+ */
41
+ export declare function pickMainApplicationAssetIndex(components: DetectedComponent[]): number;