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.
- package/.reports/detailed-analysis_2026-06-20_01ed326b.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_08d39381.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_0a331144.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_0d54ffef.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_14bfa31c.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_211feac4.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_22381bc2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_29b4ea0a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_2df0ad14.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_343ec84c.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3a01030d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3b4c99ec.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_3d368827.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_53544d3d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_5721164a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_57caf5e7.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_624302f5.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_62456384.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_636a52f1.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_63d1ad41.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_7451ccd7.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_74da4e9a.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_83a90083.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_867fbdd9.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_974c3299.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_a04639a2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_a8e23d6d.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_aa9150f0.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_acbeee08.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c4ffa0e2.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c5f7684b.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_c963b1fa.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_d4bde41f.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_d6eb2497.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ea6f7f58.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ebf4e060.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_ec4313a9.html +200 -0
- package/.reports/detailed-analysis_2026-06-20_fc65d18e.html +200 -0
- package/.reports/executive-summary_2026-06-20_00406d50.html +109 -0
- package/.reports/executive-summary_2026-06-20_0bb202d3.html +109 -0
- package/.reports/executive-summary_2026-06-20_0bcd7481.html +109 -0
- package/.reports/executive-summary_2026-06-20_11506445.html +109 -0
- package/.reports/executive-summary_2026-06-20_13616cda.html +109 -0
- package/.reports/executive-summary_2026-06-20_19d41c2f.html +109 -0
- package/.reports/executive-summary_2026-06-20_1b0d6e96.html +109 -0
- package/.reports/executive-summary_2026-06-20_1e38670b.html +109 -0
- package/.reports/executive-summary_2026-06-20_1f32f793.html +109 -0
- package/.reports/executive-summary_2026-06-20_1f40f7d3.html +109 -0
- package/.reports/executive-summary_2026-06-20_25a40a7e.html +109 -0
- package/.reports/executive-summary_2026-06-20_26d11818.html +109 -0
- package/.reports/executive-summary_2026-06-20_26ed4593.html +109 -0
- package/.reports/executive-summary_2026-06-20_291b90a8.html +109 -0
- package/.reports/executive-summary_2026-06-20_2957a848.html +109 -0
- package/.reports/executive-summary_2026-06-20_2a04eb77.html +109 -0
- package/.reports/executive-summary_2026-06-20_2fa701f9.html +109 -0
- package/.reports/executive-summary_2026-06-20_327af8f5.html +109 -0
- package/.reports/executive-summary_2026-06-20_3418c729.html +109 -0
- package/.reports/executive-summary_2026-06-20_3571763d.html +109 -0
- package/.reports/executive-summary_2026-06-20_36225353.html +109 -0
- package/.reports/executive-summary_2026-06-20_3b2de891.html +109 -0
- package/.reports/executive-summary_2026-06-20_45b980c2.html +109 -0
- package/.reports/executive-summary_2026-06-20_46fcbf17.html +109 -0
- package/.reports/executive-summary_2026-06-20_48c8fa5e.html +109 -0
- package/.reports/executive-summary_2026-06-20_4ba55c43.html +109 -0
- package/.reports/executive-summary_2026-06-20_4f4498e6.html +109 -0
- package/.reports/executive-summary_2026-06-20_54c33bf0.html +109 -0
- package/.reports/executive-summary_2026-06-20_54cc7077.html +109 -0
- package/.reports/executive-summary_2026-06-20_5a12912e.html +109 -0
- package/.reports/executive-summary_2026-06-20_636fac87.html +109 -0
- package/.reports/executive-summary_2026-06-20_6587faaf.html +109 -0
- package/.reports/executive-summary_2026-06-20_6adbdd03.html +109 -0
- package/.reports/executive-summary_2026-06-20_6bf344ec.html +109 -0
- package/.reports/executive-summary_2026-06-20_7142aeed.html +109 -0
- package/.reports/executive-summary_2026-06-20_72bc0ceb.html +109 -0
- package/.reports/executive-summary_2026-06-20_775752ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_7a9c3223.html +109 -0
- package/.reports/executive-summary_2026-06-20_808e6376.html +109 -0
- package/.reports/executive-summary_2026-06-20_8de9142d.html +109 -0
- package/.reports/executive-summary_2026-06-20_91981fbe.html +109 -0
- package/.reports/executive-summary_2026-06-20_93191c8c.html +109 -0
- package/.reports/executive-summary_2026-06-20_9be48a87.html +109 -0
- package/.reports/executive-summary_2026-06-20_9c127198.html +109 -0
- package/.reports/executive-summary_2026-06-20_9ee303ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_9ee52709.html +109 -0
- package/.reports/executive-summary_2026-06-20_a0fa27de.html +109 -0
- package/.reports/executive-summary_2026-06-20_a1813e47.html +109 -0
- package/.reports/executive-summary_2026-06-20_a974edc1.html +109 -0
- package/.reports/executive-summary_2026-06-20_aa711737.html +109 -0
- package/.reports/executive-summary_2026-06-20_aa752246.html +109 -0
- package/.reports/executive-summary_2026-06-20_ac6f0927.html +109 -0
- package/.reports/executive-summary_2026-06-20_b231b143.html +109 -0
- package/.reports/executive-summary_2026-06-20_b570a2bd.html +109 -0
- package/.reports/executive-summary_2026-06-20_b6fbf650.html +109 -0
- package/.reports/executive-summary_2026-06-20_b9f8ddf3.html +109 -0
- package/.reports/executive-summary_2026-06-20_bf95cc63.html +109 -0
- package/.reports/executive-summary_2026-06-20_c0d0aefe.html +109 -0
- package/.reports/executive-summary_2026-06-20_c1933c36.html +109 -0
- package/.reports/executive-summary_2026-06-20_c99bba8a.html +109 -0
- package/.reports/executive-summary_2026-06-20_cc3846ac.html +109 -0
- package/.reports/executive-summary_2026-06-20_d485993c.html +109 -0
- package/.reports/executive-summary_2026-06-20_d56f75f7.html +109 -0
- package/.reports/executive-summary_2026-06-20_d57660cc.html +109 -0
- package/.reports/executive-summary_2026-06-20_dc036f62.html +109 -0
- package/.reports/executive-summary_2026-06-20_df783f47.html +109 -0
- package/.reports/executive-summary_2026-06-20_e2191adb.html +109 -0
- package/.reports/executive-summary_2026-06-20_e9f1d504.html +109 -0
- package/.reports/executive-summary_2026-06-20_ea82f5e1.html +109 -0
- package/.reports/executive-summary_2026-06-20_ec3e70cb.html +109 -0
- package/.reports/executive-summary_2026-06-20_ee6cf902.html +109 -0
- package/.reports/executive-summary_2026-06-20_f6cb657c.html +109 -0
- package/.reports/executive-summary_2026-06-20_f8c60046.html +109 -0
- package/.reports/executive-summary_2026-06-20_fa184840.html +109 -0
- package/.reports/executive-summary_2026-06-20_fc88bcb4.html +109 -0
- package/.reports/executive-summary_2026-06-20_ffa79c4e.html +109 -0
- package/README.md +53 -0
- package/dist/automation/actionApprover.d.ts +89 -0
- package/dist/automation/actionApprover.d.ts.map +1 -0
- package/dist/automation/actionApprover.js +264 -0
- package/dist/automation/actionApprover.js.map +1 -0
- package/dist/automation/actionExecutor.d.ts +125 -0
- package/dist/automation/actionExecutor.d.ts.map +1 -0
- package/dist/automation/actionExecutor.js +304 -0
- package/dist/automation/actionExecutor.js.map +1 -0
- package/dist/automation/alertRules.d.ts +55 -0
- package/dist/automation/alertRules.d.ts.map +1 -0
- package/dist/automation/alertRules.js +70 -0
- package/dist/automation/alertRules.js.map +1 -0
- package/dist/automation/alertSystem.d.ts +109 -0
- package/dist/automation/alertSystem.d.ts.map +1 -0
- package/dist/automation/alertSystem.js +303 -0
- package/dist/automation/alertSystem.js.map +1 -0
- package/dist/automation/competitorResponse.d.ts +119 -0
- package/dist/automation/competitorResponse.d.ts.map +1 -0
- package/dist/automation/competitorResponse.js +343 -0
- package/dist/automation/competitorResponse.js.map +1 -0
- package/dist/automation/composioClient.d.ts +107 -0
- package/dist/automation/composioClient.d.ts.map +1 -0
- package/dist/automation/composioClient.js +286 -0
- package/dist/automation/composioClient.js.map +1 -0
- package/dist/automation/crmExport.d.ts +116 -0
- package/dist/automation/crmExport.d.ts.map +1 -0
- package/dist/automation/crmExport.js +282 -0
- package/dist/automation/crmExport.js.map +1 -0
- package/dist/automation/crmIntegration.d.ts +83 -0
- package/dist/automation/crmIntegration.d.ts.map +1 -0
- package/dist/automation/crmIntegration.js +207 -0
- package/dist/automation/crmIntegration.js.map +1 -0
- package/dist/automation/gmailIntegration.d.ts +73 -0
- package/dist/automation/gmailIntegration.d.ts.map +1 -0
- package/dist/automation/gmailIntegration.js +184 -0
- package/dist/automation/gmailIntegration.js.map +1 -0
- package/dist/automation/index.d.ts +17 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +17 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/jiraIntegration.d.ts +103 -0
- package/dist/automation/jiraIntegration.d.ts.map +1 -0
- package/dist/automation/jiraIntegration.js +222 -0
- package/dist/automation/jiraIntegration.js.map +1 -0
- package/dist/automation/jobQueue.d.ts +98 -0
- package/dist/automation/jobQueue.d.ts.map +1 -0
- package/dist/automation/jobQueue.js +207 -0
- package/dist/automation/jobQueue.js.map +1 -0
- package/dist/automation/leadQualification.d.ts +60 -0
- package/dist/automation/leadQualification.d.ts.map +1 -0
- package/dist/automation/leadQualification.js +204 -0
- package/dist/automation/leadQualification.js.map +1 -0
- package/dist/automation/qualificationRules.d.ts +100 -0
- package/dist/automation/qualificationRules.d.ts.map +1 -0
- package/dist/automation/qualificationRules.js +202 -0
- package/dist/automation/qualificationRules.js.map +1 -0
- package/dist/automation/responseTemplates.d.ts +64 -0
- package/dist/automation/responseTemplates.d.ts.map +1 -0
- package/dist/automation/responseTemplates.js +374 -0
- package/dist/automation/responseTemplates.js.map +1 -0
- package/dist/automation/scheduler.d.ts +85 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +194 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/automation/types.d.ts +223 -0
- package/dist/automation/types.d.ts.map +1 -0
- package/dist/automation/types.js +32 -0
- package/dist/automation/types.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +575 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compression/caveman.d.ts +14 -0
- package/dist/compression/caveman.d.ts.map +1 -0
- package/dist/compression/caveman.js +188 -0
- package/dist/compression/caveman.js.map +1 -0
- package/dist/compression/caveman.test.d.ts +2 -0
- package/dist/compression/caveman.test.d.ts.map +1 -0
- package/dist/compression/caveman.test.js.map +1 -0
- package/dist/config/configManager.d.ts +6 -0
- package/dist/config/configManager.d.ts.map +1 -0
- package/dist/config/configManager.js +62 -0
- package/dist/config/configManager.js.map +1 -0
- package/dist/config/schema.d.ts +95 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +19 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/context/autoCompact.d.ts +19 -0
- package/dist/context/autoCompact.d.ts.map +1 -0
- package/dist/context/autoCompact.js +101 -0
- package/dist/context/autoCompact.js.map +1 -0
- package/dist/context/readDedup.d.ts +21 -0
- package/dist/context/readDedup.d.ts.map +1 -0
- package/dist/context/readDedup.js +55 -0
- package/dist/context/readDedup.js.map +1 -0
- package/dist/context/toolBudgets.d.ts +15 -0
- package/dist/context/toolBudgets.d.ts.map +1 -0
- package/dist/context/toolBudgets.js +35 -0
- package/dist/context/toolBudgets.js.map +1 -0
- package/dist/core/auditLogger.d.ts +30 -0
- package/dist/core/auditLogger.d.ts.map +1 -0
- package/dist/core/auditLogger.js +51 -0
- package/dist/core/auditLogger.js.map +1 -0
- package/dist/core/stateManager.d.ts +10 -0
- package/dist/core/stateManager.d.ts.map +1 -0
- package/dist/core/stateManager.js +59 -0
- package/dist/core/stateManager.js.map +1 -0
- package/dist/database/feedbackSchema.d.ts +80 -0
- package/dist/database/feedbackSchema.d.ts.map +1 -0
- package/dist/database/feedbackSchema.js +94 -0
- package/dist/database/feedbackSchema.js.map +1 -0
- package/dist/database/leadsSchema.d.ts +99 -0
- package/dist/database/leadsSchema.d.ts.map +1 -0
- package/dist/database/leadsSchema.js +136 -0
- package/dist/database/leadsSchema.js.map +1 -0
- package/dist/intelligence/competitorScoring.d.ts +25 -0
- package/dist/intelligence/competitorScoring.d.ts.map +1 -0
- package/dist/intelligence/competitorScoring.js +181 -0
- package/dist/intelligence/competitorScoring.js.map +1 -0
- package/dist/intelligence/competitorTracker.d.ts +36 -0
- package/dist/intelligence/competitorTracker.d.ts.map +1 -0
- package/dist/intelligence/competitorTracker.js +286 -0
- package/dist/intelligence/competitorTracker.js.map +1 -0
- package/dist/intelligence/competitorTypes.d.ts +93 -0
- package/dist/intelligence/competitorTypes.d.ts.map +1 -0
- package/dist/intelligence/competitorTypes.js +6 -0
- package/dist/intelligence/competitorTypes.js.map +1 -0
- package/dist/intelligence/competitors.json +76 -0
- package/dist/intelligence/feedbackLoop.d.ts +118 -0
- package/dist/intelligence/feedbackLoop.d.ts.map +1 -0
- package/dist/intelligence/feedbackLoop.js +368 -0
- package/dist/intelligence/feedbackLoop.js.map +1 -0
- package/dist/intelligence/gitHubTracker.d.ts +14 -0
- package/dist/intelligence/gitHubTracker.d.ts.map +1 -0
- package/dist/intelligence/gitHubTracker.js +153 -0
- package/dist/intelligence/gitHubTracker.js.map +1 -0
- package/dist/intelligence/hackerNewsScanner.d.ts +21 -0
- package/dist/intelligence/hackerNewsScanner.d.ts.map +1 -0
- package/dist/intelligence/hackerNewsScanner.js +88 -0
- package/dist/intelligence/hackerNewsScanner.js.map +1 -0
- package/dist/intelligence/hiringSignals.d.ts +16 -0
- package/dist/intelligence/hiringSignals.d.ts.map +1 -0
- package/dist/intelligence/hiringSignals.js +132 -0
- package/dist/intelligence/hiringSignals.js.map +1 -0
- package/dist/intelligence/index.d.ts +9 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +9 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/leadEnrichment.d.ts +59 -0
- package/dist/intelligence/leadEnrichment.d.ts.map +1 -0
- package/dist/intelligence/leadEnrichment.js +209 -0
- package/dist/intelligence/leadEnrichment.js.map +1 -0
- package/dist/intelligence/leadEnrichmentTypes.d.ts +49 -0
- package/dist/intelligence/leadEnrichmentTypes.d.ts.map +1 -0
- package/dist/intelligence/leadEnrichmentTypes.js +7 -0
- package/dist/intelligence/leadEnrichmentTypes.js.map +1 -0
- package/dist/intelligence/marketScanner.d.ts +18 -0
- package/dist/intelligence/marketScanner.d.ts.map +1 -0
- package/dist/intelligence/marketScanner.js +225 -0
- package/dist/intelligence/marketScanner.js.map +1 -0
- package/dist/intelligence/polymarketScanner.d.ts +20 -0
- package/dist/intelligence/polymarketScanner.d.ts.map +1 -0
- package/dist/intelligence/polymarketScanner.js +88 -0
- package/dist/intelligence/polymarketScanner.js.map +1 -0
- package/dist/intelligence/redditScanner.d.ts +22 -0
- package/dist/intelligence/redditScanner.d.ts.map +1 -0
- package/dist/intelligence/redditScanner.js +89 -0
- package/dist/intelligence/redditScanner.js.map +1 -0
- package/dist/intelligence/signalAggregator.d.ts +10 -0
- package/dist/intelligence/signalAggregator.d.ts.map +1 -0
- package/dist/intelligence/signalAggregator.js +64 -0
- package/dist/intelligence/signalAggregator.js.map +1 -0
- package/dist/intelligence/trendAnalysis.d.ts +13 -0
- package/dist/intelligence/trendAnalysis.d.ts.map +1 -0
- package/dist/intelligence/trendAnalysis.js +106 -0
- package/dist/intelligence/trendAnalysis.js.map +1 -0
- package/dist/intelligence/twitterScanner.d.ts +22 -0
- package/dist/intelligence/twitterScanner.d.ts.map +1 -0
- package/dist/intelligence/twitterScanner.js +63 -0
- package/dist/intelligence/twitterScanner.js.map +1 -0
- package/dist/intelligence/types.d.ts +566 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/intelligence/types.js +87 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/intelligence/userComplaints.d.ts +15 -0
- package/dist/intelligence/userComplaints.d.ts.map +1 -0
- package/dist/intelligence/userComplaints.js +193 -0
- package/dist/intelligence/userComplaints.js.map +1 -0
- package/dist/metrics/businessMetrics.d.ts +41 -0
- package/dist/metrics/businessMetrics.d.ts.map +1 -0
- package/dist/metrics/businessMetrics.js +120 -0
- package/dist/metrics/businessMetrics.js.map +1 -0
- package/dist/metrics/businessMetrics.test.d.ts +2 -0
- package/dist/metrics/businessMetrics.test.d.ts.map +1 -0
- package/dist/metrics/businessMetrics.test.js.map +1 -0
- package/dist/metrics/businessMetricsAgg.d.ts +85 -0
- package/dist/metrics/businessMetricsAgg.d.ts.map +1 -0
- package/dist/metrics/businessMetricsAgg.js +406 -0
- package/dist/metrics/businessMetricsAgg.js.map +1 -0
- package/dist/metrics/competitorMetrics.d.ts +57 -0
- package/dist/metrics/competitorMetrics.d.ts.map +1 -0
- package/dist/metrics/competitorMetrics.js +94 -0
- package/dist/metrics/competitorMetrics.js.map +1 -0
- package/dist/metrics/dashboardGenerator.d.ts +16 -0
- package/dist/metrics/dashboardGenerator.d.ts.map +1 -0
- package/dist/metrics/dashboardGenerator.js +313 -0
- package/dist/metrics/dashboardGenerator.js.map +1 -0
- package/dist/metrics/dashboardHTML.d.ts +18 -0
- package/dist/metrics/dashboardHTML.d.ts.map +1 -0
- package/dist/metrics/dashboardHTML.js +613 -0
- package/dist/metrics/dashboardHTML.js.map +1 -0
- package/dist/metrics/grafanaExport.d.ts +53 -0
- package/dist/metrics/grafanaExport.d.ts.map +1 -0
- package/dist/metrics/grafanaExport.js +277 -0
- package/dist/metrics/grafanaExport.js.map +1 -0
- package/dist/metrics/index.d.ts +17 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +17 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/leadsMetrics.d.ts +48 -0
- package/dist/metrics/leadsMetrics.d.ts.map +1 -0
- package/dist/metrics/leadsMetrics.js +82 -0
- package/dist/metrics/leadsMetrics.js.map +1 -0
- package/dist/metrics/leadsMetrics.test.d.ts +2 -0
- package/dist/metrics/leadsMetrics.test.d.ts.map +1 -0
- package/dist/metrics/leadsMetrics.test.js.map +1 -0
- package/dist/metrics/metricsTypes.d.ts +114 -0
- package/dist/metrics/metricsTypes.d.ts.map +1 -0
- package/dist/metrics/metricsTypes.js +7 -0
- package/dist/metrics/metricsTypes.js.map +1 -0
- package/dist/metrics/revenueProjection.d.ts +44 -0
- package/dist/metrics/revenueProjection.d.ts.map +1 -0
- package/dist/metrics/revenueProjection.js +239 -0
- package/dist/metrics/revenueProjection.js.map +1 -0
- package/dist/metrics/revenueTypes.d.ts +62 -0
- package/dist/metrics/revenueTypes.d.ts.map +1 -0
- package/dist/metrics/revenueTypes.js +7 -0
- package/dist/metrics/revenueTypes.js.map +1 -0
- package/dist/metrics/roiCalculator.d.ts +39 -0
- package/dist/metrics/roiCalculator.d.ts.map +1 -0
- package/dist/metrics/roiCalculator.js +128 -0
- package/dist/metrics/roiCalculator.js.map +1 -0
- package/dist/metrics/roiCalculator.test.d.ts +2 -0
- package/dist/metrics/roiCalculator.test.d.ts.map +1 -0
- package/dist/metrics/roiCalculator.test.js.map +1 -0
- package/dist/metrics/trendMetrics.d.ts +51 -0
- package/dist/metrics/trendMetrics.d.ts.map +1 -0
- package/dist/metrics/trendMetrics.js +116 -0
- package/dist/metrics/trendMetrics.js.map +1 -0
- package/dist/modes/conservativeCTOMode.d.ts +32 -0
- package/dist/modes/conservativeCTOMode.d.ts.map +1 -0
- package/dist/modes/conservativeCTOMode.js +98 -0
- package/dist/modes/conservativeCTOMode.js.map +1 -0
- package/dist/modes/index.d.ts +3 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/seniorDeveloperMode.d.ts +17 -0
- package/dist/modes/seniorDeveloperMode.d.ts.map +1 -0
- package/dist/modes/seniorDeveloperMode.js +77 -0
- package/dist/modes/seniorDeveloperMode.js.map +1 -0
- package/dist/recovery/contextRecovery.d.ts +28 -0
- package/dist/recovery/contextRecovery.d.ts.map +1 -0
- package/dist/recovery/contextRecovery.js +113 -0
- package/dist/recovery/contextRecovery.js.map +1 -0
- package/dist/repair/errorDiagnostics.d.ts +28 -0
- package/dist/repair/errorDiagnostics.d.ts.map +1 -0
- package/dist/repair/errorDiagnostics.js +158 -0
- package/dist/repair/errorDiagnostics.js.map +1 -0
- package/dist/repair/skillCapture.d.ts +22 -0
- package/dist/repair/skillCapture.d.ts.map +1 -0
- package/dist/repair/skillCapture.js +119 -0
- package/dist/repair/skillCapture.js.map +1 -0
- package/dist/reporting/reportGenerator.d.ts +117 -0
- package/dist/reporting/reportGenerator.d.ts.map +1 -0
- package/dist/reporting/reportGenerator.js +613 -0
- package/dist/reporting/reportGenerator.js.map +1 -0
- package/dist/reporting/templates.d.ts +68 -0
- package/dist/reporting/templates.d.ts.map +1 -0
- package/dist/reporting/templates.js +629 -0
- package/dist/reporting/templates.js.map +1 -0
- package/dist/security/owaspScanner.d.ts +74 -0
- package/dist/security/owaspScanner.d.ts.map +1 -0
- package/dist/security/owaspScanner.js +309 -0
- package/dist/security/owaspScanner.js.map +1 -0
- package/dist/security/piiRedaction.d.ts +67 -0
- package/dist/security/piiRedaction.d.ts.map +1 -0
- package/dist/security/piiRedaction.js +189 -0
- package/dist/security/piiRedaction.js.map +1 -0
- package/dist/security/secretsDetection.d.ts +47 -0
- package/dist/security/secretsDetection.d.ts.map +1 -0
- package/dist/security/secretsDetection.js +272 -0
- package/dist/security/secretsDetection.js.map +1 -0
- package/dist/subagents/builder.d.ts +33 -0
- package/dist/subagents/builder.d.ts.map +1 -0
- package/dist/subagents/builder.js +158 -0
- package/dist/subagents/builder.js.map +1 -0
- package/dist/subagents/investigator.d.ts +31 -0
- package/dist/subagents/investigator.d.ts.map +1 -0
- package/dist/subagents/investigator.js +166 -0
- package/dist/subagents/investigator.js.map +1 -0
- package/dist/subagents/orchestrator.d.ts +48 -0
- package/dist/subagents/orchestrator.d.ts.map +1 -0
- package/dist/subagents/orchestrator.js +151 -0
- package/dist/subagents/orchestrator.js.map +1 -0
- package/dist/subagents/reviewer.d.ts +31 -0
- package/dist/subagents/reviewer.d.ts.map +1 -0
- package/dist/subagents/reviewer.js +154 -0
- package/dist/subagents/reviewer.js.map +1 -0
- package/dist/telemetry/tokenCounter.d.ts +21 -0
- package/dist/telemetry/tokenCounter.d.ts.map +1 -0
- package/dist/telemetry/tokenCounter.js +49 -0
- package/dist/telemetry/tokenCounter.js.map +1 -0
- package/package.json +61 -0
- package/src/automation/actionApprover.ts +342 -0
- package/src/automation/actionExecutor.ts +399 -0
- package/src/automation/alertRules.ts +113 -0
- package/src/automation/alertSystem.ts +402 -0
- package/src/automation/competitorResponse.ts +511 -0
- package/src/automation/composioClient.ts +360 -0
- package/src/automation/crmExport.ts +407 -0
- package/src/automation/crmIntegration.ts +268 -0
- package/src/automation/gmailIntegration.ts +244 -0
- package/src/automation/index.ts +17 -0
- package/src/automation/jiraIntegration.ts +310 -0
- package/src/automation/jobQueue.ts +278 -0
- package/src/automation/leadQualification.ts +270 -0
- package/src/automation/qualificationRules.ts +304 -0
- package/src/automation/responseTemplates.ts +419 -0
- package/src/automation/scheduler.ts +254 -0
- package/src/automation/types.ts +270 -0
- package/src/cli/index.ts +646 -0
- package/src/compression/caveman.ts +257 -0
- package/src/config/configManager.ts +63 -0
- package/src/config/schema.ts +27 -0
- package/src/context/autoCompact.ts +123 -0
- package/src/context/readDedup.ts +84 -0
- package/src/context/toolBudgets.ts +43 -0
- package/src/core/auditLogger.ts +69 -0
- package/src/core/stateManager.ts +73 -0
- package/src/database/feedbackSchema.ts +168 -0
- package/src/database/leadsSchema.ts +205 -0
- package/src/intelligence/competitorScoring.ts +292 -0
- package/src/intelligence/competitorTracker.ts +362 -0
- package/src/intelligence/competitorTypes.ts +100 -0
- package/src/intelligence/competitors.json +76 -0
- package/src/intelligence/feedbackLoop.ts +538 -0
- package/src/intelligence/gitHubTracker.ts +204 -0
- package/src/intelligence/hackerNewsScanner.ts +121 -0
- package/src/intelligence/hiringSignals.ts +162 -0
- package/src/intelligence/index.ts +9 -0
- package/src/intelligence/leadEnrichment.ts +275 -0
- package/src/intelligence/leadEnrichmentTypes.ts +54 -0
- package/src/intelligence/marketScanner.ts +285 -0
- package/src/intelligence/polymarketScanner.ts +120 -0
- package/src/intelligence/redditScanner.ts +122 -0
- package/src/intelligence/signalAggregator.ts +94 -0
- package/src/intelligence/trendAnalysis.ts +140 -0
- package/src/intelligence/twitterScanner.ts +94 -0
- package/src/intelligence/types.ts +130 -0
- package/src/intelligence/userComplaints.ts +236 -0
- package/src/metrics/businessMetrics.ts +186 -0
- package/src/metrics/businessMetricsAgg.ts +554 -0
- package/src/metrics/competitorMetrics.ts +175 -0
- package/src/metrics/dashboardGenerator.ts +335 -0
- package/src/metrics/dashboardHTML.ts +637 -0
- package/src/metrics/grafanaExport.ts +347 -0
- package/src/metrics/index.ts +17 -0
- package/src/metrics/leadsMetrics.ts +145 -0
- package/src/metrics/metricsTypes.ts +129 -0
- package/src/metrics/revenueProjection.ts +319 -0
- package/src/metrics/revenueTypes.ts +67 -0
- package/src/metrics/roiCalculator.ts +199 -0
- package/src/metrics/trendMetrics.ts +190 -0
- package/src/modes/conservativeCTOMode.ts +124 -0
- package/src/modes/index.ts +6 -0
- package/src/modes/seniorDeveloperMode.ts +94 -0
- package/src/recovery/contextRecovery.ts +141 -0
- package/src/repair/errorDiagnostics.ts +198 -0
- package/src/repair/skillCapture.ts +157 -0
- package/src/reporting/reportGenerator.ts +802 -0
- package/src/reporting/templates.ts +677 -0
- package/src/security/owaspScanner.ts +390 -0
- package/src/security/phase8Hardening.ts +536 -0
- package/src/security/piiRedaction.ts +215 -0
- package/src/security/secretsDetection.js +271 -0
- package/src/security/secretsDetection.ts +318 -0
- package/src/subagents/builder.ts +277 -0
- package/src/subagents/investigator.ts +224 -0
- package/src/subagents/orchestrator.ts +212 -0
- package/src/subagents/reviewer.ts +215 -0
- package/src/telemetry/tokenCounter.ts +81 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Templates
|
|
3
|
+
* Email and Jira templates for competitive responses
|
|
4
|
+
* Phase 8C Task 11
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Email templates for different threat levels and scenarios
|
|
8
|
+
*/
|
|
9
|
+
export const emailTemplates = {
|
|
10
|
+
critical_threat: {
|
|
11
|
+
name: 'Critical Competitor Threat',
|
|
12
|
+
subject: 'URGENT: Critical Competitor Threat - {{competitorName}} Response Required',
|
|
13
|
+
bodyTemplate: `
|
|
14
|
+
Dear Sales Leadership,
|
|
15
|
+
|
|
16
|
+
We have identified a CRITICAL threat from {{competitorName}} that requires immediate action.
|
|
17
|
+
|
|
18
|
+
THREAT OVERVIEW:
|
|
19
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
20
|
+
• Competitor: {{competitorName}}
|
|
21
|
+
• Threat Level: CRITICAL (Score: {{threatScore}}/100)
|
|
22
|
+
• Affected Accounts: {{affectedLeadCount}}
|
|
23
|
+
• Key Account IDs: {{topLeadIds}}
|
|
24
|
+
• Detection Date: {{detectionDate}}
|
|
25
|
+
|
|
26
|
+
COMPETITIVE THREAT ANALYSIS:
|
|
27
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
28
|
+
1. Market Position: {{competitorStrengths}}
|
|
29
|
+
2. Key Vulnerabilities: {{competitorWeaknesses}}
|
|
30
|
+
3. Our Advantage: {{ourDifferentiation}}
|
|
31
|
+
|
|
32
|
+
IMMEDIATE ACTION ITEMS (Next 24 Hours):
|
|
33
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
34
|
+
□ Executive briefing on threat
|
|
35
|
+
□ Review customer risk assessment
|
|
36
|
+
□ Prepare customer retention calls
|
|
37
|
+
□ Activate crisis communication plan
|
|
38
|
+
□ Review pricing/packaging response
|
|
39
|
+
|
|
40
|
+
ESCALATION: {{escalationPath}}
|
|
41
|
+
|
|
42
|
+
This requires immediate leadership attention and coordinated customer engagement.
|
|
43
|
+
Expected response time: 4-6 hours.
|
|
44
|
+
|
|
45
|
+
Best regards,
|
|
46
|
+
Competitive Intelligence Team
|
|
47
|
+
`,
|
|
48
|
+
cta: 'Schedule immediate response call',
|
|
49
|
+
priority: 'urgent',
|
|
50
|
+
},
|
|
51
|
+
high_threat: {
|
|
52
|
+
name: 'High Competitor Threat',
|
|
53
|
+
subject: 'Competitor Update: {{competitorName}} Gaining Traction',
|
|
54
|
+
bodyTemplate: `
|
|
55
|
+
Dear Sales Team,
|
|
56
|
+
|
|
57
|
+
We've detected a HIGH priority competitive threat from {{competitorName}} in your pipeline.
|
|
58
|
+
|
|
59
|
+
THREAT SUMMARY:
|
|
60
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
61
|
+
Competitor: {{competitorName}}
|
|
62
|
+
Threat Level: HIGH
|
|
63
|
+
Affected Accounts: {{affectedLeadCount}}
|
|
64
|
+
Key Accounts: {{topLeadIds}}
|
|
65
|
+
|
|
66
|
+
WHAT CHANGED:
|
|
67
|
+
• {{competitorStrengths}}
|
|
68
|
+
• Market momentum indicators show increased activity
|
|
69
|
+
|
|
70
|
+
OUR RESPONSE STRATEGY:
|
|
71
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
72
|
+
1. Differentiation: {{ourDifferentiation}}
|
|
73
|
+
2. Unique Value Props:
|
|
74
|
+
• {{uniqueValue1}}
|
|
75
|
+
• {{uniqueValue2}}
|
|
76
|
+
• {{uniqueValue3}}
|
|
77
|
+
|
|
78
|
+
RECOMMENDED SALES ACTIONS:
|
|
79
|
+
□ Prepare competitive comparison deck
|
|
80
|
+
□ Schedule account review meetings
|
|
81
|
+
□ Document customer pain points we solve better
|
|
82
|
+
□ Create response talking points
|
|
83
|
+
|
|
84
|
+
Timeline: Handle within 48-72 hours
|
|
85
|
+
`,
|
|
86
|
+
cta: 'Review competitive positioning',
|
|
87
|
+
priority: 'high',
|
|
88
|
+
},
|
|
89
|
+
medium_threat: {
|
|
90
|
+
name: 'Medium Competitor Threat',
|
|
91
|
+
subject: 'Market Update: {{competitorName}} Activity Detected',
|
|
92
|
+
bodyTemplate: `
|
|
93
|
+
Dear Team,
|
|
94
|
+
|
|
95
|
+
We have identified MEDIUM priority competitive activity from {{competitorName}}.
|
|
96
|
+
|
|
97
|
+
OVERVIEW:
|
|
98
|
+
• Competitor: {{competitorName}}
|
|
99
|
+
• Affected Accounts: {{affectedLeadCount}}
|
|
100
|
+
• Threat Level: MEDIUM
|
|
101
|
+
|
|
102
|
+
KEY INSIGHTS:
|
|
103
|
+
{{competitorInsights}}
|
|
104
|
+
|
|
105
|
+
OUR POSITIONING:
|
|
106
|
+
{{ourPositioning}}
|
|
107
|
+
|
|
108
|
+
RECOMMENDED FOLLOW-UP:
|
|
109
|
+
• Monitor {{competitorName}} announcements
|
|
110
|
+
• Document customer feedback
|
|
111
|
+
• Prepare messaging for relevant accounts
|
|
112
|
+
|
|
113
|
+
No immediate action required, but stay alert.
|
|
114
|
+
`,
|
|
115
|
+
cta: 'Review market intelligence',
|
|
116
|
+
priority: 'normal',
|
|
117
|
+
},
|
|
118
|
+
lost_deal: {
|
|
119
|
+
name: 'Lost Deal to Competitor',
|
|
120
|
+
subject: 'Deal Loss Analysis: {{competitorName}} - {{accountName}}',
|
|
121
|
+
bodyTemplate: `
|
|
122
|
+
Dear Sales Leadership,
|
|
123
|
+
|
|
124
|
+
We have recorded a lost deal to {{competitorName}} at {{accountName}}.
|
|
125
|
+
|
|
126
|
+
DEAL ANALYSIS:
|
|
127
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
|
+
Account: {{accountName}}
|
|
129
|
+
Expected Revenue: {{projectedRevenue}}
|
|
130
|
+
Competitor: {{competitorName}}
|
|
131
|
+
Loss Reason: {{lossReason}}
|
|
132
|
+
Customer Feedback: {{customerFeedback}}
|
|
133
|
+
|
|
134
|
+
ROOT CAUSE ANALYSIS:
|
|
135
|
+
• {{rootCause1}}
|
|
136
|
+
• {{rootCause2}}
|
|
137
|
+
• {{rootCause3}}
|
|
138
|
+
|
|
139
|
+
RECOMMENDED PRODUCT/MARKETING RESPONSE:
|
|
140
|
+
□ Feature gap analysis
|
|
141
|
+
□ Pricing strategy review
|
|
142
|
+
□ Customer testimonial collection
|
|
143
|
+
□ Win-back opportunity assessment
|
|
144
|
+
|
|
145
|
+
This information is being fed into our competitive strategy.
|
|
146
|
+
`,
|
|
147
|
+
cta: 'Schedule loss review meeting',
|
|
148
|
+
priority: 'high',
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Jira templates for different threat levels
|
|
153
|
+
*/
|
|
154
|
+
export const jiraTemplates = {
|
|
155
|
+
critical_epic: {
|
|
156
|
+
name: 'Critical Competitor Response Epic',
|
|
157
|
+
titleTemplate: 'CRITICAL: Counter {{competitorName}} Threat ({{threatScore}})',
|
|
158
|
+
descriptionTemplate: `
|
|
159
|
+
h1. Critical Competitive Response Epic
|
|
160
|
+
|
|
161
|
+
h2. Overview
|
|
162
|
+
{{competitorName}} (Threat Level: {{threatLevel}}) is gaining traction and poses a critical threat to our market position.
|
|
163
|
+
|
|
164
|
+
h2. Market Impact
|
|
165
|
+
* Market Share Risk: {{marketRiskAssessment}}
|
|
166
|
+
* Affected Customer Base: {{affectedLeadCount}} accounts
|
|
167
|
+
* Revenue at Risk: {{revenueAtRisk}}
|
|
168
|
+
* Customer Churn Risk: {{churnRisk}}
|
|
169
|
+
|
|
170
|
+
h2. Competitor Analysis
|
|
171
|
+
h3. Key Strengths
|
|
172
|
+
* {{competitorStrength1}}
|
|
173
|
+
* {{competitorStrength2}}
|
|
174
|
+
* {{competitorStrength3}}
|
|
175
|
+
|
|
176
|
+
h3. Key Weaknesses
|
|
177
|
+
* {{competitorWeakness1}}
|
|
178
|
+
* {{competitorWeakness2}}
|
|
179
|
+
|
|
180
|
+
h3. Our Differentiation
|
|
181
|
+
* {{ourAdvantage1}}
|
|
182
|
+
* {{ourAdvantage2}}
|
|
183
|
+
* {{ourAdvantage3}}
|
|
184
|
+
|
|
185
|
+
h2. Feature Gaps to Address
|
|
186
|
+
* {{featureGap1}} - *{{priority1}}*
|
|
187
|
+
* {{featureGap2}} - *{{priority2}}*
|
|
188
|
+
* {{featureGap3}} - *{{priority3}}*
|
|
189
|
+
|
|
190
|
+
h2. Action Items
|
|
191
|
+
h3. Product Team
|
|
192
|
+
* [ ] Complete feature gap analysis
|
|
193
|
+
* [ ] Prioritize roadmap items
|
|
194
|
+
* [ ] Assess implementation effort
|
|
195
|
+
* [ ] Create customer-facing roadmap
|
|
196
|
+
|
|
197
|
+
h3. Marketing/Sales
|
|
198
|
+
* [ ] Create competitive comparison guide
|
|
199
|
+
* [ ] Prepare sales enablement materials
|
|
200
|
+
* [ ] Brief customer success team
|
|
201
|
+
* [ ] Plan win-back campaigns
|
|
202
|
+
|
|
203
|
+
h3. Leadership
|
|
204
|
+
* [ ] Strategic positioning review
|
|
205
|
+
* [ ] Pricing strategy reassessment
|
|
206
|
+
* [ ] Partnership opportunities evaluation
|
|
207
|
+
|
|
208
|
+
h2. Success Criteria
|
|
209
|
+
* [ ] Competitive threat reduced to HIGH or below
|
|
210
|
+
* [ ] Customer retention rate >95%
|
|
211
|
+
* [ ] Win rate improvement documented
|
|
212
|
+
* [ ] Roadmap response planned
|
|
213
|
+
|
|
214
|
+
h2. Timeline
|
|
215
|
+
CRITICAL: Complete strategic assessment within 1 week
|
|
216
|
+
|
|
217
|
+
h2. Labels
|
|
218
|
+
competitor-response, urgent, {{competitorName|lowercase}}
|
|
219
|
+
|
|
220
|
+
h2. Epic Link
|
|
221
|
+
Link to quarterly product roadmap
|
|
222
|
+
|
|
223
|
+
h2. Priority
|
|
224
|
+
Highest
|
|
225
|
+
`,
|
|
226
|
+
storyPoints: 21,
|
|
227
|
+
labels: ['competitor-response', 'urgent', 'critical'],
|
|
228
|
+
priority: 'Highest',
|
|
229
|
+
},
|
|
230
|
+
high_epic: {
|
|
231
|
+
name: 'High Priority Competitive Response',
|
|
232
|
+
titleTemplate: 'Counter {{competitorName}} High Threat ({{threatScore}})',
|
|
233
|
+
descriptionTemplate: `
|
|
234
|
+
h1. Competitive Response Epic
|
|
235
|
+
|
|
236
|
+
h2. Overview
|
|
237
|
+
{{competitorName}} (Threat Level: {{threatLevel}}) is gaining market traction.
|
|
238
|
+
|
|
239
|
+
h2. Competitive Threat
|
|
240
|
+
* Threat Score: {{threatScore}}/100
|
|
241
|
+
* Affected Accounts: {{affectedLeadCount}}
|
|
242
|
+
* Key Vulnerabilities: {{competitorWeaknesses}}
|
|
243
|
+
|
|
244
|
+
h2. Our Competitive Advantages
|
|
245
|
+
{{ourDifferentiation}}
|
|
246
|
+
|
|
247
|
+
h2. Product Response Roadmap
|
|
248
|
+
h3. Priority Features
|
|
249
|
+
* {{feature1}} - {{effort}}
|
|
250
|
+
* {{feature2}} - {{effort}}
|
|
251
|
+
|
|
252
|
+
h3. Messaging Updates
|
|
253
|
+
* [ ] Update competitive positioning
|
|
254
|
+
* [ ] Create customer comparison guide
|
|
255
|
+
* [ ] Prepare sales training
|
|
256
|
+
|
|
257
|
+
h2. Success Metrics
|
|
258
|
+
* Win rate against {{competitorName}}: Target >60%
|
|
259
|
+
* Customer satisfaction maintained >4.5/5
|
|
260
|
+
* Market share maintained
|
|
261
|
+
|
|
262
|
+
h2. Timeline
|
|
263
|
+
1-2 weeks for strategic response planning
|
|
264
|
+
|
|
265
|
+
h2. Labels
|
|
266
|
+
competitor-response, {{competitorName|lowercase}}
|
|
267
|
+
|
|
268
|
+
h2. Priority
|
|
269
|
+
High
|
|
270
|
+
`,
|
|
271
|
+
storyPoints: 13,
|
|
272
|
+
labels: ['competitor-response', 'standard'],
|
|
273
|
+
priority: 'High',
|
|
274
|
+
},
|
|
275
|
+
medium_epic: {
|
|
276
|
+
name: 'Medium Priority Competitive Monitoring',
|
|
277
|
+
titleTemplate: 'Monitor {{competitorName}} Medium Threat ({{threatScore}})',
|
|
278
|
+
descriptionTemplate: `
|
|
279
|
+
h1. Competitive Monitoring Epic
|
|
280
|
+
|
|
281
|
+
h2. Overview
|
|
282
|
+
{{competitorName}} shows MEDIUM competitive threat indicators.
|
|
283
|
+
|
|
284
|
+
h2. Details
|
|
285
|
+
* Threat Score: {{threatScore}}/100
|
|
286
|
+
* Affected Accounts: {{affectedLeadCount}}
|
|
287
|
+
* Key Signals: {{signals}}
|
|
288
|
+
|
|
289
|
+
h2. Monitoring Tasks
|
|
290
|
+
* [ ] Track {{competitorName}} announcements
|
|
291
|
+
* [ ] Monitor customer feedback
|
|
292
|
+
* [ ] Assess feature roadmap impact
|
|
293
|
+
* [ ] Prepare contingency plans
|
|
294
|
+
|
|
295
|
+
h2. Timeline
|
|
296
|
+
Ongoing monitoring with quarterly reviews
|
|
297
|
+
|
|
298
|
+
h2. Labels
|
|
299
|
+
competitor-response, monitoring
|
|
300
|
+
|
|
301
|
+
h2. Priority
|
|
302
|
+
Medium
|
|
303
|
+
`,
|
|
304
|
+
storyPoints: 5,
|
|
305
|
+
labels: ['competitor-response', 'monitoring'],
|
|
306
|
+
priority: 'Medium',
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
/**
|
|
310
|
+
* Template renderer
|
|
311
|
+
*/
|
|
312
|
+
export function renderTemplate(template, variables) {
|
|
313
|
+
let result = template;
|
|
314
|
+
Object.entries(variables).forEach(([key, value]) => {
|
|
315
|
+
const regex = new RegExp(`{{${key}(?:\\|[^}]+)?}}`, 'g');
|
|
316
|
+
result = result.replace(regex, String(value || ''));
|
|
317
|
+
});
|
|
318
|
+
return result;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get email template by threat level
|
|
322
|
+
*/
|
|
323
|
+
export function getEmailTemplate(threatLevel, scenario = 'new_threat') {
|
|
324
|
+
if (threatLevel === 'CRITICAL') {
|
|
325
|
+
return emailTemplates.critical_threat;
|
|
326
|
+
}
|
|
327
|
+
else if (threatLevel === 'HIGH') {
|
|
328
|
+
return emailTemplates.high_threat;
|
|
329
|
+
}
|
|
330
|
+
else if (scenario === 'lost_deal') {
|
|
331
|
+
return emailTemplates.lost_deal;
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
return emailTemplates.medium_threat;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Get Jira template by threat level
|
|
339
|
+
*/
|
|
340
|
+
export function getJiraTemplate(threatLevel) {
|
|
341
|
+
if (threatLevel === 'CRITICAL') {
|
|
342
|
+
return jiraTemplates.critical_epic;
|
|
343
|
+
}
|
|
344
|
+
else if (threatLevel === 'HIGH') {
|
|
345
|
+
return jiraTemplates.high_epic;
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
return jiraTemplates.medium_epic;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Format email for sending
|
|
353
|
+
*/
|
|
354
|
+
export function formatEmailForSending(templateKey, variables) {
|
|
355
|
+
const template = emailTemplates[templateKey] || emailTemplates.medium_threat;
|
|
356
|
+
return {
|
|
357
|
+
subject: renderTemplate(template.subject, variables),
|
|
358
|
+
body: renderTemplate(template.bodyTemplate, variables),
|
|
359
|
+
cta: template.cta,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Format Jira epic for creation
|
|
364
|
+
*/
|
|
365
|
+
export function formatJiraForCreation(templateKey, variables) {
|
|
366
|
+
const template = jiraTemplates[templateKey] || jiraTemplates.medium_epic;
|
|
367
|
+
return {
|
|
368
|
+
title: renderTemplate(template.titleTemplate, variables),
|
|
369
|
+
description: renderTemplate(template.descriptionTemplate, variables),
|
|
370
|
+
storyPoints: template.storyPoints,
|
|
371
|
+
labels: template.labels,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=responseTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseTemplates.js","sourceRoot":"","sources":["../../src/automation/responseTemplates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Background Jobs Scheduler
|
|
3
|
+
* In-memory cron-like task scheduling with audit logging
|
|
4
|
+
* No external dependencies (no Redis/Bull)
|
|
5
|
+
* Phase 8C Task 7
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Job definition
|
|
9
|
+
*/
|
|
10
|
+
export interface ScheduledJob {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
interval: number;
|
|
14
|
+
fn: () => Promise<void> | void;
|
|
15
|
+
lastRun?: number;
|
|
16
|
+
nextRun: number;
|
|
17
|
+
status: 'scheduled' | 'running' | 'failed' | 'idle';
|
|
18
|
+
lastError?: string;
|
|
19
|
+
executionCount: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Job status for reporting
|
|
23
|
+
*/
|
|
24
|
+
export interface JobStatus {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
interval: number;
|
|
28
|
+
status: string;
|
|
29
|
+
lastRun?: string;
|
|
30
|
+
nextRun: string;
|
|
31
|
+
executionCount: number;
|
|
32
|
+
lastError?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Scheduler: Manages background job execution
|
|
36
|
+
*/
|
|
37
|
+
export declare class Scheduler {
|
|
38
|
+
private jobs;
|
|
39
|
+
private timers;
|
|
40
|
+
private auditLogger;
|
|
41
|
+
private running;
|
|
42
|
+
constructor();
|
|
43
|
+
/**
|
|
44
|
+
* Schedule a new job
|
|
45
|
+
*/
|
|
46
|
+
scheduleJob(name: string, interval: number, fn: () => Promise<void> | void): string;
|
|
47
|
+
/**
|
|
48
|
+
* Start scheduler and all jobs
|
|
49
|
+
*/
|
|
50
|
+
start(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Stop scheduler gracefully
|
|
53
|
+
*/
|
|
54
|
+
stop(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Schedule a job's next execution
|
|
57
|
+
*/
|
|
58
|
+
private scheduleJobExecution;
|
|
59
|
+
/**
|
|
60
|
+
* Execute a job immediately
|
|
61
|
+
*/
|
|
62
|
+
manualRun(jobName: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Execute a job with error handling
|
|
65
|
+
*/
|
|
66
|
+
private executeJob;
|
|
67
|
+
/**
|
|
68
|
+
* Get status of all jobs
|
|
69
|
+
*/
|
|
70
|
+
getJobStatus(): JobStatus[];
|
|
71
|
+
/**
|
|
72
|
+
* Get job status by name
|
|
73
|
+
*/
|
|
74
|
+
getJobByName(jobName: string): JobStatus | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Is scheduler running
|
|
77
|
+
*/
|
|
78
|
+
isRunning(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Get count of scheduled jobs
|
|
81
|
+
*/
|
|
82
|
+
getJobCount(): number;
|
|
83
|
+
}
|
|
84
|
+
export default Scheduler;
|
|
85
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/automation/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAwC;IACpD,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAkB;;IAMjC;;OAEG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC7B,MAAM;IAwBT;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C;;OAEG;YACW,UAAU;IAkDxB;;OAEG;IACH,YAAY,IAAI,SAAS,EAAE;IAa3B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAgBpD;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Background Jobs Scheduler
|
|
3
|
+
* In-memory cron-like task scheduling with audit logging
|
|
4
|
+
* No external dependencies (no Redis/Bull)
|
|
5
|
+
* Phase 8C Task 7
|
|
6
|
+
*/
|
|
7
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
8
|
+
import { AuditLogger } from '../core/auditLogger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Scheduler: Manages background job execution
|
|
11
|
+
*/
|
|
12
|
+
export class Scheduler {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.jobs = new Map();
|
|
15
|
+
this.timers = new Map();
|
|
16
|
+
this.running = false;
|
|
17
|
+
this.auditLogger = new AuditLogger();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Schedule a new job
|
|
21
|
+
*/
|
|
22
|
+
scheduleJob(name, interval, fn) {
|
|
23
|
+
const jobId = uuidv4();
|
|
24
|
+
const job = {
|
|
25
|
+
id: jobId,
|
|
26
|
+
name,
|
|
27
|
+
interval,
|
|
28
|
+
fn,
|
|
29
|
+
nextRun: Date.now() + interval,
|
|
30
|
+
status: 'idle',
|
|
31
|
+
executionCount: 0,
|
|
32
|
+
};
|
|
33
|
+
this.jobs.set(jobId, job);
|
|
34
|
+
this.auditLogger.log({
|
|
35
|
+
event: 'job:scheduled',
|
|
36
|
+
jobId,
|
|
37
|
+
name,
|
|
38
|
+
interval,
|
|
39
|
+
});
|
|
40
|
+
return jobId;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Start scheduler and all jobs
|
|
44
|
+
*/
|
|
45
|
+
async start() {
|
|
46
|
+
if (this.running)
|
|
47
|
+
return;
|
|
48
|
+
this.running = true;
|
|
49
|
+
this.auditLogger.log({
|
|
50
|
+
event: 'scheduler:started',
|
|
51
|
+
jobCount: this.jobs.size,
|
|
52
|
+
});
|
|
53
|
+
// Schedule all jobs
|
|
54
|
+
for (const [jobId, job] of this.jobs) {
|
|
55
|
+
this.scheduleJobExecution(jobId, job);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Stop scheduler gracefully
|
|
60
|
+
*/
|
|
61
|
+
async stop() {
|
|
62
|
+
if (!this.running)
|
|
63
|
+
return;
|
|
64
|
+
this.running = false;
|
|
65
|
+
// Clear all timers
|
|
66
|
+
for (const [jobId, timer] of this.timers) {
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
this.timers.delete(jobId);
|
|
69
|
+
}
|
|
70
|
+
this.auditLogger.log({
|
|
71
|
+
event: 'scheduler:stopped',
|
|
72
|
+
jobCount: this.jobs.size,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Schedule a job's next execution
|
|
77
|
+
*/
|
|
78
|
+
scheduleJobExecution(jobId, job) {
|
|
79
|
+
if (!this.running)
|
|
80
|
+
return;
|
|
81
|
+
const delay = Math.max(0, job.nextRun - Date.now());
|
|
82
|
+
const timer = setTimeout(async () => {
|
|
83
|
+
await this.executeJob(jobId);
|
|
84
|
+
// Reschedule
|
|
85
|
+
this.scheduleJobExecution(jobId, job);
|
|
86
|
+
}, delay);
|
|
87
|
+
this.timers.set(jobId, timer);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Execute a job immediately
|
|
91
|
+
*/
|
|
92
|
+
async manualRun(jobName) {
|
|
93
|
+
const job = Array.from(this.jobs.values()).find((j) => j.name === jobName);
|
|
94
|
+
if (!job) {
|
|
95
|
+
throw new Error(`Job not found: ${jobName}`);
|
|
96
|
+
}
|
|
97
|
+
const jobId = job.id;
|
|
98
|
+
await this.executeJob(jobId);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Execute a job with error handling
|
|
102
|
+
*/
|
|
103
|
+
async executeJob(jobId) {
|
|
104
|
+
const job = this.jobs.get(jobId);
|
|
105
|
+
if (!job)
|
|
106
|
+
return;
|
|
107
|
+
job.status = 'running';
|
|
108
|
+
const startTime = Date.now();
|
|
109
|
+
try {
|
|
110
|
+
this.auditLogger.log({
|
|
111
|
+
event: 'job:started',
|
|
112
|
+
jobId,
|
|
113
|
+
name: job.name,
|
|
114
|
+
});
|
|
115
|
+
// Execute the job function
|
|
116
|
+
await Promise.resolve(job.fn());
|
|
117
|
+
const duration = Date.now() - startTime;
|
|
118
|
+
job.lastRun = Date.now();
|
|
119
|
+
job.nextRun = Date.now() + job.interval;
|
|
120
|
+
job.status = 'scheduled';
|
|
121
|
+
job.executionCount++;
|
|
122
|
+
delete job.lastError;
|
|
123
|
+
this.auditLogger.log({
|
|
124
|
+
event: 'job:completed',
|
|
125
|
+
jobId,
|
|
126
|
+
name: job.name,
|
|
127
|
+
duration,
|
|
128
|
+
nextRun: new Date(job.nextRun).toISOString(),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
133
|
+
job.status = 'failed';
|
|
134
|
+
job.lastError = errorMsg;
|
|
135
|
+
job.lastRun = Date.now();
|
|
136
|
+
job.nextRun = Date.now() + job.interval;
|
|
137
|
+
job.executionCount++;
|
|
138
|
+
this.auditLogger.log({
|
|
139
|
+
event: 'job:failed',
|
|
140
|
+
jobId,
|
|
141
|
+
name: job.name,
|
|
142
|
+
error: errorMsg,
|
|
143
|
+
});
|
|
144
|
+
// Log but don't re-throw - scheduler should continue
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get status of all jobs
|
|
149
|
+
*/
|
|
150
|
+
getJobStatus() {
|
|
151
|
+
return Array.from(this.jobs.values()).map((job) => ({
|
|
152
|
+
id: job.id,
|
|
153
|
+
name: job.name,
|
|
154
|
+
interval: job.interval,
|
|
155
|
+
status: job.status,
|
|
156
|
+
lastRun: job.lastRun ? new Date(job.lastRun).toISOString() : undefined,
|
|
157
|
+
nextRun: new Date(job.nextRun).toISOString(),
|
|
158
|
+
executionCount: job.executionCount,
|
|
159
|
+
lastError: job.lastError,
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get job status by name
|
|
164
|
+
*/
|
|
165
|
+
getJobByName(jobName) {
|
|
166
|
+
const job = Array.from(this.jobs.values()).find((j) => j.name === jobName);
|
|
167
|
+
if (!job)
|
|
168
|
+
return undefined;
|
|
169
|
+
return {
|
|
170
|
+
id: job.id,
|
|
171
|
+
name: job.name,
|
|
172
|
+
interval: job.interval,
|
|
173
|
+
status: job.status,
|
|
174
|
+
lastRun: job.lastRun ? new Date(job.lastRun).toISOString() : undefined,
|
|
175
|
+
nextRun: new Date(job.nextRun).toISOString(),
|
|
176
|
+
executionCount: job.executionCount,
|
|
177
|
+
lastError: job.lastError,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Is scheduler running
|
|
182
|
+
*/
|
|
183
|
+
isRunning() {
|
|
184
|
+
return this.running;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get count of scheduled jobs
|
|
188
|
+
*/
|
|
189
|
+
getJobCount() {
|
|
190
|
+
return this.jobs.size;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
export default Scheduler;
|
|
194
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/automation/scheduler.ts"],"names":[],"mappings":"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"}
|