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,731 @@
|
|
|
1
|
+
import { extractFullSessionContext, estimateTokens, } from "../../utils/contextBuilder.js";
|
|
2
|
+
export var ReviewContractStatus;
|
|
3
|
+
(function (ReviewContractStatus) {
|
|
4
|
+
ReviewContractStatus["DRAFT"] = "draft";
|
|
5
|
+
ReviewContractStatus["NEGOTIATING"] = "negotiating";
|
|
6
|
+
ReviewContractStatus["APPROVED"] = "approved";
|
|
7
|
+
ReviewContractStatus["EXECUTING"] = "executing";
|
|
8
|
+
ReviewContractStatus["VALIDATING"] = "validating";
|
|
9
|
+
ReviewContractStatus["COMPLETE"] = "complete";
|
|
10
|
+
ReviewContractStatus["FAILED"] = "failed";
|
|
11
|
+
})(ReviewContractStatus || (ReviewContractStatus = {}));
|
|
12
|
+
export var ReviewVerdict;
|
|
13
|
+
(function (ReviewVerdict) {
|
|
14
|
+
ReviewVerdict["APPROVED"] = "approved";
|
|
15
|
+
ReviewVerdict["CONCERNS"] = "concerns";
|
|
16
|
+
ReviewVerdict["REJECTED"] = "rejected";
|
|
17
|
+
})(ReviewVerdict || (ReviewVerdict = {}));
|
|
18
|
+
export function createReviewContract(sessionId, context, options = {}) {
|
|
19
|
+
const { focusAreas = [], maxIterations = 3, minConfidence = 0.7, enableSubcontracting = false, } = options;
|
|
20
|
+
const reviewDimensions = [
|
|
21
|
+
"Architectural Coherence",
|
|
22
|
+
"Decision Quality",
|
|
23
|
+
"Risk Assessment",
|
|
24
|
+
"Pattern Application",
|
|
25
|
+
"Constraint Compliance",
|
|
26
|
+
"Gaps or Omissions",
|
|
27
|
+
];
|
|
28
|
+
const deliverables = [
|
|
29
|
+
{
|
|
30
|
+
name: "Overall Assessment",
|
|
31
|
+
required: true,
|
|
32
|
+
description: "Clear verdict: Approved, Concerns, or Rejected with reasoning",
|
|
33
|
+
validationMethod: "structure",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "Architectural Coherence Analysis",
|
|
37
|
+
required: true,
|
|
38
|
+
description: "Analysis of how decisions form a coherent whole",
|
|
39
|
+
validationMethod: "presence",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "Key Strengths",
|
|
43
|
+
required: true,
|
|
44
|
+
description: "Bullet points of what was done well",
|
|
45
|
+
validationMethod: "presence",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "Concerns",
|
|
49
|
+
required: true,
|
|
50
|
+
description: "Bullet points of risks or issues identified",
|
|
51
|
+
validationMethod: "presence",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Recommendations",
|
|
55
|
+
required: true,
|
|
56
|
+
description: "Actionable suggestions for improvement",
|
|
57
|
+
validationMethod: "presence",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "Confidence Statement",
|
|
61
|
+
required: true,
|
|
62
|
+
description: "Confidence level (High/Medium/Low) with reasoning",
|
|
63
|
+
validationMethod: "structure",
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
if (focusAreas.includes("security")) {
|
|
67
|
+
deliverables.push({
|
|
68
|
+
name: "Security Analysis",
|
|
69
|
+
required: true,
|
|
70
|
+
description: "Dedicated security review of decisions and patterns",
|
|
71
|
+
validationMethod: "presence",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (focusAreas.includes("performance")) {
|
|
75
|
+
deliverables.push({
|
|
76
|
+
name: "Performance Analysis",
|
|
77
|
+
required: true,
|
|
78
|
+
description: "Performance implications of architectural decisions",
|
|
79
|
+
validationMethod: "presence",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const acceptanceCriteria = [
|
|
83
|
+
{
|
|
84
|
+
criterion: "All required deliverables present",
|
|
85
|
+
validationMethod: "automated",
|
|
86
|
+
weight: 0.3,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
criterion: "Clear verdict stated (Approved/Concerns/Rejected)",
|
|
90
|
+
validationMethod: "automated",
|
|
91
|
+
weight: 0.2,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
criterion: "Each decision addressed or acknowledged",
|
|
95
|
+
validationMethod: "llm_judge",
|
|
96
|
+
threshold: 0.8,
|
|
97
|
+
weight: 0.2,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
criterion: "Recommendations are actionable and specific",
|
|
101
|
+
validationMethod: "llm_judge",
|
|
102
|
+
weight: 0.15,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
criterion: "Confidence level justified with reasoning",
|
|
106
|
+
validationMethod: "automated",
|
|
107
|
+
weight: 0.15,
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
return {
|
|
111
|
+
id: `review-${sessionId}-${Date.now()}`,
|
|
112
|
+
sessionId,
|
|
113
|
+
version: "1.0.0",
|
|
114
|
+
status: ReviewContractStatus.DRAFT,
|
|
115
|
+
createdAt: new Date().toISOString(),
|
|
116
|
+
scope: {
|
|
117
|
+
reviewDimensions,
|
|
118
|
+
focusAreas,
|
|
119
|
+
excludedTopics: [],
|
|
120
|
+
contextSize: {
|
|
121
|
+
decisions: context.decisions.length,
|
|
122
|
+
patterns: context.patterns.length,
|
|
123
|
+
hypotheses: context.hypotheses.length,
|
|
124
|
+
blockers: context.blockers.length,
|
|
125
|
+
constraints: context.constraints.length,
|
|
126
|
+
totalItems: context.decisions.length +
|
|
127
|
+
context.patterns.length +
|
|
128
|
+
context.hypotheses.length +
|
|
129
|
+
context.blockers.length +
|
|
130
|
+
context.constraints.length,
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
deliverables,
|
|
134
|
+
acceptanceCriteria,
|
|
135
|
+
constraints: {
|
|
136
|
+
maxIterations,
|
|
137
|
+
minConfidence,
|
|
138
|
+
maxTokenBudget: 8000,
|
|
139
|
+
timeoutMs: 120000,
|
|
140
|
+
requiredVerdict: true,
|
|
141
|
+
},
|
|
142
|
+
negotiationAllowed: true,
|
|
143
|
+
subcontractingAllowed: enableSubcontracting,
|
|
144
|
+
auditLog: [
|
|
145
|
+
{
|
|
146
|
+
timestamp: new Date().toISOString(),
|
|
147
|
+
event: "contract_created",
|
|
148
|
+
details: { sessionId, focusAreas },
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
export function analyzeContractFeasibility(contract, context) {
|
|
154
|
+
const issues = [];
|
|
155
|
+
const clarificationsNeeded = [];
|
|
156
|
+
if (contract.scope.contextSize.totalItems === 0) {
|
|
157
|
+
issues.push({
|
|
158
|
+
type: "missing_context",
|
|
159
|
+
field: "scope.contextSize",
|
|
160
|
+
description: "Session has no decisions, patterns, or hypotheses to review",
|
|
161
|
+
suggestion: "Ensure session has recorded decisions before requesting review",
|
|
162
|
+
blocking: true,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const decisionsWithoutRationale = context.decisions.filter((d) => !d.content.toLowerCase().includes("because") &&
|
|
166
|
+
!d.content.toLowerCase().includes("rationale") &&
|
|
167
|
+
!d.content.toLowerCase().includes("reason"));
|
|
168
|
+
if (decisionsWithoutRationale.length > context.decisions.length * 0.5) {
|
|
169
|
+
issues.push({
|
|
170
|
+
type: "missing_context",
|
|
171
|
+
field: "decisions",
|
|
172
|
+
description: `${decisionsWithoutRationale.length}/${context.decisions.length} decisions lack explicit rationale`,
|
|
173
|
+
suggestion: "Consider adding rationale to key decisions for more meaningful review",
|
|
174
|
+
blocking: false,
|
|
175
|
+
});
|
|
176
|
+
clarificationsNeeded.push("Should the review infer rationale from context, or flag missing rationale as a concern?");
|
|
177
|
+
}
|
|
178
|
+
if (contract.scope.contextSize.totalItems > 30) {
|
|
179
|
+
issues.push({
|
|
180
|
+
type: "scope_too_broad",
|
|
181
|
+
field: "scope",
|
|
182
|
+
description: `Large session (${contract.scope.contextSize.totalItems} items) may result in shallow review`,
|
|
183
|
+
suggestion: "Consider focusing on critical decisions only, or enable subcontracting",
|
|
184
|
+
blocking: false,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
for (const focus of contract.scope.focusAreas) {
|
|
188
|
+
const hasMatchingContent = context.decisions.some((d) => d.content.toLowerCase().includes(focus.toLowerCase()));
|
|
189
|
+
if (!hasMatchingContent) {
|
|
190
|
+
issues.push({
|
|
191
|
+
type: "ambiguity",
|
|
192
|
+
field: `focusAreas.${focus}`,
|
|
193
|
+
description: `Focus area "${focus}" has no matching decisions`,
|
|
194
|
+
suggestion: `Remove focus area or clarify what aspects of "${focus}" should be evaluated`,
|
|
195
|
+
blocking: false,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const estimatedTokens = Math.ceil(contract.scope.contextSize.totalItems * 150);
|
|
200
|
+
const estimatedIterations = contract.scope.contextSize.totalItems > 15 ? 2 : 1;
|
|
201
|
+
const blockingIssues = issues.filter((i) => i.blocking);
|
|
202
|
+
return {
|
|
203
|
+
feasible: blockingIssues.length === 0,
|
|
204
|
+
issues,
|
|
205
|
+
clarificationsNeeded,
|
|
206
|
+
estimatedEffort: {
|
|
207
|
+
tokens: estimatedTokens,
|
|
208
|
+
iterations: estimatedIterations,
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export function validateReviewResponse(contract, response, iteration) {
|
|
213
|
+
const deliverableResults = [];
|
|
214
|
+
const criteriaResults = [];
|
|
215
|
+
const responseLower = response.toLowerCase();
|
|
216
|
+
for (const deliverable of contract.deliverables) {
|
|
217
|
+
let present = false;
|
|
218
|
+
let quality = 0;
|
|
219
|
+
let evidence = "";
|
|
220
|
+
switch (deliverable.name) {
|
|
221
|
+
case "Overall Assessment":
|
|
222
|
+
present =
|
|
223
|
+
/overall assessment/i.test(response) ||
|
|
224
|
+
/\*\*\[?(approved|concerns|rejected)\]?\.?\*\*/i.test(response) ||
|
|
225
|
+
/\[(approved|concerns|rejected)\]/i.test(response);
|
|
226
|
+
quality = present ? 1.0 : 0;
|
|
227
|
+
evidence = present
|
|
228
|
+
? "Overall assessment section found"
|
|
229
|
+
: "No overall assessment section";
|
|
230
|
+
break;
|
|
231
|
+
case "Architectural Coherence Analysis":
|
|
232
|
+
present =
|
|
233
|
+
/architectural coherence/i.test(response) ||
|
|
234
|
+
/coherence/i.test(response) ||
|
|
235
|
+
/coherent/i.test(response) ||
|
|
236
|
+
/decisions.*together/i.test(response) ||
|
|
237
|
+
/work.*together/i.test(response);
|
|
238
|
+
quality = present ? 0.8 : 0;
|
|
239
|
+
evidence = present
|
|
240
|
+
? "Coherence analysis present"
|
|
241
|
+
: "Missing coherence analysis";
|
|
242
|
+
break;
|
|
243
|
+
case "Key Strengths":
|
|
244
|
+
present = /strengths/i.test(response) || /done well/i.test(response);
|
|
245
|
+
const strengthBullets = (response.match(/^[-*]\s+.+$/gm) || []).length;
|
|
246
|
+
quality = present ? Math.min(strengthBullets / 3, 1.0) : 0;
|
|
247
|
+
evidence = present
|
|
248
|
+
? `${strengthBullets} strength items found`
|
|
249
|
+
: "No strengths section";
|
|
250
|
+
break;
|
|
251
|
+
case "Concerns":
|
|
252
|
+
present =
|
|
253
|
+
/concerns/i.test(response) ||
|
|
254
|
+
/risks/i.test(response) ||
|
|
255
|
+
/issues/i.test(response);
|
|
256
|
+
quality = present ? 0.8 : 0;
|
|
257
|
+
evidence = present
|
|
258
|
+
? "Concerns section present"
|
|
259
|
+
: "Missing concerns section";
|
|
260
|
+
break;
|
|
261
|
+
case "Recommendations":
|
|
262
|
+
present =
|
|
263
|
+
/recommendations/i.test(response) || /suggestions/i.test(response);
|
|
264
|
+
quality = present ? 0.8 : 0;
|
|
265
|
+
evidence = present
|
|
266
|
+
? "Recommendations present"
|
|
267
|
+
: "Missing recommendations";
|
|
268
|
+
break;
|
|
269
|
+
case "Confidence Statement":
|
|
270
|
+
present =
|
|
271
|
+
/confidence/i.test(response) && /(high|medium|low)/i.test(response);
|
|
272
|
+
quality = present ? 1.0 : 0;
|
|
273
|
+
evidence = present
|
|
274
|
+
? "Confidence level stated"
|
|
275
|
+
: "Missing confidence level";
|
|
276
|
+
break;
|
|
277
|
+
case "Security Analysis":
|
|
278
|
+
present = /security/i.test(response);
|
|
279
|
+
quality = present ? 0.8 : 0;
|
|
280
|
+
evidence = present
|
|
281
|
+
? "Security analysis present"
|
|
282
|
+
: "Missing security analysis";
|
|
283
|
+
break;
|
|
284
|
+
case "Performance Analysis":
|
|
285
|
+
present = /performance/i.test(response);
|
|
286
|
+
quality = present ? 0.8 : 0;
|
|
287
|
+
evidence = present
|
|
288
|
+
? "Performance analysis present"
|
|
289
|
+
: "Missing performance analysis";
|
|
290
|
+
break;
|
|
291
|
+
default:
|
|
292
|
+
present = responseLower.includes(deliverable.name.toLowerCase());
|
|
293
|
+
quality = present ? 0.5 : 0;
|
|
294
|
+
evidence = present ? "Section found" : "Section missing";
|
|
295
|
+
}
|
|
296
|
+
deliverableResults.push({
|
|
297
|
+
deliverable: deliverable.name,
|
|
298
|
+
present,
|
|
299
|
+
quality,
|
|
300
|
+
evidence,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
for (const criterion of contract.acceptanceCriteria) {
|
|
304
|
+
let passed = false;
|
|
305
|
+
let score = 0;
|
|
306
|
+
switch (criterion.criterion) {
|
|
307
|
+
case "All required deliverables present":
|
|
308
|
+
const requiredMet = deliverableResults.filter((d, i) => contract.deliverables[i]?.required && d.present).length;
|
|
309
|
+
const requiredTotal = contract.deliverables.filter((d) => d.required).length;
|
|
310
|
+
passed = requiredMet === requiredTotal;
|
|
311
|
+
score = requiredTotal > 0 ? requiredMet / requiredTotal : 1;
|
|
312
|
+
break;
|
|
313
|
+
case "Clear verdict stated (Approved/Concerns/Rejected)":
|
|
314
|
+
passed =
|
|
315
|
+
/\*\*\[?(approved|concerns|rejected)\]?\.?\*\*/i.test(response) ||
|
|
316
|
+
/\[(approved|concerns|rejected)\]/i.test(response) ||
|
|
317
|
+
/^#+.*assessment[\s\S]{0,50}(approved|concerns|rejected)/im.test(response);
|
|
318
|
+
score = passed ? 1.0 : 0;
|
|
319
|
+
break;
|
|
320
|
+
case "Confidence level justified with reasoning":
|
|
321
|
+
const hasConfidence = /confidence.*:?\s*(high|medium|low)/i.test(response);
|
|
322
|
+
const hasReasoning = /confidence.{0,50}(because|due to|given|since)/i.test(response);
|
|
323
|
+
passed = hasConfidence && hasReasoning;
|
|
324
|
+
score = hasConfidence ? (hasReasoning ? 1.0 : 0.5) : 0;
|
|
325
|
+
break;
|
|
326
|
+
default:
|
|
327
|
+
passed = true;
|
|
328
|
+
score = 0.7;
|
|
329
|
+
}
|
|
330
|
+
criteriaResults.push({
|
|
331
|
+
criterion: criterion.criterion,
|
|
332
|
+
passed,
|
|
333
|
+
score,
|
|
334
|
+
evidence: passed ? "Criterion met" : "Criterion not met",
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
const allDeliverablesMet = deliverableResults
|
|
338
|
+
.filter((_, i) => contract.deliverables[i]?.required)
|
|
339
|
+
.every((d) => d.present);
|
|
340
|
+
const allCriteriaPassed = criteriaResults.every((c) => c.passed);
|
|
341
|
+
const overallScore = criteriaResults.reduce((sum, c, i) => sum + c.score * (contract.acceptanceCriteria[i]?.weight ?? 0), 0);
|
|
342
|
+
let verdict = null;
|
|
343
|
+
const verdictPatterns = {
|
|
344
|
+
approved: /(\*\*\[?approved\]?\.?\*\*|\[approved\]|^#+.*assessment[\s\S]{0,50}approved)/im,
|
|
345
|
+
concerns: /(\*\*\[?concerns\]?\.?\*\*|\[concerns\]|^#+.*assessment[\s\S]{0,50}concerns)/im,
|
|
346
|
+
rejected: /(\*\*\[?rejected\]?\.?\*\*|\[rejected\]|^#+.*assessment[\s\S]{0,50}rejected)/im,
|
|
347
|
+
};
|
|
348
|
+
if (verdictPatterns.approved.test(response)) {
|
|
349
|
+
verdict = ReviewVerdict.APPROVED;
|
|
350
|
+
}
|
|
351
|
+
else if (verdictPatterns.concerns.test(response)) {
|
|
352
|
+
verdict = ReviewVerdict.CONCERNS;
|
|
353
|
+
}
|
|
354
|
+
else if (verdictPatterns.rejected.test(response)) {
|
|
355
|
+
verdict = ReviewVerdict.REJECTED;
|
|
356
|
+
}
|
|
357
|
+
let confidence = 0.5;
|
|
358
|
+
if (/high/i.test(response) && /confidence/i.test(response)) {
|
|
359
|
+
confidence = 0.9;
|
|
360
|
+
}
|
|
361
|
+
else if (/medium/i.test(response) && /confidence/i.test(response)) {
|
|
362
|
+
confidence = 0.7;
|
|
363
|
+
}
|
|
364
|
+
else if (/low/i.test(response) && /confidence/i.test(response)) {
|
|
365
|
+
confidence = 0.4;
|
|
366
|
+
}
|
|
367
|
+
const requiresIteration = !allDeliverablesMet ||
|
|
368
|
+
overallScore < contract.constraints.minConfidence ||
|
|
369
|
+
(contract.constraints.requiredVerdict && !verdict);
|
|
370
|
+
let iterationFeedback;
|
|
371
|
+
if (requiresIteration && iteration < contract.constraints.maxIterations) {
|
|
372
|
+
const missing = deliverableResults
|
|
373
|
+
.filter((d, i) => contract.deliverables[i]?.required && !d.present)
|
|
374
|
+
.map((d) => d.deliverable);
|
|
375
|
+
if (missing.length > 0) {
|
|
376
|
+
iterationFeedback = `Missing required sections: ${missing.join(", ")}. Please provide these in your response.`;
|
|
377
|
+
}
|
|
378
|
+
else if (!verdict) {
|
|
379
|
+
iterationFeedback =
|
|
380
|
+
"Please provide a clear verdict: **[Approved]**, **[Concerns]**, or **[Rejected]** at the start of your Overall Assessment.";
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
iterationFeedback = `Review quality score (${(overallScore * 100).toFixed(0)}%) below threshold (${contract.constraints.minConfidence * 100}%). Please provide more detailed analysis.`;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
deliverableResults,
|
|
388
|
+
criteriaResults,
|
|
389
|
+
allDeliverablesMet,
|
|
390
|
+
allCriteriaPassed,
|
|
391
|
+
overallScore,
|
|
392
|
+
verdict,
|
|
393
|
+
confidence,
|
|
394
|
+
iteration,
|
|
395
|
+
requiresIteration,
|
|
396
|
+
iterationFeedback,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
export function decomposeToSubcontracts(contract, context) {
|
|
400
|
+
if (!contract.subcontractingAllowed) {
|
|
401
|
+
return [];
|
|
402
|
+
}
|
|
403
|
+
const subcontracts = [];
|
|
404
|
+
const parentId = contract.id;
|
|
405
|
+
const hasSecurityContent = context.decisions.some((d) => d.content.toLowerCase().includes("auth") ||
|
|
406
|
+
d.content.toLowerCase().includes("security") ||
|
|
407
|
+
d.content.toLowerCase().includes("permission") ||
|
|
408
|
+
d.content.toLowerCase().includes("encryption"));
|
|
409
|
+
if (hasSecurityContent || contract.scope.focusAreas.includes("security")) {
|
|
410
|
+
subcontracts.push({
|
|
411
|
+
id: `${parentId}-security`,
|
|
412
|
+
parentContractId: parentId,
|
|
413
|
+
specialization: "security",
|
|
414
|
+
focusAreas: [
|
|
415
|
+
"authentication",
|
|
416
|
+
"authorization",
|
|
417
|
+
"data protection",
|
|
418
|
+
"input validation",
|
|
419
|
+
],
|
|
420
|
+
deliverables: [
|
|
421
|
+
{
|
|
422
|
+
name: "Security Findings",
|
|
423
|
+
required: true,
|
|
424
|
+
description: "Security vulnerabilities or concerns identified",
|
|
425
|
+
validationMethod: "presence",
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
name: "Security Recommendations",
|
|
429
|
+
required: true,
|
|
430
|
+
description: "Specific security improvements",
|
|
431
|
+
validationMethod: "presence",
|
|
432
|
+
},
|
|
433
|
+
],
|
|
434
|
+
assignedModel: "o3",
|
|
435
|
+
status: ReviewContractStatus.DRAFT,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
if (contract.scope.contextSize.totalItems > 10) {
|
|
439
|
+
subcontracts.push({
|
|
440
|
+
id: `${parentId}-architecture`,
|
|
441
|
+
parentContractId: parentId,
|
|
442
|
+
specialization: "architecture",
|
|
443
|
+
focusAreas: ["modularity", "scalability", "maintainability", "patterns"],
|
|
444
|
+
deliverables: [
|
|
445
|
+
{
|
|
446
|
+
name: "Architectural Assessment",
|
|
447
|
+
required: true,
|
|
448
|
+
description: "Evaluation of architectural decisions",
|
|
449
|
+
validationMethod: "presence",
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
name: "Pattern Alignment",
|
|
453
|
+
required: true,
|
|
454
|
+
description: "Assessment of pattern usage",
|
|
455
|
+
validationMethod: "presence",
|
|
456
|
+
},
|
|
457
|
+
],
|
|
458
|
+
assignedModel: "gemini-3-pro-preview",
|
|
459
|
+
status: ReviewContractStatus.DRAFT,
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
subcontracts.push({
|
|
463
|
+
id: `${parentId}-completeness`,
|
|
464
|
+
parentContractId: parentId,
|
|
465
|
+
specialization: "completeness",
|
|
466
|
+
focusAreas: ["gaps", "edge cases", "error handling", "testing"],
|
|
467
|
+
deliverables: [
|
|
468
|
+
{
|
|
469
|
+
name: "Gap Analysis",
|
|
470
|
+
required: true,
|
|
471
|
+
description: "Identification of missing considerations",
|
|
472
|
+
validationMethod: "presence",
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
name: "Edge Cases",
|
|
476
|
+
required: false,
|
|
477
|
+
description: "Unaddressed edge cases",
|
|
478
|
+
validationMethod: "presence",
|
|
479
|
+
},
|
|
480
|
+
],
|
|
481
|
+
assignedModel: "gpt-5.2",
|
|
482
|
+
status: ReviewContractStatus.DRAFT,
|
|
483
|
+
});
|
|
484
|
+
return subcontracts;
|
|
485
|
+
}
|
|
486
|
+
export function aggregateSubcontractResults(subcontracts) {
|
|
487
|
+
const aggregatedFindings = [];
|
|
488
|
+
const aggregatedConcerns = [];
|
|
489
|
+
const aggregatedRecommendations = [];
|
|
490
|
+
let totalConfidence = 0;
|
|
491
|
+
let completedCount = 0;
|
|
492
|
+
for (const sc of subcontracts) {
|
|
493
|
+
if (sc.result) {
|
|
494
|
+
aggregatedFindings.push(...sc.result.findings.map((f) => `[${sc.specialization}] ${f}`));
|
|
495
|
+
aggregatedConcerns.push(...sc.result.concerns.map((c) => `[${sc.specialization}] ${c}`));
|
|
496
|
+
aggregatedRecommendations.push(...sc.result.recommendations.map((r) => `[${sc.specialization}] ${r}`));
|
|
497
|
+
totalConfidence += sc.result.confidence;
|
|
498
|
+
completedCount++;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
return {
|
|
502
|
+
aggregatedFindings,
|
|
503
|
+
aggregatedConcerns,
|
|
504
|
+
aggregatedRecommendations,
|
|
505
|
+
overallConfidence: completedCount > 0 ? totalConfidence / completedCount : 0,
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
export function buildContractAwarePrompt(contract, context, iteration = 1, previousValidation) {
|
|
509
|
+
const sections = [];
|
|
510
|
+
sections.push("# Peer Review Contract\n");
|
|
511
|
+
sections.push(`**Contract ID:** ${contract.id}`);
|
|
512
|
+
sections.push(`**Session:** ${contract.sessionId}`);
|
|
513
|
+
sections.push(`**Iteration:** ${iteration}/${contract.constraints.maxIterations}`);
|
|
514
|
+
sections.push("");
|
|
515
|
+
sections.push("## Contract Terms\n");
|
|
516
|
+
sections.push("You are bound by this review contract. Your response MUST include:\n");
|
|
517
|
+
for (const deliverable of contract.deliverables) {
|
|
518
|
+
const marker = deliverable.required ? "**[REQUIRED]**" : "[optional]";
|
|
519
|
+
sections.push(`- ${marker} **${deliverable.name}**: ${deliverable.description}`);
|
|
520
|
+
}
|
|
521
|
+
sections.push("");
|
|
522
|
+
sections.push("## Acceptance Criteria\n");
|
|
523
|
+
sections.push("Your review will be validated against:\n");
|
|
524
|
+
for (const criterion of contract.acceptanceCriteria) {
|
|
525
|
+
sections.push(`- ${criterion.criterion}`);
|
|
526
|
+
}
|
|
527
|
+
sections.push("");
|
|
528
|
+
if (previousValidation && previousValidation.iterationFeedback) {
|
|
529
|
+
sections.push("## ⚠️ Iteration Feedback\n");
|
|
530
|
+
sections.push(`**Previous review did not meet contract requirements.**\n`);
|
|
531
|
+
sections.push(previousValidation.iterationFeedback);
|
|
532
|
+
sections.push("");
|
|
533
|
+
const missingDeliverables = previousValidation.deliverableResults.filter((d, i) => contract.deliverables[i]?.required && !d.present);
|
|
534
|
+
if (missingDeliverables.length > 0) {
|
|
535
|
+
sections.push("**Missing deliverables:**");
|
|
536
|
+
for (const d of missingDeliverables) {
|
|
537
|
+
sections.push(`- ❌ ${d.deliverable}: ${d.evidence}`);
|
|
538
|
+
}
|
|
539
|
+
sections.push("");
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
sections.push("---\n");
|
|
543
|
+
sections.push("## Session Context for Review\n");
|
|
544
|
+
if (context.decisions.length > 0) {
|
|
545
|
+
sections.push("### Key Decisions Made\n");
|
|
546
|
+
context.decisions.forEach((d, i) => {
|
|
547
|
+
sections.push(`**Decision ${i + 1}:** ${d.content}`);
|
|
548
|
+
sections.push(`- *Timestamp:* ${d.timestamp}`);
|
|
549
|
+
sections.push("");
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
if (context.patterns.length > 0) {
|
|
553
|
+
sections.push("### Patterns Applied\n");
|
|
554
|
+
context.patterns.forEach((p, i) => {
|
|
555
|
+
sections.push(`${i + 1}. ${p.content}`);
|
|
556
|
+
});
|
|
557
|
+
sections.push("");
|
|
558
|
+
}
|
|
559
|
+
if (context.hypotheses.length > 0) {
|
|
560
|
+
sections.push("### Working Hypotheses\n");
|
|
561
|
+
context.hypotheses.forEach((h, i) => {
|
|
562
|
+
sections.push(`${i + 1}. ${h.content}`);
|
|
563
|
+
});
|
|
564
|
+
sections.push("");
|
|
565
|
+
}
|
|
566
|
+
if (context.blockers.length > 0) {
|
|
567
|
+
sections.push("### Open Blockers\n");
|
|
568
|
+
context.blockers.forEach((b, i) => {
|
|
569
|
+
sections.push(`${i + 1}. ${b.content}`);
|
|
570
|
+
});
|
|
571
|
+
sections.push("");
|
|
572
|
+
}
|
|
573
|
+
if (context.constraints.length > 0) {
|
|
574
|
+
sections.push("### Active Constraints\n");
|
|
575
|
+
context.constraints.forEach((c, i) => {
|
|
576
|
+
sections.push(`${i + 1}. ${c.content} (scope: ${c.scope})`);
|
|
577
|
+
});
|
|
578
|
+
sections.push("");
|
|
579
|
+
}
|
|
580
|
+
if (contract.scope.focusAreas.length > 0) {
|
|
581
|
+
sections.push("### Focus Areas\n");
|
|
582
|
+
sections.push("Pay particular attention to:\n");
|
|
583
|
+
contract.scope.focusAreas.forEach((area) => {
|
|
584
|
+
sections.push(`- **${area}**`);
|
|
585
|
+
});
|
|
586
|
+
sections.push("");
|
|
587
|
+
}
|
|
588
|
+
sections.push("---\n");
|
|
589
|
+
sections.push("## Required Response Format\n");
|
|
590
|
+
sections.push("Structure your response EXACTLY as follows:\n");
|
|
591
|
+
sections.push("```");
|
|
592
|
+
sections.push("### Overall Assessment");
|
|
593
|
+
sections.push("**[Approved/Concerns/Rejected].** [Your verdict and reasoning]");
|
|
594
|
+
sections.push("");
|
|
595
|
+
sections.push("### Architectural Coherence");
|
|
596
|
+
sections.push("[Your analysis of how decisions work together]");
|
|
597
|
+
sections.push("");
|
|
598
|
+
sections.push("### Key Strengths");
|
|
599
|
+
sections.push("- [Bullet point 1]");
|
|
600
|
+
sections.push("- [Bullet point 2]");
|
|
601
|
+
sections.push("");
|
|
602
|
+
sections.push("### Concerns");
|
|
603
|
+
sections.push("- [Bullet point 1]");
|
|
604
|
+
sections.push("- [Bullet point 2]");
|
|
605
|
+
sections.push("");
|
|
606
|
+
sections.push("### Recommendations");
|
|
607
|
+
sections.push("- [Actionable suggestion 1]");
|
|
608
|
+
sections.push("- [Actionable suggestion 2]");
|
|
609
|
+
sections.push("");
|
|
610
|
+
sections.push("### Confidence");
|
|
611
|
+
sections.push("[High/Medium/Low] - [Your reasoning for this confidence level]");
|
|
612
|
+
sections.push("```");
|
|
613
|
+
return sections.join("\n");
|
|
614
|
+
}
|
|
615
|
+
export const peerReviewContractTool = {
|
|
616
|
+
name: "peer_review_contract",
|
|
617
|
+
description: `Create a formal review contract using the Contractor Model pattern.
|
|
618
|
+
|
|
619
|
+
Transforms peer review into an accountable, verifiable process with:
|
|
620
|
+
- **Formalized Contract**: Explicit deliverables and acceptance criteria
|
|
621
|
+
- **Negotiation Phase**: Identify feasibility issues before execution
|
|
622
|
+
- **Quality Validation**: Self-validate until criteria met
|
|
623
|
+
- **Subcontracting**: Optional specialist reviews for complex sessions
|
|
624
|
+
|
|
625
|
+
Use this for high-stakes sessions where review quality matters.
|
|
626
|
+
|
|
627
|
+
Workflow:
|
|
628
|
+
1. peer_review_contract() → contract + negotiation analysis
|
|
629
|
+
2. If feasible: consult_llm with contract-aware prompt
|
|
630
|
+
3. validate_review_response() → check against acceptance criteria
|
|
631
|
+
4. If validation fails: iterate with feedback
|
|
632
|
+
5. capture_consultation_response() → persist validated finding`,
|
|
633
|
+
inputSchema: {
|
|
634
|
+
type: "object",
|
|
635
|
+
properties: {
|
|
636
|
+
focusAreas: {
|
|
637
|
+
type: "array",
|
|
638
|
+
items: { type: "string" },
|
|
639
|
+
description: 'Focus areas for review (e.g., ["security", "performance"])',
|
|
640
|
+
},
|
|
641
|
+
maxIterations: {
|
|
642
|
+
type: "number",
|
|
643
|
+
default: 3,
|
|
644
|
+
description: "Maximum validation iterations (default: 3)",
|
|
645
|
+
},
|
|
646
|
+
minConfidence: {
|
|
647
|
+
type: "number",
|
|
648
|
+
default: 0.7,
|
|
649
|
+
description: "Minimum confidence threshold 0-1 (default: 0.7)",
|
|
650
|
+
},
|
|
651
|
+
enableSubcontracting: {
|
|
652
|
+
type: "boolean",
|
|
653
|
+
default: false,
|
|
654
|
+
description: "Enable specialist subcontracts for complex sessions",
|
|
655
|
+
},
|
|
656
|
+
projectName: {
|
|
657
|
+
type: "string",
|
|
658
|
+
description: "Project name for Memory Bank persistence",
|
|
659
|
+
},
|
|
660
|
+
},
|
|
661
|
+
required: [],
|
|
662
|
+
},
|
|
663
|
+
};
|
|
664
|
+
export async function peerReviewContractHandler(args) {
|
|
665
|
+
const startTime = Date.now();
|
|
666
|
+
try {
|
|
667
|
+
const input = args;
|
|
668
|
+
const context = await extractFullSessionContext();
|
|
669
|
+
const contract = createReviewContract(context.sessionId, context, {
|
|
670
|
+
focusAreas: input.focusAreas,
|
|
671
|
+
maxIterations: input.maxIterations,
|
|
672
|
+
minConfidence: input.minConfidence,
|
|
673
|
+
enableSubcontracting: input.enableSubcontracting,
|
|
674
|
+
});
|
|
675
|
+
const negotiation = analyzeContractFeasibility(contract, context);
|
|
676
|
+
contract.status = negotiation.feasible
|
|
677
|
+
? ReviewContractStatus.APPROVED
|
|
678
|
+
: ReviewContractStatus.NEGOTIATING;
|
|
679
|
+
contract.auditLog.push({
|
|
680
|
+
timestamp: new Date().toISOString(),
|
|
681
|
+
event: "negotiation_complete",
|
|
682
|
+
details: {
|
|
683
|
+
feasible: negotiation.feasible,
|
|
684
|
+
issueCount: negotiation.issues.length,
|
|
685
|
+
},
|
|
686
|
+
});
|
|
687
|
+
const prompt = buildContractAwarePrompt(contract, context);
|
|
688
|
+
const subcontracts = decomposeToSubcontracts(contract, context);
|
|
689
|
+
const duration = Date.now() - startTime;
|
|
690
|
+
const estimatedTokens = estimateTokens(prompt);
|
|
691
|
+
const result = {
|
|
692
|
+
success: true,
|
|
693
|
+
contract,
|
|
694
|
+
negotiation,
|
|
695
|
+
prompt,
|
|
696
|
+
subcontracts: subcontracts.length > 0 ? subcontracts : undefined,
|
|
697
|
+
consultLlmCall: {
|
|
698
|
+
prompt,
|
|
699
|
+
model: "o3",
|
|
700
|
+
description: `Contract review: ${contract.id}`,
|
|
701
|
+
},
|
|
702
|
+
validation: {
|
|
703
|
+
tool: "validate_review_response",
|
|
704
|
+
description: "Call after receiving LLM response to validate against contract",
|
|
705
|
+
},
|
|
706
|
+
metadata: {
|
|
707
|
+
estimatedTokens,
|
|
708
|
+
duration,
|
|
709
|
+
contractId: contract.id,
|
|
710
|
+
},
|
|
711
|
+
};
|
|
712
|
+
return {
|
|
713
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
714
|
+
};
|
|
715
|
+
}
|
|
716
|
+
catch (error) {
|
|
717
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
718
|
+
return {
|
|
719
|
+
content: [
|
|
720
|
+
{
|
|
721
|
+
type: "text",
|
|
722
|
+
text: JSON.stringify({
|
|
723
|
+
success: false,
|
|
724
|
+
error: { code: "CONTRACT_ERROR", message: errorMessage },
|
|
725
|
+
}),
|
|
726
|
+
},
|
|
727
|
+
],
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
//# sourceMappingURL=peerReviewContract.js.map
|