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,109 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>Executive Summary</title>
|
|
8
|
+
<style>
|
|
9
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; line-height: 1.6; color: #333; }
|
|
10
|
+
.page { page-break-after: always; padding: 40px; max-width: 8.5in; margin: 0 auto; }
|
|
11
|
+
.header { border-bottom: 3px solid #4F46E5; padding-bottom: 20px; margin-bottom: 30px; }
|
|
12
|
+
.title { font-size: 28px; font-weight: bold; color: #4F46E5; }
|
|
13
|
+
.subtitle { font-size: 14px; color: #666; }
|
|
14
|
+
.kpi-section { margin: 30px 0; }
|
|
15
|
+
.kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 20px 0; }
|
|
16
|
+
.kpi-card { background: #f5f5f5; padding: 15px; border-radius: 8px; border-left: 4px solid #4F46E5; }
|
|
17
|
+
.kpi-value { font-size: 24px; font-weight: bold; color: #4F46E5; }
|
|
18
|
+
.kpi-label { font-size: 12px; color: #666; margin-top: 5px; }
|
|
19
|
+
.trend { font-size: 14px; margin-top: 5px; }
|
|
20
|
+
.trend.up { color: #059669; }
|
|
21
|
+
.trend.down { color: #dc2626; }
|
|
22
|
+
.recommendations { background: #fffbeb; padding: 15px; border-radius: 8px; margin: 20px 0; }
|
|
23
|
+
.recommendations h3 { margin-top: 0; color: #d97706; }
|
|
24
|
+
.recommendations li { margin: 10px 0; }
|
|
25
|
+
.footer { margin-top: 40px; padding-top: 20px; border-top: 1px solid #ddd; font-size: 12px; color: #666; }
|
|
26
|
+
@media print { body { margin: 0; padding: 0; } .page { padding: 20px; } }
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="page">
|
|
31
|
+
<div class="header">
|
|
32
|
+
<div class="title">Executive Summary</div>
|
|
33
|
+
<div class="subtitle">
|
|
34
|
+
06/01/2026 – 06/30/2026
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="kpi-section">
|
|
39
|
+
<h2>Key Performance Indicators</h2>
|
|
40
|
+
<div class="kpi-grid">
|
|
41
|
+
<div class="kpi-card">
|
|
42
|
+
<div class="kpi-value">3</div>
|
|
43
|
+
<div class="kpi-label">Total Leads Identified</div>
|
|
44
|
+
<div class="trend up">
|
|
45
|
+
↑ 2 vs last week
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="kpi-card">
|
|
49
|
+
<div class="kpi-value">2</div>
|
|
50
|
+
<div class="kpi-label">Qualified Leads</div>
|
|
51
|
+
<div class="trend">66.7%</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="kpi-card">
|
|
54
|
+
<div class="kpi-value">$105k</div>
|
|
55
|
+
<div class="kpi-label">Projected Revenue</div>
|
|
56
|
+
<div class="trend up">
|
|
57
|
+
↑ $10k
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="kpi-card">
|
|
61
|
+
<div class="kpi-value">1</div>
|
|
62
|
+
<div class="kpi-label">Critical Threats</div>
|
|
63
|
+
<div class="trend">Require immediate response</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div class="kpi-section">
|
|
69
|
+
<h2>Top 3 Leads</h2>
|
|
70
|
+
|
|
71
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
72
|
+
<div style="font-weight: bold;">John Doe (Acme Corp)</div>
|
|
73
|
+
<div style="color: #666; font-size: 14px;">
|
|
74
|
+
Quality: 85% | Revenue: $50k
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
79
|
+
<div style="font-weight: bold;">Jane Smith (TechStartup Inc)</div>
|
|
80
|
+
<div style="color: #666; font-size: 14px;">
|
|
81
|
+
Quality: 72% | Revenue: $35k
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
86
|
+
<div style="font-weight: bold;">Bob Wilson (Global Industries)</div>
|
|
87
|
+
<div style="color: #666; font-size: 14px;">
|
|
88
|
+
Quality: 45% | Revenue: $20k
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
<div class="recommendations">
|
|
95
|
+
<h3>Top 3 Recommendations</h3>
|
|
96
|
+
<ol>
|
|
97
|
+
<li>Critical threats detected - prioritize competitive response strategy</li><li>Many leads have low signal count - enhance market research and enrichment process</li>
|
|
98
|
+
</ol>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div class="footer">
|
|
102
|
+
<strong>Report ID:</strong> b628b588-ca23-4b68-8206-c48698bfde5c<br>
|
|
103
|
+
<strong>Generated:</strong> as of 5:21:25 PM on 6/20/2026<br>
|
|
104
|
+
<strong>Version:</strong> 1.0.0
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</body>
|
|
108
|
+
</html>
|
|
109
|
+
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>Executive Summary</title>
|
|
8
|
+
<style>
|
|
9
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; line-height: 1.6; color: #333; }
|
|
10
|
+
.page { page-break-after: always; padding: 40px; max-width: 8.5in; margin: 0 auto; }
|
|
11
|
+
.header { border-bottom: 3px solid #4F46E5; padding-bottom: 20px; margin-bottom: 30px; }
|
|
12
|
+
.title { font-size: 28px; font-weight: bold; color: #4F46E5; }
|
|
13
|
+
.subtitle { font-size: 14px; color: #666; }
|
|
14
|
+
.kpi-section { margin: 30px 0; }
|
|
15
|
+
.kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 20px 0; }
|
|
16
|
+
.kpi-card { background: #f5f5f5; padding: 15px; border-radius: 8px; border-left: 4px solid #4F46E5; }
|
|
17
|
+
.kpi-value { font-size: 24px; font-weight: bold; color: #4F46E5; }
|
|
18
|
+
.kpi-label { font-size: 12px; color: #666; margin-top: 5px; }
|
|
19
|
+
.trend { font-size: 14px; margin-top: 5px; }
|
|
20
|
+
.trend.up { color: #059669; }
|
|
21
|
+
.trend.down { color: #dc2626; }
|
|
22
|
+
.recommendations { background: #fffbeb; padding: 15px; border-radius: 8px; margin: 20px 0; }
|
|
23
|
+
.recommendations h3 { margin-top: 0; color: #d97706; }
|
|
24
|
+
.recommendations li { margin: 10px 0; }
|
|
25
|
+
.footer { margin-top: 40px; padding-top: 20px; border-top: 1px solid #ddd; font-size: 12px; color: #666; }
|
|
26
|
+
@media print { body { margin: 0; padding: 0; } .page { padding: 20px; } }
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="page">
|
|
31
|
+
<div class="header">
|
|
32
|
+
<div class="title">Executive Summary</div>
|
|
33
|
+
<div class="subtitle">
|
|
34
|
+
06/01/2026 – 06/30/2026
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="kpi-section">
|
|
39
|
+
<h2>Key Performance Indicators</h2>
|
|
40
|
+
<div class="kpi-grid">
|
|
41
|
+
<div class="kpi-card">
|
|
42
|
+
<div class="kpi-value">3</div>
|
|
43
|
+
<div class="kpi-label">Total Leads Identified</div>
|
|
44
|
+
<div class="trend up">
|
|
45
|
+
↑ 2 vs last week
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="kpi-card">
|
|
49
|
+
<div class="kpi-value">2</div>
|
|
50
|
+
<div class="kpi-label">Qualified Leads</div>
|
|
51
|
+
<div class="trend">66.7%</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="kpi-card">
|
|
54
|
+
<div class="kpi-value">$105k</div>
|
|
55
|
+
<div class="kpi-label">Projected Revenue</div>
|
|
56
|
+
<div class="trend up">
|
|
57
|
+
↑ $10k
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="kpi-card">
|
|
61
|
+
<div class="kpi-value">1</div>
|
|
62
|
+
<div class="kpi-label">Critical Threats</div>
|
|
63
|
+
<div class="trend">Require immediate response</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div class="kpi-section">
|
|
69
|
+
<h2>Top 3 Leads</h2>
|
|
70
|
+
|
|
71
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
72
|
+
<div style="font-weight: bold;">John Doe (Acme Corp)</div>
|
|
73
|
+
<div style="color: #666; font-size: 14px;">
|
|
74
|
+
Quality: 85% | Revenue: $50k
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
79
|
+
<div style="font-weight: bold;">Jane Smith (TechStartup Inc)</div>
|
|
80
|
+
<div style="color: #666; font-size: 14px;">
|
|
81
|
+
Quality: 72% | Revenue: $35k
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<div style="padding: 10px 0; border-bottom: 1px solid #eee;">
|
|
86
|
+
<div style="font-weight: bold;">Bob Wilson (Global Industries)</div>
|
|
87
|
+
<div style="color: #666; font-size: 14px;">
|
|
88
|
+
Quality: 45% | Revenue: $20k
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
<div class="recommendations">
|
|
95
|
+
<h3>Top 3 Recommendations</h3>
|
|
96
|
+
<ol>
|
|
97
|
+
<li>Critical threats detected - prioritize competitive response strategy</li><li>Many leads have low signal count - enhance market research and enrichment process</li>
|
|
98
|
+
</ol>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div class="footer">
|
|
102
|
+
<strong>Report ID:</strong> 49a2092b-727d-4fbf-9b4d-9c554d2fc7de<br>
|
|
103
|
+
<strong>Generated:</strong> as of 5:21:14 PM on 6/20/2026<br>
|
|
104
|
+
<strong>Version:</strong> 1.0.0
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</body>
|
|
108
|
+
</html>
|
|
109
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @lean-claudient/core
|
|
2
|
+
|
|
3
|
+
**Core Lean Claudient CLI package** — Phases 1-4 implementation.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Caveman Mode**: Aggressive compression toggle (strips comments, minimizes whitespace)
|
|
8
|
+
- **Auto-Compact Engine**: Dynamically prunes conversation history
|
|
9
|
+
- **Read Deduplication**: Hash-based caching for repeated file reads
|
|
10
|
+
- **Tool Output Budgets**: Hard limits on grep, bash, file reads with ANSI stripping
|
|
11
|
+
- **Self-Healing**: Background monitoring of tool failures and linter errors
|
|
12
|
+
- **Skill Capture**: Permanent recovery routines for known issues
|
|
13
|
+
- **Conservative CTO Mode**: Hard-capped token limits, aggressive semantic caching
|
|
14
|
+
- **Senior Developer Mode**: Balanced depth and brevity
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @lean-claudient/core
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## CLI Usage
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
lean-claudient --help
|
|
26
|
+
lean-claudient init --mode full
|
|
27
|
+
lean-claudient audit --session <id> --format json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Architecture
|
|
31
|
+
|
|
32
|
+
- `src/cli/` — CLI entry point and command handlers
|
|
33
|
+
- `src/subagents/` — Investigator, Builder, Reviewer, Orchestrator agents
|
|
34
|
+
- `src/context/` — Tool budgets, auto-compact, read deduplication
|
|
35
|
+
- `src/compression/` — Caveman mode implementation
|
|
36
|
+
- `src/modes/` — Conservative CTO, Senior Developer modes
|
|
37
|
+
- `src/recovery/` — Context recovery and emergency procedures
|
|
38
|
+
- `src/telemetry/` — Token counting and metrics
|
|
39
|
+
- `src/config/` — Configuration management
|
|
40
|
+
|
|
41
|
+
## Development
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm run build # Compile TypeScript
|
|
45
|
+
npm run dev # Watch mode
|
|
46
|
+
npm run test # Run tests
|
|
47
|
+
npm run lint # ESLint
|
|
48
|
+
npm run type-check # TypeScript validation
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## License
|
|
52
|
+
|
|
53
|
+
MIT
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Approver
|
|
3
|
+
* Human-in-the-loop approval workflow for automated actions.
|
|
4
|
+
* Display action details, collect approval, store approvals in SQLite for future batching.
|
|
5
|
+
*/
|
|
6
|
+
import { AutomatedAction } from './actionExecutor.js';
|
|
7
|
+
interface ApprovalRecord {
|
|
8
|
+
id: string;
|
|
9
|
+
actionId: string;
|
|
10
|
+
actionType: string;
|
|
11
|
+
status: 'approved' | 'rejected';
|
|
12
|
+
reason?: string;
|
|
13
|
+
approvedBy: string;
|
|
14
|
+
approvedAt: string;
|
|
15
|
+
}
|
|
16
|
+
interface ApprovalStats {
|
|
17
|
+
totalRequests: number;
|
|
18
|
+
approvedCount: number;
|
|
19
|
+
rejectedCount: number;
|
|
20
|
+
approvalRate: number;
|
|
21
|
+
averageResponseTime: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* ActionApprover: Human-in-the-loop approval workflow
|
|
25
|
+
*/
|
|
26
|
+
export declare class ActionApprover {
|
|
27
|
+
private db;
|
|
28
|
+
private dbPath;
|
|
29
|
+
constructor();
|
|
30
|
+
/**
|
|
31
|
+
* Ensure database directory exists
|
|
32
|
+
*/
|
|
33
|
+
private ensureDatabase;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize database schema
|
|
36
|
+
*/
|
|
37
|
+
private initializeSchema;
|
|
38
|
+
/**
|
|
39
|
+
* Request human approval for an action
|
|
40
|
+
* Displays action details and collects user response
|
|
41
|
+
*/
|
|
42
|
+
requestApproval(action: AutomatedAction, userId?: string): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Record approval decision
|
|
45
|
+
*/
|
|
46
|
+
recordApproval(actionId: string, actionType: string, approved: boolean, userId: string, reason?: string): ApprovalRecord;
|
|
47
|
+
/**
|
|
48
|
+
* Get approval decision for an action
|
|
49
|
+
*/
|
|
50
|
+
getApprovalDecision(actionId: string): ApprovalRecord | null;
|
|
51
|
+
/**
|
|
52
|
+
* Get all approval records
|
|
53
|
+
*/
|
|
54
|
+
getAllApprovals(limit?: number): ApprovalRecord[];
|
|
55
|
+
/**
|
|
56
|
+
* Get approval statistics
|
|
57
|
+
*/
|
|
58
|
+
getApprovalStats(): ApprovalStats;
|
|
59
|
+
/**
|
|
60
|
+
* Batch execute approved actions
|
|
61
|
+
*/
|
|
62
|
+
getBatchApprovedActions(limit?: number): ApprovalRecord[];
|
|
63
|
+
/**
|
|
64
|
+
* Display formatted action details for review
|
|
65
|
+
*/
|
|
66
|
+
private displayActionDetails;
|
|
67
|
+
/**
|
|
68
|
+
* Display email action details
|
|
69
|
+
*/
|
|
70
|
+
private displayEmailAction;
|
|
71
|
+
/**
|
|
72
|
+
* Display CRM action details
|
|
73
|
+
*/
|
|
74
|
+
private displayCRMAction;
|
|
75
|
+
/**
|
|
76
|
+
* Display Jira action details
|
|
77
|
+
*/
|
|
78
|
+
private displayJiraAction;
|
|
79
|
+
/**
|
|
80
|
+
* Close database connection
|
|
81
|
+
*/
|
|
82
|
+
close(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Export approval history as JSON
|
|
85
|
+
*/
|
|
86
|
+
exportApprovalHistory(filename: string): void;
|
|
87
|
+
}
|
|
88
|
+
export default ActionApprover;
|
|
89
|
+
//# sourceMappingURL=actionApprover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionApprover.d.ts","sourceRoot":"","sources":["../../src/automation/actionApprover.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,aAAa;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAS;;IASvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB7F;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,cAAc;IAgCjB;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAmB5D;;OAEG;IACH,eAAe,CAAC,KAAK,GAAE,MAAY,GAAG,cAAc,EAAE;IAiBtD;;OAEG;IACH,gBAAgB,IAAI,aAAa;IA4BjC;;OAEG;IACH,uBAAuB,CAAC,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE;IAoB7D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAK9C;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action Approver
|
|
3
|
+
* Human-in-the-loop approval workflow for automated actions.
|
|
4
|
+
* Display action details, collect approval, store approvals in SQLite for future batching.
|
|
5
|
+
*/
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
7
|
+
const Database = require('better-sqlite3');
|
|
8
|
+
import { homedir } from 'os';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
11
|
+
/**
|
|
12
|
+
* ActionApprover: Human-in-the-loop approval workflow
|
|
13
|
+
*/
|
|
14
|
+
export class ActionApprover {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.dbPath = join(homedir(), '.lean-claudient', 'approvals.db');
|
|
17
|
+
this.ensureDatabase();
|
|
18
|
+
this.db = new Database(this.dbPath);
|
|
19
|
+
this.initializeSchema();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Ensure database directory exists
|
|
23
|
+
*/
|
|
24
|
+
ensureDatabase() {
|
|
25
|
+
const dir = join(homedir(), '.lean-claudient');
|
|
26
|
+
if (!existsSync(dir)) {
|
|
27
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize database schema
|
|
32
|
+
*/
|
|
33
|
+
initializeSchema() {
|
|
34
|
+
this.db.exec(`
|
|
35
|
+
CREATE TABLE IF NOT EXISTS approvals (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
action_id TEXT NOT NULL,
|
|
38
|
+
action_type TEXT NOT NULL,
|
|
39
|
+
status TEXT NOT NULL CHECK (status IN ('approved', 'rejected')),
|
|
40
|
+
reason TEXT,
|
|
41
|
+
approved_by TEXT NOT NULL,
|
|
42
|
+
approved_at TEXT NOT NULL,
|
|
43
|
+
created_at TEXT NOT NULL
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_action_id ON approvals(action_id);
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_status ON approvals(status);
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_approved_at ON approvals(approved_at);
|
|
49
|
+
`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Request human approval for an action
|
|
53
|
+
* Displays action details and collects user response
|
|
54
|
+
*/
|
|
55
|
+
async requestApproval(action, userId = 'cli-user') {
|
|
56
|
+
// Display action details
|
|
57
|
+
this.displayActionDetails(action);
|
|
58
|
+
// Note: In CLI context, this would use readline or similar for interactive input
|
|
59
|
+
// For now, returning approval flow template
|
|
60
|
+
console.log('\n');
|
|
61
|
+
console.log('────────────────────────────────────────────');
|
|
62
|
+
console.log('ACTION APPROVAL REQUIRED');
|
|
63
|
+
console.log('────────────────────────────────────────────');
|
|
64
|
+
console.log(`Action ID: ${action.id}`);
|
|
65
|
+
console.log(`Type: ${action.type}`);
|
|
66
|
+
console.log(`Status: ${action.status}`);
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log('To approve this action, run:');
|
|
69
|
+
console.log(` lean-claudient action-approve ${action.id}`);
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log('To reject this action, run:');
|
|
72
|
+
console.log(` lean-claudient action-reject ${action.id} "reason"`);
|
|
73
|
+
console.log('────────────────────────────────────────────\n');
|
|
74
|
+
return false; // Return false to indicate pending approval
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Record approval decision
|
|
78
|
+
*/
|
|
79
|
+
recordApproval(actionId, actionType, approved, userId, reason) {
|
|
80
|
+
const id = `approval_${actionId}_${Date.now()}`;
|
|
81
|
+
const record = {
|
|
82
|
+
id,
|
|
83
|
+
actionId,
|
|
84
|
+
actionType,
|
|
85
|
+
status: approved ? 'approved' : 'rejected',
|
|
86
|
+
reason,
|
|
87
|
+
approvedBy: userId,
|
|
88
|
+
approvedAt: new Date().toISOString()
|
|
89
|
+
};
|
|
90
|
+
const stmt = this.db.prepare(`
|
|
91
|
+
INSERT INTO approvals (
|
|
92
|
+
id, action_id, action_type, status, reason, approved_by, approved_at, created_at
|
|
93
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
94
|
+
`);
|
|
95
|
+
stmt.run(record.id, record.actionId, record.actionType, record.status, record.reason, record.approvedBy, record.approvedAt, new Date().toISOString());
|
|
96
|
+
return record;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get approval decision for an action
|
|
100
|
+
*/
|
|
101
|
+
getApprovalDecision(actionId) {
|
|
102
|
+
const stmt = this.db.prepare('SELECT * FROM approvals WHERE action_id = ? ORDER BY created_at DESC LIMIT 1');
|
|
103
|
+
const record = stmt.get(actionId);
|
|
104
|
+
if (!record)
|
|
105
|
+
return null;
|
|
106
|
+
return {
|
|
107
|
+
id: record.id,
|
|
108
|
+
actionId: record.action_id,
|
|
109
|
+
actionType: record.action_type,
|
|
110
|
+
status: record.status,
|
|
111
|
+
reason: record.reason,
|
|
112
|
+
approvedBy: record.approved_by,
|
|
113
|
+
approvedAt: record.approved_at
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get all approval records
|
|
118
|
+
*/
|
|
119
|
+
getAllApprovals(limit = 100) {
|
|
120
|
+
const stmt = this.db.prepare('SELECT * FROM approvals ORDER BY created_at DESC LIMIT ?');
|
|
121
|
+
const records = stmt.all(limit);
|
|
122
|
+
return records.map(r => ({
|
|
123
|
+
id: r.id,
|
|
124
|
+
actionId: r.action_id,
|
|
125
|
+
actionType: r.action_type,
|
|
126
|
+
status: r.status,
|
|
127
|
+
reason: r.reason,
|
|
128
|
+
approvedBy: r.approved_by,
|
|
129
|
+
approvedAt: r.approved_at
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get approval statistics
|
|
134
|
+
*/
|
|
135
|
+
getApprovalStats() {
|
|
136
|
+
const totalStmt = this.db.prepare('SELECT COUNT(*) as count FROM approvals');
|
|
137
|
+
const approvedStmt = this.db.prepare('SELECT COUNT(*) as count FROM approvals WHERE status = "approved"');
|
|
138
|
+
const rejectedStmt = this.db.prepare('SELECT COUNT(*) as count FROM approvals WHERE status = "rejected"');
|
|
139
|
+
const total = totalStmt.get().count;
|
|
140
|
+
const approved = approvedStmt.get().count;
|
|
141
|
+
const rejected = rejectedStmt.get().count;
|
|
142
|
+
const approvalRate = total > 0 ? (approved / total) * 100 : 0;
|
|
143
|
+
// Calculate average response time (time between first request and approval/rejection)
|
|
144
|
+
// For now, returning placeholder
|
|
145
|
+
const averageResponseTime = 300; // seconds
|
|
146
|
+
return {
|
|
147
|
+
totalRequests: total,
|
|
148
|
+
approvedCount: approved,
|
|
149
|
+
rejectedCount: rejected,
|
|
150
|
+
approvalRate: Math.round(approvalRate),
|
|
151
|
+
averageResponseTime
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Batch execute approved actions
|
|
156
|
+
*/
|
|
157
|
+
getBatchApprovedActions(limit = 10) {
|
|
158
|
+
const stmt = this.db.prepare(`
|
|
159
|
+
SELECT * FROM approvals
|
|
160
|
+
WHERE status = 'approved'
|
|
161
|
+
ORDER BY approved_at ASC
|
|
162
|
+
LIMIT ?
|
|
163
|
+
`);
|
|
164
|
+
const records = stmt.all(limit);
|
|
165
|
+
return records.map(r => ({
|
|
166
|
+
id: r.id,
|
|
167
|
+
actionId: r.action_id,
|
|
168
|
+
actionType: r.action_type,
|
|
169
|
+
status: r.status,
|
|
170
|
+
reason: r.reason,
|
|
171
|
+
approvedBy: r.approved_by,
|
|
172
|
+
approvedAt: r.approved_at
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Display formatted action details for review
|
|
177
|
+
*/
|
|
178
|
+
displayActionDetails(action) {
|
|
179
|
+
console.log('\n');
|
|
180
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
181
|
+
console.log(`ACTION DETAILS: ${action.type.toUpperCase()}`);
|
|
182
|
+
console.log('═══════════════════════════════════════════════════════════════');
|
|
183
|
+
console.log(`ID: ${action.id}`);
|
|
184
|
+
console.log(`Finding ID: ${action.finding_id}`);
|
|
185
|
+
console.log(`Status: ${action.status}`);
|
|
186
|
+
console.log(`Created: ${action.created_at}`);
|
|
187
|
+
console.log('');
|
|
188
|
+
switch (action.type) {
|
|
189
|
+
case 'email_draft':
|
|
190
|
+
this.displayEmailAction(action);
|
|
191
|
+
break;
|
|
192
|
+
case 'crm_lead':
|
|
193
|
+
this.displayCRMAction(action);
|
|
194
|
+
break;
|
|
195
|
+
case 'jira_epic':
|
|
196
|
+
this.displayJiraAction(action);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
console.log('═══════════════════════════════════════════════════════════════\n');
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Display email action details
|
|
203
|
+
*/
|
|
204
|
+
displayEmailAction(action) {
|
|
205
|
+
const { to, template, variables } = action.payload;
|
|
206
|
+
console.log('EMAIL DRAFT');
|
|
207
|
+
console.log('───────────────────────────────────────────────────────────────');
|
|
208
|
+
console.log(`To: ${to}`);
|
|
209
|
+
console.log(`Template: ${template}`);
|
|
210
|
+
console.log('Variables:');
|
|
211
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
212
|
+
console.log(` • ${key}: ${value}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Display CRM action details
|
|
217
|
+
*/
|
|
218
|
+
displayCRMAction(action) {
|
|
219
|
+
const lead = action.payload;
|
|
220
|
+
console.log('CRM LEAD');
|
|
221
|
+
console.log('───────────────────────────────────────────────────────────────');
|
|
222
|
+
console.log(`Name: ${lead.name}`);
|
|
223
|
+
console.log(`Email: ${lead.email}`);
|
|
224
|
+
console.log(`Company: ${lead.company}`);
|
|
225
|
+
console.log(`Industry: ${lead.industry}`);
|
|
226
|
+
console.log(`Pain Point: ${lead.painPoint}`);
|
|
227
|
+
console.log(`Source: ${lead.source}`);
|
|
228
|
+
console.log(`Signal Strength: ${lead.signalStrength}/100`);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Display Jira action details
|
|
232
|
+
*/
|
|
233
|
+
displayJiraAction(action) {
|
|
234
|
+
const { title, description, threatLevel, linkedResources } = action.payload;
|
|
235
|
+
console.log('JIRA EPIC');
|
|
236
|
+
console.log('───────────────────────────────────────────────────────────────');
|
|
237
|
+
console.log(`Title: ${title}`);
|
|
238
|
+
console.log(`Threat Level: ${threatLevel.toUpperCase()}`);
|
|
239
|
+
console.log(`Description: ${description}`);
|
|
240
|
+
console.log(`Linked Resources: ${linkedResources?.length || 0}`);
|
|
241
|
+
if (linkedResources && linkedResources.length > 0) {
|
|
242
|
+
for (const resource of linkedResources) {
|
|
243
|
+
console.log(` • [${resource.type}] ${resource.title}`);
|
|
244
|
+
console.log(` ${resource.url}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Close database connection
|
|
250
|
+
*/
|
|
251
|
+
close() {
|
|
252
|
+
this.db.close();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Export approval history as JSON
|
|
256
|
+
*/
|
|
257
|
+
exportApprovalHistory(filename) {
|
|
258
|
+
const records = this.getAllApprovals();
|
|
259
|
+
const fs = require('fs');
|
|
260
|
+
fs.writeFileSync(filename, JSON.stringify(records, null, 2));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
export default ActionApprover;
|
|
264
|
+
//# sourceMappingURL=actionApprover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionApprover.js","sourceRoot":"","sources":["../../src/automation/actionApprover.ts"],"names":[],"mappings":"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"}
|