scai 0.1.178 → 1.0.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/README.md +162 -267
- package/dist/__tests__/CommitSuggesterCmd.test.js +112 -0
- package/dist/__tests__/CommitSuggesterCmd.test.js.map +1 -0
- package/dist/__tests__/EvalReportCmd.test.js +645 -0
- package/dist/__tests__/EvalReportCmd.test.js.map +1 -0
- package/dist/__tests__/ModelCmd.test.js +64 -0
- package/dist/__tests__/ModelCmd.test.js.map +1 -0
- package/dist/__tests__/agents/agentActions.test.js +345 -0
- package/dist/__tests__/agents/agentActions.test.js.map +1 -0
- package/dist/__tests__/agents/agentFeedback.test.js +118 -0
- package/dist/__tests__/agents/agentFeedback.test.js.map +1 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js +74 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js.map +1 -0
- package/dist/__tests__/agents/agentLoop.test.js +1723 -0
- package/dist/__tests__/agents/agentLoop.test.js.map +1 -0
- package/dist/__tests__/agents/agentPolicyState.test.js +948 -0
- package/dist/__tests__/agents/agentPolicyState.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js +170 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js +129 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js +90 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js +289 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js +166 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js +139 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js +584 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js +23 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchShared.test.js +78 -0
- package/dist/__tests__/agents/agentSearchShared.test.js.map +1 -0
- package/dist/__tests__/agents/agentStateMachine.test.js +58 -0
- package/dist/__tests__/agents/agentStateMachine.test.js.map +1 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js +156 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentTools.test.js +69 -0
- package/dist/__tests__/agents/agentTools.test.js.map +1 -0
- package/dist/__tests__/agents/agentTransform.test.js +779 -0
- package/dist/__tests__/agents/agentTransform.test.js.map +1 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js +157 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js +75 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js.map +1 -0
- package/dist/__tests__/agents/decideNextAction.test.js +1662 -0
- package/dist/__tests__/agents/decideNextAction.test.js.map +1 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js +258 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js.map +1 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js +113 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js.map +1 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js +208 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js.map +1 -0
- package/dist/__tests__/agents/fileCheckStep.test.js +299 -0
- package/dist/__tests__/agents/fileCheckStep.test.js.map +1 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js +35 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/guardState.test.js +297 -0
- package/dist/__tests__/agents/guardState.test.js.map +1 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js +72 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js.map +1 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js +60 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js +207 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js.map +1 -0
- package/dist/__tests__/agents/prompting.test.js +363 -0
- package/dist/__tests__/agents/prompting.test.js.map +1 -0
- package/dist/__tests__/agents/readinessGateStep.test.js +180 -0
- package/dist/__tests__/agents/readinessGateStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextStep.test.js +56 -0
- package/dist/__tests__/agents/reasonNextStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js +284 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js.map +1 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js +170 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js.map +1 -0
- package/dist/__tests__/agents/resolveProgressState.test.js +526 -0
- package/dist/__tests__/agents/resolveProgressState.test.js.map +1 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js +50 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js +134 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js.map +1 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js +118 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js.map +1 -0
- package/dist/__tests__/agents/searchContext.test.js +97 -0
- package/dist/__tests__/agents/searchContext.test.js.map +1 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js +73 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js.map +1 -0
- package/dist/__tests__/agents/structuredOutput.test.js +45 -0
- package/dist/__tests__/agents/structuredOutput.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js +59 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js +92 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandIntentStep.test.js +237 -0
- package/dist/__tests__/agents/understandIntentStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandResumeContext.test.js +65 -0
- package/dist/__tests__/agents/understandResumeContext.test.js.map +1 -0
- package/dist/__tests__/agents/understandScope.test.js +227 -0
- package/dist/__tests__/agents/understandScope.test.js.map +1 -0
- package/dist/__tests__/agents/validateChangesStep.test.js +52 -0
- package/dist/__tests__/agents/validateChangesStep.test.js.map +1 -0
- package/dist/__tests__/askCommandTaskBinding.test.js +176 -0
- package/dist/__tests__/askCommandTaskBinding.test.js.map +1 -0
- package/dist/__tests__/commandVisibility.test.js +25 -0
- package/dist/__tests__/commandVisibility.test.js.map +1 -0
- package/dist/__tests__/config.devOutput.test.js +82 -0
- package/dist/__tests__/config.devOutput.test.js.map +1 -0
- package/dist/__tests__/currentContext.test.js +43 -0
- package/dist/__tests__/currentContext.test.js.map +1 -0
- package/dist/__tests__/daemonWorker.test.js +51 -0
- package/dist/__tests__/daemonWorker.test.js.map +1 -0
- package/dist/__tests__/dialogState.test.js +113 -0
- package/dist/__tests__/dialogState.test.js.map +1 -0
- package/dist/__tests__/evalCommands.test.js +506 -0
- package/dist/__tests__/evalCommands.test.js.map +1 -0
- package/dist/__tests__/evalCommandsSummary.test.js +68 -0
- package/dist/__tests__/evalCommandsSummary.test.js.map +1 -0
- package/dist/__tests__/example.test.js +1 -0
- package/dist/__tests__/example.test.js.map +1 -0
- package/dist/__tests__/factory.commitCommand.test.js +45 -0
- package/dist/__tests__/factory.commitCommand.test.js.map +1 -0
- package/dist/__tests__/factory.devOutputCommand.test.js +122 -0
- package/dist/__tests__/factory.devOutputCommand.test.js.map +1 -0
- package/dist/__tests__/factory.evalCommands.test.js +38 -0
- package/dist/__tests__/factory.evalCommands.test.js.map +1 -0
- package/dist/__tests__/factory.planCommand.test.js +35 -0
- package/dist/__tests__/factory.planCommand.test.js.map +1 -0
- package/dist/__tests__/factory.setupCommand.test.js +34 -0
- package/dist/__tests__/factory.setupCommand.test.js.map +1 -0
- package/dist/__tests__/factory.statusCommand.test.js +54 -0
- package/dist/__tests__/factory.statusCommand.test.js.map +1 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js +35 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js.map +1 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js +57 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js.map +1 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js +344 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js.map +1 -0
- package/dist/__tests__/index.modelStartup.test.js +24 -0
- package/dist/__tests__/index.modelStartup.test.js.map +1 -0
- package/dist/__tests__/indexCmd.test.js +85 -0
- package/dist/__tests__/indexCmd.test.js.map +1 -0
- package/dist/__tests__/indexSlashCommand.test.js +50 -0
- package/dist/__tests__/indexSlashCommand.test.js.map +1 -0
- package/dist/__tests__/ollamaService.test.js +103 -0
- package/dist/__tests__/ollamaService.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js +68 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js +68 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js +284 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js +1139 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js +146 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js +192 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js.map +1 -0
- package/dist/__tests__/repoIdentity.test.js +31 -0
- package/dist/__tests__/repoIdentity.test.js.map +1 -0
- package/dist/__tests__/resumeContext.test.js +87 -0
- package/dist/__tests__/resumeContext.test.js.map +1 -0
- package/dist/__tests__/resumeState.test.js +239 -0
- package/dist/__tests__/resumeState.test.js.map +1 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js +836 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js.map +1 -0
- package/dist/__tests__/shellDialogUi.test.js +52 -0
- package/dist/__tests__/shellDialogUi.test.js.map +1 -0
- package/dist/__tests__/shellSession.test.js +102 -0
- package/dist/__tests__/shellSession.test.js.map +1 -0
- package/dist/__tests__/statusOwner.test.js +215 -0
- package/dist/__tests__/statusOwner.test.js.map +1 -0
- package/dist/__tests__/testing/contextEval.test.js +244 -0
- package/dist/__tests__/testing/contextEval.test.js.map +1 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js +124 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js.map +1 -0
- package/dist/__tests__/testing/llmTraceSession.test.js +67 -0
- package/dist/__tests__/testing/llmTraceSession.test.js.map +1 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js +35 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js.map +1 -0
- package/dist/__tests__/testing/runDiagnosis.test.js +159 -0
- package/dist/__tests__/testing/runDiagnosis.test.js.map +1 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js +66 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js.map +1 -0
- package/dist/__tests__/testing/testCommands.test.js +53 -0
- package/dist/__tests__/testing/testCommands.test.js.map +1 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js +38 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js.map +1 -0
- package/dist/__tests__/utils/consolePresentation.test.js +105 -0
- package/dist/__tests__/utils/consolePresentation.test.js.map +1 -0
- package/dist/__tests__/utils/extractFileReferences.test.js +41 -0
- package/dist/__tests__/utils/extractFileReferences.test.js.map +1 -0
- package/dist/__tests__/utils/log.test.js +34 -0
- package/dist/__tests__/utils/log.test.js.map +1 -0
- package/dist/__tests__/utils/runtimeLogger.test.js +200 -0
- package/dist/__tests__/utils/runtimeLogger.test.js.map +1 -0
- package/dist/__tests__/utils/spinner.test.js +31 -0
- package/dist/__tests__/utils/spinner.test.js.map +1 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js +41 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js.map +1 -0
- package/dist/agent/actions/index.js +301 -0
- package/dist/agent/actions/index.js.map +1 -0
- package/dist/agent/actions/normalize.js +360 -0
- package/dist/agent/actions/normalize.js.map +1 -0
- package/dist/agent/actions/schemas.js +129 -0
- package/dist/agent/actions/schemas.js.map +1 -0
- package/dist/agent/evidence/index.js +320 -0
- package/dist/agent/evidence/index.js.map +1 -0
- package/dist/agent/feedback/index.js +187 -0
- package/dist/agent/feedback/index.js.map +1 -0
- package/dist/agent/finalization/index.js +35 -0
- package/dist/agent/finalization/index.js.map +1 -0
- package/dist/agent/index.js +126 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/logging/index.js +350 -0
- package/dist/agent/logging/index.js.map +1 -0
- package/dist/agent/persistence/boot.js +58 -0
- package/dist/agent/persistence/boot.js.map +1 -0
- package/dist/agent/persistence/currentTask.js +36 -0
- package/dist/agent/persistence/currentTask.js.map +1 -0
- package/dist/agent/persistence/hydrate.js +42 -0
- package/dist/agent/persistence/hydrate.js.map +1 -0
- package/dist/agent/persistence/index.js +15 -0
- package/dist/agent/persistence/index.js.map +1 -0
- package/dist/agent/persistence/snapshots.js +97 -0
- package/dist/agent/persistence/snapshots.js.map +1 -0
- package/dist/agent/persistence/steps.js +95 -0
- package/dist/agent/persistence/steps.js.map +1 -0
- package/dist/agent/persistence/tasks.js +195 -0
- package/dist/agent/persistence/tasks.js.map +1 -0
- package/dist/agent/persistence/turns.js +92 -0
- package/dist/agent/persistence/turns.js.map +1 -0
- package/dist/agent/policy/ambiguityResolution.js +226 -0
- package/dist/agent/policy/ambiguityResolution.js.map +1 -0
- package/dist/agent/policy/contracts.js +2 -0
- package/dist/agent/policy/contracts.js.map +1 -0
- package/dist/agent/policy/coveragePolicy.js +309 -0
- package/dist/agent/policy/coveragePolicy.js.map +1 -0
- package/dist/agent/policy/endDecisionPolicy.js +31 -0
- package/dist/agent/policy/endDecisionPolicy.js.map +1 -0
- package/dist/agent/policy/index.js +344 -0
- package/dist/agent/policy/index.js.map +1 -0
- package/dist/agent/policy/loopReview.js +778 -0
- package/dist/agent/policy/loopReview.js.map +1 -0
- package/dist/agent/policy/readinessPolicy.js +108 -0
- package/dist/agent/policy/readinessPolicy.js.map +1 -0
- package/dist/agent/policy/resolutionPipeline.js +356 -0
- package/dist/agent/policy/resolutionPipeline.js.map +1 -0
- package/dist/agent/policy/targetClassification.js +33 -0
- package/dist/agent/policy/targetClassification.js.map +1 -0
- package/dist/agent/prompting/actionChoice.js +90 -0
- package/dist/agent/prompting/actionChoice.js.map +1 -0
- package/dist/agent/prompting/finalAnswer.js +38 -0
- package/dist/agent/prompting/finalAnswer.js.map +1 -0
- package/dist/agent/prompting/index.js +14 -0
- package/dist/agent/prompting/index.js.map +1 -0
- package/dist/agent/prompting/plan.js +59 -0
- package/dist/agent/prompting/plan.js.map +1 -0
- package/dist/agent/prompting/transform.js +175 -0
- package/dist/agent/prompting/transform.js.map +1 -0
- package/dist/agent/prompting/understand.js +70 -0
- package/dist/agent/prompting/understand.js.map +1 -0
- package/dist/agent/read/freshness.js +29 -0
- package/dist/agent/read/freshness.js.map +1 -0
- package/dist/agent/read/fullReadPrompt.js +43 -0
- package/dist/agent/read/fullReadPrompt.js.map +1 -0
- package/dist/agent/read/index.js +140 -0
- package/dist/agent/read/index.js.map +1 -0
- package/dist/agent/read/persistence.js +88 -0
- package/dist/agent/read/persistence.js.map +1 -0
- package/dist/agent/read/summarizeReadEvidence.js +733 -0
- package/dist/agent/read/summarizeReadEvidence.js.map +1 -0
- package/dist/agent/read/targetResolution.js +126 -0
- package/dist/agent/read/targetResolution.js.map +1 -0
- package/dist/agent/resume/checkpoint.js +41 -0
- package/dist/agent/resume/checkpoint.js.map +1 -0
- package/dist/agent/runtime/lifecycle.js +67 -0
- package/dist/agent/runtime/lifecycle.js.map +1 -0
- package/dist/agent/runtime/progress.js +178 -0
- package/dist/agent/runtime/progress.js.map +1 -0
- package/dist/agent/runtime/runAgentLoop.js +402 -0
- package/dist/agent/runtime/runAgentLoop.js.map +1 -0
- package/dist/agent/runtime/runAgentPlanOnly.js +127 -0
- package/dist/agent/runtime/runAgentPlanOnly.js.map +1 -0
- package/dist/agent/runtime/understand.js +336 -0
- package/dist/agent/runtime/understand.js.map +1 -0
- package/dist/agent/search/batchPlanner.js +274 -0
- package/dist/agent/search/batchPlanner.js.map +1 -0
- package/dist/agent/search/candidateRetentionPolicy.js +184 -0
- package/dist/agent/search/candidateRetentionPolicy.js.map +1 -0
- package/dist/agent/search/directory.js +51 -0
- package/dist/agent/search/directory.js.map +1 -0
- package/dist/agent/search/exactTarget.js +151 -0
- package/dist/agent/search/exactTarget.js.map +1 -0
- package/dist/agent/search/fragment.js +110 -0
- package/dist/agent/search/fragment.js.map +1 -0
- package/dist/agent/search/index.js +166 -0
- package/dist/agent/search/index.js.map +1 -0
- package/dist/agent/search/laneClassifier.js +119 -0
- package/dist/agent/search/laneClassifier.js.map +1 -0
- package/dist/agent/search/limits.js +10 -0
- package/dist/agent/search/limits.js.map +1 -0
- package/dist/agent/search/ranking.js +22 -0
- package/dist/agent/search/ranking.js.map +1 -0
- package/dist/agent/search/regex.js +83 -0
- package/dist/agent/search/regex.js.map +1 -0
- package/dist/agent/search/routePolicy.js +11 -0
- package/dist/agent/search/routePolicy.js.map +1 -0
- package/dist/agent/search/searchContext.js +128 -0
- package/dist/agent/search/searchContext.js.map +1 -0
- package/dist/agent/search/semantic.js +113 -0
- package/dist/agent/search/semantic.js.map +1 -0
- package/dist/agent/search/semanticIndexSearch.js +202 -0
- package/dist/agent/search/semanticIndexSearch.js.map +1 -0
- package/dist/agent/search/shared.js +283 -0
- package/dist/agent/search/shared.js.map +1 -0
- package/dist/agent/search/shell.js +202 -0
- package/dist/agent/search/shell.js.map +1 -0
- package/dist/agent/search/snippetEvidence.js +57 -0
- package/dist/agent/search/snippetEvidence.js.map +1 -0
- package/dist/agent/search/types.js +2 -0
- package/dist/agent/search/types.js.map +1 -0
- package/dist/agent/state/index.js +99 -0
- package/dist/agent/state/index.js.map +1 -0
- package/dist/agent/state/memory.js +56 -0
- package/dist/agent/state/memory.js.map +1 -0
- package/dist/agent/structuredOutput/index.js +28 -0
- package/dist/agent/structuredOutput/index.js.map +1 -0
- package/dist/agent/tools/index.js +199 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/transform/index.js +519 -0
- package/dist/agent/transform/index.js.map +1 -0
- package/dist/agent/transform/syntax.js +49 -0
- package/dist/agent/transform/syntax.js.map +1 -0
- package/dist/agent/types.js +20 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agents/actionRegistry.js +114 -0
- package/dist/agents/actionRegistry.js.map +1 -0
- package/dist/agents/agent.js +5 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/agentActions.js +5 -0
- package/dist/agents/agentActions.js.map +1 -0
- package/dist/agents/agentEvidence.js +5 -0
- package/dist/agents/agentEvidence.js.map +1 -0
- package/dist/agents/agentFeedback.js +5 -0
- package/dist/agents/agentFeedback.js.map +1 -0
- package/dist/agents/agentLogging.js +5 -0
- package/dist/agents/agentLogging.js.map +1 -0
- package/dist/agents/agentLoop.js +5 -0
- package/dist/agents/agentLoop.js.map +1 -0
- package/dist/agents/agentMemory.js +5 -0
- package/dist/agents/agentMemory.js.map +1 -0
- package/dist/agents/agentPlanMode.js +5 -0
- package/dist/agents/agentPlanMode.js.map +1 -0
- package/dist/agents/agentPolicyState.js +5 -0
- package/dist/agents/agentPolicyState.js.map +1 -0
- package/dist/agents/agentProgress.js +93 -0
- package/dist/agents/agentProgress.js.map +1 -0
- package/dist/agents/agentSchemas.js +5 -0
- package/dist/agents/agentSchemas.js.map +1 -0
- package/dist/agents/agentSearchScoring.js +5 -0
- package/dist/agents/agentSearchScoring.js.map +1 -0
- package/dist/agents/agentStateMachine.js +5 -0
- package/dist/agents/agentStateMachine.js.map +1 -0
- package/dist/agents/agentTools.js +5 -0
- package/dist/agents/agentTools.js.map +1 -0
- package/dist/agents/agentTypes.js +5 -0
- package/dist/agents/agentTypes.js.map +1 -0
- package/dist/agents/agentUnderstand.js +5 -0
- package/dist/agents/agentUnderstand.js.map +1 -0
- package/dist/agents/analysisPlanGenStep.js +194 -17
- package/dist/agents/analysisPlanGenStep.js.map +1 -0
- package/dist/agents/answerOnlyCompletion.js +32 -0
- package/dist/agents/answerOnlyCompletion.js.map +1 -0
- package/dist/agents/collaboratorStep.js +1 -0
- package/dist/agents/collaboratorStep.js.map +1 -0
- package/dist/agents/decideNextAction.js +444 -0
- package/dist/agents/decideNextAction.js.map +1 -0
- package/dist/agents/deriveFocusFromSearchStep.js +83 -0
- package/dist/agents/deriveFocusFromSearchStep.js.map +1 -0
- package/dist/agents/evidenceVerifierStep.js +104 -13
- package/dist/agents/evidenceVerifierStep.js.map +1 -0
- package/dist/agents/fileCheckStep.js +381 -12
- package/dist/agents/fileCheckStep.js.map +1 -0
- package/dist/agents/giveUpEvaluatorStep.js +63 -0
- package/dist/agents/giveUpEvaluatorStep.js.map +1 -0
- package/dist/agents/guardPolicy.js +20 -0
- package/dist/agents/guardPolicy.js.map +1 -0
- package/dist/agents/guards/executionPolicyResolver.js +165 -0
- package/dist/agents/guards/executionPolicyResolver.js.map +1 -0
- package/dist/agents/guards/guardState.js +195 -0
- package/dist/agents/guards/guardState.js.map +1 -0
- package/dist/agents/guards/resolveProgressState.js +403 -0
- package/dist/agents/guards/resolveProgressState.js.map +1 -0
- package/dist/agents/infoPlanGenStep.js +66 -8
- package/dist/agents/infoPlanGenStep.js.map +1 -0
- package/dist/agents/integrateFeedbackStep.js +1 -0
- package/dist/agents/integrateFeedbackStep.js.map +1 -0
- package/dist/agents/iterationFileSelector.js +8 -7
- package/dist/agents/iterationFileSelector.js.map +1 -0
- package/dist/agents/mainAgentActivityLog.js +85 -0
- package/dist/agents/mainAgentActivityLog.js.map +1 -0
- package/dist/agents/mainAgentHeuristics.js +173 -0
- package/dist/agents/mainAgentHeuristics.js.map +1 -0
- package/dist/agents/mainAgentVerify.js +159 -0
- package/dist/agents/mainAgentVerify.js.map +1 -0
- package/dist/agents/objectiveEvaluatorStep.js +103 -0
- package/dist/agents/objectiveEvaluatorStep.js.map +1 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js +108 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js.map +1 -0
- package/dist/agents/readinessGateStep.js +95 -9
- package/dist/agents/readinessGateStep.js.map +1 -0
- package/dist/agents/reasonNextStep.js +9 -8
- package/dist/agents/reasonNextStep.js.map +1 -0
- package/dist/agents/reasonNextTaskStep.js +267 -144
- package/dist/agents/reasonNextTaskStep.js.map +1 -0
- package/dist/agents/researchPlanGenStep.js +61 -25
- package/dist/agents/researchPlanGenStep.js.map +1 -0
- package/dist/agents/resolveAgentTargetClassification.js +5 -0
- package/dist/agents/resolveAgentTargetClassification.js.map +1 -0
- package/dist/agents/resolveExecutionModeStep.js +1 -0
- package/dist/agents/resolveExecutionModeStep.js.map +1 -0
- package/dist/agents/resolveExplicitTargetsStep.js +74 -0
- package/dist/agents/resolveExplicitTargetsStep.js.map +1 -0
- package/dist/agents/routingDecisionStep.js +58 -11
- package/dist/agents/routingDecisionStep.js.map +1 -0
- package/dist/agents/scopeClassificationStep.js +66 -3
- package/dist/agents/scopeClassificationStep.js.map +1 -0
- package/dist/agents/selectRelevantSourcesStep.js +13 -5
- package/dist/agents/selectRelevantSourcesStep.js.map +1 -0
- package/dist/agents/structuralPreloadStep.js +3 -4
- package/dist/agents/structuralPreloadStep.js.map +1 -0
- package/dist/agents/transformPlanGenStep.js +105 -18
- package/dist/agents/transformPlanGenStep.js.map +1 -0
- package/dist/agents/understandIntentStep.js +237 -17
- package/dist/agents/understandIntentStep.js.map +1 -0
- package/dist/agents/validateChangesStep.js +16 -2
- package/dist/agents/validateChangesStep.js.map +1 -0
- package/dist/agents/writeFileStep.js +1 -0
- package/dist/agents/writeFileStep.js.map +1 -0
- package/dist/commands/AskCmd.js +139 -44
- package/dist/commands/AskCmd.js.map +1 -0
- package/dist/commands/BackupCmd.js +1 -0
- package/dist/commands/BackupCmd.js.map +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js.map +1 -0
- package/dist/commands/CommitSuggesterCmd.js +55 -13
- package/dist/commands/CommitSuggesterCmd.js.map +1 -0
- package/dist/commands/DaemonCmd.js +52 -14
- package/dist/commands/DaemonCmd.js.map +1 -0
- package/dist/commands/DeleteIndex.js +1 -0
- package/dist/commands/DeleteIndex.js.map +1 -0
- package/dist/commands/EvalReportCmd.js +374 -0
- package/dist/commands/EvalReportCmd.js.map +1 -0
- package/dist/commands/FindCmd.js +1 -0
- package/dist/commands/FindCmd.js.map +1 -0
- package/dist/commands/GitCmd.js +1 -0
- package/dist/commands/GitCmd.js.map +1 -0
- package/dist/commands/IndexCmd.js +11 -79
- package/dist/commands/IndexCmd.js.map +1 -0
- package/dist/commands/InspectCmd.js +1 -0
- package/dist/commands/InspectCmd.js.map +1 -0
- package/dist/commands/ModelCmd.js +24 -0
- package/dist/commands/ModelCmd.js.map +1 -0
- package/dist/commands/ReadlineSingleton.js +1 -0
- package/dist/commands/ReadlineSingleton.js.map +1 -0
- package/dist/commands/ResetDbCmd.js +18 -1
- package/dist/commands/ResetDbCmd.js.map +1 -0
- package/dist/commands/ReviewCmd.js +1 -0
- package/dist/commands/ReviewCmd.js.map +1 -0
- package/dist/commands/StatusCmd.js +22 -0
- package/dist/commands/StatusCmd.js.map +1 -0
- package/dist/commands/StopDaemonCmd.js +1 -0
- package/dist/commands/StopDaemonCmd.js.map +1 -0
- package/dist/commands/SummaryCmd.js +1 -0
- package/dist/commands/SummaryCmd.js.map +1 -0
- package/dist/commands/SwitchCmd.js +9 -15
- package/dist/commands/SwitchCmd.js.map +1 -0
- package/dist/commands/TasksCmd.js +142 -57
- package/dist/commands/TasksCmd.js.map +1 -0
- package/dist/commands/TestCmd.js +66 -0
- package/dist/commands/TestCmd.js.map +1 -0
- package/dist/commands/WorkflowCmd.js +1 -0
- package/dist/commands/WorkflowCmd.js.map +1 -0
- package/dist/commands/commandVisibility.js +27 -0
- package/dist/commands/commandVisibility.js.map +1 -0
- package/dist/commands/evalCommands.js +1337 -0
- package/dist/commands/evalCommands.js.map +1 -0
- package/dist/commands/factory.js +206 -38
- package/dist/commands/factory.js.map +1 -0
- package/dist/config.js +62 -11
- package/dist/config.js.map +1 -0
- package/dist/constants.js +21 -3
- package/dist/constants.js.map +1 -0
- package/dist/context.js +33 -32
- package/dist/context.js.map +1 -0
- package/dist/daemon/daemonQueues.js +1 -20
- package/dist/daemon/daemonQueues.js.map +1 -0
- package/dist/daemon/daemonWorker.js +26 -37
- package/dist/daemon/daemonWorker.js.map +1 -0
- package/dist/daemon/generateSummaries.js +1 -0
- package/dist/daemon/generateSummaries.js.map +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js.map +1 -0
- package/dist/daemon/runIndexingBatch.js +1 -0
- package/dist/daemon/runIndexingBatch.js.map +1 -0
- package/dist/daemon/runKgBatch.js +9 -1
- package/dist/daemon/runKgBatch.js.map +1 -0
- package/dist/db/backup.js +1 -0
- package/dist/db/backup.js.map +1 -0
- package/dist/db/client.js +18 -3
- package/dist/db/client.js.map +1 -0
- package/dist/db/fileIndex.js +110 -152
- package/dist/db/fileIndex.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJava.js +1 -0
- package/dist/db/functionExtractors/extractFromJava.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJs.js +1 -0
- package/dist/db/functionExtractors/extractFromJs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromTs.js +1 -0
- package/dist/db/functionExtractors/extractFromTs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromXML.js +1 -0
- package/dist/db/functionExtractors/extractFromXML.js.map +1 -0
- package/dist/db/functionExtractors/index.js +1 -0
- package/dist/db/functionExtractors/index.js.map +1 -0
- package/dist/db/functionIndex.js +9 -0
- package/dist/db/functionIndex.js.map +1 -0
- package/dist/db/schema.js +314 -99
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sqlTemplates.js +1 -0
- package/dist/db/sqlTemplates.js.map +1 -0
- package/dist/fileRules/builtins.js +1 -0
- package/dist/fileRules/builtins.js.map +1 -0
- package/dist/fileRules/classifyFile.js +1 -0
- package/dist/fileRules/classifyFile.js.map +1 -0
- package/dist/fileRules/codeAllowedExtensions.js +1 -0
- package/dist/fileRules/codeAllowedExtensions.js.map +1 -0
- package/dist/fileRules/detectFileType.js +1 -0
- package/dist/fileRules/detectFileType.js.map +1 -0
- package/dist/fileRules/fileClassifier.js +1 -0
- package/dist/fileRules/fileClassifier.js.map +1 -0
- package/dist/fileRules/fileExceptions.js +1 -0
- package/dist/fileRules/fileExceptions.js.map +1 -0
- package/dist/fileRules/ignoredExtensions.js +1 -0
- package/dist/fileRules/ignoredExtensions.js.map +1 -0
- package/dist/fileRules/ignoredPaths.js +48 -5
- package/dist/fileRules/ignoredPaths.js.map +1 -0
- package/dist/fileRules/queryTokenRules.js +176 -0
- package/dist/fileRules/queryTokenRules.js.map +1 -0
- package/dist/fileRules/searchPathClassification.js +58 -0
- package/dist/fileRules/searchPathClassification.js.map +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js.map +1 -0
- package/dist/fileRules/stopWords.js +9 -0
- package/dist/fileRules/stopWords.js.map +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js.map +1 -0
- package/dist/git/commitSummary.js +227 -0
- package/dist/git/commitSummary.js.map +1 -0
- package/dist/github/api.js +1 -0
- package/dist/github/api.js.map +1 -0
- package/dist/github/auth.js +1 -0
- package/dist/github/auth.js.map +1 -0
- package/dist/github/github.js +1 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/githubAuthCheck.js +1 -0
- package/dist/github/githubAuthCheck.js.map +1 -0
- package/dist/github/postComments.js +1 -0
- package/dist/github/postComments.js.map +1 -0
- package/dist/github/repo.js +15 -24
- package/dist/github/repo.js.map +1 -0
- package/dist/github/token.js +1 -0
- package/dist/github/token.js.map +1 -0
- package/dist/github/types.js +1 -0
- package/dist/github/types.js.map +1 -0
- package/dist/index.js +318 -37
- package/dist/index.js.map +1 -0
- package/dist/lib/generate.js +264 -20
- package/dist/lib/generate.js.map +1 -0
- package/dist/lib/generateFolderCapsules.js +1 -0
- package/dist/lib/generateFolderCapsules.js.map +1 -0
- package/dist/lib/ollamaModelPolicy.js +59 -0
- package/dist/lib/ollamaModelPolicy.js.map +1 -0
- package/dist/lib/spinner.js +29 -9
- package/dist/lib/spinner.js.map +1 -0
- package/dist/modelSetup.js +25 -78
- package/dist/modelSetup.js.map +1 -0
- package/dist/pipeline/modules/changeLogModule.js +10 -1
- package/dist/pipeline/modules/changeLogModule.js.map +1 -0
- package/dist/pipeline/modules/cleanupModule.js +1 -0
- package/dist/pipeline/modules/cleanupModule.js.map +1 -0
- package/dist/pipeline/modules/codeTransformModule.js +10 -16
- package/dist/pipeline/modules/codeTransformModule.js.map +1 -0
- package/dist/pipeline/modules/commentModule.js +12 -0
- package/dist/pipeline/modules/commentModule.js.map +1 -0
- package/dist/pipeline/modules/commitSuggesterModule.js +82 -12
- package/dist/pipeline/modules/commitSuggesterModule.js.map +1 -0
- package/dist/pipeline/modules/contextReviewModule.js +12 -1
- package/dist/pipeline/modules/contextReviewModule.js.map +1 -0
- package/dist/pipeline/modules/dialogAnswerModule.js +58 -0
- package/dist/pipeline/modules/dialogAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/fileSearchModule.js +5 -143
- package/dist/pipeline/modules/fileSearchModule.js.map +1 -0
- package/dist/pipeline/modules/finalAnswerModule.js +1176 -151
- package/dist/pipeline/modules/finalAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/kgModule.js +18 -1
- package/dist/pipeline/modules/kgModule.js.map +1 -0
- package/dist/pipeline/modules/planAnswerModule.js +99 -0
- package/dist/pipeline/modules/planAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/readFileModule.js +300 -0
- package/dist/pipeline/modules/readFileModule.js.map +1 -0
- package/dist/pipeline/modules/reviewModule.js +10 -1
- package/dist/pipeline/modules/reviewModule.js.map +1 -0
- package/dist/pipeline/modules/searchDbModule.js +159 -0
- package/dist/pipeline/modules/searchDbModule.js.map +1 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js +62 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js.map +1 -0
- package/dist/pipeline/modules/searchModuleShared.js +71 -0
- package/dist/pipeline/modules/searchModuleShared.js.map +1 -0
- package/dist/pipeline/modules/searchRegexModule.js +59 -0
- package/dist/pipeline/modules/searchRegexModule.js.map +1 -0
- package/dist/pipeline/modules/semanticAnalysisModule.js +185 -28
- package/dist/pipeline/modules/semanticAnalysisModule.js.map +1 -0
- package/dist/pipeline/modules/summaryModule.js +11 -1
- package/dist/pipeline/modules/summaryModule.js.map +1 -0
- package/dist/pipeline/registry/moduleRegistry.js +9 -0
- package/dist/pipeline/registry/moduleRegistry.js.map +1 -0
- package/dist/pipeline/runModulePipeline.js +1 -0
- package/dist/pipeline/runModulePipeline.js.map +1 -0
- package/dist/scripts/dbScriptSupport.js +172 -0
- package/dist/scripts/dbScriptSupport.js.map +1 -0
- package/dist/scripts/dbcheck.js +173 -267
- package/dist/scripts/dbcheck.js.map +1 -0
- package/dist/scripts/dboverview.js +161 -0
- package/dist/scripts/dboverview.js.map +1 -0
- package/dist/scripts/migrateDb.js +1 -0
- package/dist/scripts/migrateDb.js.map +1 -0
- package/dist/search/SearchOrchestrator.js +928 -0
- package/dist/search/SearchOrchestrator.js.map +1 -0
- package/dist/search/sharedRankingPolicy.js +283 -0
- package/dist/search/sharedRankingPolicy.js.map +1 -0
- package/dist/setup/reindexOwner.js +97 -0
- package/dist/setup/reindexOwner.js.map +1 -0
- package/dist/setup/setupOwner.js +100 -0
- package/dist/setup/setupOwner.js.map +1 -0
- package/dist/shell/dialogUi.js +81 -0
- package/dist/shell/dialogUi.js.map +1 -0
- package/dist/shellSession.js +126 -0
- package/dist/shellSession.js.map +1 -0
- package/dist/status/statusOwner.js +239 -0
- package/dist/status/statusOwner.js.map +1 -0
- package/dist/testing/contextEval.js +514 -0
- package/dist/testing/contextEval.js.map +1 -0
- package/dist/testing/fixtures/transform/small-file.input.js +5 -0
- package/dist/testing/fixtures/transform/small-file.input.js.map +1 -0
- package/dist/testing/harnessArtifacts.js +112 -0
- package/dist/testing/harnessArtifacts.js.map +1 -0
- package/dist/testing/llmTraceSession.js +67 -0
- package/dist/testing/llmTraceSession.js.map +1 -0
- package/dist/testing/registerDevCliCommands.js +43 -0
- package/dist/testing/registerDevCliCommands.js.map +1 -0
- package/dist/testing/runDiagnosis.js +248 -0
- package/dist/testing/runDiagnosis.js.map +1 -0
- package/dist/testing/runtimeLogReader.js +144 -0
- package/dist/testing/runtimeLogReader.js.map +1 -0
- package/dist/testing/testCommands.js +35 -303
- package/dist/testing/testCommands.js.map +1 -0
- package/dist/testing/testRegistry.js +233 -0
- package/dist/testing/testRegistry.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/buildContextualPrompt.js +26 -75
- package/dist/utils/buildContextualPrompt.js.map +1 -0
- package/dist/utils/changeLogPrompt.js +1 -0
- package/dist/utils/changeLogPrompt.js.map +1 -0
- package/dist/utils/checkModel.js +17 -92
- package/dist/utils/checkModel.js.map +1 -0
- package/dist/utils/commentMap.js +1 -0
- package/dist/utils/commentMap.js.map +1 -0
- package/dist/utils/compileSearchQuery.js +23 -9
- package/dist/utils/compileSearchQuery.js.map +1 -0
- package/dist/utils/consolePresentation.js +208 -0
- package/dist/utils/consolePresentation.js.map +1 -0
- package/dist/utils/contentUtils.js +17 -2
- package/dist/utils/contentUtils.js.map +1 -0
- package/dist/utils/debugContext.js +1 -0
- package/dist/utils/debugContext.js.map +1 -0
- package/dist/utils/dialogState.js +201 -0
- package/dist/utils/dialogState.js.map +1 -0
- package/dist/utils/editor.js +1 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/executionEvidence.js +50 -0
- package/dist/utils/executionEvidence.js.map +1 -0
- package/dist/utils/extractFileReferences.js +140 -6
- package/dist/utils/extractFileReferences.js.map +1 -0
- package/dist/utils/fileEvidenceCache.js +50 -0
- package/dist/utils/fileEvidenceCache.js.map +1 -0
- package/dist/utils/fileTree.js +1 -0
- package/dist/utils/fileTree.js.map +1 -0
- package/dist/utils/loadRelevantFolderCapsules.js +35 -5
- package/dist/utils/loadRelevantFolderCapsules.js.map +1 -0
- package/dist/utils/log.js +10 -1
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/normalizeData.js +1 -0
- package/dist/utils/normalizeData.js.map +1 -0
- package/dist/utils/ollamaModelStatus.js +28 -0
- package/dist/utils/ollamaModelStatus.js.map +1 -0
- package/dist/utils/ollamaService.js +294 -0
- package/dist/utils/ollamaService.js.map +1 -0
- package/dist/utils/outputFormatter.js +1 -0
- package/dist/utils/outputFormatter.js.map +1 -0
- package/dist/utils/parseTaggedContent.js +1 -0
- package/dist/utils/parseTaggedContent.js.map +1 -0
- package/dist/utils/planActions.js +27 -46
- package/dist/utils/planActions.js.map +1 -0
- package/dist/utils/promptBuilderHelper.js +1 -0
- package/dist/utils/promptBuilderHelper.js.map +1 -0
- package/dist/utils/promptLogHelper.js +29 -13
- package/dist/utils/promptLogHelper.js.map +1 -0
- package/dist/utils/queryAnchors.js +71 -0
- package/dist/utils/queryAnchors.js.map +1 -0
- package/dist/utils/repoIdentity.js +82 -0
- package/dist/utils/repoIdentity.js.map +1 -0
- package/dist/utils/repoKey.js +1 -0
- package/dist/utils/repoKey.js.map +1 -0
- package/dist/utils/resolveTargetsToFiles.js +1 -0
- package/dist/utils/resolveTargetsToFiles.js.map +1 -0
- package/dist/utils/resumeContext.js +219 -0
- package/dist/utils/resumeContext.js.map +1 -0
- package/dist/utils/resumeState.js +310 -0
- package/dist/utils/resumeState.js.map +1 -0
- package/dist/utils/rollingPlan.js +118 -0
- package/dist/utils/rollingPlan.js.map +1 -0
- package/dist/utils/runQueryWithDaemonControl.js +11 -3
- package/dist/utils/runQueryWithDaemonControl.js.map +1 -0
- package/dist/utils/runtimeLogger.js +252 -0
- package/dist/utils/runtimeLogger.js.map +1 -0
- package/dist/utils/sanitizeQuery.js +1 -0
- package/dist/utils/sanitizeQuery.js.map +1 -0
- package/dist/utils/sharedUtils.js +1 -0
- package/dist/utils/sharedUtils.js.map +1 -0
- package/dist/utils/sleep.js +1 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/splitCodeIntoChunk.js +1 -0
- package/dist/utils/splitCodeIntoChunk.js.map +1 -0
- package/dist/utils/time.js +66 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/verifyFocusPreference.js +107 -0
- package/dist/utils/verifyFocusPreference.js.map +1 -0
- package/dist/utils/vscode.js +1 -0
- package/dist/utils/vscode.js.map +1 -0
- package/dist/workflow/workflowResolver.js +1 -0
- package/dist/workflow/workflowResolver.js.map +1 -0
- package/dist/workflow/workflowRunner.js +1 -0
- package/dist/workflow/workflowRunner.js.map +1 -0
- package/package.json +3 -3
- package/dist/agents/MainAgent.js +0 -1886
- package/dist/agents/contextReviewStep.js +0 -101
- package/dist/agents/finalPlanGenStep.js +0 -107
- package/dist/agents/structuralAnalysisStep.js +0 -46
- package/dist/agents/validationAnalysisStep.js +0 -87
- package/dist/pipeline/modules/chunkManagerModule.js +0 -24
- package/dist/pipeline/modules/cleanGeneratedTestsModule.js +0 -33
- package/dist/pipeline/modules/fileReaderModule.js +0 -72
- package/dist/pipeline/modules/gatherInfoModule.js +0 -181
- package/dist/pipeline/modules/generateTestsModule.js +0 -68
- package/dist/pipeline/modules/preserveCodeModule.js +0 -195
- package/dist/pipeline/modules/refactorModule.js +0 -40
- package/dist/pipeline/modules/repairTestsModule.js +0 -48
- package/dist/pipeline/modules/runTestsModule.js +0 -37
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileIndex.js","sourceRoot":"","sources":["../../src/db/fileIndex.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Owns indexed file discovery and DB-backed search primitives for the CLI.\n *\n * Why this file exists:\n * - FTS-backed search primitives need one place that talks to SQLite\n * - search orchestration should call small helpers here instead of mixing DB policy everywhere\n * - public reindex setup now lives in `setup/reindexOwner.ts`, so this file stays at the primitive layer\n */\nimport path from 'path';\nimport { getDbForRepo } from '../db/client.js';\n\nimport * as sqlTemplates from '../db/sqlTemplates.js';\nimport type { AnalysisState, FileRow, FtsResult, SearchResult } from '../types.js';\nimport { RELATED_FILES_LIMIT } from '../constants.js';\nimport { generate } from '../lib/generate.js';\nimport { log } from '../utils/log.js';\nimport { logInputOutput } from '../utils/promptLogHelper.js';\nimport { compileSearchQuery } from '../utils/compileSearchQuery.js';\nimport { extractTaggedContent } from '../utils/parseTaggedContent.js';\nimport { STOP_WORDS } from \"../fileRules/stopWords.js\";\n\nconst QUERY_OPERATOR_TOKENS = new Set([\"or\", \"and\", \"not\", \"near\"]);\nconst GENERIC_FTS_TERMS = new Set([\n \"file\",\n \"files\",\n \"code\",\n \"source\",\n \"repository\",\n \"result\",\n \"results\",\n \"output\",\n \"entry\",\n \"database\",\n \"configuration\",\n]);\nconst MAX_PRIMARY_TERMS = 12;\nconst MAX_FALLBACK_TERMS = 10;\nconst MIN_PATTERN_SYMBOL_LEN = 4;\nconst MAX_PATTERN_SYMBOL_ROWS = Math.max(8, Math.floor(RELATED_FILES_LIMIT / 2));\ntype SearchIntent = NonNullable<AnalysisState[\"intent\"]>;\n\n/* -------------------------------------------------- */\n/* QUERY API */\n/* -------------------------------------------------- */\r\n\r\nexport function queryFiles(\r\n safeQuery: string,\r\n limit = 10\r\n): FileRow[] {\r\n const db = getDbForRepo();\r\n return db\r\n .prepare(sqlTemplates.queryFilesTemplate)\r\n .all(safeQuery, limit) as FileRow[];\r\n}\r\n\r\n/* -------------------------------------------------- */\r\n/* SEMANTIC SEARCH */\r\n/* -------------------------------------------------- */\r\n\r\nexport async function semanticSearchFiles(\n originalQuery: string,\n topK = 5,\n intent: Partial<SearchIntent> = {}\n): Promise<SearchResult[]> {\n const db = getDbForRepo();\n const summarizeRows = (rows: FtsResult[]) =>\n rows.map((r) => `${r.filename} | bm25Score=${r.bm25Score}`);\n\n // Broad semantic search stays separate from exact target resolution.\n // Example query: \"add comments in parser module\" -> model emits OR-joined FTS terms.\n // Example query: \"add comments in parser module\" -> model emits OR-joined FTS terms.\n const primaryFtsQuery = await generatePrimaryFtsQuery(originalQuery, intent);\n const primaryExpansionTerms = buildQueryExpansionTerms(originalQuery, [primaryFtsQuery]);\n\n logInputOutput(\"semanticSearchFiles LLM primary query\", \"output\", {\n originalQuery,\n intent,\n ftsQuery: primaryFtsQuery,\n });\n\r\n const primaryResults = db\n .prepare(sqlTemplates.searchFilesTemplate)\n .all(primaryFtsQuery, RELATED_FILES_LIMIT) as FtsResult[];\n\n logInputOutput(\"semanticSearchFiles initial results\", \"output\", {\n stage: \"primary\",\n originalQuery,\n ftsQuery: primaryFtsQuery,\n resultCount: primaryResults.length,\n results: summarizeRows(primaryResults),\n });\n\n if (primaryResults.length > 0) {\n return rankAndMap(\n new Map(primaryResults.map(r => [r.id, r])),\n topK,\n primaryExpansionTerms\n );\n }\n\r\n // 3) If primary returns nothing, try diversified fallback queries.\n const fallbackQuery = await generateFallbackFtsQueries(\n originalQuery,\n primaryFtsQuery,\n intent\n );\n\r\n logInputOutput(\"semanticSearchFiles LLM fallback query\", \"output\", {\r\n originalQuery,\r\n primaryFtsQuery,\r\n fallbackQuery,\r\n });\r\n\r\n if (fallbackQuery && fallbackQuery.length > 0) {\n const fallbackExpansionTerms = buildQueryExpansionTerms(\n originalQuery,\n [primaryFtsQuery, ...fallbackQuery]\n );\n const stmt = db.prepare(sqlTemplates.searchFilesTemplate);\n\n for (const query of fallbackQuery) {\n const rows = stmt.all(query, RELATED_FILES_LIMIT) as FtsResult[];\n\n logInputOutput(\"semanticSearchFiles initial results\", \"output\", {\n stage: \"fallback\",\n originalQuery,\n ftsQuery: query,\n resultCount: rows.length,\n results: summarizeRows(rows),\n });\n\n if (rows.length > 0) {\n return rankAndMap(\n new Map(rows.map(r => [r.id, r])),\n topK,\n fallbackExpansionTerms\n );\n }\n }\n }\n\r\n return [];\n}\n\nexport function resolveTargetRows(\n db: ReturnType<typeof getDbForRepo>,\n targetFiles: string[]\n): { resolvedRows: FtsResult[]; unresolvedTargets: string[] } {\n const resolvedRows: FtsResult[] = [];\n const unresolvedTargets: string[] = [];\n const seenPaths = new Set<string>();\n\n const byExactPath = db.prepare(`\n SELECT\n id,\n path,\n filename,\n summary,\n type,\n 0 AS bm25Score,\n last_modified AS lastModified\n FROM files\n WHERE REPLACE(path, '\\\\\\\\', '/') = ?\n LIMIT 1\n `);\n\n const byFilename = db.prepare(`\n SELECT\n id,\n path,\n filename,\n summary,\n type,\n 0 AS bm25Score,\n last_modified AS lastModified\n FROM files\n WHERE LOWER(filename) = LOWER(?)\n `);\n\n const byFilenameLike = db.prepare(`\n SELECT\n id,\n path,\n filename,\n summary,\n type,\n 0 AS bm25Score,\n last_modified AS lastModified\n FROM files\n WHERE LOWER(filename) LIKE '%' || LOWER(?) || '%'\n `);\n\n // Resolution strategy per target:\n // exact path -> path suffix -> exact filename.\n // If multiple matches exist, mark unresolved to avoid ambiguous selection.\n for (const rawTarget of targetFiles) {\n const target = String(rawTarget ?? \"\").trim();\n if (!target) continue;\n\n const normalizedTarget = target.replace(/\\\\/g, \"/\");\n let matches = byExactPath.all(normalizedTarget) as FtsResult[];\n\n if (matches.length === 0 && normalizedTarget.includes(\"/\")) {\n matches = db.prepare(`\n SELECT\n id,\n path,\n filename,\n summary,\n type,\n 0 AS bm25Score,\n last_modified AS lastModified\n FROM files\n WHERE LOWER(REPLACE(path, '\\\\\\\\', '/')) LIKE '%' || LOWER(?)\n `).all(`/${normalizedTarget}`) as FtsResult[];\n }\n\n if (matches.length === 0) {\n matches = byFilename.all(path.basename(normalizedTarget)) as FtsResult[];\n }\n\n if (matches.length === 0) {\n const targetName = path.basename(normalizedTarget);\n const targetKey = normalizeFileLookupToken(targetName);\n if (targetKey) {\n const candidates = byFilenameLike.all(targetName) as FtsResult[];\n matches = candidates.filter((row) => {\n const filenameKey = normalizeFileLookupToken(row.filename);\n const stemKey = normalizeFileLookupToken(path.parse(row.filename).name);\n return filenameKey === targetKey || stemKey === targetKey;\n });\n }\n }\n\n if (matches.length !== 1) {\n unresolvedTargets.push(target);\n continue;\n }\n\n const row = matches[0];\n if (seenPaths.has(row.path)) continue;\n seenPaths.add(row.path);\n resolvedRows.push(row);\n }\n\n return { resolvedRows, unresolvedTargets };\n}\n\nfunction normalizeFileLookupToken(value: string): string {\n return String(value ?? \"\").toLowerCase().replace(/[^a-z0-9]/g, \"\").trim();\n}\n\nfunction normalizeSymbolLookupToken(value: string): string {\n return String(value ?? \"\").toLowerCase().replace(/[^a-z0-9]/g, \"\").trim();\n}\n\nfunction buildSymbolSearchForms(rawSymbol: string): string[] {\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol) return [];\n\n const forms = [symbol];\n const normalized = normalizeSymbolLookupToken(symbol);\n if (normalized && normalized !== symbol.toLowerCase()) {\n forms.push(normalized);\n }\n return dedupeNormalizedStrings(forms);\n}\n\nexport function resolveSymbolRows(\n db: ReturnType<typeof getDbForRepo>,\n targetSymbols: string[]\n): FtsResult[] {\n if (targetSymbols.length === 0) return [];\n\n const rows: FtsResult[] = [];\n const seenPaths = new Set<string>();\n\n const exactSymbolStmt = db.prepare(`\n SELECT DISTINCT\n f.id,\n f.path,\n f.filename,\n f.summary,\n f.type,\n 0 AS bm25Score,\n f.last_modified AS lastModified\n FROM files f\n LEFT JOIN functions fn ON fn.file_id = f.id\n LEFT JOIN graph_classes gc ON gc.file_id = f.id\n WHERE LOWER(fn.name) = LOWER(?)\n OR LOWER(gc.name) = LOWER(?)\n `);\n\n const normalizedSymbolStmt = db.prepare(`\n SELECT DISTINCT\n f.id,\n f.path,\n f.filename,\n f.summary,\n f.type,\n 0 AS bm25Score,\n f.last_modified AS lastModified\n FROM files f\n LEFT JOIN functions fn ON fn.file_id = f.id\n LEFT JOIN graph_classes gc ON gc.file_id = f.id\n WHERE LOWER(REPLACE(REPLACE(REPLACE(fn.name, '_', ''), '-', ''), ' ', '')) = LOWER(?)\n OR LOWER(REPLACE(REPLACE(REPLACE(gc.name, '_', ''), '-', ''), ' ', '')) = LOWER(?)\n `);\n\n const normalizedFileStemStmt = db.prepare(`\n SELECT DISTINCT\n f.id,\n f.path,\n f.filename,\n f.summary,\n f.type,\n 0 AS bm25Score,\n f.last_modified AS lastModified\n FROM files f\n WHERE LOWER(\n REPLACE(\n REPLACE(\n REPLACE(\n CASE\n WHEN INSTR(f.filename, '.') > 0 THEN SUBSTR(f.filename, 1, INSTR(f.filename, '.') - 1)\n ELSE f.filename\n END,\n '_',\n ''\n ),\n '-',\n ''\n ),\n ' ',\n ''\n )\n ) = LOWER(?)\n `);\n\n for (const rawSymbol of targetSymbols) {\n // Resolve exact symbol names first, then normalized identifier forms\n // (e.g. \"semantic analysis module\" -> \"semanticanalysismodule\").\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol) continue;\n\n const symbolForms = buildSymbolSearchForms(symbol);\n const candidateRows = new Map<string, FtsResult>();\n\n for (const form of symbolForms) {\n const exactMatches = exactSymbolStmt.all(form, form) as FtsResult[];\n for (const row of exactMatches) {\n candidateRows.set(row.path, row);\n }\n }\n\n const normalizedSymbol = normalizeSymbolLookupToken(symbol);\n if (normalizedSymbol) {\n const normalizedMatches = normalizedSymbolStmt.all(\n normalizedSymbol,\n normalizedSymbol\n ) as FtsResult[];\n for (const row of normalizedMatches) {\n candidateRows.set(row.path, row);\n }\n\n const filenameMatches = normalizedFileStemStmt.all(\n normalizedSymbol\n ) as FtsResult[];\n for (const row of filenameMatches) {\n candidateRows.set(row.path, row);\n }\n }\n\n for (const row of candidateRows.values()) {\n if (seenPaths.has(row.path)) continue;\n seenPaths.add(row.path);\n rows.push(row);\n }\n }\n\n return rows;\n}\n\nexport function resolveSymbolRowsByPattern(\n db: ReturnType<typeof getDbForRepo>,\n targetSymbols: string[]\n): FtsResult[] {\n // Broad fallback for symbol lookup when exact resolution fails.\n // Guarded to avoid noisy matches from weak tokens (e.g. \"Can\" or tiny fragments).\n if (targetSymbols.length === 0) return [];\n\n const rows: FtsResult[] = [];\n const seenPaths = new Set<string>();\n const candidatePatterns = new Set<string>();\n const candidateParts = new Set<string>();\n\n for (const rawSymbol of targetSymbols) {\n if (!isEligiblePatternSymbol(rawSymbol)) continue;\n for (const pattern of buildSymbolLikePatterns(rawSymbol)) {\n candidatePatterns.add(pattern);\n }\n for (const part of splitSymbolParts(rawSymbol)) {\n if (part.length >= MIN_PATTERN_SYMBOL_LEN) candidateParts.add(part);\n }\n }\n\n if (candidatePatterns.size === 0 && candidateParts.size === 0) {\n return [];\n }\n\n const patternStmt = db.prepare(`\n SELECT DISTINCT\n f.id,\n f.path,\n f.filename,\n f.summary,\n f.type,\n 0 AS bm25Score,\n f.last_modified AS lastModified\n FROM files f\n LEFT JOIN files_fts fts ON f.id = fts.rowid\n LEFT JOIN functions fn ON fn.file_id = f.id\n LEFT JOIN graph_classes gc ON gc.file_id = f.id\n WHERE LOWER(COALESCE(fn.name, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(gc.name, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(f.filename, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(f.path, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(f.summary, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(fts.content_text, '')) LIKE LOWER(?)\n LIMIT ?\n `);\n\n const partStmt = db.prepare(`\n SELECT DISTINCT\n f.id,\n f.path,\n f.filename,\n f.summary,\n f.type,\n 0 AS bm25Score,\n f.last_modified AS lastModified\n FROM files f\n LEFT JOIN files_fts fts ON f.id = fts.rowid\n LEFT JOIN functions fn ON fn.file_id = f.id\n LEFT JOIN graph_classes gc ON gc.file_id = f.id\n WHERE LOWER(COALESCE(fn.name, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(gc.name, '')) LIKE LOWER(?)\n OR LOWER(COALESCE(fts.content_text, '')) LIKE LOWER(?)\n LIMIT ?\n `);\n\n for (const pattern of candidatePatterns) {\n const likePattern = `%${escapeSqlLikeTerm(pattern)}%`;\n const matches = patternStmt.all(\n likePattern,\n likePattern,\n likePattern,\n likePattern,\n likePattern,\n likePattern,\n MAX_PATTERN_SYMBOL_ROWS\n ) as FtsResult[];\n for (const row of matches) {\n if (seenPaths.has(row.path)) continue;\n seenPaths.add(row.path);\n rows.push(row);\n }\n }\n\n for (const part of candidateParts) {\n const likePattern = `%${escapeSqlLikeTerm(part)}%`;\n const matches = partStmt.all(\n likePattern,\n likePattern,\n likePattern,\n MAX_PATTERN_SYMBOL_ROWS\n ) as FtsResult[];\n for (const row of matches) {\n if (seenPaths.has(row.path)) continue;\n seenPaths.add(row.path);\n rows.push(row);\n }\n }\n\n return rows.slice(0, MAX_PATTERN_SYMBOL_ROWS);\n}\n\nfunction splitSymbolParts(rawSymbol: string): string[] {\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol) return [];\n\n const withCamelBreaks = symbol.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\");\n const parts = withCamelBreaks\n .split(/[^A-Za-z0-9]+/)\n .map((part) => part.toLowerCase().trim())\n .filter(Boolean);\n\n return Array.from(new Set(parts));\n}\n\nfunction buildSymbolLikePatterns(rawSymbol: string): string[] {\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol) return [];\n\n const patterns = new Set<string>();\n const compact = normalizeSymbolLookupToken(symbol);\n const parts = splitSymbolParts(symbol);\n\n if (compact.length >= MIN_PATTERN_SYMBOL_LEN) patterns.add(compact);\n if (parts.length > 0) {\n const compactParts = parts.join(\"\");\n if (compactParts.length >= MIN_PATTERN_SYMBOL_LEN) patterns.add(compactParts);\n if (parts.length >= 2) patterns.add(parts.join(\"%\"));\n }\n\n return Array.from(patterns);\n}\n\nfunction isEligiblePatternSymbol(rawSymbol: string): boolean {\n // Allows broad pattern matching only for identifier-like tokens.\n // Example: \"CanvasManager\" -> true, \"can\" -> false.\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol || symbol.length < MIN_PATTERN_SYMBOL_LEN) return false;\n\n const lowered = symbol.toLowerCase();\n if (STOP_WORDS.has(lowered) || QUERY_OPERATOR_TOKENS.has(lowered)) return false;\n\n const looksLikeIdentifier =\n /[a-z][A-Z]/.test(symbol) ||\n /[A-Z]{2,}[a-z]/.test(symbol) ||\n symbol.includes(\"_\") ||\n /[0-9]/.test(symbol) ||\n /(step|module|cmd|service|controller|handler|manager)$/i.test(symbol);\n\n if (!looksLikeIdentifier && /^[a-z]+$/.test(symbol) && symbol.length < 8) return false;\n return true;\n}\n\nfunction isLikelyTargetSymbol(rawSymbol: string): boolean {\n // Pre-filter targetSymbols before any symbol resolution.\n // Example: \"ChangeLogUpdateCmd\" -> true, \"What\" -> false.\n const symbol = String(rawSymbol ?? \"\").trim();\n if (!symbol || symbol.length < 3) return false;\n\n const lowered = symbol.toLowerCase();\n if (STOP_WORDS.has(lowered) || QUERY_OPERATOR_TOKENS.has(lowered)) return false;\n\n const looksLikeIdentifier =\n /[a-z][A-Z]/.test(symbol) ||\n /[A-Z]{2,}[a-z]/.test(symbol) ||\n symbol.includes(\"_\") ||\n /[0-9]/.test(symbol) ||\n /(step|module|cmd|service|controller|handler|manager)$/i.test(symbol);\n\n if (!looksLikeIdentifier && /^[A-Z][a-z]+$/.test(symbol)) return false;\n return true;\n}\n\nfunction escapeSqlLikeTerm(value: string): string {\n return String(value ?? \"\").replace(/[%_]/g, \"\");\n}\n\nfunction mergeRows(...groups: FtsResult[][]): FtsResult[] {\n // Keep deterministic priority from call order and remove duplicates by path.\n // Example: if file target and symbol target resolve same file, return it once.\n const out: FtsResult[] = [];\n const seenPaths = new Set<string>();\n for (const group of groups) {\n for (const row of group) {\n if (seenPaths.has(row.path)) continue;\n seenPaths.add(row.path);\n out.push(row);\n }\n }\n return out;\n}\n\r\n/* -------------------------------------------------- */\r\n/* LLM → FTS QUERY GENERATION (TAG-BASED) */\r\n/* -------------------------------------------------- */\r\n\r\nasync function generatePrimaryFtsQuery(\n userQuery: string,\n intent: Partial<SearchIntent> = {}\n): Promise<string> {\n const prompt = `\r\nYou are generating a SQLite FTS query for searching a source code repository.\r\n\r\nThe user query may refer to:\r\n- High-level intent\r\n- Domain terminology\r\n- Specific filenames, file types, or configuration files\r\n\r\nInput:\r\n\"${userQuery}\"\r\n\r\nTask:\r\n1. Extract high-level intent terms\r\n2. Expand to related domain-specific terminology\r\n3. Expand to likely filenames, config files, or structural artifacts if relevant\r\n4. Combine ALL useful terms into ONE OR-joined FTS query\r\n\r\nRules:\r\n- Output ONLY the OR-joined terms\r\n- Max 12 total terms\r\n- Use OR between terms\r\n- Include filenames when relevant\r\n- No explanations\r\n- No natural language sentences\r\n\r\nWrap the result in <FILE_CONTENT> tags.\r\n\r\n<FILE_CONTENT>\r\nterm1 OR term2 OR term3\r\n</FILE_CONTENT>\r\n`.trim();\r\n\r\n // Model-generated query is always normalized by enforceFtsQueryPolicy.\n // Example: \"code* OR file*\" + target file -> keeps anchored file term first.\n try {\n const response = await generate({ content: prompt, query: \"\" }, {\n caller: \"fileIndex.generatePrimaryFtsQuery\",\n inputContext: {\n userQuery,\n intent,\n },\n });\n const rawText = String(response.data ?? \"\");\n\n const { content } = extractTaggedContent(rawText, \"FILE_CONTENT\");\n const normalized = enforceFtsQueryPolicy(userQuery, content, MAX_PRIMARY_TERMS, intent);\n logInputOutput(\"fileIndex.generatePrimaryFtsQuery\", \"output\", {\n callId: response.trace?.callId,\n userQuery,\n normalizedQuery: normalized,\n });\n return normalized;\n } catch (err) {\n return enforceFtsQueryPolicy(userQuery, userQuery, MAX_PRIMARY_TERMS, intent);\n }\n}\n\nasync function generateFallbackFtsQueries(\n userQuery: string,\n failedQuery: string,\n intent: Partial<SearchIntent> = {}\n): Promise<string[] | null> {\n const prompt = `\r\nYou are generating fallback SQLite FTS queries for a source code repository search.\r\n\r\nOriginal user query:\r\n\"${userQuery}\"\r\n\r\nPrimary FTS query returned ZERO results:\r\n\"${failedQuery}\"\r\n\r\nTask:\r\nGenerate 3–5 independent FTS queries (MAX 5).\r\n\r\nFor each query:\r\n1. Think at a different abstraction level (intent-level, domain-level, structural-level).\r\n2. Include filenames, file types, modules, config files, or symbols when relevant.\r\n3. Use a single OR-joined expression.\r\n4. Max 10 terms per query.\r\n\r\nRules:\r\n- Avoid natural language sentences\r\n- No explanations\r\n- No commentary\r\n- Each line must be one complete OR expression\r\n\r\nOutput format (STRICT):\r\n<FILE_CONTENT>\r\nquery1\r\nquery2\r\nquery3\r\nquery4\r\nquery5\r\n</FILE_CONTENT>\r\n`.trim();\r\n\r\n try {\n const response = await generate({ content: prompt, query: \"\" }, {\n caller: \"fileIndex.generateFallbackFtsQueries\",\n inputContext: {\n userQuery,\n failedQuery,\n intent,\n },\n });\n const rawText = String(response.data ?? \"\");\r\n\r\n const { content } = extractTaggedContent(rawText, \"FILE_CONTENT\");\r\n\r\n // Each candidate fallback line is sanitized/anchored the same way as primary.\n const subQueries = content\n .split(/\\r?\\n/)\n .map(q => enforceFtsQueryPolicy(userQuery, q.trim(), MAX_FALLBACK_TERMS, intent))\n .filter(Boolean)\n .slice(0, 5);\n\r\n if (!subQueries.length) {\r\n throw new Error(\"No fallback subqueries generated\");\r\n }\r\n\r\n logInputOutput(\"fileIndex.generateFallbackFtsQueries\", \"output\", {\n callId: response.trace?.callId,\n userQuery,\n failedQuery,\n subQueries,\n });\n return subQueries;\n } catch (err) {\r\n log(\r\n `⚠️ [semanticSearchFiles] Fallback FTS generation failed: ${String(err)}`\r\n );\r\n return null;\r\n }\r\n}\r\n\r\n/* -------------------------------------------------- */\r\n/* PLANNER SEARCH */\r\n/* -------------------------------------------------- */\r\n\r\nexport async function plannerSearchFiles(\n originalQuery: string,\n query: string,\n topK = 5\n): Promise<SearchResult[]> {\n const db = getDbForRepo();\n const seen = new Map<number, FtsResult>();\n const usedQueries: string[] = [];\n\n const compiledPrimary = compileSearchQuery({ query, mode: \"fts\" });\n const safeQuery = compiledPrimary.fts.expression;\n if (safeQuery) usedQueries.push(safeQuery);\n const primaryResults = safeQuery\n ? (db.prepare(sqlTemplates.searchFilesTemplate)\n .all(safeQuery, RELATED_FILES_LIMIT) as FtsResult[])\n : [];\n\r\n primaryResults.forEach(r => seen.set(r.id, r));\r\n\r\n logInputOutput(\"plannerSearchFiles primary FTS\", \"input\", {\n safeQuery,\n count: primaryResults.length,\n });\n\n if (primaryResults.length === 0) {\n const stmt = db.prepare(sqlTemplates.searchFilesTemplate);\n const llmPrimaryQuery = await generatePrimaryFtsQuery(originalQuery);\n const llmFallbackQueries = await generateFallbackFtsQueries(\n originalQuery,\n llmPrimaryQuery || safeQuery || originalQuery\n );\n\n const candidateQueries: string[] = [];\n const pushCandidate = (q: string | null | undefined) => {\n if (!q) return;\n const sanitized = compileSearchQuery({ query: q, mode: \"fts\" }).fts.expression;\n if (!sanitized) return;\n if (sanitized === safeQuery) return;\n if (candidateQueries.includes(sanitized)) return;\n candidateQueries.push(sanitized);\n usedQueries.push(sanitized);\n };\n\n pushCandidate(llmPrimaryQuery);\n (llmFallbackQueries ?? []).forEach(pushCandidate);\n\n // Keep legacy planner expansion as final fallback if LLM query generation did not add anything useful.\n if (candidateQueries.length === 0) {\n pushCandidate(await expandQueryWithModel(originalQuery));\n }\n\n for (const candidateQuery of candidateQueries) {\n const rows = stmt.all(candidateQuery, RELATED_FILES_LIMIT) as FtsResult[];\n\n logInputOutput(\"plannerSearchFiles expanded FTS\", \"output\", {\n stage: \"llm-expanded\",\n originalQuery,\n ftsQuery: candidateQuery,\n resultCount: rows.length,\n });\n\n rows.forEach(r => {\n if (!seen.has(r.id)) seen.set(r.id, r);\n });\n\n if (seen.size > 0) break;\n }\n }\n\n if (seen.size === 0) return [];\n return rankAndMap(\n seen,\n topK,\n buildQueryExpansionTerms(originalQuery, usedQueries)\n );\n}\n\r\n/* -------------------------------------------------- */\r\n/* HELPERS */\r\n/* -------------------------------------------------- */\r\n\r\nfunction rankAndMap(\n seen: Map<number, FtsResult>,\n topK: number,\n queryExpansionTerms: string[] = []\n): SearchResult[] {\n // Lower BM25 is better in SQLite FTS, so ascending sort gives best matches first.\n return Array.from(seen.values())\n .sort((a, b) => (a.bm25Score ?? 0) - (b.bm25Score ?? 0))\n .slice(0, topK)\r\n .map(r => ({\r\n id: r.id,\r\n path: r.path,\r\n filename: r.filename,\r\n summary: r.summary,\r\n type: r.type,\n lastModified: r.lastModified,\n bm25Score: r.bm25Score,\n queryExpansionTerms,\n }));\n}\n\n/**\n * Builds a deduped token list used as retrieval metadata for downstream steps.\n * Example:\n * - original: \"update fileIndex.ts logging\"\n * - queries: [\"\\\"fileIndex.ts\\\" OR logging*\"]\n * - output contains: [\"update\", \"fileindex\", \"ts\", \"logging\"]\n */\nfunction buildQueryExpansionTerms(originalQuery: string, queries: string[]): string[] {\n const terms = new Set<string>();\n const addTokens = (text: string) => {\n for (const token of tokenizeQueryTerms(text)) {\n if (!QUERY_OPERATOR_TOKENS.has(token)) {\n terms.add(token);\n }\n }\n };\n\n addTokens(originalQuery);\n for (const query of queries) addTokens(query);\n return Array.from(terms);\n}\n\n/**\n * Applies strict normalization to an LLM-generated FTS query:\n * 1) sanitize, 2) split into OR terms, 3) add anchors, 4) drop generic noise,\n * 5) dedupe, 6) cap term count.\n * Example:\n * - user: \"change semanticSearchFiles in fileIndex.ts\"\n * - candidate: \"code* OR file* OR output*\"\n * - output: \"\\\"fileIndex.ts\\\" OR semanticsearchfiles* OR output*\"\n */\nfunction enforceFtsQueryPolicy(\n userQuery: string,\n candidateQuery: string,\n maxTerms: number,\n intent: Partial<SearchIntent> = {}\n): string {\n const candidateTerms = compileSearchQuery({\n query: candidateQuery,\n intent,\n mode: \"fts\",\n maxTerms,\n }).fts.terms;\n const prioritizedAnchors = buildAnchorTerms(userQuery, intent);\n const hasAnchors = prioritizedAnchors.length > 0;\n\n const filtered = candidateTerms.filter(term => {\n const normalized = normalizeFtsTerm(term);\n if (!normalized || QUERY_OPERATOR_TOKENS.has(normalized)) return false;\n if (hasAnchors && GENERIC_FTS_TERMS.has(normalized)) return false;\n return true;\n });\n\n const merged = dedupeTerms([...prioritizedAnchors, ...filtered]);\n return merged\n .slice(0, maxTerms)\n .map(term => `${normalizeFtsTerm(term)}*`)\n .join(\" OR \");\n}\n\n/**\n * Normalizes an FTS term for stable comparisons by removing quotes/wildcards.\n * Example: \"\\\"fileIndex.ts\\\"\" -> \"fileindex.ts\", \"Module*\" -> \"module\"\n */\nfunction normalizeFtsTerm(term: string): string {\n return term.toLowerCase().replace(/[^a-z0-9_]/g, \"\").trim();\n}\n\n/**\n * Dedupes terms using normalized keys while preserving first-seen order.\n * Example: [\"code*\", \"CODE*\", \"\\\"code\\\"\"] -> [\"code*\"]\n */\nfunction dedupeTerms(terms: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const term of terms) {\n const key = normalizeFtsTerm(term);\n if (!key || seen.has(key)) continue;\n seen.add(key);\n out.push(term);\n }\n return out;\n}\n\n/**\n * Extracts high-signal anchors from user text (explicit filenames + likely symbols).\n * Example:\n * - user: \"update semanticSearchFiles in fileIndex.ts\"\n * - output includes: [\"\\\"fileIndex.ts\\\"\", \"semanticsearchfiles*\"]\n */\nfunction buildAnchorTerms(userQuery: string, intent: Partial<SearchIntent> = {}): string[] {\n const compiled = compileSearchQuery({ query: userQuery, intent, mode: \"fts\" });\n const fileTerms = compiled.anchors.files.flatMap(fileRef =>\n compileSearchQuery({ query: path.basename(fileRef), mode: \"fts\", maxTerms: 8 }).fts.terms\n );\n const symbolTerms = compiled.anchors.symbols.flatMap(symbol =>\n compileSearchQuery({ query: symbol, mode: \"fts\", maxTerms: 8 }).fts.terms\n );\n return dedupeTerms([...fileTerms, ...symbolTerms]);\n}\n\nfunction dedupeNormalizedStrings(tokens: string[]): string[] {\n // Lightweight normalization only (trim + slash normalization + case-insensitive dedupe).\n // Example: [\" FileIndex.ts \", \"fileindex.ts\"] -> [\"FileIndex.ts\"].\n const out: string[] = [];\n const seen = new Set<string>();\n for (const token of tokens) {\n if (typeof token !== \"string\") continue;\n const normalized = token.trim().replace(/\\\\/g, \"/\");\n if (!normalized) continue;\n const key = normalized.toLowerCase();\n if (seen.has(key)) continue;\n seen.add(key);\n out.push(normalized);\n }\n return out;\n}\n\n/**\n * Tokenizes text into lowercase alphanumeric terms for query expansion metadata.\n * Example: \"\\\"fileIndex.ts\\\" OR semanticsearchfiles*\" -> [\"fileindex\", \"ts\", \"semanticsearchfiles\"]\n */\nfunction tokenizeQueryTerms(text: string): string[] {\n const matches = text.toLowerCase().match(/[a-z_][a-z0-9_]{1,}/g) ?? [];\n return Array.from(new Set(matches));\n}\n\nasync function expandQueryWithModel(query: string): Promise<string | null> {\n const prompt = `\r\nReturn concrete search terms likely to appear in source code.\r\n\r\nWrap the result in <FILE_CONTENT> tags.\r\n\r\nQuestion:\r\n\"${query}\"\r\n`.trim();\r\n\r\n try {\n const response = await generate({ content: prompt, query: \"\" }, {\n caller: \"fileIndex.expandQueryWithModel\",\n inputContext: {\n query,\n },\n });\n const rawText = String(response.data ?? \"\");\n\n const { content } = extractTaggedContent(rawText, \"FILE_CONTENT\");\n const expanded = compileSearchQuery({ query: content, mode: \"fts\" }).fts.expression;\n logInputOutput(\"fileIndex.expandQueryWithModel\", \"output\", {\n callId: response.trace?.callId,\n query,\n expandedQuery: expanded,\n });\n return expanded;\n } catch {\n return null;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractFromJava.js","sourceRoot":"","sources":["../../../src/db/functionExtractors/extractFromJava.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAAe,EACf,MAAc;IAEd,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErF,MAAM,SAAS,GAAqD,EAAE,CAAC;QACvE,MAAM,OAAO,GAOR,EAAE,CAAC;QAER,wDAAwD;QACxD,SAAS,QAAQ,CAAC,IAAS,EAAE,eAAwB;YACnD,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,UAAU;YACV,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAChG,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;gBAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEvG,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAC1D,IAAI,SAAS;oBAAE,SAAS,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,uBAAuB;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAChF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC;gBAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChG,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7F,OAAO;YACT,CAAC;YAED,oBAAoB;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;wBAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;;wBACtE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEd,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC;gBAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,GAAG,CAAC,YAAY,SAAS,CAAC,MAAM,gBAAgB,OAAO,CAAC,MAAM,eAAe,QAAQ,EAAE,CAAC,CAAC;QAEzF,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAwB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEtD,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBACzD,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBAC1D,MAAM,mBAAmB,GAAG,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;gBAErE,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACH,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;wBACjC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAA+B,CAAC;wBAC7E,OAAO,MAAM,EAAE,EAAE,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,SAAS,CAAC;oBAAC,CAAC;gBAC/B,CAAC,CAAC;gBAEF,MAAM,iBAAiB,GAAG,CAAC,MAAmC,EAAE,EAAE;oBAChE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;wBAAE,OAAO;oBAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC9B,IAAI,CAAC,GAAG;4BAAE,SAAS;wBACnB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;wBAC9B,IAAI,CAAC,KAAK;4BAAE,SAAS;wBAErB,MAAM,eAAe,GACnB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS;4BACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS;4BACpD,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;wBAE/B,IAAI,CAAC;4BACH,mBAAmB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC1G,CAAC;wBAAC,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC;gBACH,CAAC,CAAC;gBAEF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,QAAQ,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxG,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEnC,2CAA2C;QAC3C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC;gBACrC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ;gBACzB,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC;gBAC/B,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAC3B,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE;gBACzB,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,EAAE,CAAC,SAAS;aACxB,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;oBACjC,WAAW,EAAE,MAAM;oBACnB,gBAAgB,EAAE,cAAc;oBAChC,WAAW,EAAE,UAAU;oBACvB,gBAAgB,EAAE,EAAE,CAAC,SAAS;oBAC9B,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;gBACH,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;YAED,8BAA8B;YAC9B,MAAM,SAAS,GAAG,kCAAkC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACzE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEpB,MAAM,cAAc,GAAG,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;gBACrD,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;oBACjC,WAAW,EAAE,UAAU;oBACvB,gBAAgB,EAAE,EAAE,CAAC,SAAS;oBAC9B,WAAW,EAAE,UAAU;oBACvB,gBAAgB,EAAE,cAAc;oBAChC,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC;gBACvC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;gBAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;gBAC1B,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,SAAS,GAAG,CAAC,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;oBACjC,WAAW,EAAE,MAAM;oBACnB,gBAAgB,EAAE,cAAc;oBAChC,WAAW,EAAE,OAAO;oBACpB,gBAAgB,EAAE,GAAG,CAAC,SAAS;oBAC/B,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;gBACH,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;oBACjC,WAAW,EAAE,OAAO;oBACpB,gBAAgB,EAAE,GAAG,CAAC,SAAS;oBAC/B,WAAW,EAAE,OAAO;oBACpB,gBAAgB,EAAE,cAAc,GAAG,CAAC,UAAU,EAAE;oBAChD,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,kCAAkC,CAAC;QACvD,IAAI,QAAQ,CAAC;QACb,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa;gBAAE,SAAS;YAC7B,MAAM,cAAc,GAAG,YAAY,aAAa,EAAE,CAAC;YACnD,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;gBACjC,WAAW,EAAE,MAAM;gBACnB,gBAAgB,EAAE,cAAc;gBAChC,WAAW,EAAE,OAAO;gBACpB,gBAAgB,EAAE,cAAc;gBAChC,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,6BAA6B,QAAQ,KAAK,SAAS,CAAC,MAAM,aAAa,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC;IAEd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;QACvD,GAAG,CAAC,QAAS,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC;YAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { parse } from 'java-parser';\r\nimport path from 'path';\r\nimport { ExtractedFunction, KnowledgeGraph, KnowledgeGraphInput } from '../../types.js';\r\nimport { log } from '../../utils/log.js';\r\nimport { getDbForRepo } from '../client.js';\r\nimport {\r\n markFileAsSkippedTemplate,\r\n markFileAsExtractedTemplate,\r\n markFileAsFailedTemplate,\r\n insertFunctionTemplate,\r\n insertGraphClassTemplate,\r\n insertEdgeTemplate,\r\n insertGraphEntityTagTemplate,\r\n insertGraphTagTemplate,\r\n selectGraphTagIdTemplate,\r\n} from '../sqlTemplates.js';\r\nimport { kgModule } from '../../pipeline/modules/kgModule.js';\r\nimport { BUILTINS } from '../../fileRules/builtins.js';\r\nimport { getUniqueId } from '../../utils/sharedUtils.js';\r\n\r\nexport async function extractFromJava(\r\n filePath: string,\r\n content: string,\r\n fileId: number\r\n): Promise<boolean> {\r\n const db = getDbForRepo();\r\n const normalizedPath = path.normalize(filePath).replace(/\\\\/g, '/');\r\n\r\n try {\r\n const cst = parse(content);\r\n log(`🧩 First-level CST node types:`, cst.children ? Object.keys(cst.children) : []);\r\n\r\n const functions: Array<ExtractedFunction & { unique_id: string }> = [];\r\n const classes: Array<{\r\n name: string;\r\n start_line: number;\r\n end_line: number;\r\n content: string;\r\n superClass: string | null;\r\n unique_id: string;\r\n }> = [];\r\n\r\n // --- Traverse CST to collect functions and classes ---\r\n function traverse(node: any, parentClassName?: string) {\r\n if (!node) return;\r\n\r\n // Classes\r\n if (node.node === 'normalClassDeclaration') {\r\n const name = node.children?.Identifier?.[0]?.image ?? `${path.basename(filePath)}:<anon-class>`;\r\n const superClass = node.children?.superclass?.[0]?.children?.Identifier?.[0]?.image ?? null;\r\n const startLine = node.location?.startLine ?? 0;\r\n const endLine = node.location?.endLine ?? 0;\r\n const code = content.split('\\n').slice(startLine - 1, endLine).join('\\n');\r\n const unique_id = getUniqueId(name, filePath, startLine, node.location?.startOffset ?? 0, code);\r\n classes.push({ name, start_line: startLine, end_line: endLine, content: code, superClass, unique_id });\r\n\r\n const classBody = node.children?.classBody?.[0]?.children;\r\n if (classBody) classBody.forEach((child: any) => traverse(child, name));\r\n return;\r\n }\r\n\r\n // Methods/Constructors\r\n if (node.node === 'methodDeclaration' || node.node === 'constructorDeclaration') {\r\n const name = node.children?.Identifier?.[0]?.image ?? '<anon>';\r\n const startLine = node.location?.startLine ?? 0;\r\n const endLine = node.location?.endLine ?? 0;\r\n const code = content.split('\\n').slice(startLine - 1, endLine).join('\\n');\r\n const unique_id = getUniqueId(name, filePath, startLine, node.location?.startOffset ?? 0, code);\r\n functions.push({ name, start_line: startLine, end_line: endLine, content: code, unique_id });\r\n return;\r\n }\r\n\r\n // Traverse children\r\n if (node.children) {\r\n Object.values(node.children).forEach((child: any) => {\r\n if (Array.isArray(child)) child.forEach(c => traverse(c, parentClassName));\r\n else traverse(child, parentClassName);\r\n });\r\n }\r\n }\r\n\r\n traverse(cst);\r\n\r\n if (functions.length === 0 && classes.length === 0) {\r\n log(`⚠️ No functions/classes found in Java file: ${filePath}`);\r\n try { db.prepare(markFileAsSkippedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n\r\n log(`🔍 Found ${functions.length} methods and ${classes.length} classes in ${filePath}`);\r\n\r\n // --- Knowledge Graph tagging ---\r\n try {\r\n const kgInput: KnowledgeGraphInput = { fileId, filepath: filePath, summary: undefined };\r\n const kgResult = await kgModule.run(kgInput, content);\r\n\r\n if (kgResult.entities?.length) {\r\n const insertTagStmt = db.prepare(insertGraphTagTemplate);\r\n const getTagIdStmt = db.prepare(selectGraphTagIdTemplate);\r\n const insertEntityTagStmt = db.prepare(insertGraphEntityTagTemplate);\r\n\r\n const persistTag = (tag: string) => {\r\n try {\r\n insertTagStmt.run({ name: tag });\r\n const tagRow = getTagIdStmt.get({ name: tag }) as { id: number } | undefined;\r\n return tagRow?.id;\r\n } catch { return undefined; }\r\n };\r\n\r\n const persistEntityTags = (entity: typeof kgResult.entities[0]) => {\r\n if (!entity.type || !Array.isArray(entity.tags) || !entity.tags.length) return;\r\n for (const tag of entity.tags) {\r\n if (!tag) continue;\r\n const tagId = persistTag(tag);\r\n if (!tagId) continue;\r\n\r\n const matchedUniqueId =\r\n functions.find(f => f.name === entity.name)?.unique_id ||\r\n classes.find(c => c.name === entity.name)?.unique_id ||\r\n `${entity.name}@${filePath}`;\r\n\r\n try {\r\n insertEntityTagStmt.run({ entity_type: entity.type, entity_unique_id: matchedUniqueId, tag_id: tagId });\r\n } catch { }\r\n }\r\n };\r\n\r\n kgResult.entities.forEach(persistEntityTags);\r\n }\r\n } catch (kgErr) {\r\n console.warn(`⚠️ KG tagging failed for ${filePath}:`, kgErr instanceof Error ? kgErr.message : kgErr);\r\n }\r\n\r\n const seenEdges = new Set<string>();\r\n const javaBuiltins = BUILTINS.java;\r\n\r\n // --- Insert functions with call edges ---\r\n for (const fn of functions) {\r\n db.prepare(insertFunctionTemplate).run({\r\n file_id: fileId,\r\n name: fn.name ?? '<anon>',\r\n start_line: fn.start_line ?? -1,\r\n end_line: fn.end_line ?? -1,\r\n content: fn.content ?? '',\r\n embedding: null,\r\n lang: 'java',\r\n unique_id: fn.unique_id,\r\n });\r\n\r\n const containsEdgeKey = `file->${fn.unique_id}`;\r\n if (!seenEdges.has(containsEdgeKey)) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'function',\r\n target_unique_id: fn.unique_id,\r\n relation: 'contains',\r\n });\r\n seenEdges.add(containsEdgeKey);\r\n }\r\n\r\n // --- Function call edges ---\r\n const callRegex = /([A-Za-z_$][A-Za-z0-9_$]*)\\s*\\(/g;\r\n const callSet = new Set<string>();\r\n let match;\r\n while ((match = callRegex.exec(fn.content)) !== null) {\r\n const callee = match[1];\r\n if (!callee || javaBuiltins.has(callee) || callSet.has(callee)) continue;\r\n callSet.add(callee);\r\n\r\n const targetUniqueId = `${callee}@${normalizedPath}`;\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'function',\r\n source_unique_id: fn.unique_id,\r\n target_type: 'function',\r\n target_unique_id: targetUniqueId,\r\n relation: 'calls',\r\n });\r\n }\r\n }\r\n\r\n // --- Insert classes with inheritance edges ---\r\n for (const cls of classes) {\r\n db.prepare(insertGraphClassTemplate).run({\r\n file_id: fileId,\r\n name: cls.name,\r\n start_line: cls.start_line ?? -1,\r\n end_line: cls.end_line ?? -1,\r\n content: cls.content ?? '',\r\n embedding: null,\r\n lang: 'java',\r\n unique_id: cls.unique_id,\r\n });\r\n\r\n const containsEdgeKey = `file->${cls.unique_id}`;\r\n if (!seenEdges.has(containsEdgeKey)) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'class',\r\n target_unique_id: cls.unique_id,\r\n relation: 'contains',\r\n });\r\n seenEdges.add(containsEdgeKey);\r\n }\r\n\r\n if (cls.superClass) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'class',\r\n source_unique_id: cls.unique_id,\r\n target_type: 'class',\r\n target_unique_id: `unresolved:${cls.superClass}`,\r\n relation: 'inherits',\r\n });\r\n }\r\n }\r\n\r\n // --- Java imports as edges ---\r\n const importRegex = /^\\s*import\\s+([A-Za-z0-9_.]+);/gm;\r\n let impMatch;\r\n while ((impMatch = importRegex.exec(content)) !== null) {\r\n const importedClass = impMatch[1];\r\n if (!importedClass) continue;\r\n const targetUniqueId = `imported:${importedClass}`;\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'class',\r\n target_unique_id: targetUniqueId,\r\n relation: 'imports',\r\n });\r\n }\r\n\r\n db.prepare(markFileAsExtractedTemplate).run({ id: fileId });\r\n log(`📊 Extraction summary for ${filePath}: ${functions.length} methods, ${classes.length} classes`);\r\n return true;\r\n\r\n } catch (err) {\r\n log(`❌ Failed to extract from Java file: ${filePath}`);\r\n log(` ↳ ${(err as Error).message}`);\r\n try { db.prepare(markFileAsFailedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractFromJs.js","sourceRoot":"","sources":["../../../src/db/functionExtractors/extractFromJs.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse, Node } from 'acorn';\r\nimport { ancestor as walkAncestor } from 'acorn-walk';\r\nimport path from 'path';\r\nimport chalk from 'chalk';\r\nimport { log } from '../../utils/log.js';\r\nimport {\r\n markFileAsSkippedTemplate,\r\n markFileAsExtractedTemplate,\r\n markFileAsFailedTemplate,\r\n insertFunctionTemplate,\r\n insertGraphClassTemplate,\r\n insertEdgeTemplate,\r\n insertGraphEntityTagTemplate,\r\n insertGraphTagTemplate,\r\n selectGraphTagIdTemplate,\r\n} from '../sqlTemplates.js';\r\nimport { getDbForRepo } from '../client.js';\r\nimport { kgModule } from '../../pipeline/modules/kgModule.js';\r\nimport { getUniqueId } from '../../utils/sharedUtils.js';\r\nimport { ExtractedFunction, KnowledgeGraphInput, KnowledgeGraph } from '../../types.js';\r\nimport { BUILTINS } from '../../fileRules/builtins.js';\r\n\r\n/** Determine function name from AST node and its parent */\r\nfunction getFunctionName(node: Node, parent: Node | undefined): string {\r\n if ((node as any).id?.name) return (node as any).id.name;\r\n if (parent?.type === 'VariableDeclarator' && (parent as any).id?.name) return (parent as any).id?.name;\r\n if (parent?.type === 'Property' && (parent as any).key?.name) return (parent as any).key?.name;\r\n if (parent?.type === 'AssignmentExpression' && (parent as any).left?.name) return (parent as any).left?.name;\r\n if (parent?.type === 'MethodDefinition' && (parent as any).key?.name) return (parent as any).key?.name;\r\n return '<anon>';\r\n}\r\n\r\nexport async function extractFromJS(filePath: string, content: string, fileId: number): Promise<boolean> {\r\n const db = getDbForRepo();\r\n const normalizedPath = path.normalize(filePath).replace(/\\\\/g, '/');\r\n\r\n if (!fileId || typeof fileId !== 'number') {\r\n console.error(`❌ extractFromJS: invalid or missing fileId for ${filePath}`);\r\n return false;\r\n }\r\n\r\n if (!content || typeof content !== 'string' || !content.trim()) {\r\n console.error(`❌ extractFromJS: empty or invalid file content for ${filePath}`);\r\n db.prepare(markFileAsFailedTemplate).run({ id: fileId });\r\n return false;\r\n }\r\n\r\n try {\r\n const ast = parse(content, { ecmaVersion: 'latest', sourceType: 'module', locations: true }) as Node;\r\n\r\n const functions: Array<ExtractedFunction & { unique_id: string }> = [];\r\n const classes: Array<{\r\n name: string;\r\n start_line: number;\r\n end_line: number;\r\n content: string;\r\n superClass: string | null;\r\n unique_id: string;\r\n }> = [];\r\n const imports: string[] = [];\r\n const exports: string[] = [];\r\n\r\n // --- Function info ---\r\n const handleFunctionNode = (node: any, ancestors: Node[]) => {\r\n const parent = ancestors[ancestors.length - 2];\r\n const name = getFunctionName(node, parent);\r\n const funcContent = content.slice(node.start, node.end);\r\n const unique_id = getUniqueId(name, filePath, node.loc?.start.line ?? -1, node.start, funcContent);\r\n functions.push({\r\n name,\r\n start_line: node.loc?.start.line ?? -1,\r\n end_line: node.loc?.end.line ?? -1,\r\n content: funcContent,\r\n unique_id,\r\n });\r\n };\r\n\r\n // --- Class info ---\r\n const handleClassNode = (node: any) => {\r\n const className = node.id?.name || `${path.basename(filePath)}:<anon-class>`;\r\n const classContent = content.slice(node.start, node.end);\r\n const unique_id = node.id?.name\r\n ? `${className}@${normalizedPath}`\r\n : getUniqueId(className, filePath, node.loc?.start.line ?? -1, node.start, classContent);\r\n classes.push({\r\n name: className,\r\n start_line: node.loc?.start.line ?? -1,\r\n end_line: node.loc?.end.line ?? -1,\r\n content: classContent,\r\n superClass: node.superClass?.name ?? null,\r\n unique_id,\r\n });\r\n };\r\n\r\n // --- AST traversal ---\r\n walkAncestor(ast, {\r\n ImportDeclaration(node: any) { if (node.source?.value) imports.push(node.source.value); },\r\n ExportNamedDeclaration(node: any) { if (node.source?.value) exports.push(node.source.value); },\r\n ExportAllDeclaration(node: any) { if (node.source?.value) exports.push(node.source.value); },\r\n FunctionDeclaration: handleFunctionNode,\r\n FunctionExpression: handleFunctionNode,\r\n ArrowFunctionExpression: handleFunctionNode,\r\n ClassDeclaration: handleClassNode,\r\n ClassExpression: handleClassNode,\r\n });\r\n\r\n if (functions.length === 0 && classes.length === 0) {\r\n log(`⚠️ No functions/classes found in JS file: ${filePath}`);\r\n try { db.prepare(markFileAsSkippedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n\r\n // --- KG tagging ---\r\n try {\r\n const kgInput: KnowledgeGraphInput = { fileId, filepath: filePath, summary: undefined };\r\n const kgResult: KnowledgeGraph = await kgModule.run(kgInput, content);\r\n\r\n if (!kgResult.entities?.length) {\r\n console.log(chalk.yellow(`⚠️ [KG] Garbage or empty result for ${filePath}`));\r\n db.prepare(markFileAsFailedTemplate).run({ id: fileId });\r\n return false;\r\n }\r\n\r\n const insertTagStmt = db.prepare(insertGraphTagTemplate);\r\n const getTagIdStmt = db.prepare(selectGraphTagIdTemplate);\r\n const insertEntityTagStmt = db.prepare(insertGraphEntityTagTemplate);\r\n\r\n const persistTag = (tag: string) => {\r\n try {\r\n insertTagStmt.run({ name: tag });\r\n return (getTagIdStmt.get({ name: tag }) as { id: number } | undefined)?.id;\r\n } catch {\r\n return undefined;\r\n }\r\n };\r\n\r\n const persistEntityTags = (entity: typeof kgResult.entities[0]) => {\r\n if (!entity.type || !Array.isArray(entity.tags) || !entity.tags.length) return;\r\n for (const tag of entity.tags) {\r\n if (!tag || typeof tag !== 'string') continue;\r\n const tagId = persistTag(tag);\r\n if (!tagId) continue;\r\n const matchedUniqueId =\r\n functions.find(f => f.name === entity.name)?.unique_id ||\r\n classes.find(c => c.name === entity.name)?.unique_id ||\r\n `${entity.name}@${filePath}`;\r\n try {\r\n insertEntityTagStmt.run({\r\n entity_type: entity.type,\r\n entity_unique_id: matchedUniqueId,\r\n tag_id: tagId,\r\n });\r\n } catch { /* ignore */ }\r\n }\r\n };\r\n\r\n kgResult.entities.forEach(persistEntityTags);\r\n } catch (kgErr) {\r\n console.log(chalk.yellow(`⚠️ [KG] Garbage or failed parse for ${filePath}: ${kgErr instanceof Error ? kgErr.message : kgErr}`));\r\n db.prepare(markFileAsFailedTemplate).run({ id: fileId });\r\n return false;\r\n }\r\n\r\n const seenEdges = new Set<string>();\r\n const jsBuiltins = BUILTINS.ts;\r\n\r\n // --- Insert functions ---\r\n for (const fn of functions) {\r\n db.prepare(insertFunctionTemplate).run({\r\n file_id: fileId,\r\n name: fn.name,\r\n start_line: fn.start_line,\r\n end_line: fn.end_line,\r\n content: fn.content,\r\n embedding: null,\r\n lang: 'js',\r\n unique_id: fn.unique_id,\r\n });\r\n\r\n const edgeKey = `file->${fn.unique_id}`;\r\n if (!seenEdges.has(edgeKey)) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'function',\r\n target_unique_id: fn.unique_id,\r\n relation: 'contains',\r\n });\r\n seenEdges.add(edgeKey);\r\n }\r\n\r\n // --- JS call edges ---\r\n try {\r\n const fnAst = parse(fn.content, { ecmaVersion: 'latest', sourceType: 'module', locations: true });\r\n walkAncestor(fnAst, {\r\n CallExpression(node: any) {\r\n let calleeName: string | undefined;\r\n if (node.callee?.name) calleeName = node.callee.name;\r\n else if (node.callee?.property?.name) calleeName = node.callee.property.name;\r\n if (!calleeName || jsBuiltins.has(calleeName)) return;\r\n\r\n const targetUniqueId = `${calleeName}@${normalizedPath}`;\r\n const callEdgeKey = `${fn.unique_id}->${targetUniqueId}`;\r\n if (!seenEdges.has(callEdgeKey)) {\r\n try {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'function',\r\n source_unique_id: fn.unique_id,\r\n target_type: 'function',\r\n target_unique_id: targetUniqueId,\r\n relation: 'calls',\r\n });\r\n seenEdges.add(callEdgeKey);\r\n } catch { /* ignore */ }\r\n }\r\n },\r\n });\r\n } catch (parseErr) {\r\n console.log(chalk.yellow(`⚠️ [Extract] Failed to parse function ${fn.name} in ${filePath}: ${(parseErr as Error).message}`));\r\n }\r\n }\r\n\r\n // --- Insert classes ---\r\n for (const cls of classes) {\r\n db.prepare(insertGraphClassTemplate).run({\r\n file_id: fileId,\r\n name: cls.name,\r\n start_line: cls.start_line,\r\n end_line: cls.end_line,\r\n content: cls.content,\r\n embedding: null,\r\n lang: 'js',\r\n unique_id: cls.unique_id,\r\n });\r\n\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'class',\r\n target_unique_id: cls.unique_id,\r\n relation: 'contains',\r\n });\r\n\r\n if (cls.superClass) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'class',\r\n source_unique_id: cls.unique_id,\r\n target_type: `unresolved:${cls.superClass}`,\r\n relation: 'inherits',\r\n });\r\n }\r\n }\r\n\r\n // --- Imports/Exports edges ---\r\n const handleEdges = (items: string[], relation: 'imports' | 'exports') => {\r\n for (const item of items) {\r\n const resolved = item.startsWith('.') ? path.resolve(path.dirname(filePath), item) : item;\r\n const normalizedTarget = path.normalize(resolved).replace(/\\\\/g, '/');\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'file',\r\n target_unique_id: normalizedTarget,\r\n relation,\r\n });\r\n }\r\n };\r\n\r\n handleEdges(imports, 'imports');\r\n handleEdges(exports, 'exports');\r\n\r\n db.prepare(markFileAsExtractedTemplate).run({ id: fileId });\r\n return true;\r\n } catch (err) {\r\n console.log(chalk.yellow(`⚠️ [Extract] Failed for ${filePath}: ${(err as Error).message}`));\r\n db.prepare(markFileAsFailedTemplate).run({ id: fileId });\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractFromTs.js","sourceRoot":"","sources":["../../../src/db/functionExtractors/extractFromTs.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n ArrowFunction,\r\n FunctionDeclaration,\r\n FunctionExpression,\r\n ClassDeclaration,\r\n ClassExpression,\r\n Project,\r\n SyntaxKind,\r\n ImportDeclaration,\r\n ExportDeclaration,\r\n CallExpression,\r\n} from 'ts-morph';\r\nimport path from 'path';\r\nimport { ExtractedFunction, KnowledgeGraph, KnowledgeGraphInput } from '../../types.js';\r\nimport { log } from '../../utils/log.js';\r\nimport { getDbForRepo } from '../client.js';\r\nimport {\r\n markFileAsSkippedTemplate,\r\n markFileAsExtractedTemplate,\r\n markFileAsFailedTemplate,\r\n insertFunctionTemplate,\r\n insertGraphClassTemplate,\r\n insertEdgeTemplate,\r\n insertGraphEntityTagTemplate,\r\n insertGraphTagTemplate,\r\n selectGraphTagIdTemplate,\r\n} from '../sqlTemplates.js';\r\nimport { kgModule } from '../../pipeline/modules/kgModule.js';\r\nimport { BUILTINS } from '../../fileRules/builtins.js';\r\nimport { getUniqueId } from '../../utils/sharedUtils.js';\r\n\r\nexport async function extractFromTS(\r\n filePath: string,\r\n content: string,\r\n fileId: number\r\n): Promise<boolean> {\r\n const db = getDbForRepo();\r\n const normalizedPath = path.normalize(filePath).replace(/\\\\/g, '/');\r\n\r\n try {\r\n const project = new Project({ useInMemoryFileSystem: true });\r\n const sourceFile = project.createSourceFile(filePath, content);\r\n\r\n const functions: Array<ExtractedFunction & { unique_id: string }> = [];\r\n const classes: Array<{\r\n name: string;\r\n start_line: number;\r\n end_line: number;\r\n content: string;\r\n superClass: string | null;\r\n unique_id: string;\r\n }> = [];\r\n\r\n // --- Gather AST nodes ---\r\n const allFuncNodes = [\r\n ...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionDeclaration),\r\n ...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionExpression),\r\n ...sourceFile.getDescendantsOfKind(SyntaxKind.ArrowFunction),\r\n ] as (FunctionDeclaration | FunctionExpression | ArrowFunction)[];\r\n\r\n const allClassNodes = [\r\n ...sourceFile.getDescendantsOfKind(SyntaxKind.ClassDeclaration),\r\n ...sourceFile.getDescendantsOfKind(SyntaxKind.ClassExpression),\r\n ] as (ClassDeclaration | ClassExpression)[];\r\n\r\n if (allFuncNodes.length === 0 && allClassNodes.length === 0) {\r\n log(`⚠️ No functions/classes found in TS file: ${filePath}`);\r\n try { db.prepare(markFileAsSkippedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n\r\n log(`🔍 Found ${allFuncNodes.length} functions and ${allClassNodes.length} classes in ${filePath}`);\r\n\r\n // --- Knowledge Graph tagging ---\r\n try {\r\n const kgInput: KnowledgeGraphInput = { fileId, filepath: filePath, summary: undefined };\r\n const kgResult: KnowledgeGraph = await kgModule.run(kgInput, content);\r\n\r\n if (!kgResult.entities?.length) {\r\n log(`⚠️ KG returned no entities for ${filePath}`);\r\n try { db.prepare(markFileAsFailedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n\r\n const insertTagStmt = db.prepare(insertGraphTagTemplate);\r\n const getTagIdStmt = db.prepare(selectGraphTagIdTemplate);\r\n const insertEntityTagStmt = db.prepare(insertGraphEntityTagTemplate);\r\n\r\n const persistTag = (tag: string) => {\r\n try {\r\n insertTagStmt.run({ name: tag });\r\n const tagRow = getTagIdStmt.get({ name: tag }) as { id: number } | undefined;\r\n return tagRow?.id;\r\n } catch {\r\n return undefined;\r\n }\r\n };\r\n\r\n const persistEntityTags = (entity: typeof kgResult.entities[0]) => {\r\n if (!entity.type || !Array.isArray(entity.tags) || entity.tags.length === 0) return;\r\n for (const tag of entity.tags) {\r\n if (!tag || typeof tag !== 'string') continue;\r\n\r\n const tagId = persistTag(tag);\r\n if (!tagId) continue;\r\n\r\n const matchedUniqueId =\r\n functions.find(f => f.name === entity.name)?.unique_id ||\r\n classes.find(c => c.name === entity.name)?.unique_id ||\r\n `${entity.name}@${filePath}`;\r\n\r\n try {\r\n insertEntityTagStmt.run({\r\n entity_type: entity.type,\r\n entity_unique_id: matchedUniqueId,\r\n tag_id: tagId,\r\n });\r\n } catch { }\r\n }\r\n };\r\n\r\n kgResult.entities.forEach(persistEntityTags);\r\n log(`🏷 Persisted LLM-generated tags for ${filePath}`);\r\n } catch (kgErr) {\r\n log(`⚠️ KG tagging failed for ${filePath}: ${(kgErr as Error).message}`);\r\n try { db.prepare(markFileAsFailedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n\r\n // --- Collect functions ---\r\n const tsBuiltins = BUILTINS.ts;\r\n for (const funcNode of allFuncNodes) {\r\n const name = funcNode.getSymbol()?.getName() ?? '<anon>';\r\n const start = funcNode.getStartLineNumber();\r\n const end = funcNode.getEndLineNumber();\r\n const code = funcNode.getText();\r\n const unique_id = getUniqueId(name, filePath, start, funcNode.getStart(), code);\r\n functions.push({ name, start_line: start, end_line: end, content: code, unique_id });\r\n\r\n try {\r\n const callExprs = funcNode.getDescendantsOfKind(SyntaxKind.CallExpression) as CallExpression[];\r\n const edgeSet = new Set<string>();\r\n for (const callExpr of callExprs) {\r\n let calleeName: string | undefined;\r\n try {\r\n const expr = callExpr.getExpression();\r\n calleeName = expr.getSymbol()?.getName() ?? expr.getText();\r\n } catch { /* ignore symbol resolution errors */ }\r\n\r\n if (!calleeName || tsBuiltins.has(calleeName)) continue;\r\n\r\n const targetUniqueId = `${calleeName}@${normalizedPath}`;\r\n const edgeKey = `${unique_id}->${targetUniqueId}`;\r\n if (!edgeSet.has(edgeKey)) {\r\n edgeSet.add(edgeKey);\r\n try {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'function',\r\n source_unique_id: unique_id,\r\n target_type: 'function',\r\n target_unique_id: targetUniqueId,\r\n relation: 'calls',\r\n });\r\n } catch { /* ignore DB insert errors */ }\r\n }\r\n }\r\n } catch (funcErr) {\r\n log(`⚠️ Failed to process call expressions in function ${name} of ${filePath}: ${(funcErr as Error).message}`);\r\n }\r\n }\r\n\r\n // --- Collect classes ---\r\n for (const clsNode of allClassNodes) {\r\n const name = clsNode.getName() ?? `${path.basename(filePath)}:<anon-class>`;\r\n const start = clsNode.getStartLineNumber();\r\n const end = clsNode.getEndLineNumber();\r\n const code = clsNode.getText();\r\n let superClass: string | null = null;\r\n try { superClass = clsNode.getExtends()?.getText() ?? null; } catch { /* ignore */ }\r\n const unique_id = getUniqueId(name, filePath, start, clsNode.getStart(), code);\r\n classes.push({ name, start_line: start, end_line: end, content: code, superClass, unique_id });\r\n\r\n if (superClass) {\r\n try {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'class',\r\n source_unique_id: unique_id,\r\n target_type: 'class',\r\n target_unique_id: `unresolved:${superClass}`,\r\n relation: 'inherits',\r\n });\r\n } catch { /* ignore DB insert errors */ }\r\n }\r\n }\r\n\r\n const seenEdges = new Set<string>();\r\n\r\n // --- Insert functions ---\r\n for (const fn of functions) {\r\n db.prepare(insertFunctionTemplate).run({\r\n file_id: fileId,\r\n name: fn.name ?? '<anon>',\r\n start_line: fn.start_line ?? -1,\r\n end_line: fn.end_line ?? -1,\r\n content: fn.content ?? '',\r\n embedding: null,\r\n lang: 'ts',\r\n unique_id: fn.unique_id,\r\n });\r\n\r\n const containsEdgeKey = `file->${fn.unique_id}`;\r\n if (!seenEdges.has(containsEdgeKey)) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'function',\r\n target_unique_id: fn.unique_id,\r\n relation: 'contains',\r\n });\r\n seenEdges.add(containsEdgeKey);\r\n }\r\n }\r\n\r\n // --- Insert classes ---\r\n for (const cls of classes) {\r\n db.prepare(insertGraphClassTemplate).run({\r\n file_id: fileId,\r\n name: cls.name,\r\n start_line: cls.start_line ?? -1,\r\n end_line: cls.end_line ?? -1,\r\n content: cls.content ?? '',\r\n embedding: null,\r\n lang: 'ts',\r\n unique_id: cls.unique_id,\r\n });\r\n\r\n const containsEdgeKey = `file->${cls.unique_id}`;\r\n if (!seenEdges.has(containsEdgeKey)) {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'class',\r\n target_unique_id: cls.unique_id,\r\n relation: 'contains',\r\n });\r\n seenEdges.add(containsEdgeKey);\r\n }\r\n }\r\n\r\n // --- Imports ---\r\n const importDecls = sourceFile.getDescendantsOfKind(SyntaxKind.ImportDeclaration) as ImportDeclaration[];\r\n for (const imp of importDecls) {\r\n const moduleSpecifier = imp.getModuleSpecifierValue();\r\n if (!moduleSpecifier) continue;\r\n const resolvedPath = moduleSpecifier.startsWith('.')\r\n ? path.resolve(path.dirname(filePath), moduleSpecifier)\r\n : moduleSpecifier;\r\n const normalizedTarget = path.normalize(resolvedPath).replace(/\\\\/g, '/');\r\n try {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'file',\r\n target_unique_id: normalizedTarget,\r\n relation: 'imports',\r\n });\r\n } catch { /* ignore */ }\r\n }\r\n\r\n // --- Exports ---\r\n const exportDecls = sourceFile.getDescendantsOfKind(SyntaxKind.ExportDeclaration) as ExportDeclaration[];\r\n for (const exp of exportDecls) {\r\n const moduleSpecifier = exp.getModuleSpecifierValue();\r\n if (!moduleSpecifier) continue;\r\n const resolvedPath = moduleSpecifier.startsWith('.')\r\n ? path.resolve(path.dirname(filePath), moduleSpecifier)\r\n : moduleSpecifier;\r\n const normalizedTarget = path.normalize(resolvedPath).replace(/\\\\/g, '/');\r\n try {\r\n db.prepare(insertEdgeTemplate).run({\r\n source_type: 'file',\r\n source_unique_id: normalizedPath,\r\n target_type: 'file',\r\n target_unique_id: normalizedTarget,\r\n relation: 'exports',\r\n });\r\n } catch { /* ignore */ }\r\n }\r\n\r\n db.prepare(markFileAsExtractedTemplate).run({ id: fileId });\r\n log(`📊 Extraction summary for ${filePath}: ${functions.length} functions, ${classes.length} classes`);\r\n return true;\r\n\r\n } catch (err) {\r\n log(`❌ Failed to extract from TS file: ${filePath}`);\r\n log(` ↳ ${(err as Error).message}`);\r\n try { db.prepare(markFileAsFailedTemplate).run({ id: fileId }); } catch { }\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractFromXML.js","sourceRoot":"","sources":["../../../src/db/functionExtractors/extractFromXML.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAE,MAAc;IACrF,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;IAC/D,2DAA2D;IAC3D,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { getDbForRepo } from '../client.js';\r\nimport { markFileAsSkippedTemplate } from '../sqlTemplates.js';\r\n\r\nexport async function extractFromXML(filePath: string, _content: string, fileId: number): Promise<boolean> {\r\n console.warn(`⛔️ XML extraction not implemented: ${filePath}`);\r\n // Mark the file as skipped with the relevant status update\r\n const db = getDbForRepo();\r\n db.prepare(markFileAsSkippedTemplate).run({ id: fileId });\r\n return false;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/functionExtractors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,OAAe,EACf,MAAc;IAEd,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAE1B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,iDAAiD,IAAI,cAAc,QAAQ,EAAE,CAAC,CAAC;QACnF,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC;YACV,KAAK,YAAY;gBACf,GAAG,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;gBAC9C,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM;YAER,KAAK,IAAI,CAAC;YACV,KAAK,YAAY;gBACf,GAAG,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;gBAC9C,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM;YAER,KAAK,MAAM;gBACT,GAAG,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;gBAChD,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC;YAEf,KAAK,KAAK;gBACR,GAAG,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;gBACzD,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,GAAG,CAAC,4BAA4B,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { getDbForRepo } from \"../client.js\";\r\nimport { markFileAsSkippedByPath, markFileAsFailedTemplate } from \"../sqlTemplates.js\";\r\nimport { extractFromJava } from \"./extractFromJava.js\";\r\nimport { extractFromJS } from \"./extractFromJs.js\";\r\nimport { extractFromTS } from \"./extractFromTs.js\";\r\nimport { extractFromXML } from \"./extractFromXML.js\";\r\nimport { detectFileType } from \"../../fileRules/detectFileType.js\";\r\nimport { log } from \"../../utils/log.js\";\r\nimport { CODE_ALLOWED_EXTENSIONS } from \"../../fileRules/codeAllowedExtensions.js\";\r\n\r\nexport async function extractFunctionsFromFile(\r\n filePath: string,\r\n content: string,\r\n fileId: number\r\n): Promise<boolean> {\r\n const type = detectFileType(filePath).trim().toLowerCase();\r\n const db = getDbForRepo();\r\n\r\n if (!CODE_ALLOWED_EXTENSIONS.includes(type)) {\r\n log(`⚠️ File type not allowed for code extraction: ${type}. Skipping ${filePath}`);\r\n db.prepare(markFileAsSkippedByPath).run({ path: filePath });\r\n return false;\r\n }\r\n\r\n try {\r\n let success = false;\r\n\r\n switch (type) {\r\n case 'js':\r\n case 'javascript':\r\n log(`📄 Extracting JS code from ${filePath}`);\r\n success = await extractFromJS(filePath, content, fileId);\r\n break;\r\n\r\n case 'ts':\r\n case 'typescript':\r\n log(`📘 Extracting TS code from ${filePath}`);\r\n success = await extractFromTS(filePath, content, fileId);\r\n break;\r\n\r\n case 'java':\r\n log(`📘 Extracting Java code from ${filePath}`);\r\n await extractFromJava(filePath, content, fileId);\r\n return false;\r\n\r\n case 'xml':\r\n log(`⚠️ XML extraction not implemented for ${filePath}`);\r\n await extractFromXML(filePath, content, fileId);\r\n return false;\r\n }\r\n\r\n return success;\r\n } catch (error: unknown) {\r\n log(`❌ Failed to extract from ${filePath}: ${error instanceof Error ? error.message : error}`);\r\n db.prepare(markFileAsFailedTemplate).run({ id: fileId });\r\n return false;\r\n }\r\n}\r\n"]}
|
package/dist/db/functionIndex.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs legacy language-specific code extraction outside the default live runtime.
|
|
3
|
+
*
|
|
4
|
+
* Why this file exists:
|
|
5
|
+
* - older KG and code-structure extraction still lives in the repo for possible later reuse
|
|
6
|
+
* - the default indexing path no longer calls this helper
|
|
7
|
+
* - new-agent grounding should not depend on extracted function tables
|
|
8
|
+
*/
|
|
1
9
|
import fs from 'fs';
|
|
2
10
|
import path from 'path';
|
|
3
11
|
import { extractFunctionsFromFile } from './functionExtractors/index.js';
|
|
@@ -10,3 +18,4 @@ export async function indexCodeForFile(filePath, fileId) {
|
|
|
10
18
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
11
19
|
return await extractFunctionsFromFile(normalizedPath, content, fileId);
|
|
12
20
|
}
|
|
21
|
+
//# sourceMappingURL=functionIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionIndex.js","sourceRoot":"","sources":["../../src/db/functionIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,MAAc;IACrE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,MAAM,wBAAwB,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/**\n * Runs legacy language-specific code extraction outside the default live runtime.\n *\n * Why this file exists:\n * - older KG and code-structure extraction still lives in the repo for possible later reuse\n * - the default indexing path no longer calls this helper\n * - new-agent grounding should not depend on extracted function tables\n */\nimport fs from 'fs';\nimport path from 'path';\nimport { extractFunctionsFromFile } from './functionExtractors/index.js';\n\n/**\n * Extracts functions from file if language is supported.\r\n * Returns true if functions were extracted, false otherwise.\r\n */\r\nexport async function indexCodeForFile(filePath: string, fileId: number): Promise<boolean> {\r\n const normalizedPath = path.normalize(filePath).replace(/\\\\/g, '/');\r\n const content = fs.readFileSync(filePath, 'utf-8');\r\n return await extractFunctionsFromFile(normalizedPath, content, fileId);\r\n}\r\n"]}
|