centient 2.20.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/CHANGELOG.md +362 -0
- package/README.md +433 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +478 -0
- package/dist/server.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +3 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/instrumentation.d.ts +10 -0
- package/dist/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/telemetry/instrumentation.js +86 -0
- package/dist/telemetry/instrumentation.js.map +1 -0
- package/dist/telemetry/tracer.d.ts +6 -0
- package/dist/telemetry/tracer.d.ts.map +1 -0
- package/dist/telemetry/tracer.js +27 -0
- package/dist/telemetry/tracer.js.map +1 -0
- package/dist/tools/artifacts/diffSessions.d.ts +9 -0
- package/dist/tools/artifacts/diffSessions.d.ts.map +1 -0
- package/dist/tools/artifacts/diffSessions.js +320 -0
- package/dist/tools/artifacts/diffSessions.js.map +1 -0
- package/dist/tools/artifacts/extractSessionContext.d.ts +9 -0
- package/dist/tools/artifacts/extractSessionContext.d.ts.map +1 -0
- package/dist/tools/artifacts/extractSessionContext.js +291 -0
- package/dist/tools/artifacts/extractSessionContext.js.map +1 -0
- package/dist/tools/artifacts/getSessionCode.d.ts +9 -0
- package/dist/tools/artifacts/getSessionCode.d.ts.map +1 -0
- package/dist/tools/artifacts/getSessionCode.js +104 -0
- package/dist/tools/artifacts/getSessionCode.js.map +1 -0
- package/dist/tools/artifacts/loadSession.d.ts +9 -0
- package/dist/tools/artifacts/loadSession.d.ts.map +1 -0
- package/dist/tools/artifacts/loadSession.js +163 -0
- package/dist/tools/artifacts/loadSession.js.map +1 -0
- package/dist/tools/artifacts/searchArtifacts.d.ts +9 -0
- package/dist/tools/artifacts/searchArtifacts.d.ts.map +1 -0
- package/dist/tools/artifacts/searchArtifacts.js +98 -0
- package/dist/tools/artifacts/searchArtifacts.js.map +1 -0
- package/dist/tools/branching/closeBranch.d.ts +10 -0
- package/dist/tools/branching/closeBranch.d.ts.map +1 -0
- package/dist/tools/branching/closeBranch.js +193 -0
- package/dist/tools/branching/closeBranch.js.map +1 -0
- package/dist/tools/branching/createBranch.d.ts +10 -0
- package/dist/tools/branching/createBranch.d.ts.map +1 -0
- package/dist/tools/branching/createBranch.js +136 -0
- package/dist/tools/branching/createBranch.js.map +1 -0
- package/dist/tools/branching/listBranches.d.ts +9 -0
- package/dist/tools/branching/listBranches.d.ts.map +1 -0
- package/dist/tools/branching/listBranches.js +212 -0
- package/dist/tools/branching/listBranches.js.map +1 -0
- package/dist/tools/branching/listDecisionPoints.d.ts +9 -0
- package/dist/tools/branching/listDecisionPoints.d.ts.map +1 -0
- package/dist/tools/branching/listDecisionPoints.js +156 -0
- package/dist/tools/branching/listDecisionPoints.js.map +1 -0
- package/dist/tools/branching/markDecisionPoint.d.ts +10 -0
- package/dist/tools/branching/markDecisionPoint.d.ts.map +1 -0
- package/dist/tools/branching/markDecisionPoint.js +149 -0
- package/dist/tools/branching/markDecisionPoint.js.map +1 -0
- package/dist/tools/branching/switchBranch.d.ts +9 -0
- package/dist/tools/branching/switchBranch.d.ts.map +1 -0
- package/dist/tools/branching/switchBranch.js +153 -0
- package/dist/tools/branching/switchBranch.js.map +1 -0
- package/dist/tools/consultation/aggregateConsensus.d.ts +9 -0
- package/dist/tools/consultation/aggregateConsensus.d.ts.map +1 -0
- package/dist/tools/consultation/aggregateConsensus.js +259 -0
- package/dist/tools/consultation/aggregateConsensus.js.map +1 -0
- package/dist/tools/consultation/captureConsultationResponse.d.ts +11 -0
- package/dist/tools/consultation/captureConsultationResponse.d.ts.map +1 -0
- package/dist/tools/consultation/captureConsultationResponse.js +244 -0
- package/dist/tools/consultation/captureConsultationResponse.js.map +1 -0
- package/dist/tools/consultation/consultLlmStream.d.ts +9 -0
- package/dist/tools/consultation/consultLlmStream.d.ts.map +1 -0
- package/dist/tools/consultation/consultLlmStream.js +201 -0
- package/dist/tools/consultation/consultLlmStream.js.map +1 -0
- package/dist/tools/consultation/index.d.ts +8 -0
- package/dist/tools/consultation/index.d.ts.map +1 -0
- package/dist/tools/consultation/index.js +8 -0
- package/dist/tools/consultation/index.js.map +1 -0
- package/dist/tools/consultation/peerReviewContract.d.ts +146 -0
- package/dist/tools/consultation/peerReviewContract.d.ts.map +1 -0
- package/dist/tools/consultation/peerReviewContract.js +731 -0
- package/dist/tools/consultation/peerReviewContract.js.map +1 -0
- package/dist/tools/consultation/peerReviewSession.d.ts +9 -0
- package/dist/tools/consultation/peerReviewSession.d.ts.map +1 -0
- package/dist/tools/consultation/peerReviewSession.js +433 -0
- package/dist/tools/consultation/peerReviewSession.js.map +1 -0
- package/dist/tools/consultation/prepareConsultationContext.d.ts +9 -0
- package/dist/tools/consultation/prepareConsultationContext.d.ts.map +1 -0
- package/dist/tools/consultation/prepareConsultationContext.js +263 -0
- package/dist/tools/consultation/prepareConsultationContext.js.map +1 -0
- package/dist/tools/consultation/seekConsensus.d.ts +9 -0
- package/dist/tools/consultation/seekConsensus.d.ts.map +1 -0
- package/dist/tools/consultation/seekConsensus.js +358 -0
- package/dist/tools/consultation/seekConsensus.js.map +1 -0
- package/dist/tools/consultation/validateDecision.d.ts +9 -0
- package/dist/tools/consultation/validateDecision.d.ts.map +1 -0
- package/dist/tools/consultation/validateDecision.js +253 -0
- package/dist/tools/consultation/validateDecision.js.map +1 -0
- package/dist/tools/consultation/validateReviewResponse.d.ts +9 -0
- package/dist/tools/consultation/validateReviewResponse.d.ts.map +1 -0
- package/dist/tools/consultation/validateReviewResponse.js +105 -0
- package/dist/tools/consultation/validateReviewResponse.js.map +1 -0
- package/dist/tools/graph/addNoteRelationship.d.ts +9 -0
- package/dist/tools/graph/addNoteRelationship.d.ts.map +1 -0
- package/dist/tools/graph/addNoteRelationship.js +120 -0
- package/dist/tools/graph/addNoteRelationship.js.map +1 -0
- package/dist/tools/graph/linkSessions.d.ts +9 -0
- package/dist/tools/graph/linkSessions.d.ts.map +1 -0
- package/dist/tools/graph/linkSessions.js +126 -0
- package/dist/tools/graph/linkSessions.js.map +1 -0
- package/dist/tools/graph/queryTemporalGraph.d.ts +9 -0
- package/dist/tools/graph/queryTemporalGraph.d.ts.map +1 -0
- package/dist/tools/graph/queryTemporalGraph.js +339 -0
- package/dist/tools/graph/queryTemporalGraph.js.map +1 -0
- package/dist/tools/health/getCircuitBreakerStats.d.ts +9 -0
- package/dist/tools/health/getCircuitBreakerStats.d.ts.map +1 -0
- package/dist/tools/health/getCircuitBreakerStats.js +195 -0
- package/dist/tools/health/getCircuitBreakerStats.js.map +1 -0
- package/dist/tools/health/getContextHealth.d.ts +9 -0
- package/dist/tools/health/getContextHealth.d.ts.map +1 -0
- package/dist/tools/health/getContextHealth.js +331 -0
- package/dist/tools/health/getContextHealth.js.map +1 -0
- package/dist/tools/health/getQdrantHealth.d.ts +9 -0
- package/dist/tools/health/getQdrantHealth.d.ts.map +1 -0
- package/dist/tools/health/getQdrantHealth.js +144 -0
- package/dist/tools/health/getQdrantHealth.js.map +1 -0
- package/dist/tools/health/getRateLimitStats.d.ts +9 -0
- package/dist/tools/health/getRateLimitStats.d.ts.map +1 -0
- package/dist/tools/health/getRateLimitStats.js +191 -0
- package/dist/tools/health/getRateLimitStats.js.map +1 -0
- package/dist/tools/knowledge/index.d.ts +4 -0
- package/dist/tools/knowledge/index.d.ts.map +1 -0
- package/dist/tools/knowledge/index.js +4 -0
- package/dist/tools/knowledge/index.js.map +1 -0
- package/dist/tools/knowledge/promoteDecision.d.ts +9 -0
- package/dist/tools/knowledge/promoteDecision.d.ts.map +1 -0
- package/dist/tools/knowledge/promoteDecision.js +139 -0
- package/dist/tools/knowledge/promoteDecision.js.map +1 -0
- package/dist/tools/knowledge/promoteLearning.d.ts +9 -0
- package/dist/tools/knowledge/promoteLearning.d.ts.map +1 -0
- package/dist/tools/knowledge/promoteLearning.js +132 -0
- package/dist/tools/knowledge/promoteLearning.js.map +1 -0
- package/dist/tools/knowledge/searchMetaKnowledge.d.ts +9 -0
- package/dist/tools/knowledge/searchMetaKnowledge.d.ts.map +1 -0
- package/dist/tools/knowledge/searchMetaKnowledge.js +120 -0
- package/dist/tools/knowledge/searchMetaKnowledge.js.map +1 -0
- package/dist/tools/memory/addNote.d.ts +9 -0
- package/dist/tools/memory/addNote.d.ts.map +1 -0
- package/dist/tools/memory/addNote.js +105 -0
- package/dist/tools/memory/addNote.js.map +1 -0
- package/dist/tools/memory/getDecisions.d.ts +9 -0
- package/dist/tools/memory/getDecisions.d.ts.map +1 -0
- package/dist/tools/memory/getDecisions.js +93 -0
- package/dist/tools/memory/getDecisions.js.map +1 -0
- package/dist/tools/memory/getHypotheses.d.ts +9 -0
- package/dist/tools/memory/getHypotheses.d.ts.map +1 -0
- package/dist/tools/memory/getHypotheses.js +93 -0
- package/dist/tools/memory/getHypotheses.js.map +1 -0
- package/dist/tools/memory-bank/memoryBankList.d.ts +9 -0
- package/dist/tools/memory-bank/memoryBankList.d.ts.map +1 -0
- package/dist/tools/memory-bank/memoryBankList.js +108 -0
- package/dist/tools/memory-bank/memoryBankList.js.map +1 -0
- package/dist/tools/memory-bank/memoryBankSearch.d.ts +9 -0
- package/dist/tools/memory-bank/memoryBankSearch.d.ts.map +1 -0
- package/dist/tools/memory-bank/memoryBankSearch.js +128 -0
- package/dist/tools/memory-bank/memoryBankSearch.js.map +1 -0
- package/dist/tools/metrics/getAuditLog.d.ts +9 -0
- package/dist/tools/metrics/getAuditLog.d.ts.map +1 -0
- package/dist/tools/metrics/getAuditLog.js +172 -0
- package/dist/tools/metrics/getAuditLog.js.map +1 -0
- package/dist/tools/metrics/getCompressionRatio.d.ts +9 -0
- package/dist/tools/metrics/getCompressionRatio.d.ts.map +1 -0
- package/dist/tools/metrics/getCompressionRatio.js +112 -0
- package/dist/tools/metrics/getCompressionRatio.js.map +1 -0
- package/dist/tools/metrics/getCostDashboard.d.ts +9 -0
- package/dist/tools/metrics/getCostDashboard.d.ts.map +1 -0
- package/dist/tools/metrics/getCostDashboard.js +126 -0
- package/dist/tools/metrics/getCostDashboard.js.map +1 -0
- package/dist/tools/metrics/getPatternAnalytics.d.ts +9 -0
- package/dist/tools/metrics/getPatternAnalytics.d.ts.map +1 -0
- package/dist/tools/metrics/getPatternAnalytics.js +192 -0
- package/dist/tools/metrics/getPatternAnalytics.js.map +1 -0
- package/dist/tools/metrics/getPatternReuse.d.ts +9 -0
- package/dist/tools/metrics/getPatternReuse.d.ts.map +1 -0
- package/dist/tools/metrics/getPatternReuse.js +130 -0
- package/dist/tools/metrics/getPatternReuse.js.map +1 -0
- package/dist/tools/patterns/createPatternVersion.d.ts +9 -0
- package/dist/tools/patterns/createPatternVersion.d.ts.map +1 -0
- package/dist/tools/patterns/createPatternVersion.js +137 -0
- package/dist/tools/patterns/createPatternVersion.js.map +1 -0
- package/dist/tools/patterns/deprecatePatternVersion.d.ts +9 -0
- package/dist/tools/patterns/deprecatePatternVersion.d.ts.map +1 -0
- package/dist/tools/patterns/deprecatePatternVersion.js +131 -0
- package/dist/tools/patterns/deprecatePatternVersion.js.map +1 -0
- package/dist/tools/patterns/diffPatterns.d.ts +9 -0
- package/dist/tools/patterns/diffPatterns.d.ts.map +1 -0
- package/dist/tools/patterns/diffPatterns.js +402 -0
- package/dist/tools/patterns/diffPatterns.js.map +1 -0
- package/dist/tools/patterns/executeSkill.d.ts +9 -0
- package/dist/tools/patterns/executeSkill.d.ts.map +1 -0
- package/dist/tools/patterns/executeSkill.js +230 -0
- package/dist/tools/patterns/executeSkill.js.map +1 -0
- package/dist/tools/patterns/findPatterns.d.ts +9 -0
- package/dist/tools/patterns/findPatterns.d.ts.map +1 -0
- package/dist/tools/patterns/findPatterns.js +164 -0
- package/dist/tools/patterns/findPatterns.js.map +1 -0
- package/dist/tools/patterns/getPatternVersions.d.ts +9 -0
- package/dist/tools/patterns/getPatternVersions.d.ts.map +1 -0
- package/dist/tools/patterns/getPatternVersions.js +114 -0
- package/dist/tools/patterns/getPatternVersions.js.map +1 -0
- package/dist/tools/patterns/indexPatternLibrary.d.ts +9 -0
- package/dist/tools/patterns/indexPatternLibrary.d.ts.map +1 -0
- package/dist/tools/patterns/indexPatternLibrary.js +228 -0
- package/dist/tools/patterns/indexPatternLibrary.js.map +1 -0
- package/dist/tools/patterns/loadSkill.d.ts +9 -0
- package/dist/tools/patterns/loadSkill.d.ts.map +1 -0
- package/dist/tools/patterns/loadSkill.js +229 -0
- package/dist/tools/patterns/loadSkill.js.map +1 -0
- package/dist/tools/patterns/predictOutcome.d.ts +9 -0
- package/dist/tools/patterns/predictOutcome.d.ts.map +1 -0
- package/dist/tools/patterns/predictOutcome.js +256 -0
- package/dist/tools/patterns/predictOutcome.js.map +1 -0
- package/dist/tools/patterns/recommendPatterns.d.ts +9 -0
- package/dist/tools/patterns/recommendPatterns.d.ts.map +1 -0
- package/dist/tools/patterns/recommendPatterns.js +278 -0
- package/dist/tools/patterns/recommendPatterns.js.map +1 -0
- package/dist/tools/patterns/searchPatterns.d.ts +9 -0
- package/dist/tools/patterns/searchPatterns.d.ts.map +1 -0
- package/dist/tools/patterns/searchPatterns.js +144 -0
- package/dist/tools/patterns/searchPatterns.js.map +1 -0
- package/dist/tools/patterns/signPattern.d.ts +9 -0
- package/dist/tools/patterns/signPattern.d.ts.map +1 -0
- package/dist/tools/patterns/signPattern.js +147 -0
- package/dist/tools/patterns/signPattern.js.map +1 -0
- package/dist/tools/patterns/trackPatternUsage.d.ts +9 -0
- package/dist/tools/patterns/trackPatternUsage.d.ts.map +1 -0
- package/dist/tools/patterns/trackPatternUsage.js +126 -0
- package/dist/tools/patterns/trackPatternUsage.js.map +1 -0
- package/dist/tools/research/approveResearchPlan.d.ts +9 -0
- package/dist/tools/research/approveResearchPlan.d.ts.map +1 -0
- package/dist/tools/research/approveResearchPlan.js +204 -0
- package/dist/tools/research/approveResearchPlan.js.map +1 -0
- package/dist/tools/research/generateResearchPlan.d.ts +9 -0
- package/dist/tools/research/generateResearchPlan.d.ts.map +1 -0
- package/dist/tools/research/generateResearchPlan.js +347 -0
- package/dist/tools/research/generateResearchPlan.js.map +1 -0
- package/dist/tools/research/listResearchSessions.d.ts +9 -0
- package/dist/tools/research/listResearchSessions.d.ts.map +1 -0
- package/dist/tools/research/listResearchSessions.js +108 -0
- package/dist/tools/research/listResearchSessions.js.map +1 -0
- package/dist/tools/research/suggestModelForResearch.d.ts +9 -0
- package/dist/tools/research/suggestModelForResearch.d.ts.map +1 -0
- package/dist/tools/research/suggestModelForResearch.js +416 -0
- package/dist/tools/research/suggestModelForResearch.js.map +1 -0
- package/dist/tools/research/trackResearchProgress.d.ts +9 -0
- package/dist/tools/research/trackResearchProgress.d.ts.map +1 -0
- package/dist/tools/research/trackResearchProgress.js +177 -0
- package/dist/tools/research/trackResearchProgress.js.map +1 -0
- package/dist/tools/rlvr/rlvrExecute.d.ts +9 -0
- package/dist/tools/rlvr/rlvrExecute.d.ts.map +1 -0
- package/dist/tools/rlvr/rlvrExecute.js +296 -0
- package/dist/tools/rlvr/rlvrExecute.js.map +1 -0
- package/dist/tools/search/getSearchStats.d.ts +9 -0
- package/dist/tools/search/getSearchStats.d.ts.map +1 -0
- package/dist/tools/search/getSearchStats.js +107 -0
- package/dist/tools/search/getSearchStats.js.map +1 -0
- package/dist/tools/search/index.d.ts +4 -0
- package/dist/tools/search/index.d.ts.map +1 -0
- package/dist/tools/search/index.js +4 -0
- package/dist/tools/search/index.js.map +1 -0
- package/dist/tools/search/indexSession.d.ts +9 -0
- package/dist/tools/search/indexSession.d.ts.map +1 -0
- package/dist/tools/search/indexSession.js +254 -0
- package/dist/tools/search/indexSession.js.map +1 -0
- package/dist/tools/search/semanticSearch.d.ts +9 -0
- package/dist/tools/search/semanticSearch.d.ts.map +1 -0
- package/dist/tools/search/semanticSearch.js +171 -0
- package/dist/tools/search/semanticSearch.js.map +1 -0
- package/dist/tools/session/askSession.d.ts +9 -0
- package/dist/tools/session/askSession.d.ts.map +1 -0
- package/dist/tools/session/askSession.js +311 -0
- package/dist/tools/session/askSession.js.map +1 -0
- package/dist/tools/session/checkClaimConsistency.d.ts +9 -0
- package/dist/tools/session/checkClaimConsistency.d.ts.map +1 -0
- package/dist/tools/session/checkClaimConsistency.js +343 -0
- package/dist/tools/session/checkClaimConsistency.js.map +1 -0
- package/dist/tools/session/checkCodeFeasibility.d.ts +19 -0
- package/dist/tools/session/checkCodeFeasibility.d.ts.map +1 -0
- package/dist/tools/session/checkCodeFeasibility.js +766 -0
- package/dist/tools/session/checkCodeFeasibility.js.map +1 -0
- package/dist/tools/session/checkConstraintViolation.d.ts +9 -0
- package/dist/tools/session/checkConstraintViolation.d.ts.map +1 -0
- package/dist/tools/session/checkConstraintViolation.js +98 -0
- package/dist/tools/session/checkConstraintViolation.js.map +1 -0
- package/dist/tools/session/checkDuplicateWork.d.ts +9 -0
- package/dist/tools/session/checkDuplicateWork.d.ts.map +1 -0
- package/dist/tools/session/checkDuplicateWork.js +105 -0
- package/dist/tools/session/checkDuplicateWork.js.map +1 -0
- package/dist/tools/session/extractSessionMemories.d.ts +9 -0
- package/dist/tools/session/extractSessionMemories.d.ts.map +1 -0
- package/dist/tools/session/extractSessionMemories.js +203 -0
- package/dist/tools/session/extractSessionMemories.js.map +1 -0
- package/dist/tools/session/finalizeSessionCoordination.d.ts +9 -0
- package/dist/tools/session/finalizeSessionCoordination.d.ts.map +1 -0
- package/dist/tools/session/finalizeSessionCoordination.js +85 -0
- package/dist/tools/session/finalizeSessionCoordination.js.map +1 -0
- package/dist/tools/session/flagForVerification.d.ts +17 -0
- package/dist/tools/session/flagForVerification.d.ts.map +1 -0
- package/dist/tools/session/flagForVerification.js +232 -0
- package/dist/tools/session/flagForVerification.js.map +1 -0
- package/dist/tools/session/getConstraints.d.ts +9 -0
- package/dist/tools/session/getConstraints.d.ts.map +1 -0
- package/dist/tools/session/getConstraints.js +84 -0
- package/dist/tools/session/getConstraints.js.map +1 -0
- package/dist/tools/session/getSessionStats.d.ts +9 -0
- package/dist/tools/session/getSessionStats.d.ts.map +1 -0
- package/dist/tools/session/getSessionStats.js +86 -0
- package/dist/tools/session/getSessionStats.js.map +1 -0
- package/dist/tools/session/getSessionSummary.d.ts +9 -0
- package/dist/tools/session/getSessionSummary.d.ts.map +1 -0
- package/dist/tools/session/getSessionSummary.js +360 -0
- package/dist/tools/session/getSessionSummary.js.map +1 -0
- package/dist/tools/session/getVerificationPrompt.d.ts +9 -0
- package/dist/tools/session/getVerificationPrompt.d.ts.map +1 -0
- package/dist/tools/session/getVerificationPrompt.js +210 -0
- package/dist/tools/session/getVerificationPrompt.js.map +1 -0
- package/dist/tools/session/liftConstraint.d.ts +9 -0
- package/dist/tools/session/liftConstraint.d.ts.map +1 -0
- package/dist/tools/session/liftConstraint.js +94 -0
- package/dist/tools/session/liftConstraint.js.map +1 -0
- package/dist/tools/session/recordVerificationOutcome.d.ts +24 -0
- package/dist/tools/session/recordVerificationOutcome.d.ts.map +1 -0
- package/dist/tools/session/recordVerificationOutcome.js +237 -0
- package/dist/tools/session/recordVerificationOutcome.js.map +1 -0
- package/dist/tools/session/saveSessionNote.d.ts +9 -0
- package/dist/tools/session/saveSessionNote.d.ts.map +1 -0
- package/dist/tools/session/saveSessionNote.js +213 -0
- package/dist/tools/session/saveSessionNote.js.map +1 -0
- package/dist/tools/session/sessionSearch.d.ts +9 -0
- package/dist/tools/session/sessionSearch.d.ts.map +1 -0
- package/dist/tools/session/sessionSearch.js +116 -0
- package/dist/tools/session/sessionSearch.js.map +1 -0
- package/dist/tools/session/startSessionCoordination.d.ts +13 -0
- package/dist/tools/session/startSessionCoordination.d.ts.map +1 -0
- package/dist/tools/session/startSessionCoordination.js +126 -0
- package/dist/tools/session/startSessionCoordination.js.map +1 -0
- package/dist/tools/session/trackApprovalFingerprint.d.ts +19 -0
- package/dist/tools/session/trackApprovalFingerprint.d.ts.map +1 -0
- package/dist/tools/session/trackApprovalFingerprint.js +172 -0
- package/dist/tools/session/trackApprovalFingerprint.js.map +1 -0
- package/dist/tools/session/trackConstraint.d.ts +9 -0
- package/dist/tools/session/trackConstraint.d.ts.map +1 -0
- package/dist/tools/session/trackConstraint.js +101 -0
- package/dist/tools/session/trackConstraint.js.map +1 -0
- package/dist/tools/session/validateCitation.d.ts +9 -0
- package/dist/tools/session/validateCitation.d.ts.map +1 -0
- package/dist/tools/session/validateCitation.js +450 -0
- package/dist/tools/session/validateCitation.js.map +1 -0
- package/dist/tools/stuck/checkStuckPattern.d.ts +9 -0
- package/dist/tools/stuck/checkStuckPattern.d.ts.map +1 -0
- package/dist/tools/stuck/checkStuckPattern.js +93 -0
- package/dist/tools/stuck/checkStuckPattern.js.map +1 -0
- package/dist/tools/stuck/getRecoverySuggestions.d.ts +9 -0
- package/dist/tools/stuck/getRecoverySuggestions.d.ts.map +1 -0
- package/dist/tools/stuck/getRecoverySuggestions.js +132 -0
- package/dist/tools/stuck/getRecoverySuggestions.js.map +1 -0
- package/dist/types/research.d.ts +76 -0
- package/dist/types/research.d.ts.map +1 -0
- package/dist/types/research.js +2 -0
- package/dist/types/research.js.map +1 -0
- package/dist/types/temporal-graph.d.ts +97 -0
- package/dist/types/temporal-graph.d.ts.map +1 -0
- package/dist/types/temporal-graph.js +2 -0
- package/dist/types/temporal-graph.js.map +1 -0
- package/dist/utils/AuditLogger.d.ts +99 -0
- package/dist/utils/AuditLogger.d.ts.map +1 -0
- package/dist/utils/AuditLogger.js +303 -0
- package/dist/utils/AuditLogger.js.map +1 -0
- package/dist/utils/CacheManager.d.ts +56 -0
- package/dist/utils/CacheManager.d.ts.map +1 -0
- package/dist/utils/CacheManager.js +184 -0
- package/dist/utils/CacheManager.js.map +1 -0
- package/dist/utils/CircuitBreaker.d.ts +76 -0
- package/dist/utils/CircuitBreaker.d.ts.map +1 -0
- package/dist/utils/CircuitBreaker.js +236 -0
- package/dist/utils/CircuitBreaker.js.map +1 -0
- package/dist/utils/CostTracker.d.ts +83 -0
- package/dist/utils/CostTracker.d.ts.map +1 -0
- package/dist/utils/CostTracker.js +228 -0
- package/dist/utils/CostTracker.js.map +1 -0
- package/dist/utils/DockerSandbox.d.ts +39 -0
- package/dist/utils/DockerSandbox.d.ts.map +1 -0
- package/dist/utils/DockerSandbox.js +277 -0
- package/dist/utils/DockerSandbox.js.map +1 -0
- package/dist/utils/FinalizationCompressor.d.ts +70 -0
- package/dist/utils/FinalizationCompressor.d.ts.map +1 -0
- package/dist/utils/FinalizationCompressor.js +295 -0
- package/dist/utils/FinalizationCompressor.js.map +1 -0
- package/dist/utils/MetaKnowledgeManager.d.ts +63 -0
- package/dist/utils/MetaKnowledgeManager.d.ts.map +1 -0
- package/dist/utils/MetaKnowledgeManager.js +152 -0
- package/dist/utils/MetaKnowledgeManager.js.map +1 -0
- package/dist/utils/PatternIndexer.d.ts +83 -0
- package/dist/utils/PatternIndexer.d.ts.map +1 -0
- package/dist/utils/PatternIndexer.js +730 -0
- package/dist/utils/PatternIndexer.js.map +1 -0
- package/dist/utils/PatternUsageTracker.d.ts +97 -0
- package/dist/utils/PatternUsageTracker.d.ts.map +1 -0
- package/dist/utils/PatternUsageTracker.js +352 -0
- package/dist/utils/PatternUsageTracker.js.map +1 -0
- package/dist/utils/PatternVerifier.d.ts +71 -0
- package/dist/utils/PatternVerifier.d.ts.map +1 -0
- package/dist/utils/PatternVerifier.js +328 -0
- package/dist/utils/PatternVerifier.js.map +1 -0
- package/dist/utils/PatternVersionManager.d.ts +47 -0
- package/dist/utils/PatternVersionManager.d.ts.map +1 -0
- package/dist/utils/PatternVersionManager.js +308 -0
- package/dist/utils/PatternVersionManager.js.map +1 -0
- package/dist/utils/QdrantConnectionManager.d.ts +47 -0
- package/dist/utils/QdrantConnectionManager.d.ts.map +1 -0
- package/dist/utils/QdrantConnectionManager.js +228 -0
- package/dist/utils/QdrantConnectionManager.js.map +1 -0
- package/dist/utils/RateLimiter.d.ts +85 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +300 -0
- package/dist/utils/RateLimiter.js.map +1 -0
- package/dist/utils/RecoveryEngine.d.ts +45 -0
- package/dist/utils/RecoveryEngine.d.ts.map +1 -0
- package/dist/utils/RecoveryEngine.js +268 -0
- package/dist/utils/RecoveryEngine.js.map +1 -0
- package/dist/utils/ResearchCoordinator.d.ts +30 -0
- package/dist/utils/ResearchCoordinator.d.ts.map +1 -0
- package/dist/utils/ResearchCoordinator.js +197 -0
- package/dist/utils/ResearchCoordinator.js.map +1 -0
- package/dist/utils/SessionCoordinator.d.ts +111 -0
- package/dist/utils/SessionCoordinator.d.ts.map +1 -0
- package/dist/utils/SessionCoordinator.js +1062 -0
- package/dist/utils/SessionCoordinator.js.map +1 -0
- package/dist/utils/SkillExecutor.d.ts +50 -0
- package/dist/utils/SkillExecutor.d.ts.map +1 -0
- package/dist/utils/SkillExecutor.js +396 -0
- package/dist/utils/SkillExecutor.js.map +1 -0
- package/dist/utils/StuckDetector.d.ts +43 -0
- package/dist/utils/StuckDetector.d.ts.map +1 -0
- package/dist/utils/StuckDetector.js +336 -0
- package/dist/utils/StuckDetector.js.map +1 -0
- package/dist/utils/TemporalGraphIndex.d.ts +33 -0
- package/dist/utils/TemporalGraphIndex.d.ts.map +1 -0
- package/dist/utils/TemporalGraphIndex.js +218 -0
- package/dist/utils/TemporalGraphIndex.js.map +1 -0
- package/dist/utils/artifacts.d.ts +35 -0
- package/dist/utils/artifacts.d.ts.map +1 -0
- package/dist/utils/artifacts.js +294 -0
- package/dist/utils/artifacts.js.map +1 -0
- package/dist/utils/consensusAggregator.d.ts +50 -0
- package/dist/utils/consensusAggregator.d.ts.map +1 -0
- package/dist/utils/consensusAggregator.js +195 -0
- package/dist/utils/consensusAggregator.js.map +1 -0
- package/dist/utils/contextBuilder.d.ts +58 -0
- package/dist/utils/contextBuilder.d.ts.map +1 -0
- package/dist/utils/contextBuilder.js +221 -0
- package/dist/utils/contextBuilder.js.map +1 -0
- package/dist/utils/costPricing.d.ts +11 -0
- package/dist/utils/costPricing.d.ts.map +1 -0
- package/dist/utils/costPricing.js +86 -0
- package/dist/utils/costPricing.js.map +1 -0
- package/dist/utils/filesystem.d.ts +16 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +184 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/llmStreamClient.d.ts +41 -0
- package/dist/utils/llmStreamClient.d.ts.map +1 -0
- package/dist/utils/llmStreamClient.js +257 -0
- package/dist/utils/llmStreamClient.js.map +1 -0
- package/dist/utils/memory.d.ts +22 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +67 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/memoryBank.d.ts +18 -0
- package/dist/utils/memoryBank.d.ts.map +1 -0
- package/dist/utils/memoryBank.js +128 -0
- package/dist/utils/memoryBank.js.map +1 -0
- package/dist/utils/metrics.d.ts +30 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +208 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/pythonRunner.d.ts +7 -0
- package/dist/utils/pythonRunner.d.ts.map +1 -0
- package/dist/utils/pythonRunner.js +72 -0
- package/dist/utils/pythonRunner.js.map +1 -0
- package/dist/utils/responseParser.d.ts +15 -0
- package/dist/utils/responseParser.d.ts.map +1 -0
- package/dist/utils/responseParser.js +306 -0
- package/dist/utils/responseParser.js.map +1 -0
- package/dist/utils/rlvr/PythonSandbox.d.ts +16 -0
- package/dist/utils/rlvr/PythonSandbox.d.ts.map +1 -0
- package/dist/utils/rlvr/PythonSandbox.js +203 -0
- package/dist/utils/rlvr/PythonSandbox.js.map +1 -0
- package/dist/utils/rlvr/RewardComputer.d.ts +28 -0
- package/dist/utils/rlvr/RewardComputer.d.ts.map +1 -0
- package/dist/utils/rlvr/RewardComputer.js +227 -0
- package/dist/utils/rlvr/RewardComputer.js.map +1 -0
- package/dist/utils/rlvr/RewardHistoryStore.d.ts +48 -0
- package/dist/utils/rlvr/RewardHistoryStore.d.ts.map +1 -0
- package/dist/utils/rlvr/RewardHistoryStore.js +428 -0
- package/dist/utils/rlvr/RewardHistoryStore.js.map +1 -0
- package/dist/utils/rlvr/SQLSandbox.d.ts +21 -0
- package/dist/utils/rlvr/SQLSandbox.d.ts.map +1 -0
- package/dist/utils/rlvr/SQLSandbox.js +199 -0
- package/dist/utils/rlvr/SQLSandbox.js.map +1 -0
- package/dist/utils/rlvr/TestGenerator.d.ts +8 -0
- package/dist/utils/rlvr/TestGenerator.d.ts.map +1 -0
- package/dist/utils/rlvr/TestGenerator.js +216 -0
- package/dist/utils/rlvr/TestGenerator.js.map +1 -0
- package/dist/utils/rlvr/TestOrchestrator.d.ts +45 -0
- package/dist/utils/rlvr/TestOrchestrator.d.ts.map +1 -0
- package/dist/utils/rlvr/TestOrchestrator.js +331 -0
- package/dist/utils/rlvr/TestOrchestrator.js.map +1 -0
- package/dist/utils/rlvr/TypeScriptSandbox.d.ts +16 -0
- package/dist/utils/rlvr/TypeScriptSandbox.d.ts.map +1 -0
- package/dist/utils/rlvr/TypeScriptSandbox.js +244 -0
- package/dist/utils/rlvr/TypeScriptSandbox.js.map +1 -0
- package/dist/utils/rlvr/index.d.ts +9 -0
- package/dist/utils/rlvr/index.d.ts.map +1 -0
- package/dist/utils/rlvr/index.js +9 -0
- package/dist/utils/rlvr/index.js.map +1 -0
- package/dist/utils/rlvr/python_executor.py +309 -0
- package/dist/utils/rlvr/sql_executor.py +233 -0
- package/dist/utils/rlvr/test-orchestrator.d.ts +2 -0
- package/dist/utils/rlvr/test-orchestrator.d.ts.map +1 -0
- package/dist/utils/rlvr/test-orchestrator.js +200 -0
- package/dist/utils/rlvr/test-orchestrator.js.map +1 -0
- package/dist/utils/rlvr/test-persistence.d.ts +2 -0
- package/dist/utils/rlvr/test-persistence.d.ts.map +1 -0
- package/dist/utils/rlvr/test-persistence.js +175 -0
- package/dist/utils/rlvr/test-persistence.js.map +1 -0
- package/dist/utils/rlvr/test-rlvr.d.ts +2 -0
- package/dist/utils/rlvr/test-rlvr.d.ts.map +1 -0
- package/dist/utils/rlvr/test-rlvr.js +286 -0
- package/dist/utils/rlvr/test-rlvr.js.map +1 -0
- package/dist/utils/rlvr/test-sql.d.ts +2 -0
- package/dist/utils/rlvr/test-sql.d.ts.map +1 -0
- package/dist/utils/rlvr/test-sql.js +63 -0
- package/dist/utils/rlvr/test-sql.js.map +1 -0
- package/dist/utils/rlvr/types.d.ts +133 -0
- package/dist/utils/rlvr/types.d.ts.map +1 -0
- package/dist/utils/rlvr/types.js +8 -0
- package/dist/utils/rlvr/types.js.map +1 -0
- package/dist/utils/tokenEstimator.d.ts +4 -0
- package/dist/utils/tokenEstimator.d.ts.map +1 -0
- package/dist/utils/tokenEstimator.js +14 -0
- package/dist/utils/tokenEstimator.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import * as fs from "fs/promises";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
const DEFAULT_CONFIG = {
|
|
4
|
+
storagePath: ".audit-log.jsonl",
|
|
5
|
+
flushIntervalMs: 30 * 1000,
|
|
6
|
+
maxEventAge: 90 * 24 * 60 * 60 * 1000,
|
|
7
|
+
maxEvents: 50000,
|
|
8
|
+
};
|
|
9
|
+
const SENSITIVE_PATTERNS = [
|
|
10
|
+
/password/i,
|
|
11
|
+
/secret/i,
|
|
12
|
+
/token/i,
|
|
13
|
+
/key/i,
|
|
14
|
+
/credential/i,
|
|
15
|
+
/auth/i,
|
|
16
|
+
/bearer/i,
|
|
17
|
+
];
|
|
18
|
+
export class AuditLogger {
|
|
19
|
+
events = [];
|
|
20
|
+
config;
|
|
21
|
+
flushTimer = null;
|
|
22
|
+
isDirty = false;
|
|
23
|
+
isLoaded = false;
|
|
24
|
+
loadPromise = null;
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
27
|
+
this.startFlushTimer();
|
|
28
|
+
}
|
|
29
|
+
async log(eventType, tool, outcome, duration, options = {}) {
|
|
30
|
+
await this.ensureLoaded();
|
|
31
|
+
const event = {
|
|
32
|
+
timestamp: new Date().toISOString(),
|
|
33
|
+
eventType,
|
|
34
|
+
tool,
|
|
35
|
+
outcome,
|
|
36
|
+
duration,
|
|
37
|
+
projectPath: options.projectPath,
|
|
38
|
+
sessionId: options.sessionId,
|
|
39
|
+
input: this.sanitizeInput(options.input || {}),
|
|
40
|
+
output: options.output || {},
|
|
41
|
+
context: options.context,
|
|
42
|
+
};
|
|
43
|
+
this.events.push(event);
|
|
44
|
+
this.isDirty = true;
|
|
45
|
+
if (this.events.length > this.config.maxEvents) {
|
|
46
|
+
this.pruneOldEvents();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async query(options = {}) {
|
|
50
|
+
await this.ensureLoaded();
|
|
51
|
+
let filtered = [...this.events];
|
|
52
|
+
if (options.startDate) {
|
|
53
|
+
const start = new Date(options.startDate);
|
|
54
|
+
filtered = filtered.filter((e) => new Date(e.timestamp) >= start);
|
|
55
|
+
}
|
|
56
|
+
if (options.endDate) {
|
|
57
|
+
const end = new Date(options.endDate);
|
|
58
|
+
filtered = filtered.filter((e) => new Date(e.timestamp) <= end);
|
|
59
|
+
}
|
|
60
|
+
if (options.eventType) {
|
|
61
|
+
filtered = filtered.filter((e) => e.eventType === options.eventType);
|
|
62
|
+
}
|
|
63
|
+
if (options.tool) {
|
|
64
|
+
filtered = filtered.filter((e) => e.tool === options.tool);
|
|
65
|
+
}
|
|
66
|
+
if (options.outcome) {
|
|
67
|
+
filtered = filtered.filter((e) => e.outcome === options.outcome);
|
|
68
|
+
}
|
|
69
|
+
if (options.projectPath) {
|
|
70
|
+
filtered = filtered.filter((e) => e.projectPath?.includes(options.projectPath));
|
|
71
|
+
}
|
|
72
|
+
if (options.patternId) {
|
|
73
|
+
filtered = filtered.filter((e) => e.context?.patternId === options.patternId);
|
|
74
|
+
}
|
|
75
|
+
if (options.limit && options.limit > 0) {
|
|
76
|
+
filtered = filtered.slice(-options.limit);
|
|
77
|
+
}
|
|
78
|
+
return filtered;
|
|
79
|
+
}
|
|
80
|
+
async getSummary(period = "day") {
|
|
81
|
+
await this.ensureLoaded();
|
|
82
|
+
const now = new Date();
|
|
83
|
+
const { startDate, endDate } = this.getPeriodBounds(period, now);
|
|
84
|
+
const filtered = this.events.filter((e) => {
|
|
85
|
+
const eventDate = new Date(e.timestamp);
|
|
86
|
+
return eventDate >= new Date(startDate) && eventDate <= new Date(endDate);
|
|
87
|
+
});
|
|
88
|
+
const successCount = filtered.filter((e) => e.outcome === "success").length;
|
|
89
|
+
const failureCount = filtered.filter((e) => e.outcome === "failure").length;
|
|
90
|
+
const byEventType = {};
|
|
91
|
+
for (const event of filtered) {
|
|
92
|
+
if (!byEventType[event.eventType]) {
|
|
93
|
+
byEventType[event.eventType] = { count: 0, successCount: 0 };
|
|
94
|
+
}
|
|
95
|
+
const eventStats = byEventType[event.eventType];
|
|
96
|
+
eventStats.count++;
|
|
97
|
+
if (event.outcome === "success") {
|
|
98
|
+
eventStats.successCount++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const byEventTypeWithRates = {};
|
|
102
|
+
for (const [type, stats] of Object.entries(byEventType)) {
|
|
103
|
+
byEventTypeWithRates[type] = {
|
|
104
|
+
count: stats.count,
|
|
105
|
+
successRate: stats.count > 0 ? stats.successCount / stats.count : 0,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const byTool = {};
|
|
109
|
+
for (const event of filtered) {
|
|
110
|
+
if (!byTool[event.tool]) {
|
|
111
|
+
byTool[event.tool] = { count: 0, totalDuration: 0 };
|
|
112
|
+
}
|
|
113
|
+
const toolStats = byTool[event.tool];
|
|
114
|
+
toolStats.count++;
|
|
115
|
+
toolStats.totalDuration += event.duration;
|
|
116
|
+
}
|
|
117
|
+
const byToolWithAvg = {};
|
|
118
|
+
for (const [tool, stats] of Object.entries(byTool)) {
|
|
119
|
+
byToolWithAvg[tool] = {
|
|
120
|
+
count: stats.count,
|
|
121
|
+
avgDuration: stats.count > 0 ? Math.round(stats.totalDuration / stats.count) : 0,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const patternCounts = new Map();
|
|
125
|
+
for (const event of filtered) {
|
|
126
|
+
if (event.context?.patternId) {
|
|
127
|
+
patternCounts.set(event.context.patternId, (patternCounts.get(event.context.patternId) || 0) + 1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const topPatterns = Array.from(patternCounts.entries())
|
|
131
|
+
.map(([patternId, accessCount]) => ({ patternId, accessCount }))
|
|
132
|
+
.sort((a, b) => b.accessCount - a.accessCount)
|
|
133
|
+
.slice(0, 10);
|
|
134
|
+
const projectCounts = new Map();
|
|
135
|
+
for (const event of filtered) {
|
|
136
|
+
if (event.projectPath) {
|
|
137
|
+
const projectName = path.basename(event.projectPath);
|
|
138
|
+
projectCounts.set(projectName, (projectCounts.get(projectName) || 0) + 1);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const topProjects = Array.from(projectCounts.entries())
|
|
142
|
+
.map(([projectPath, accessCount]) => ({ projectPath, accessCount }))
|
|
143
|
+
.sort((a, b) => b.accessCount - a.accessCount)
|
|
144
|
+
.slice(0, 10);
|
|
145
|
+
return {
|
|
146
|
+
period,
|
|
147
|
+
startDate,
|
|
148
|
+
endDate,
|
|
149
|
+
totalEvents: filtered.length,
|
|
150
|
+
successCount,
|
|
151
|
+
failureCount,
|
|
152
|
+
successRate: filtered.length > 0 ? successCount / filtered.length : 0,
|
|
153
|
+
byEventType: byEventTypeWithRates,
|
|
154
|
+
byTool: byToolWithAvg,
|
|
155
|
+
topPatterns,
|
|
156
|
+
topProjects,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
async getRecentEvents(limit = 20) {
|
|
160
|
+
await this.ensureLoaded();
|
|
161
|
+
return this.events.slice(-limit);
|
|
162
|
+
}
|
|
163
|
+
async getEventCount() {
|
|
164
|
+
await this.ensureLoaded();
|
|
165
|
+
return this.events.length;
|
|
166
|
+
}
|
|
167
|
+
async flush() {
|
|
168
|
+
if (!this.isDirty)
|
|
169
|
+
return;
|
|
170
|
+
try {
|
|
171
|
+
const dir = path.dirname(this.config.storagePath);
|
|
172
|
+
if (dir !== ".") {
|
|
173
|
+
await fs.mkdir(dir, { recursive: true });
|
|
174
|
+
}
|
|
175
|
+
const lines = this.events.map((e) => JSON.stringify(e)).join("\n");
|
|
176
|
+
await fs.writeFile(this.config.storagePath, lines + "\n", "utf-8");
|
|
177
|
+
this.isDirty = false;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error("[AuditLogger] Failed to flush to disk:", error);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async clear() {
|
|
184
|
+
this.events = [];
|
|
185
|
+
this.isDirty = true;
|
|
186
|
+
await this.flush();
|
|
187
|
+
}
|
|
188
|
+
async clearAllData() {
|
|
189
|
+
this.events = [];
|
|
190
|
+
this.isLoaded = false;
|
|
191
|
+
this.loadPromise = null;
|
|
192
|
+
try {
|
|
193
|
+
await fs.unlink(this.config.storagePath);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
destroy() {
|
|
199
|
+
if (this.flushTimer) {
|
|
200
|
+
clearInterval(this.flushTimer);
|
|
201
|
+
this.flushTimer = null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
async ensureLoaded() {
|
|
205
|
+
if (this.isLoaded)
|
|
206
|
+
return;
|
|
207
|
+
if (this.loadPromise) {
|
|
208
|
+
await this.loadPromise;
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
this.loadPromise = this.load();
|
|
212
|
+
await this.loadPromise;
|
|
213
|
+
this.loadPromise = null;
|
|
214
|
+
}
|
|
215
|
+
async load() {
|
|
216
|
+
try {
|
|
217
|
+
const content = await fs.readFile(this.config.storagePath, "utf-8");
|
|
218
|
+
const lines = content
|
|
219
|
+
.trim()
|
|
220
|
+
.split("\n")
|
|
221
|
+
.filter((l) => l.trim());
|
|
222
|
+
this.events = lines.map((line) => JSON.parse(line));
|
|
223
|
+
this.pruneOldEvents();
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
this.events = [];
|
|
227
|
+
}
|
|
228
|
+
this.isLoaded = true;
|
|
229
|
+
}
|
|
230
|
+
pruneOldEvents() {
|
|
231
|
+
const cutoff = Date.now() - this.config.maxEventAge;
|
|
232
|
+
const beforeCount = this.events.length;
|
|
233
|
+
this.events = this.events.filter((e) => new Date(e.timestamp).getTime() > cutoff);
|
|
234
|
+
if (this.events.length > this.config.maxEvents) {
|
|
235
|
+
this.events = this.events.slice(-this.config.maxEvents);
|
|
236
|
+
}
|
|
237
|
+
if (this.events.length !== beforeCount) {
|
|
238
|
+
this.isDirty = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
startFlushTimer() {
|
|
242
|
+
this.flushTimer = setInterval(() => {
|
|
243
|
+
this.flush().catch((err) => console.error("[AuditLogger] Flush error:", err));
|
|
244
|
+
}, this.config.flushIntervalMs);
|
|
245
|
+
this.flushTimer.unref();
|
|
246
|
+
}
|
|
247
|
+
getPeriodBounds(period, now) {
|
|
248
|
+
const endDate = now.toISOString();
|
|
249
|
+
let startDate;
|
|
250
|
+
switch (period) {
|
|
251
|
+
case "hour":
|
|
252
|
+
startDate = new Date(now.getTime() - 60 * 60 * 1000);
|
|
253
|
+
break;
|
|
254
|
+
case "day":
|
|
255
|
+
startDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
|
|
256
|
+
break;
|
|
257
|
+
case "week":
|
|
258
|
+
startDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
259
|
+
break;
|
|
260
|
+
case "month":
|
|
261
|
+
startDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
|
|
262
|
+
break;
|
|
263
|
+
case "all":
|
|
264
|
+
default:
|
|
265
|
+
startDate = new Date(0);
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
return { startDate: startDate.toISOString(), endDate };
|
|
269
|
+
}
|
|
270
|
+
sanitizeInput(input) {
|
|
271
|
+
const sanitized = {};
|
|
272
|
+
for (const [key, value] of Object.entries(input)) {
|
|
273
|
+
const isSensitive = SENSITIVE_PATTERNS.some((pattern) => pattern.test(key));
|
|
274
|
+
if (isSensitive) {
|
|
275
|
+
sanitized[key] = "[REDACTED]";
|
|
276
|
+
}
|
|
277
|
+
else if (typeof value === "string" && value.length > 200) {
|
|
278
|
+
sanitized[key] = value.slice(0, 200) + "...";
|
|
279
|
+
}
|
|
280
|
+
else if (typeof value === "object" && value !== null) {
|
|
281
|
+
sanitized[key] = this.sanitizeInput(value);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
sanitized[key] = value;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return sanitized;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
let auditLoggerInstance = null;
|
|
291
|
+
export function getAuditLogger(config) {
|
|
292
|
+
if (!auditLoggerInstance) {
|
|
293
|
+
auditLoggerInstance = new AuditLogger(config);
|
|
294
|
+
}
|
|
295
|
+
return auditLoggerInstance;
|
|
296
|
+
}
|
|
297
|
+
export function resetAuditLogger() {
|
|
298
|
+
if (auditLoggerInstance) {
|
|
299
|
+
auditLoggerInstance.destroy();
|
|
300
|
+
auditLoggerInstance = null;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=AuditLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditLogger.js","sourceRoot":"","sources":["../../src/utils/AuditLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface CacheEntry<T> {
|
|
2
|
+
value: T;
|
|
3
|
+
createdAt: number;
|
|
4
|
+
lastAccessedAt: number;
|
|
5
|
+
hits: number;
|
|
6
|
+
sizeBytes: number;
|
|
7
|
+
}
|
|
8
|
+
export interface CacheStats {
|
|
9
|
+
hits: number;
|
|
10
|
+
misses: number;
|
|
11
|
+
evictions: number;
|
|
12
|
+
currentSize: number;
|
|
13
|
+
maxSize: number;
|
|
14
|
+
entryCount: number;
|
|
15
|
+
hitRate: number;
|
|
16
|
+
avgEntryAge: number;
|
|
17
|
+
}
|
|
18
|
+
export interface CacheConfig {
|
|
19
|
+
maxSizeBytes: number;
|
|
20
|
+
defaultTTLMs: number;
|
|
21
|
+
cleanupIntervalMs: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class CacheManager<T> {
|
|
24
|
+
private cache;
|
|
25
|
+
private config;
|
|
26
|
+
private currentSizeBytes;
|
|
27
|
+
private stats;
|
|
28
|
+
private cleanupTimer;
|
|
29
|
+
constructor(config?: Partial<CacheConfig>);
|
|
30
|
+
get(key: string): T | undefined;
|
|
31
|
+
set(key: string, value: T, _ttlMs?: number): void;
|
|
32
|
+
delete(key: string): boolean;
|
|
33
|
+
has(key: string): boolean;
|
|
34
|
+
clear(): void;
|
|
35
|
+
getStats(): CacheStats;
|
|
36
|
+
invalidatePattern(pattern: RegExp): number;
|
|
37
|
+
destroy(): void;
|
|
38
|
+
private isExpired;
|
|
39
|
+
private evictLRU;
|
|
40
|
+
private estimateSize;
|
|
41
|
+
private startCleanupTimer;
|
|
42
|
+
private cleanupExpired;
|
|
43
|
+
}
|
|
44
|
+
export declare const sessionCache: CacheManager<unknown>;
|
|
45
|
+
export interface EmbeddingCacheEntry {
|
|
46
|
+
embedding: number[];
|
|
47
|
+
model: string;
|
|
48
|
+
dimensions: number;
|
|
49
|
+
}
|
|
50
|
+
export declare const embeddingCache: CacheManager<EmbeddingCacheEntry>;
|
|
51
|
+
export declare const patternCache: CacheManager<unknown>;
|
|
52
|
+
export declare function generateContentHash(content: string): string;
|
|
53
|
+
export declare function sessionCacheKey(projectPath: string, sessionId: string): string;
|
|
54
|
+
export declare function embeddingCacheKey(content: string, model?: string): string;
|
|
55
|
+
export declare function patternCacheKey(skillId: string): string;
|
|
56
|
+
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAQD,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAQ7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IA8B/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAuCjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAY5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAazB,KAAK,IAAI,IAAI;IAQb,QAAQ,IAAI,UAAU;IA0BtB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAc1C,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;CAOvB;AAUD,eAAO,MAAM,YAAY,uBAIvB,CAAC;AAMH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,mCAIzB,CAAC;AAMH,eAAO,MAAM,YAAY,uBAIvB,CAAC;AASH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAKD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAKD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAiC,GACvC,MAAM,CAGR;AAKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
const DEFAULT_CONFIG = {
|
|
2
|
+
maxSizeBytes: 50 * 1024 * 1024,
|
|
3
|
+
defaultTTLMs: 30 * 60 * 1000,
|
|
4
|
+
cleanupIntervalMs: 60 * 1000,
|
|
5
|
+
};
|
|
6
|
+
export class CacheManager {
|
|
7
|
+
cache = new Map();
|
|
8
|
+
config;
|
|
9
|
+
currentSizeBytes = 0;
|
|
10
|
+
stats = {
|
|
11
|
+
hits: 0,
|
|
12
|
+
misses: 0,
|
|
13
|
+
evictions: 0,
|
|
14
|
+
};
|
|
15
|
+
cleanupTimer = null;
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
18
|
+
this.startCleanupTimer();
|
|
19
|
+
}
|
|
20
|
+
get(key) {
|
|
21
|
+
const entry = this.cache.get(key);
|
|
22
|
+
if (!entry) {
|
|
23
|
+
this.stats.misses++;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (this.isExpired(entry)) {
|
|
27
|
+
this.delete(key);
|
|
28
|
+
this.stats.misses++;
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
entry.lastAccessedAt = Date.now();
|
|
32
|
+
entry.hits++;
|
|
33
|
+
this.stats.hits++;
|
|
34
|
+
this.cache.delete(key);
|
|
35
|
+
this.cache.set(key, entry);
|
|
36
|
+
return entry.value;
|
|
37
|
+
}
|
|
38
|
+
set(key, value, _ttlMs) {
|
|
39
|
+
const sizeBytes = this.estimateSize(value);
|
|
40
|
+
while (this.currentSizeBytes + sizeBytes > this.config.maxSizeBytes &&
|
|
41
|
+
this.cache.size > 0) {
|
|
42
|
+
this.evictLRU();
|
|
43
|
+
}
|
|
44
|
+
if (sizeBytes > this.config.maxSizeBytes) {
|
|
45
|
+
console.error(`⚠️ Cache entry too large (${sizeBytes} bytes), skipping cache`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (this.cache.has(key)) {
|
|
49
|
+
this.delete(key);
|
|
50
|
+
}
|
|
51
|
+
const entry = {
|
|
52
|
+
value,
|
|
53
|
+
createdAt: Date.now(),
|
|
54
|
+
lastAccessedAt: Date.now(),
|
|
55
|
+
hits: 0,
|
|
56
|
+
sizeBytes,
|
|
57
|
+
};
|
|
58
|
+
this.cache.set(key, entry);
|
|
59
|
+
this.currentSizeBytes += sizeBytes;
|
|
60
|
+
}
|
|
61
|
+
delete(key) {
|
|
62
|
+
const entry = this.cache.get(key);
|
|
63
|
+
if (entry) {
|
|
64
|
+
this.currentSizeBytes -= entry.sizeBytes;
|
|
65
|
+
return this.cache.delete(key);
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
has(key) {
|
|
70
|
+
const entry = this.cache.get(key);
|
|
71
|
+
if (!entry)
|
|
72
|
+
return false;
|
|
73
|
+
if (this.isExpired(entry)) {
|
|
74
|
+
this.delete(key);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
clear() {
|
|
80
|
+
this.cache.clear();
|
|
81
|
+
this.currentSizeBytes = 0;
|
|
82
|
+
}
|
|
83
|
+
getStats() {
|
|
84
|
+
const totalRequests = this.stats.hits + this.stats.misses;
|
|
85
|
+
const entries = Array.from(this.cache.values());
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
const avgEntryAge = entries.length > 0
|
|
88
|
+
? entries.reduce((sum, e) => sum + (now - e.createdAt), 0) /
|
|
89
|
+
entries.length
|
|
90
|
+
: 0;
|
|
91
|
+
return {
|
|
92
|
+
hits: this.stats.hits,
|
|
93
|
+
misses: this.stats.misses,
|
|
94
|
+
evictions: this.stats.evictions,
|
|
95
|
+
currentSize: this.currentSizeBytes,
|
|
96
|
+
maxSize: this.config.maxSizeBytes,
|
|
97
|
+
entryCount: this.cache.size,
|
|
98
|
+
hitRate: totalRequests > 0 ? this.stats.hits / totalRequests : 0,
|
|
99
|
+
avgEntryAge,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
invalidatePattern(pattern) {
|
|
103
|
+
let invalidated = 0;
|
|
104
|
+
for (const key of this.cache.keys()) {
|
|
105
|
+
if (pattern.test(key)) {
|
|
106
|
+
this.delete(key);
|
|
107
|
+
invalidated++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return invalidated;
|
|
111
|
+
}
|
|
112
|
+
destroy() {
|
|
113
|
+
if (this.cleanupTimer) {
|
|
114
|
+
clearInterval(this.cleanupTimer);
|
|
115
|
+
this.cleanupTimer = null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
isExpired(entry) {
|
|
119
|
+
return Date.now() - entry.createdAt > this.config.defaultTTLMs;
|
|
120
|
+
}
|
|
121
|
+
evictLRU() {
|
|
122
|
+
const oldestKey = this.cache.keys().next().value;
|
|
123
|
+
if (oldestKey) {
|
|
124
|
+
this.delete(oldestKey);
|
|
125
|
+
this.stats.evictions++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
estimateSize(value) {
|
|
129
|
+
try {
|
|
130
|
+
const str = JSON.stringify(value);
|
|
131
|
+
return Math.ceil(str.length * 1.5);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return 1024;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
startCleanupTimer() {
|
|
138
|
+
this.cleanupTimer = setInterval(() => {
|
|
139
|
+
this.cleanupExpired();
|
|
140
|
+
}, this.config.cleanupIntervalMs);
|
|
141
|
+
this.cleanupTimer.unref();
|
|
142
|
+
}
|
|
143
|
+
cleanupExpired() {
|
|
144
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
145
|
+
if (this.isExpired(entry)) {
|
|
146
|
+
this.delete(key);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
export const sessionCache = new CacheManager({
|
|
152
|
+
maxSizeBytes: 100 * 1024 * 1024,
|
|
153
|
+
defaultTTLMs: 60 * 60 * 1000,
|
|
154
|
+
cleanupIntervalMs: 5 * 60 * 1000,
|
|
155
|
+
});
|
|
156
|
+
export const embeddingCache = new CacheManager({
|
|
157
|
+
maxSizeBytes: 200 * 1024 * 1024,
|
|
158
|
+
defaultTTLMs: 24 * 60 * 60 * 1000,
|
|
159
|
+
cleanupIntervalMs: 30 * 60 * 1000,
|
|
160
|
+
});
|
|
161
|
+
export const patternCache = new CacheManager({
|
|
162
|
+
maxSizeBytes: 50 * 1024 * 1024,
|
|
163
|
+
defaultTTLMs: 15 * 60 * 1000,
|
|
164
|
+
cleanupIntervalMs: 60 * 1000,
|
|
165
|
+
});
|
|
166
|
+
export function generateContentHash(content) {
|
|
167
|
+
let hash = 2166136261;
|
|
168
|
+
for (let i = 0; i < content.length; i++) {
|
|
169
|
+
hash ^= content.charCodeAt(i);
|
|
170
|
+
hash = Math.imul(hash, 16777619);
|
|
171
|
+
}
|
|
172
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
173
|
+
}
|
|
174
|
+
export function sessionCacheKey(projectPath, sessionId) {
|
|
175
|
+
return `session:${projectPath}:${sessionId}`;
|
|
176
|
+
}
|
|
177
|
+
export function embeddingCacheKey(content, model = "text-embedding-3-small") {
|
|
178
|
+
const contentHash = generateContentHash(content);
|
|
179
|
+
return `embedding:${model}:${contentHash}`;
|
|
180
|
+
}
|
|
181
|
+
export function patternCacheKey(skillId) {
|
|
182
|
+
return `pattern:${skillId}`;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=CacheManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../src/utils/CacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type CircuitState = "CLOSED" | "OPEN" | "HALF_OPEN";
|
|
2
|
+
export interface CircuitBreakerConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
failureThreshold?: number;
|
|
5
|
+
resetTimeout?: number;
|
|
6
|
+
halfOpenSuccesses?: number;
|
|
7
|
+
onStateChange?: (from: CircuitState, to: CircuitState, stats: CircuitStats) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface CircuitStats {
|
|
10
|
+
state: CircuitState;
|
|
11
|
+
failures: number;
|
|
12
|
+
successes: number;
|
|
13
|
+
lastFailure: Date | null;
|
|
14
|
+
lastSuccess: Date | null;
|
|
15
|
+
lastStateChange: Date;
|
|
16
|
+
totalRequests: number;
|
|
17
|
+
totalFailures: number;
|
|
18
|
+
totalSuccesses: number;
|
|
19
|
+
consecutiveSuccesses: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class CircuitBreakerError extends Error {
|
|
22
|
+
readonly serviceName: string;
|
|
23
|
+
readonly state: CircuitState;
|
|
24
|
+
constructor(message: string, serviceName: string, state: CircuitState);
|
|
25
|
+
}
|
|
26
|
+
export declare class CircuitBreaker {
|
|
27
|
+
private state;
|
|
28
|
+
private failures;
|
|
29
|
+
private successes;
|
|
30
|
+
private consecutiveSuccesses;
|
|
31
|
+
private lastFailure;
|
|
32
|
+
private lastSuccess;
|
|
33
|
+
private lastStateChange;
|
|
34
|
+
private totalRequests;
|
|
35
|
+
private totalFailures;
|
|
36
|
+
private totalSuccesses;
|
|
37
|
+
private openedAt;
|
|
38
|
+
private readonly name;
|
|
39
|
+
private readonly failureThreshold;
|
|
40
|
+
private readonly resetTimeout;
|
|
41
|
+
private readonly halfOpenSuccesses;
|
|
42
|
+
private readonly onStateChange?;
|
|
43
|
+
constructor(config: CircuitBreakerConfig);
|
|
44
|
+
execute<T>(operation: () => Promise<T>): Promise<T>;
|
|
45
|
+
executeWithFallback<T>(operation: () => Promise<T>, fallback: T | (() => T | Promise<T>)): Promise<T>;
|
|
46
|
+
isAllowed(): boolean;
|
|
47
|
+
getStats(): CircuitStats;
|
|
48
|
+
getState(): CircuitState;
|
|
49
|
+
reset(): void;
|
|
50
|
+
forceOpen(): void;
|
|
51
|
+
private shouldAttemptReset;
|
|
52
|
+
private onSuccess;
|
|
53
|
+
private onFailure;
|
|
54
|
+
private transitionTo;
|
|
55
|
+
}
|
|
56
|
+
declare class CircuitBreakerRegistry {
|
|
57
|
+
private breakers;
|
|
58
|
+
private defaultConfig;
|
|
59
|
+
getBreaker(name: string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
|
|
60
|
+
getAllStats(): Record<string, CircuitStats>;
|
|
61
|
+
resetAll(): void;
|
|
62
|
+
hasOpenCircuits(): boolean;
|
|
63
|
+
getOpenCircuits(): string[];
|
|
64
|
+
setDefaultConfig(config: Partial<CircuitBreakerConfig>): void;
|
|
65
|
+
clear(): void;
|
|
66
|
+
}
|
|
67
|
+
export declare function getCircuitBreakerRegistry(): CircuitBreakerRegistry;
|
|
68
|
+
export declare function getCircuitBreaker(serviceName: "qdrant" | "openai" | "gemini" | string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
|
|
69
|
+
export declare const ServiceCircuitBreakers: {
|
|
70
|
+
qdrant: () => CircuitBreaker;
|
|
71
|
+
openai: () => CircuitBreaker;
|
|
72
|
+
gemini: () => CircuitBreaker;
|
|
73
|
+
openrouter: () => CircuitBreaker;
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=CircuitBreaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CircuitBreaker.d.ts","sourceRoot":"","sources":["../../src/utils/CircuitBreaker.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IAEnC,IAAI,EAAE,MAAM,CAAC;IAEb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,YAAY,KAChB,IAAI,CAAC;CACX;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,WAAW,EAAE,MAAM;aACnB,KAAK,EAAE,YAAY;gBAFnC,OAAO,EAAE,MAAM,EACC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY;CAKtC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAIrB;gBAEE,MAAM,EAAE,oBAAoB;IAWlC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA6BnD,mBAAmB,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,CAAC,CAAC;IAoBb,SAAS,IAAI,OAAO;IAUpB,QAAQ,IAAI,YAAY;IAkBxB,QAAQ,IAAI,YAAY;IAOxB,KAAK,IAAI,IAAI;IAWb,SAAS,IAAI,IAAI;IAKjB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,YAAY;CAerB;AAKD,cAAM,sBAAsB;IAC1B,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,aAAa,CAInB;IAKF,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,cAAc;IAgBjB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAW3C,QAAQ,IAAI,IAAI;IAShB,eAAe,IAAI,OAAO;IAU1B,eAAe,IAAI,MAAM,EAAE;IAa3B,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAO7D,KAAK,IAAI,IAAI;CAGd;AAQD,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE;AAKD,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,cAAc,CAEhB;AAKD,eAAO,MAAM,sBAAsB;;;;;CAwClC,CAAC"}
|