lean-claudient-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/.reports/detailed-analysis_2026-06-20_01ed326b.html +200 -0
  2. package/.reports/detailed-analysis_2026-06-20_08d39381.html +200 -0
  3. package/.reports/detailed-analysis_2026-06-20_0a331144.html +200 -0
  4. package/.reports/detailed-analysis_2026-06-20_0d54ffef.html +200 -0
  5. package/.reports/detailed-analysis_2026-06-20_14bfa31c.html +200 -0
  6. package/.reports/detailed-analysis_2026-06-20_211feac4.html +200 -0
  7. package/.reports/detailed-analysis_2026-06-20_22381bc2.html +200 -0
  8. package/.reports/detailed-analysis_2026-06-20_29b4ea0a.html +200 -0
  9. package/.reports/detailed-analysis_2026-06-20_2df0ad14.html +200 -0
  10. package/.reports/detailed-analysis_2026-06-20_343ec84c.html +200 -0
  11. package/.reports/detailed-analysis_2026-06-20_3a01030d.html +200 -0
  12. package/.reports/detailed-analysis_2026-06-20_3b4c99ec.html +200 -0
  13. package/.reports/detailed-analysis_2026-06-20_3d368827.html +200 -0
  14. package/.reports/detailed-analysis_2026-06-20_53544d3d.html +200 -0
  15. package/.reports/detailed-analysis_2026-06-20_5721164a.html +200 -0
  16. package/.reports/detailed-analysis_2026-06-20_57caf5e7.html +200 -0
  17. package/.reports/detailed-analysis_2026-06-20_624302f5.html +200 -0
  18. package/.reports/detailed-analysis_2026-06-20_62456384.html +200 -0
  19. package/.reports/detailed-analysis_2026-06-20_636a52f1.html +200 -0
  20. package/.reports/detailed-analysis_2026-06-20_63d1ad41.html +200 -0
  21. package/.reports/detailed-analysis_2026-06-20_7451ccd7.html +200 -0
  22. package/.reports/detailed-analysis_2026-06-20_74da4e9a.html +200 -0
  23. package/.reports/detailed-analysis_2026-06-20_83a90083.html +200 -0
  24. package/.reports/detailed-analysis_2026-06-20_867fbdd9.html +200 -0
  25. package/.reports/detailed-analysis_2026-06-20_974c3299.html +200 -0
  26. package/.reports/detailed-analysis_2026-06-20_a04639a2.html +200 -0
  27. package/.reports/detailed-analysis_2026-06-20_a8e23d6d.html +200 -0
  28. package/.reports/detailed-analysis_2026-06-20_aa9150f0.html +200 -0
  29. package/.reports/detailed-analysis_2026-06-20_acbeee08.html +200 -0
  30. package/.reports/detailed-analysis_2026-06-20_c4ffa0e2.html +200 -0
  31. package/.reports/detailed-analysis_2026-06-20_c5f7684b.html +200 -0
  32. package/.reports/detailed-analysis_2026-06-20_c963b1fa.html +200 -0
  33. package/.reports/detailed-analysis_2026-06-20_d4bde41f.html +200 -0
  34. package/.reports/detailed-analysis_2026-06-20_d6eb2497.html +200 -0
  35. package/.reports/detailed-analysis_2026-06-20_ea6f7f58.html +200 -0
  36. package/.reports/detailed-analysis_2026-06-20_ebf4e060.html +200 -0
  37. package/.reports/detailed-analysis_2026-06-20_ec4313a9.html +200 -0
  38. package/.reports/detailed-analysis_2026-06-20_fc65d18e.html +200 -0
  39. package/.reports/executive-summary_2026-06-20_00406d50.html +109 -0
  40. package/.reports/executive-summary_2026-06-20_0bb202d3.html +109 -0
  41. package/.reports/executive-summary_2026-06-20_0bcd7481.html +109 -0
  42. package/.reports/executive-summary_2026-06-20_11506445.html +109 -0
  43. package/.reports/executive-summary_2026-06-20_13616cda.html +109 -0
  44. package/.reports/executive-summary_2026-06-20_19d41c2f.html +109 -0
  45. package/.reports/executive-summary_2026-06-20_1b0d6e96.html +109 -0
  46. package/.reports/executive-summary_2026-06-20_1e38670b.html +109 -0
  47. package/.reports/executive-summary_2026-06-20_1f32f793.html +109 -0
  48. package/.reports/executive-summary_2026-06-20_1f40f7d3.html +109 -0
  49. package/.reports/executive-summary_2026-06-20_25a40a7e.html +109 -0
  50. package/.reports/executive-summary_2026-06-20_26d11818.html +109 -0
  51. package/.reports/executive-summary_2026-06-20_26ed4593.html +109 -0
  52. package/.reports/executive-summary_2026-06-20_291b90a8.html +109 -0
  53. package/.reports/executive-summary_2026-06-20_2957a848.html +109 -0
  54. package/.reports/executive-summary_2026-06-20_2a04eb77.html +109 -0
  55. package/.reports/executive-summary_2026-06-20_2fa701f9.html +109 -0
  56. package/.reports/executive-summary_2026-06-20_327af8f5.html +109 -0
  57. package/.reports/executive-summary_2026-06-20_3418c729.html +109 -0
  58. package/.reports/executive-summary_2026-06-20_3571763d.html +109 -0
  59. package/.reports/executive-summary_2026-06-20_36225353.html +109 -0
  60. package/.reports/executive-summary_2026-06-20_3b2de891.html +109 -0
  61. package/.reports/executive-summary_2026-06-20_45b980c2.html +109 -0
  62. package/.reports/executive-summary_2026-06-20_46fcbf17.html +109 -0
  63. package/.reports/executive-summary_2026-06-20_48c8fa5e.html +109 -0
  64. package/.reports/executive-summary_2026-06-20_4ba55c43.html +109 -0
  65. package/.reports/executive-summary_2026-06-20_4f4498e6.html +109 -0
  66. package/.reports/executive-summary_2026-06-20_54c33bf0.html +109 -0
  67. package/.reports/executive-summary_2026-06-20_54cc7077.html +109 -0
  68. package/.reports/executive-summary_2026-06-20_5a12912e.html +109 -0
  69. package/.reports/executive-summary_2026-06-20_636fac87.html +109 -0
  70. package/.reports/executive-summary_2026-06-20_6587faaf.html +109 -0
  71. package/.reports/executive-summary_2026-06-20_6adbdd03.html +109 -0
  72. package/.reports/executive-summary_2026-06-20_6bf344ec.html +109 -0
  73. package/.reports/executive-summary_2026-06-20_7142aeed.html +109 -0
  74. package/.reports/executive-summary_2026-06-20_72bc0ceb.html +109 -0
  75. package/.reports/executive-summary_2026-06-20_775752ac.html +109 -0
  76. package/.reports/executive-summary_2026-06-20_7a9c3223.html +109 -0
  77. package/.reports/executive-summary_2026-06-20_808e6376.html +109 -0
  78. package/.reports/executive-summary_2026-06-20_8de9142d.html +109 -0
  79. package/.reports/executive-summary_2026-06-20_91981fbe.html +109 -0
  80. package/.reports/executive-summary_2026-06-20_93191c8c.html +109 -0
  81. package/.reports/executive-summary_2026-06-20_9be48a87.html +109 -0
  82. package/.reports/executive-summary_2026-06-20_9c127198.html +109 -0
  83. package/.reports/executive-summary_2026-06-20_9ee303ac.html +109 -0
  84. package/.reports/executive-summary_2026-06-20_9ee52709.html +109 -0
  85. package/.reports/executive-summary_2026-06-20_a0fa27de.html +109 -0
  86. package/.reports/executive-summary_2026-06-20_a1813e47.html +109 -0
  87. package/.reports/executive-summary_2026-06-20_a974edc1.html +109 -0
  88. package/.reports/executive-summary_2026-06-20_aa711737.html +109 -0
  89. package/.reports/executive-summary_2026-06-20_aa752246.html +109 -0
  90. package/.reports/executive-summary_2026-06-20_ac6f0927.html +109 -0
  91. package/.reports/executive-summary_2026-06-20_b231b143.html +109 -0
  92. package/.reports/executive-summary_2026-06-20_b570a2bd.html +109 -0
  93. package/.reports/executive-summary_2026-06-20_b6fbf650.html +109 -0
  94. package/.reports/executive-summary_2026-06-20_b9f8ddf3.html +109 -0
  95. package/.reports/executive-summary_2026-06-20_bf95cc63.html +109 -0
  96. package/.reports/executive-summary_2026-06-20_c0d0aefe.html +109 -0
  97. package/.reports/executive-summary_2026-06-20_c1933c36.html +109 -0
  98. package/.reports/executive-summary_2026-06-20_c99bba8a.html +109 -0
  99. package/.reports/executive-summary_2026-06-20_cc3846ac.html +109 -0
  100. package/.reports/executive-summary_2026-06-20_d485993c.html +109 -0
  101. package/.reports/executive-summary_2026-06-20_d56f75f7.html +109 -0
  102. package/.reports/executive-summary_2026-06-20_d57660cc.html +109 -0
  103. package/.reports/executive-summary_2026-06-20_dc036f62.html +109 -0
  104. package/.reports/executive-summary_2026-06-20_df783f47.html +109 -0
  105. package/.reports/executive-summary_2026-06-20_e2191adb.html +109 -0
  106. package/.reports/executive-summary_2026-06-20_e9f1d504.html +109 -0
  107. package/.reports/executive-summary_2026-06-20_ea82f5e1.html +109 -0
  108. package/.reports/executive-summary_2026-06-20_ec3e70cb.html +109 -0
  109. package/.reports/executive-summary_2026-06-20_ee6cf902.html +109 -0
  110. package/.reports/executive-summary_2026-06-20_f6cb657c.html +109 -0
  111. package/.reports/executive-summary_2026-06-20_f8c60046.html +109 -0
  112. package/.reports/executive-summary_2026-06-20_fa184840.html +109 -0
  113. package/.reports/executive-summary_2026-06-20_fc88bcb4.html +109 -0
  114. package/.reports/executive-summary_2026-06-20_ffa79c4e.html +109 -0
  115. package/README.md +53 -0
  116. package/dist/automation/actionApprover.d.ts +89 -0
  117. package/dist/automation/actionApprover.d.ts.map +1 -0
  118. package/dist/automation/actionApprover.js +264 -0
  119. package/dist/automation/actionApprover.js.map +1 -0
  120. package/dist/automation/actionExecutor.d.ts +125 -0
  121. package/dist/automation/actionExecutor.d.ts.map +1 -0
  122. package/dist/automation/actionExecutor.js +304 -0
  123. package/dist/automation/actionExecutor.js.map +1 -0
  124. package/dist/automation/alertRules.d.ts +55 -0
  125. package/dist/automation/alertRules.d.ts.map +1 -0
  126. package/dist/automation/alertRules.js +70 -0
  127. package/dist/automation/alertRules.js.map +1 -0
  128. package/dist/automation/alertSystem.d.ts +109 -0
  129. package/dist/automation/alertSystem.d.ts.map +1 -0
  130. package/dist/automation/alertSystem.js +303 -0
  131. package/dist/automation/alertSystem.js.map +1 -0
  132. package/dist/automation/competitorResponse.d.ts +119 -0
  133. package/dist/automation/competitorResponse.d.ts.map +1 -0
  134. package/dist/automation/competitorResponse.js +343 -0
  135. package/dist/automation/competitorResponse.js.map +1 -0
  136. package/dist/automation/composioClient.d.ts +107 -0
  137. package/dist/automation/composioClient.d.ts.map +1 -0
  138. package/dist/automation/composioClient.js +286 -0
  139. package/dist/automation/composioClient.js.map +1 -0
  140. package/dist/automation/crmExport.d.ts +116 -0
  141. package/dist/automation/crmExport.d.ts.map +1 -0
  142. package/dist/automation/crmExport.js +282 -0
  143. package/dist/automation/crmExport.js.map +1 -0
  144. package/dist/automation/crmIntegration.d.ts +83 -0
  145. package/dist/automation/crmIntegration.d.ts.map +1 -0
  146. package/dist/automation/crmIntegration.js +207 -0
  147. package/dist/automation/crmIntegration.js.map +1 -0
  148. package/dist/automation/gmailIntegration.d.ts +73 -0
  149. package/dist/automation/gmailIntegration.d.ts.map +1 -0
  150. package/dist/automation/gmailIntegration.js +184 -0
  151. package/dist/automation/gmailIntegration.js.map +1 -0
  152. package/dist/automation/index.d.ts +17 -0
  153. package/dist/automation/index.d.ts.map +1 -0
  154. package/dist/automation/index.js +17 -0
  155. package/dist/automation/index.js.map +1 -0
  156. package/dist/automation/jiraIntegration.d.ts +103 -0
  157. package/dist/automation/jiraIntegration.d.ts.map +1 -0
  158. package/dist/automation/jiraIntegration.js +222 -0
  159. package/dist/automation/jiraIntegration.js.map +1 -0
  160. package/dist/automation/jobQueue.d.ts +98 -0
  161. package/dist/automation/jobQueue.d.ts.map +1 -0
  162. package/dist/automation/jobQueue.js +207 -0
  163. package/dist/automation/jobQueue.js.map +1 -0
  164. package/dist/automation/leadQualification.d.ts +60 -0
  165. package/dist/automation/leadQualification.d.ts.map +1 -0
  166. package/dist/automation/leadQualification.js +204 -0
  167. package/dist/automation/leadQualification.js.map +1 -0
  168. package/dist/automation/qualificationRules.d.ts +100 -0
  169. package/dist/automation/qualificationRules.d.ts.map +1 -0
  170. package/dist/automation/qualificationRules.js +202 -0
  171. package/dist/automation/qualificationRules.js.map +1 -0
  172. package/dist/automation/responseTemplates.d.ts +64 -0
  173. package/dist/automation/responseTemplates.d.ts.map +1 -0
  174. package/dist/automation/responseTemplates.js +374 -0
  175. package/dist/automation/responseTemplates.js.map +1 -0
  176. package/dist/automation/scheduler.d.ts +85 -0
  177. package/dist/automation/scheduler.d.ts.map +1 -0
  178. package/dist/automation/scheduler.js +194 -0
  179. package/dist/automation/scheduler.js.map +1 -0
  180. package/dist/automation/types.d.ts +223 -0
  181. package/dist/automation/types.d.ts.map +1 -0
  182. package/dist/automation/types.js +32 -0
  183. package/dist/automation/types.js.map +1 -0
  184. package/dist/cli/index.d.ts +3 -0
  185. package/dist/cli/index.d.ts.map +1 -0
  186. package/dist/cli/index.js +575 -0
  187. package/dist/cli/index.js.map +1 -0
  188. package/dist/compression/caveman.d.ts +14 -0
  189. package/dist/compression/caveman.d.ts.map +1 -0
  190. package/dist/compression/caveman.js +188 -0
  191. package/dist/compression/caveman.js.map +1 -0
  192. package/dist/compression/caveman.test.d.ts +2 -0
  193. package/dist/compression/caveman.test.d.ts.map +1 -0
  194. package/dist/compression/caveman.test.js.map +1 -0
  195. package/dist/config/configManager.d.ts +6 -0
  196. package/dist/config/configManager.d.ts.map +1 -0
  197. package/dist/config/configManager.js +62 -0
  198. package/dist/config/configManager.js.map +1 -0
  199. package/dist/config/schema.d.ts +95 -0
  200. package/dist/config/schema.d.ts.map +1 -0
  201. package/dist/config/schema.js +19 -0
  202. package/dist/config/schema.js.map +1 -0
  203. package/dist/context/autoCompact.d.ts +19 -0
  204. package/dist/context/autoCompact.d.ts.map +1 -0
  205. package/dist/context/autoCompact.js +101 -0
  206. package/dist/context/autoCompact.js.map +1 -0
  207. package/dist/context/readDedup.d.ts +21 -0
  208. package/dist/context/readDedup.d.ts.map +1 -0
  209. package/dist/context/readDedup.js +55 -0
  210. package/dist/context/readDedup.js.map +1 -0
  211. package/dist/context/toolBudgets.d.ts +15 -0
  212. package/dist/context/toolBudgets.d.ts.map +1 -0
  213. package/dist/context/toolBudgets.js +35 -0
  214. package/dist/context/toolBudgets.js.map +1 -0
  215. package/dist/core/auditLogger.d.ts +30 -0
  216. package/dist/core/auditLogger.d.ts.map +1 -0
  217. package/dist/core/auditLogger.js +51 -0
  218. package/dist/core/auditLogger.js.map +1 -0
  219. package/dist/core/stateManager.d.ts +10 -0
  220. package/dist/core/stateManager.d.ts.map +1 -0
  221. package/dist/core/stateManager.js +59 -0
  222. package/dist/core/stateManager.js.map +1 -0
  223. package/dist/database/feedbackSchema.d.ts +80 -0
  224. package/dist/database/feedbackSchema.d.ts.map +1 -0
  225. package/dist/database/feedbackSchema.js +94 -0
  226. package/dist/database/feedbackSchema.js.map +1 -0
  227. package/dist/database/leadsSchema.d.ts +99 -0
  228. package/dist/database/leadsSchema.d.ts.map +1 -0
  229. package/dist/database/leadsSchema.js +136 -0
  230. package/dist/database/leadsSchema.js.map +1 -0
  231. package/dist/intelligence/competitorScoring.d.ts +25 -0
  232. package/dist/intelligence/competitorScoring.d.ts.map +1 -0
  233. package/dist/intelligence/competitorScoring.js +181 -0
  234. package/dist/intelligence/competitorScoring.js.map +1 -0
  235. package/dist/intelligence/competitorTracker.d.ts +36 -0
  236. package/dist/intelligence/competitorTracker.d.ts.map +1 -0
  237. package/dist/intelligence/competitorTracker.js +286 -0
  238. package/dist/intelligence/competitorTracker.js.map +1 -0
  239. package/dist/intelligence/competitorTypes.d.ts +93 -0
  240. package/dist/intelligence/competitorTypes.d.ts.map +1 -0
  241. package/dist/intelligence/competitorTypes.js +6 -0
  242. package/dist/intelligence/competitorTypes.js.map +1 -0
  243. package/dist/intelligence/competitors.json +76 -0
  244. package/dist/intelligence/feedbackLoop.d.ts +118 -0
  245. package/dist/intelligence/feedbackLoop.d.ts.map +1 -0
  246. package/dist/intelligence/feedbackLoop.js +368 -0
  247. package/dist/intelligence/feedbackLoop.js.map +1 -0
  248. package/dist/intelligence/gitHubTracker.d.ts +14 -0
  249. package/dist/intelligence/gitHubTracker.d.ts.map +1 -0
  250. package/dist/intelligence/gitHubTracker.js +153 -0
  251. package/dist/intelligence/gitHubTracker.js.map +1 -0
  252. package/dist/intelligence/hackerNewsScanner.d.ts +21 -0
  253. package/dist/intelligence/hackerNewsScanner.d.ts.map +1 -0
  254. package/dist/intelligence/hackerNewsScanner.js +88 -0
  255. package/dist/intelligence/hackerNewsScanner.js.map +1 -0
  256. package/dist/intelligence/hiringSignals.d.ts +16 -0
  257. package/dist/intelligence/hiringSignals.d.ts.map +1 -0
  258. package/dist/intelligence/hiringSignals.js +132 -0
  259. package/dist/intelligence/hiringSignals.js.map +1 -0
  260. package/dist/intelligence/index.d.ts +9 -0
  261. package/dist/intelligence/index.d.ts.map +1 -0
  262. package/dist/intelligence/index.js +9 -0
  263. package/dist/intelligence/index.js.map +1 -0
  264. package/dist/intelligence/leadEnrichment.d.ts +59 -0
  265. package/dist/intelligence/leadEnrichment.d.ts.map +1 -0
  266. package/dist/intelligence/leadEnrichment.js +209 -0
  267. package/dist/intelligence/leadEnrichment.js.map +1 -0
  268. package/dist/intelligence/leadEnrichmentTypes.d.ts +49 -0
  269. package/dist/intelligence/leadEnrichmentTypes.d.ts.map +1 -0
  270. package/dist/intelligence/leadEnrichmentTypes.js +7 -0
  271. package/dist/intelligence/leadEnrichmentTypes.js.map +1 -0
  272. package/dist/intelligence/marketScanner.d.ts +18 -0
  273. package/dist/intelligence/marketScanner.d.ts.map +1 -0
  274. package/dist/intelligence/marketScanner.js +225 -0
  275. package/dist/intelligence/marketScanner.js.map +1 -0
  276. package/dist/intelligence/polymarketScanner.d.ts +20 -0
  277. package/dist/intelligence/polymarketScanner.d.ts.map +1 -0
  278. package/dist/intelligence/polymarketScanner.js +88 -0
  279. package/dist/intelligence/polymarketScanner.js.map +1 -0
  280. package/dist/intelligence/redditScanner.d.ts +22 -0
  281. package/dist/intelligence/redditScanner.d.ts.map +1 -0
  282. package/dist/intelligence/redditScanner.js +89 -0
  283. package/dist/intelligence/redditScanner.js.map +1 -0
  284. package/dist/intelligence/signalAggregator.d.ts +10 -0
  285. package/dist/intelligence/signalAggregator.d.ts.map +1 -0
  286. package/dist/intelligence/signalAggregator.js +64 -0
  287. package/dist/intelligence/signalAggregator.js.map +1 -0
  288. package/dist/intelligence/trendAnalysis.d.ts +13 -0
  289. package/dist/intelligence/trendAnalysis.d.ts.map +1 -0
  290. package/dist/intelligence/trendAnalysis.js +106 -0
  291. package/dist/intelligence/trendAnalysis.js.map +1 -0
  292. package/dist/intelligence/twitterScanner.d.ts +22 -0
  293. package/dist/intelligence/twitterScanner.d.ts.map +1 -0
  294. package/dist/intelligence/twitterScanner.js +63 -0
  295. package/dist/intelligence/twitterScanner.js.map +1 -0
  296. package/dist/intelligence/types.d.ts +566 -0
  297. package/dist/intelligence/types.d.ts.map +1 -0
  298. package/dist/intelligence/types.js +87 -0
  299. package/dist/intelligence/types.js.map +1 -0
  300. package/dist/intelligence/userComplaints.d.ts +15 -0
  301. package/dist/intelligence/userComplaints.d.ts.map +1 -0
  302. package/dist/intelligence/userComplaints.js +193 -0
  303. package/dist/intelligence/userComplaints.js.map +1 -0
  304. package/dist/metrics/businessMetrics.d.ts +41 -0
  305. package/dist/metrics/businessMetrics.d.ts.map +1 -0
  306. package/dist/metrics/businessMetrics.js +120 -0
  307. package/dist/metrics/businessMetrics.js.map +1 -0
  308. package/dist/metrics/businessMetrics.test.d.ts +2 -0
  309. package/dist/metrics/businessMetrics.test.d.ts.map +1 -0
  310. package/dist/metrics/businessMetrics.test.js.map +1 -0
  311. package/dist/metrics/businessMetricsAgg.d.ts +85 -0
  312. package/dist/metrics/businessMetricsAgg.d.ts.map +1 -0
  313. package/dist/metrics/businessMetricsAgg.js +406 -0
  314. package/dist/metrics/businessMetricsAgg.js.map +1 -0
  315. package/dist/metrics/competitorMetrics.d.ts +57 -0
  316. package/dist/metrics/competitorMetrics.d.ts.map +1 -0
  317. package/dist/metrics/competitorMetrics.js +94 -0
  318. package/dist/metrics/competitorMetrics.js.map +1 -0
  319. package/dist/metrics/dashboardGenerator.d.ts +16 -0
  320. package/dist/metrics/dashboardGenerator.d.ts.map +1 -0
  321. package/dist/metrics/dashboardGenerator.js +313 -0
  322. package/dist/metrics/dashboardGenerator.js.map +1 -0
  323. package/dist/metrics/dashboardHTML.d.ts +18 -0
  324. package/dist/metrics/dashboardHTML.d.ts.map +1 -0
  325. package/dist/metrics/dashboardHTML.js +613 -0
  326. package/dist/metrics/dashboardHTML.js.map +1 -0
  327. package/dist/metrics/grafanaExport.d.ts +53 -0
  328. package/dist/metrics/grafanaExport.d.ts.map +1 -0
  329. package/dist/metrics/grafanaExport.js +277 -0
  330. package/dist/metrics/grafanaExport.js.map +1 -0
  331. package/dist/metrics/index.d.ts +17 -0
  332. package/dist/metrics/index.d.ts.map +1 -0
  333. package/dist/metrics/index.js +17 -0
  334. package/dist/metrics/index.js.map +1 -0
  335. package/dist/metrics/leadsMetrics.d.ts +48 -0
  336. package/dist/metrics/leadsMetrics.d.ts.map +1 -0
  337. package/dist/metrics/leadsMetrics.js +82 -0
  338. package/dist/metrics/leadsMetrics.js.map +1 -0
  339. package/dist/metrics/leadsMetrics.test.d.ts +2 -0
  340. package/dist/metrics/leadsMetrics.test.d.ts.map +1 -0
  341. package/dist/metrics/leadsMetrics.test.js.map +1 -0
  342. package/dist/metrics/metricsTypes.d.ts +114 -0
  343. package/dist/metrics/metricsTypes.d.ts.map +1 -0
  344. package/dist/metrics/metricsTypes.js +7 -0
  345. package/dist/metrics/metricsTypes.js.map +1 -0
  346. package/dist/metrics/revenueProjection.d.ts +44 -0
  347. package/dist/metrics/revenueProjection.d.ts.map +1 -0
  348. package/dist/metrics/revenueProjection.js +239 -0
  349. package/dist/metrics/revenueProjection.js.map +1 -0
  350. package/dist/metrics/revenueTypes.d.ts +62 -0
  351. package/dist/metrics/revenueTypes.d.ts.map +1 -0
  352. package/dist/metrics/revenueTypes.js +7 -0
  353. package/dist/metrics/revenueTypes.js.map +1 -0
  354. package/dist/metrics/roiCalculator.d.ts +39 -0
  355. package/dist/metrics/roiCalculator.d.ts.map +1 -0
  356. package/dist/metrics/roiCalculator.js +128 -0
  357. package/dist/metrics/roiCalculator.js.map +1 -0
  358. package/dist/metrics/roiCalculator.test.d.ts +2 -0
  359. package/dist/metrics/roiCalculator.test.d.ts.map +1 -0
  360. package/dist/metrics/roiCalculator.test.js.map +1 -0
  361. package/dist/metrics/trendMetrics.d.ts +51 -0
  362. package/dist/metrics/trendMetrics.d.ts.map +1 -0
  363. package/dist/metrics/trendMetrics.js +116 -0
  364. package/dist/metrics/trendMetrics.js.map +1 -0
  365. package/dist/modes/conservativeCTOMode.d.ts +32 -0
  366. package/dist/modes/conservativeCTOMode.d.ts.map +1 -0
  367. package/dist/modes/conservativeCTOMode.js +98 -0
  368. package/dist/modes/conservativeCTOMode.js.map +1 -0
  369. package/dist/modes/index.d.ts +3 -0
  370. package/dist/modes/index.d.ts.map +1 -0
  371. package/dist/modes/index.js +3 -0
  372. package/dist/modes/index.js.map +1 -0
  373. package/dist/modes/seniorDeveloperMode.d.ts +17 -0
  374. package/dist/modes/seniorDeveloperMode.d.ts.map +1 -0
  375. package/dist/modes/seniorDeveloperMode.js +77 -0
  376. package/dist/modes/seniorDeveloperMode.js.map +1 -0
  377. package/dist/recovery/contextRecovery.d.ts +28 -0
  378. package/dist/recovery/contextRecovery.d.ts.map +1 -0
  379. package/dist/recovery/contextRecovery.js +113 -0
  380. package/dist/recovery/contextRecovery.js.map +1 -0
  381. package/dist/repair/errorDiagnostics.d.ts +28 -0
  382. package/dist/repair/errorDiagnostics.d.ts.map +1 -0
  383. package/dist/repair/errorDiagnostics.js +158 -0
  384. package/dist/repair/errorDiagnostics.js.map +1 -0
  385. package/dist/repair/skillCapture.d.ts +22 -0
  386. package/dist/repair/skillCapture.d.ts.map +1 -0
  387. package/dist/repair/skillCapture.js +119 -0
  388. package/dist/repair/skillCapture.js.map +1 -0
  389. package/dist/reporting/reportGenerator.d.ts +117 -0
  390. package/dist/reporting/reportGenerator.d.ts.map +1 -0
  391. package/dist/reporting/reportGenerator.js +613 -0
  392. package/dist/reporting/reportGenerator.js.map +1 -0
  393. package/dist/reporting/templates.d.ts +68 -0
  394. package/dist/reporting/templates.d.ts.map +1 -0
  395. package/dist/reporting/templates.js +629 -0
  396. package/dist/reporting/templates.js.map +1 -0
  397. package/dist/security/owaspScanner.d.ts +74 -0
  398. package/dist/security/owaspScanner.d.ts.map +1 -0
  399. package/dist/security/owaspScanner.js +309 -0
  400. package/dist/security/owaspScanner.js.map +1 -0
  401. package/dist/security/piiRedaction.d.ts +67 -0
  402. package/dist/security/piiRedaction.d.ts.map +1 -0
  403. package/dist/security/piiRedaction.js +189 -0
  404. package/dist/security/piiRedaction.js.map +1 -0
  405. package/dist/security/secretsDetection.d.ts +47 -0
  406. package/dist/security/secretsDetection.d.ts.map +1 -0
  407. package/dist/security/secretsDetection.js +272 -0
  408. package/dist/security/secretsDetection.js.map +1 -0
  409. package/dist/subagents/builder.d.ts +33 -0
  410. package/dist/subagents/builder.d.ts.map +1 -0
  411. package/dist/subagents/builder.js +158 -0
  412. package/dist/subagents/builder.js.map +1 -0
  413. package/dist/subagents/investigator.d.ts +31 -0
  414. package/dist/subagents/investigator.d.ts.map +1 -0
  415. package/dist/subagents/investigator.js +166 -0
  416. package/dist/subagents/investigator.js.map +1 -0
  417. package/dist/subagents/orchestrator.d.ts +48 -0
  418. package/dist/subagents/orchestrator.d.ts.map +1 -0
  419. package/dist/subagents/orchestrator.js +151 -0
  420. package/dist/subagents/orchestrator.js.map +1 -0
  421. package/dist/subagents/reviewer.d.ts +31 -0
  422. package/dist/subagents/reviewer.d.ts.map +1 -0
  423. package/dist/subagents/reviewer.js +154 -0
  424. package/dist/subagents/reviewer.js.map +1 -0
  425. package/dist/telemetry/tokenCounter.d.ts +21 -0
  426. package/dist/telemetry/tokenCounter.d.ts.map +1 -0
  427. package/dist/telemetry/tokenCounter.js +49 -0
  428. package/dist/telemetry/tokenCounter.js.map +1 -0
  429. package/package.json +61 -0
  430. package/src/automation/actionApprover.ts +342 -0
  431. package/src/automation/actionExecutor.ts +399 -0
  432. package/src/automation/alertRules.ts +113 -0
  433. package/src/automation/alertSystem.ts +402 -0
  434. package/src/automation/competitorResponse.ts +511 -0
  435. package/src/automation/composioClient.ts +360 -0
  436. package/src/automation/crmExport.ts +407 -0
  437. package/src/automation/crmIntegration.ts +268 -0
  438. package/src/automation/gmailIntegration.ts +244 -0
  439. package/src/automation/index.ts +17 -0
  440. package/src/automation/jiraIntegration.ts +310 -0
  441. package/src/automation/jobQueue.ts +278 -0
  442. package/src/automation/leadQualification.ts +270 -0
  443. package/src/automation/qualificationRules.ts +304 -0
  444. package/src/automation/responseTemplates.ts +419 -0
  445. package/src/automation/scheduler.ts +254 -0
  446. package/src/automation/types.ts +270 -0
  447. package/src/cli/index.ts +646 -0
  448. package/src/compression/caveman.ts +257 -0
  449. package/src/config/configManager.ts +63 -0
  450. package/src/config/schema.ts +27 -0
  451. package/src/context/autoCompact.ts +123 -0
  452. package/src/context/readDedup.ts +84 -0
  453. package/src/context/toolBudgets.ts +43 -0
  454. package/src/core/auditLogger.ts +69 -0
  455. package/src/core/stateManager.ts +73 -0
  456. package/src/database/feedbackSchema.ts +168 -0
  457. package/src/database/leadsSchema.ts +205 -0
  458. package/src/intelligence/competitorScoring.ts +292 -0
  459. package/src/intelligence/competitorTracker.ts +362 -0
  460. package/src/intelligence/competitorTypes.ts +100 -0
  461. package/src/intelligence/competitors.json +76 -0
  462. package/src/intelligence/feedbackLoop.ts +538 -0
  463. package/src/intelligence/gitHubTracker.ts +204 -0
  464. package/src/intelligence/hackerNewsScanner.ts +121 -0
  465. package/src/intelligence/hiringSignals.ts +162 -0
  466. package/src/intelligence/index.ts +9 -0
  467. package/src/intelligence/leadEnrichment.ts +275 -0
  468. package/src/intelligence/leadEnrichmentTypes.ts +54 -0
  469. package/src/intelligence/marketScanner.ts +285 -0
  470. package/src/intelligence/polymarketScanner.ts +120 -0
  471. package/src/intelligence/redditScanner.ts +122 -0
  472. package/src/intelligence/signalAggregator.ts +94 -0
  473. package/src/intelligence/trendAnalysis.ts +140 -0
  474. package/src/intelligence/twitterScanner.ts +94 -0
  475. package/src/intelligence/types.ts +130 -0
  476. package/src/intelligence/userComplaints.ts +236 -0
  477. package/src/metrics/businessMetrics.ts +186 -0
  478. package/src/metrics/businessMetricsAgg.ts +554 -0
  479. package/src/metrics/competitorMetrics.ts +175 -0
  480. package/src/metrics/dashboardGenerator.ts +335 -0
  481. package/src/metrics/dashboardHTML.ts +637 -0
  482. package/src/metrics/grafanaExport.ts +347 -0
  483. package/src/metrics/index.ts +17 -0
  484. package/src/metrics/leadsMetrics.ts +145 -0
  485. package/src/metrics/metricsTypes.ts +129 -0
  486. package/src/metrics/revenueProjection.ts +319 -0
  487. package/src/metrics/revenueTypes.ts +67 -0
  488. package/src/metrics/roiCalculator.ts +199 -0
  489. package/src/metrics/trendMetrics.ts +190 -0
  490. package/src/modes/conservativeCTOMode.ts +124 -0
  491. package/src/modes/index.ts +6 -0
  492. package/src/modes/seniorDeveloperMode.ts +94 -0
  493. package/src/recovery/contextRecovery.ts +141 -0
  494. package/src/repair/errorDiagnostics.ts +198 -0
  495. package/src/repair/skillCapture.ts +157 -0
  496. package/src/reporting/reportGenerator.ts +802 -0
  497. package/src/reporting/templates.ts +677 -0
  498. package/src/security/owaspScanner.ts +390 -0
  499. package/src/security/phase8Hardening.ts +536 -0
  500. package/src/security/piiRedaction.ts +215 -0
  501. package/src/security/secretsDetection.js +271 -0
  502. package/src/security/secretsDetection.ts +318 -0
  503. package/src/subagents/builder.ts +277 -0
  504. package/src/subagents/investigator.ts +224 -0
  505. package/src/subagents/orchestrator.ts +212 -0
  506. package/src/subagents/reviewer.ts +215 -0
  507. package/src/telemetry/tokenCounter.ts +81 -0
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Qualification Rules Engine
3
+ * Stage definitions, rule evaluators, and transition handlers for lead qualification
4
+ * Composable, testable rule system
5
+ */
6
+
7
+ export type QualificationStage = 'cold' | 'warm' | 'hot' | 'sales-ready';
8
+
9
+ export interface EnrichedLead {
10
+ id: string;
11
+ name: string;
12
+ email: string;
13
+ company?: string;
14
+ signalCount: number;
15
+ signals?: Array<{ type: string; strength: number }>;
16
+ competitorThreat: number; // 0-100
17
+ quality: number; // 0-100
18
+ enrichedAt?: string;
19
+ lastEnrichedAt?: string;
20
+ }
21
+
22
+ export interface RevenueProjection {
23
+ leadId: string;
24
+ projectedRevenue: number;
25
+ confidence: number; // 0-1
26
+ arpu?: number;
27
+ churnRisk?: number;
28
+ }
29
+
30
+ export interface QualificationResult {
31
+ leadId: string;
32
+ stage: QualificationStage;
33
+ confidence: number; // 0-1
34
+ nextAction?: string;
35
+ signals: string[];
36
+ blockers?: string[];
37
+ }
38
+
39
+ export interface StageTransition {
40
+ leadId: string;
41
+ fromStage: QualificationStage;
42
+ toStage: QualificationStage;
43
+ timestamp: string;
44
+ reason: string;
45
+ composioActionsQueued?: string[];
46
+ }
47
+
48
+ /**
49
+ * Stage Definitions with metadata and rules
50
+ */
51
+ export const stageDefinitions: Record<QualificationStage, {
52
+ label: string;
53
+ description: string;
54
+ minQuality?: number;
55
+ minSignals?: number;
56
+ minRevenue?: number;
57
+ maxCompetitorThreat?: number;
58
+ }> = {
59
+ cold: {
60
+ label: 'Cold',
61
+ description: 'New lead, no enrichment yet',
62
+ },
63
+ warm: {
64
+ label: 'Warm',
65
+ description: 'Market signals matched, low threat',
66
+ minSignals: 2,
67
+ minQuality: 40,
68
+ maxCompetitorThreat: 49,
69
+ },
70
+ hot: {
71
+ label: 'Hot',
72
+ description: 'Strong signals, active competitor threat',
73
+ minSignals: 3,
74
+ minQuality: 70,
75
+ },
76
+ 'sales-ready': {
77
+ label: 'Sales-Ready',
78
+ description: 'Fully qualified, revenue validated',
79
+ minSignals: 3,
80
+ minQuality: 70,
81
+ minRevenue: 10000,
82
+ },
83
+ };
84
+
85
+ /**
86
+ * Cold Stage Rule: New lead, no enrichment yet
87
+ */
88
+ export function isColdLead(lead: EnrichedLead): boolean {
89
+ // Lead with no signals or enrichment older than 24h
90
+ if (lead.signalCount === 0) return true;
91
+
92
+ if (lead.lastEnrichedAt) {
93
+ const enrichedAt = new Date(lead.lastEnrichedAt).getTime();
94
+ const now = Date.now();
95
+ const oneDayMs = 24 * 60 * 60 * 1000;
96
+ return (now - enrichedAt) > oneDayMs;
97
+ }
98
+
99
+ return false;
100
+ }
101
+
102
+ /**
103
+ * Warm Stage Rule: 2+ signals, low threat, quality >= 40
104
+ */
105
+ export function isWarmLead(lead: EnrichedLead): boolean {
106
+ return (
107
+ lead.signalCount >= 2 &&
108
+ lead.competitorThreat < 50 &&
109
+ lead.quality >= 40
110
+ );
111
+ }
112
+
113
+ /**
114
+ * Hot Stage Rule: 3+ signals, quality >= 70, threat >= 50
115
+ */
116
+ export function isHotLead(lead: EnrichedLead): boolean {
117
+ return (
118
+ lead.signalCount >= 3 &&
119
+ lead.quality >= 70 &&
120
+ lead.competitorThreat >= 50
121
+ );
122
+ }
123
+
124
+ /**
125
+ * Sales-Ready Stage Rule: All hot criteria + revenue >= $10k + no blockers
126
+ */
127
+ export function isSalesReady(
128
+ lead: EnrichedLead,
129
+ projection?: RevenueProjection,
130
+ blockers?: string[]
131
+ ): boolean {
132
+ const hasBlockers = blockers && blockers.length > 0;
133
+ const meetsRevenue = projection ? projection.projectedRevenue >= 10000 : false;
134
+
135
+ return (
136
+ isHotLead(lead) &&
137
+ meetsRevenue &&
138
+ !hasBlockers
139
+ );
140
+ }
141
+
142
+ /**
143
+ * Evaluate all rules and determine stage
144
+ */
145
+ export function evaluateStage(
146
+ lead: EnrichedLead,
147
+ projection?: RevenueProjection,
148
+ blockers?: string[]
149
+ ): QualificationStage {
150
+ // Check in order of specificity (most specific first)
151
+ if (isSalesReady(lead, projection, blockers)) return 'sales-ready';
152
+ if (isHotLead(lead)) return 'hot';
153
+ if (isWarmLead(lead)) return 'warm';
154
+ return 'cold';
155
+ }
156
+
157
+ /**
158
+ * Calculate confidence score for qualification
159
+ */
160
+ export function calculateConfidence(lead: EnrichedLead, stage: QualificationStage): number {
161
+ let confidence = 0.5; // baseline
162
+
163
+ switch (stage) {
164
+ case 'cold':
165
+ confidence = 0.3;
166
+ break;
167
+ case 'warm':
168
+ // Increase with signal count and quality
169
+ confidence = 0.4 + (lead.signalCount * 0.05) + (lead.quality / 500);
170
+ confidence = Math.min(confidence, 0.75);
171
+ break;
172
+ case 'hot':
173
+ // Increase with signals and threat signal
174
+ confidence = 0.65 + (lead.signalCount * 0.05) + (lead.competitorThreat / 500);
175
+ confidence = Math.min(confidence, 0.95);
176
+ break;
177
+ case 'sales-ready':
178
+ confidence = 0.9 + (lead.quality / 1000);
179
+ confidence = Math.min(confidence, 1.0);
180
+ break;
181
+ }
182
+
183
+ return Math.max(0, Math.min(1, confidence));
184
+ }
185
+
186
+ /**
187
+ * Determine next action for a qualified lead
188
+ */
189
+ export function getNextAction(stage: QualificationStage): string {
190
+ switch (stage) {
191
+ case 'cold':
192
+ return 'await-enrichment';
193
+ case 'warm':
194
+ return 'flag-for-review';
195
+ case 'hot':
196
+ return 'draft-email-and-jira';
197
+ case 'sales-ready':
198
+ return 'push-to-crm';
199
+ default:
200
+ return 'unknown';
201
+ }
202
+ }
203
+
204
+ /**
205
+ * Get Composio actions to queue on stage transition
206
+ */
207
+ export function getComposioActionsForTransition(
208
+ fromStage: QualificationStage,
209
+ toStage: QualificationStage,
210
+ lead: EnrichedLead
211
+ ): string[] {
212
+ const actions: string[] = [];
213
+
214
+ if (toStage === 'hot') {
215
+ actions.push('composio:draft-sales-email');
216
+ actions.push('composio:create-jira-issue');
217
+ }
218
+
219
+ if (toStage === 'sales-ready') {
220
+ actions.push('composio:push-to-salesforce');
221
+ actions.push('composio:push-to-hubspot');
222
+ actions.push('composio:send-notification');
223
+ }
224
+
225
+ return actions;
226
+ }
227
+
228
+ /**
229
+ * Identify blockers that prevent qualification
230
+ */
231
+ export function identifyBlockers(
232
+ lead: EnrichedLead,
233
+ projection?: RevenueProjection
234
+ ): string[] {
235
+ const blockers: string[] = [];
236
+
237
+ if (lead.quality < 40) {
238
+ blockers.push('quality-below-threshold');
239
+ }
240
+
241
+ if (projection && projection.projectedRevenue < 10000) {
242
+ blockers.push('revenue-below-minimum');
243
+ }
244
+
245
+ if (lead.competitorThreat > 80) {
246
+ blockers.push('competitor-threat-critical');
247
+ }
248
+
249
+ if (!lead.signals || lead.signals.length === 0) {
250
+ blockers.push('insufficient-signals');
251
+ }
252
+
253
+ return blockers;
254
+ }
255
+
256
+ /**
257
+ * Validate stage transition is allowed
258
+ */
259
+ export function isValidTransition(
260
+ fromStage: QualificationStage,
261
+ toStage: QualificationStage
262
+ ): boolean {
263
+ const stageOrder: Record<QualificationStage, number> = {
264
+ 'cold': 0,
265
+ 'warm': 1,
266
+ 'hot': 2,
267
+ 'sales-ready': 3,
268
+ };
269
+
270
+ // Allow forward transitions and demotions (with approval)
271
+ return true;
272
+ }
273
+
274
+ /**
275
+ * Get human-readable reason for stage transition
276
+ */
277
+ export function getTransitionReason(
278
+ lead: EnrichedLead,
279
+ fromStage: QualificationStage,
280
+ toStage: QualificationStage,
281
+ projection?: RevenueProjection
282
+ ): string {
283
+ const parts: string[] = [];
284
+
285
+ if (toStage === 'warm') {
286
+ parts.push(`${lead.signalCount} signals detected`);
287
+ parts.push(`competitor threat ${lead.competitorThreat}%`);
288
+ }
289
+
290
+ if (toStage === 'hot') {
291
+ parts.push(`strong signals (${lead.signalCount})`);
292
+ parts.push(`high quality (${lead.quality}/100)`);
293
+ parts.push(`competitor threat ${lead.competitorThreat}%`);
294
+ }
295
+
296
+ if (toStage === 'sales-ready') {
297
+ parts.push(`all hot criteria met`);
298
+ if (projection) {
299
+ parts.push(`revenue projection $${projection.projectedRevenue}`);
300
+ }
301
+ }
302
+
303
+ return parts.join(', ') || `transition from ${fromStage} to ${toStage}`;
304
+ }
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Response Templates
3
+ * Email and Jira templates for competitive responses
4
+ * Phase 8C Task 11
5
+ */
6
+
7
+ /**
8
+ * Email template data
9
+ */
10
+ export interface EmailTemplate {
11
+ name: string;
12
+ subject: string;
13
+ bodyTemplate: string;
14
+ cta: string;
15
+ priority: 'urgent' | 'high' | 'normal';
16
+ }
17
+
18
+ /**
19
+ * Jira template data
20
+ */
21
+ export interface JiraTemplate {
22
+ name: string;
23
+ titleTemplate: string;
24
+ descriptionTemplate: string;
25
+ storyPoints: number;
26
+ labels: string[];
27
+ priority: 'Highest' | 'High' | 'Medium' | 'Low';
28
+ }
29
+
30
+ /**
31
+ * Email templates for different threat levels and scenarios
32
+ */
33
+ export const emailTemplates: Record<string, EmailTemplate> = {
34
+ critical_threat: {
35
+ name: 'Critical Competitor Threat',
36
+ subject: 'URGENT: Critical Competitor Threat - {{competitorName}} Response Required',
37
+ bodyTemplate: `
38
+ Dear Sales Leadership,
39
+
40
+ We have identified a CRITICAL threat from {{competitorName}} that requires immediate action.
41
+
42
+ THREAT OVERVIEW:
43
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
+ • Competitor: {{competitorName}}
45
+ • Threat Level: CRITICAL (Score: {{threatScore}}/100)
46
+ • Affected Accounts: {{affectedLeadCount}}
47
+ • Key Account IDs: {{topLeadIds}}
48
+ • Detection Date: {{detectionDate}}
49
+
50
+ COMPETITIVE THREAT ANALYSIS:
51
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
+ 1. Market Position: {{competitorStrengths}}
53
+ 2. Key Vulnerabilities: {{competitorWeaknesses}}
54
+ 3. Our Advantage: {{ourDifferentiation}}
55
+
56
+ IMMEDIATE ACTION ITEMS (Next 24 Hours):
57
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
58
+ □ Executive briefing on threat
59
+ □ Review customer risk assessment
60
+ □ Prepare customer retention calls
61
+ □ Activate crisis communication plan
62
+ □ Review pricing/packaging response
63
+
64
+ ESCALATION: {{escalationPath}}
65
+
66
+ This requires immediate leadership attention and coordinated customer engagement.
67
+ Expected response time: 4-6 hours.
68
+
69
+ Best regards,
70
+ Competitive Intelligence Team
71
+ `,
72
+ cta: 'Schedule immediate response call',
73
+ priority: 'urgent',
74
+ },
75
+
76
+ high_threat: {
77
+ name: 'High Competitor Threat',
78
+ subject: 'Competitor Update: {{competitorName}} Gaining Traction',
79
+ bodyTemplate: `
80
+ Dear Sales Team,
81
+
82
+ We've detected a HIGH priority competitive threat from {{competitorName}} in your pipeline.
83
+
84
+ THREAT SUMMARY:
85
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
86
+ Competitor: {{competitorName}}
87
+ Threat Level: HIGH
88
+ Affected Accounts: {{affectedLeadCount}}
89
+ Key Accounts: {{topLeadIds}}
90
+
91
+ WHAT CHANGED:
92
+ • {{competitorStrengths}}
93
+ • Market momentum indicators show increased activity
94
+
95
+ OUR RESPONSE STRATEGY:
96
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
+ 1. Differentiation: {{ourDifferentiation}}
98
+ 2. Unique Value Props:
99
+ • {{uniqueValue1}}
100
+ • {{uniqueValue2}}
101
+ • {{uniqueValue3}}
102
+
103
+ RECOMMENDED SALES ACTIONS:
104
+ □ Prepare competitive comparison deck
105
+ □ Schedule account review meetings
106
+ □ Document customer pain points we solve better
107
+ □ Create response talking points
108
+
109
+ Timeline: Handle within 48-72 hours
110
+ `,
111
+ cta: 'Review competitive positioning',
112
+ priority: 'high',
113
+ },
114
+
115
+ medium_threat: {
116
+ name: 'Medium Competitor Threat',
117
+ subject: 'Market Update: {{competitorName}} Activity Detected',
118
+ bodyTemplate: `
119
+ Dear Team,
120
+
121
+ We have identified MEDIUM priority competitive activity from {{competitorName}}.
122
+
123
+ OVERVIEW:
124
+ • Competitor: {{competitorName}}
125
+ • Affected Accounts: {{affectedLeadCount}}
126
+ • Threat Level: MEDIUM
127
+
128
+ KEY INSIGHTS:
129
+ {{competitorInsights}}
130
+
131
+ OUR POSITIONING:
132
+ {{ourPositioning}}
133
+
134
+ RECOMMENDED FOLLOW-UP:
135
+ • Monitor {{competitorName}} announcements
136
+ • Document customer feedback
137
+ • Prepare messaging for relevant accounts
138
+
139
+ No immediate action required, but stay alert.
140
+ `,
141
+ cta: 'Review market intelligence',
142
+ priority: 'normal',
143
+ },
144
+
145
+ lost_deal: {
146
+ name: 'Lost Deal to Competitor',
147
+ subject: 'Deal Loss Analysis: {{competitorName}} - {{accountName}}',
148
+ bodyTemplate: `
149
+ Dear Sales Leadership,
150
+
151
+ We have recorded a lost deal to {{competitorName}} at {{accountName}}.
152
+
153
+ DEAL ANALYSIS:
154
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
155
+ Account: {{accountName}}
156
+ Expected Revenue: {{projectedRevenue}}
157
+ Competitor: {{competitorName}}
158
+ Loss Reason: {{lossReason}}
159
+ Customer Feedback: {{customerFeedback}}
160
+
161
+ ROOT CAUSE ANALYSIS:
162
+ • {{rootCause1}}
163
+ • {{rootCause2}}
164
+ • {{rootCause3}}
165
+
166
+ RECOMMENDED PRODUCT/MARKETING RESPONSE:
167
+ □ Feature gap analysis
168
+ □ Pricing strategy review
169
+ □ Customer testimonial collection
170
+ □ Win-back opportunity assessment
171
+
172
+ This information is being fed into our competitive strategy.
173
+ `,
174
+ cta: 'Schedule loss review meeting',
175
+ priority: 'high',
176
+ },
177
+ };
178
+
179
+ /**
180
+ * Jira templates for different threat levels
181
+ */
182
+ export const jiraTemplates: Record<string, JiraTemplate> = {
183
+ critical_epic: {
184
+ name: 'Critical Competitor Response Epic',
185
+ titleTemplate: 'CRITICAL: Counter {{competitorName}} Threat ({{threatScore}})',
186
+ descriptionTemplate: `
187
+ h1. Critical Competitive Response Epic
188
+
189
+ h2. Overview
190
+ {{competitorName}} (Threat Level: {{threatLevel}}) is gaining traction and poses a critical threat to our market position.
191
+
192
+ h2. Market Impact
193
+ * Market Share Risk: {{marketRiskAssessment}}
194
+ * Affected Customer Base: {{affectedLeadCount}} accounts
195
+ * Revenue at Risk: {{revenueAtRisk}}
196
+ * Customer Churn Risk: {{churnRisk}}
197
+
198
+ h2. Competitor Analysis
199
+ h3. Key Strengths
200
+ * {{competitorStrength1}}
201
+ * {{competitorStrength2}}
202
+ * {{competitorStrength3}}
203
+
204
+ h3. Key Weaknesses
205
+ * {{competitorWeakness1}}
206
+ * {{competitorWeakness2}}
207
+
208
+ h3. Our Differentiation
209
+ * {{ourAdvantage1}}
210
+ * {{ourAdvantage2}}
211
+ * {{ourAdvantage3}}
212
+
213
+ h2. Feature Gaps to Address
214
+ * {{featureGap1}} - *{{priority1}}*
215
+ * {{featureGap2}} - *{{priority2}}*
216
+ * {{featureGap3}} - *{{priority3}}*
217
+
218
+ h2. Action Items
219
+ h3. Product Team
220
+ * [ ] Complete feature gap analysis
221
+ * [ ] Prioritize roadmap items
222
+ * [ ] Assess implementation effort
223
+ * [ ] Create customer-facing roadmap
224
+
225
+ h3. Marketing/Sales
226
+ * [ ] Create competitive comparison guide
227
+ * [ ] Prepare sales enablement materials
228
+ * [ ] Brief customer success team
229
+ * [ ] Plan win-back campaigns
230
+
231
+ h3. Leadership
232
+ * [ ] Strategic positioning review
233
+ * [ ] Pricing strategy reassessment
234
+ * [ ] Partnership opportunities evaluation
235
+
236
+ h2. Success Criteria
237
+ * [ ] Competitive threat reduced to HIGH or below
238
+ * [ ] Customer retention rate >95%
239
+ * [ ] Win rate improvement documented
240
+ * [ ] Roadmap response planned
241
+
242
+ h2. Timeline
243
+ CRITICAL: Complete strategic assessment within 1 week
244
+
245
+ h2. Labels
246
+ competitor-response, urgent, {{competitorName|lowercase}}
247
+
248
+ h2. Epic Link
249
+ Link to quarterly product roadmap
250
+
251
+ h2. Priority
252
+ Highest
253
+ `,
254
+ storyPoints: 21,
255
+ labels: ['competitor-response', 'urgent', 'critical'],
256
+ priority: 'Highest',
257
+ },
258
+
259
+ high_epic: {
260
+ name: 'High Priority Competitive Response',
261
+ titleTemplate: 'Counter {{competitorName}} High Threat ({{threatScore}})',
262
+ descriptionTemplate: `
263
+ h1. Competitive Response Epic
264
+
265
+ h2. Overview
266
+ {{competitorName}} (Threat Level: {{threatLevel}}) is gaining market traction.
267
+
268
+ h2. Competitive Threat
269
+ * Threat Score: {{threatScore}}/100
270
+ * Affected Accounts: {{affectedLeadCount}}
271
+ * Key Vulnerabilities: {{competitorWeaknesses}}
272
+
273
+ h2. Our Competitive Advantages
274
+ {{ourDifferentiation}}
275
+
276
+ h2. Product Response Roadmap
277
+ h3. Priority Features
278
+ * {{feature1}} - {{effort}}
279
+ * {{feature2}} - {{effort}}
280
+
281
+ h3. Messaging Updates
282
+ * [ ] Update competitive positioning
283
+ * [ ] Create customer comparison guide
284
+ * [ ] Prepare sales training
285
+
286
+ h2. Success Metrics
287
+ * Win rate against {{competitorName}}: Target >60%
288
+ * Customer satisfaction maintained >4.5/5
289
+ * Market share maintained
290
+
291
+ h2. Timeline
292
+ 1-2 weeks for strategic response planning
293
+
294
+ h2. Labels
295
+ competitor-response, {{competitorName|lowercase}}
296
+
297
+ h2. Priority
298
+ High
299
+ `,
300
+ storyPoints: 13,
301
+ labels: ['competitor-response', 'standard'],
302
+ priority: 'High',
303
+ },
304
+
305
+ medium_epic: {
306
+ name: 'Medium Priority Competitive Monitoring',
307
+ titleTemplate: 'Monitor {{competitorName}} Medium Threat ({{threatScore}})',
308
+ descriptionTemplate: `
309
+ h1. Competitive Monitoring Epic
310
+
311
+ h2. Overview
312
+ {{competitorName}} shows MEDIUM competitive threat indicators.
313
+
314
+ h2. Details
315
+ * Threat Score: {{threatScore}}/100
316
+ * Affected Accounts: {{affectedLeadCount}}
317
+ * Key Signals: {{signals}}
318
+
319
+ h2. Monitoring Tasks
320
+ * [ ] Track {{competitorName}} announcements
321
+ * [ ] Monitor customer feedback
322
+ * [ ] Assess feature roadmap impact
323
+ * [ ] Prepare contingency plans
324
+
325
+ h2. Timeline
326
+ Ongoing monitoring with quarterly reviews
327
+
328
+ h2. Labels
329
+ competitor-response, monitoring
330
+
331
+ h2. Priority
332
+ Medium
333
+ `,
334
+ storyPoints: 5,
335
+ labels: ['competitor-response', 'monitoring'],
336
+ priority: 'Medium',
337
+ },
338
+ };
339
+
340
+ /**
341
+ * Template renderer
342
+ */
343
+ export function renderTemplate(
344
+ template: string,
345
+ variables: Record<string, any>
346
+ ): string {
347
+ let result = template;
348
+
349
+ Object.entries(variables).forEach(([key, value]) => {
350
+ const regex = new RegExp(`{{${key}(?:\\|[^}]+)?}}`, 'g');
351
+ result = result.replace(regex, String(value || ''));
352
+ });
353
+
354
+ return result;
355
+ }
356
+
357
+ /**
358
+ * Get email template by threat level
359
+ */
360
+ export function getEmailTemplate(
361
+ threatLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW',
362
+ scenario: 'new_threat' | 'escalation' | 'lost_deal' = 'new_threat'
363
+ ): EmailTemplate {
364
+ if (threatLevel === 'CRITICAL') {
365
+ return emailTemplates.critical_threat;
366
+ } else if (threatLevel === 'HIGH') {
367
+ return emailTemplates.high_threat;
368
+ } else if (scenario === 'lost_deal') {
369
+ return emailTemplates.lost_deal;
370
+ } else {
371
+ return emailTemplates.medium_threat;
372
+ }
373
+ }
374
+
375
+ /**
376
+ * Get Jira template by threat level
377
+ */
378
+ export function getJiraTemplate(
379
+ threatLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW'
380
+ ): JiraTemplate {
381
+ if (threatLevel === 'CRITICAL') {
382
+ return jiraTemplates.critical_epic;
383
+ } else if (threatLevel === 'HIGH') {
384
+ return jiraTemplates.high_epic;
385
+ } else {
386
+ return jiraTemplates.medium_epic;
387
+ }
388
+ }
389
+
390
+ /**
391
+ * Format email for sending
392
+ */
393
+ export function formatEmailForSending(
394
+ templateKey: string,
395
+ variables: Record<string, any>
396
+ ): { subject: string; body: string; cta: string } {
397
+ const template = emailTemplates[templateKey] || emailTemplates.medium_threat;
398
+ return {
399
+ subject: renderTemplate(template.subject, variables),
400
+ body: renderTemplate(template.bodyTemplate, variables),
401
+ cta: template.cta,
402
+ };
403
+ }
404
+
405
+ /**
406
+ * Format Jira epic for creation
407
+ */
408
+ export function formatJiraForCreation(
409
+ templateKey: string,
410
+ variables: Record<string, any>
411
+ ): { title: string; description: string; storyPoints: number; labels: string[] } {
412
+ const template = jiraTemplates[templateKey] || jiraTemplates.medium_epic;
413
+ return {
414
+ title: renderTemplate(template.titleTemplate, variables),
415
+ description: renderTemplate(template.descriptionTemplate, variables),
416
+ storyPoints: template.storyPoints,
417
+ labels: template.labels,
418
+ };
419
+ }