scai 0.1.178 → 1.0.1
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 +171 -260
- 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
|
@@ -3,7 +3,7 @@ import fs from "fs";
|
|
|
3
3
|
import { logInputOutput } from "../utils/promptLogHelper.js";
|
|
4
4
|
/**
|
|
5
5
|
* Purpose:
|
|
6
|
-
* Mirrors
|
|
6
|
+
* Mirrors resolver-selected execution files into workingFiles.
|
|
7
7
|
* - Does NOT promote files based on evidence.
|
|
8
8
|
* - Candidate files are left untouched.
|
|
9
9
|
* - Rationale is preserved from preFileSearchCheckStep.
|
|
@@ -18,11 +18,17 @@ export const selectRelevantSourcesStep = {
|
|
|
18
18
|
if (!context?.analysis?.focus) {
|
|
19
19
|
throw new Error("[selectRelevantSources] context.analysis.focus is required.");
|
|
20
20
|
}
|
|
21
|
-
const
|
|
21
|
+
const executionPolicy = context.analysis.executionPolicy;
|
|
22
|
+
const useExecutionLane = Boolean(executionPolicy?.phaseAllowed?.transform) &&
|
|
23
|
+
Boolean(executionPolicy?.routeAllowed?.transform) &&
|
|
24
|
+
(executionPolicy?.executionRequired?.length ?? 0) > 0;
|
|
25
|
+
const selectedFiles = useExecutionLane
|
|
26
|
+
? executionPolicy?.executionRequired ?? []
|
|
27
|
+
: context.analysis.focus.selectedFiles ?? [];
|
|
22
28
|
const candidateFiles = context.analysis.focus.candidateFiles ?? [];
|
|
23
29
|
const discardedFiles = []; // no reasoning done here
|
|
24
30
|
// ---------------------------
|
|
25
|
-
// 1️⃣ Populate workingFiles from selectedFiles
|
|
31
|
+
// 1️⃣ Populate workingFiles from execution lane first (fallback: selectedFiles)
|
|
26
32
|
// ---------------------------
|
|
27
33
|
const workingFiles = [];
|
|
28
34
|
for (const path of selectedFiles) {
|
|
@@ -58,17 +64,19 @@ export const selectRelevantSourcesStep = {
|
|
|
58
64
|
candidateFiles,
|
|
59
65
|
discardedFiles,
|
|
60
66
|
rationale: (context.analysis.focus.rationale ?? "") +
|
|
61
|
-
"\n[selectRelevantSources] Working files mirrored
|
|
67
|
+
"\n[selectRelevantSources] Working files mirrored from execution lane snapshot.",
|
|
62
68
|
};
|
|
63
69
|
const output = {
|
|
64
70
|
query,
|
|
65
71
|
data: {
|
|
66
72
|
workingFiles: context.workingFiles.map(f => ({ path: f.path })),
|
|
67
73
|
selectedFiles,
|
|
68
|
-
candidateFiles
|
|
74
|
+
candidateFiles,
|
|
75
|
+
executionLock: executionPolicy?.executionLock ?? null,
|
|
69
76
|
},
|
|
70
77
|
};
|
|
71
78
|
logInputOutput("selectRelevantSources", "output", output.data);
|
|
72
79
|
return output;
|
|
73
80
|
},
|
|
74
81
|
};
|
|
82
|
+
//# sourceMappingURL=selectRelevantSourcesStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectRelevantSourcesStep.js","sourceRoot":"","sources":["../../src/agents/selectRelevantSourcesStep.ts"],"names":[],"mappings":"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","sourcesContent":["// File: src/modules/selectRelevantSourcesStep.ts\nimport fs from \"fs\";\nimport { logInputOutput } from \"../utils/promptLogHelper.js\";\nimport type { Module, ModuleIO, StructuredFileCapsule } from \"../types.js\";\n\n/**\n * Purpose:\n * Mirrors resolver-selected execution files into workingFiles.\n * - Does NOT promote files based on evidence.\n * - Candidate files are left untouched.\n * - Rationale is preserved from preFileSearchCheckStep.\n */\nexport const selectRelevantSourcesStep: Module = {\n name: \"selectRelevantSources\",\n description:\n \"Mirrors focus.selectedFiles into workingFiles without reasoning over evidence.\",\n groups: [\"analysis\"],\n\n run: async (input: ModuleIO): Promise<ModuleIO> => {\n const query = input.query ?? \"\";\n const context = input.context;\n\n if (!context?.analysis?.focus) {\n throw new Error(\"[selectRelevantSources] context.analysis.focus is required.\");\n }\n\n const executionPolicy = context.analysis.executionPolicy;\n const useExecutionLane =\n Boolean(executionPolicy?.phaseAllowed?.transform) &&\n Boolean(executionPolicy?.routeAllowed?.transform) &&\n (executionPolicy?.executionRequired?.length ?? 0) > 0;\n const selectedFiles =\n useExecutionLane\n ? executionPolicy?.executionRequired ?? []\n : context.analysis.focus.selectedFiles ?? [];\n const candidateFiles = context.analysis.focus.candidateFiles ?? [];\n const discardedFiles: string[] = []; // no reasoning done here\n\n // ---------------------------\n // 1️⃣ Populate workingFiles from execution lane first (fallback: selectedFiles)\n // ---------------------------\n const workingFiles: StructuredFileCapsule[] = [];\n\n for (const path of selectedFiles) {\n let code: string | undefined;\n try {\n code = fs.readFileSync(path, \"utf-8\");\n } catch {\n code = undefined;\n }\n workingFiles.push({\n path,\n code,\n selectionReason: \"Selected by preFileSearchCheckStep\",\n });\n }\n\n // Deduplicate if anything preexists\n const seen = new Set<string>();\n context.workingFiles = [\n ...(context.workingFiles ?? []),\n ...workingFiles.filter(f => {\n if (!f.path || seen.has(f.path)) return false;\n seen.add(f.path);\n return true;\n }),\n ];\n\n // ---------------------------\n // 2️⃣ Preserve focus but update rationale\n // ---------------------------\n context.analysis.focus = {\n selectedFiles,\n candidateFiles,\n discardedFiles,\n rationale:\n (context.analysis.focus.rationale ?? \"\") +\n \"\\n[selectRelevantSources] Working files mirrored from execution lane snapshot.\",\n };\n\n const output: ModuleIO = {\n query,\n data: {\n workingFiles: context.workingFiles.map(f => ({ path: f.path })),\n selectedFiles,\n candidateFiles,\n executionLock: executionPolicy?.executionLock ?? null,\n },\n };\n\n logInputOutput(\"selectRelevantSources\", \"output\", output.data);\n return output;\n },\n};\n"]}
|
|
@@ -4,13 +4,13 @@ import { logInputOutput } from "../utils/promptLogHelper.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Structural preload:
|
|
6
6
|
* - Calls buildInDepthContext for candidate files.
|
|
7
|
-
* - Extracts structural facts only.
|
|
7
|
+
* - Extracts structural facts only, without requiring KG enrichment.
|
|
8
8
|
* - Populates analysis.fileAnalysis[path].structural.
|
|
9
9
|
* - Does NOT reason or assign relevance.
|
|
10
10
|
*/
|
|
11
11
|
export const structuralPreloadStep = {
|
|
12
12
|
name: "structuralPreload",
|
|
13
|
-
description: "Preloads structural
|
|
13
|
+
description: "Preloads structural file facts into fileAnalysis without performing reasoning.",
|
|
14
14
|
groups: ["analysis"],
|
|
15
15
|
run: async (input) => {
|
|
16
16
|
const query = input.query ?? "";
|
|
@@ -39,8 +39,6 @@ export const structuralPreloadStep = {
|
|
|
39
39
|
// ---- Get structural data (path → structural object) ----
|
|
40
40
|
const structuralMap = await buildInDepthContext({
|
|
41
41
|
filenames: pathsNeedingStructure,
|
|
42
|
-
relatedFiles: context.initContext?.relatedFiles ?? [],
|
|
43
|
-
query,
|
|
44
42
|
});
|
|
45
43
|
// ---- Merge into fileAnalysis ----
|
|
46
44
|
for (const [path, structural] of Object.entries(structuralMap)) {
|
|
@@ -59,3 +57,4 @@ export const structuralPreloadStep = {
|
|
|
59
57
|
return { query, data: {} };
|
|
60
58
|
},
|
|
61
59
|
};
|
|
60
|
+
//# sourceMappingURL=structuralPreloadStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuralPreloadStep.js","sourceRoot":"","sources":["../../src/agents/structuralPreloadStep.ts"],"names":[],"mappings":"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","sourcesContent":["// File: src/modules/structuralPreloadStep.ts\n\nimport { buildInDepthContext } from \"../utils/buildContextualPrompt.js\";\nimport { logInputOutput } from \"../utils/promptLogHelper.js\";\nimport type { Module, ModuleIO, StructuredContext } from \"../types.js\";\n\n/**\n * Structural preload:\n * - Calls buildInDepthContext for candidate files.\n * - Extracts structural facts only, without requiring KG enrichment.\n * - Populates analysis.fileAnalysis[path].structural.\n * - Does NOT reason or assign relevance.\n */\nexport const structuralPreloadStep: Module = {\n name: \"structuralPreload\",\n description:\n \"Preloads structural file facts into fileAnalysis without performing reasoning.\",\n groups: [\"analysis\"],\n\n run: async (input: ModuleIO): Promise<ModuleIO> => {\n const query = input.query ?? \"\";\n const context = input.context as StructuredContext;\n\n if (!context?.analysis) {\n throw new Error(\"[structuralPreload] context.analysis is required.\");\n }\n\n // ---- Ensure fileAnalysis exists (type-safe) ----\n if (!context.analysis.fileAnalysis) {\n context.analysis.fileAnalysis = {};\n }\n const fileAnalysis = context.analysis.fileAnalysis;\n\n // ---- Candidate files ----\n const candidatePaths: string[] = [\n ...(context.initContext?.relatedFiles ?? []),\n ];\n const uniquePaths = Array.from(new Set(candidatePaths));\n\n if (!uniquePaths.length) {\n console.warn(\"[structuralPreload] No candidate files to preload.\");\n return { query, data: {} };\n }\n\n // ---- Only preload missing structural data ----\n const pathsNeedingStructure = uniquePaths.filter(\n (p) => !fileAnalysis[p]?.structural\n );\n if (!pathsNeedingStructure.length) return { query, data: {} };\n\n // ---- Get structural data (path → structural object) ----\n const structuralMap = await buildInDepthContext({\n filenames: pathsNeedingStructure,\n });\n\n // ---- Merge into fileAnalysis ----\n for (const [path, structural] of Object.entries(structuralMap)) {\n fileAnalysis[path] ??= { semanticAnalyzed: false };\n fileAnalysis[path].structural = structural;\n }\n\n // ---- Minimal structured log ----\n const logSummary = Object.entries(fileAnalysis).map(([path, analysis]) => ({\n file: path,\n hasStructural: !!analysis.structural,\n functions: analysis.structural?.functions?.length ?? 0,\n classes: analysis.structural?.classes?.length ?? 0,\n imports: analysis.structural?.imports?.length ?? 0,\n }));\n\n logInputOutput(\"structuralPreload\", \"output\", logSummary);\n\n return { query, data: {} };\n },\n};\n"]}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Builds one-file transform plans from user intent and local file evidence.
|
|
3
|
+
*
|
|
4
|
+
* Why this file exists:
|
|
5
|
+
* - the agent needs typed transform steps before it can call the runtime action router
|
|
6
|
+
* - plan generation stays narrow so single-file edits do not spill into unrelated files
|
|
7
|
+
*/
|
|
2
8
|
import { generate } from '../lib/generate.js';
|
|
3
9
|
import { PLAN_ACTIONS } from '../utils/planActions.js';
|
|
4
10
|
import { logInputOutput } from '../utils/promptLogHelper.js';
|
|
5
11
|
import { cleanupModule } from '../pipeline/modules/cleanupModule.js';
|
|
12
|
+
/**
|
|
13
|
+
* Refactor note:
|
|
14
|
+
* - Transform planner emits typed actions and optional doneWhenRegex hints.
|
|
15
|
+
* - Why it exists: deterministic completion checks should be planner-assisted.
|
|
16
|
+
*/
|
|
6
17
|
/**
|
|
7
18
|
* TRANSFORM PLAN GENERATOR
|
|
8
19
|
* Generates one or more code transformation steps per iteration,
|
|
9
|
-
* strictly scoped to the current
|
|
20
|
+
* strictly scoped to the current durable Step file.
|
|
10
21
|
*/
|
|
11
22
|
export const transformPlanGenStep = {
|
|
12
23
|
name: 'transformPlanGen',
|
|
@@ -37,9 +48,11 @@ export const transformPlanGenStep = {
|
|
|
37
48
|
const actionsJson = JSON.stringify(effectiveActions, null, 2);
|
|
38
49
|
const intentText = context.analysis.intent?.normalizedQuery ?? '';
|
|
39
50
|
const intentCategory = context.analysis.intent?.intentCategory ?? '';
|
|
51
|
+
const orderedQuestions = context.analysis.intent?.questions ?? [];
|
|
40
52
|
const fileAnalysis = context.analysis.fileAnalysis ?? {};
|
|
41
53
|
// ✅ Use currentStep file
|
|
42
54
|
const targetFile = currentStep.filePath;
|
|
55
|
+
const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);
|
|
43
56
|
// Guard: nothing to transform
|
|
44
57
|
if (!targetFile || !fileAnalysis[targetFile]) {
|
|
45
58
|
context.analysis.planSuggestion = { plan: { steps: [] } };
|
|
@@ -82,6 +95,8 @@ ${actionsJson}
|
|
|
82
95
|
Excerpts (localized hints):
|
|
83
96
|
${JSON.stringify(excerpts, null, 2)}
|
|
84
97
|
|
|
98
|
+
${orderedQuestions.length > 0 ? `Ordered question parts:\n${JSON.stringify(orderedQuestions, null, 2)}\n` : ""}
|
|
99
|
+
|
|
85
100
|
Rules:
|
|
86
101
|
- Use excerpts ONLY to infer WHERE changes occur
|
|
87
102
|
- You MAY reference startLine/endLine ONLY if they are present
|
|
@@ -90,11 +105,12 @@ Rules:
|
|
|
90
105
|
- If the intent implies multiple operations (e.g. move = remove + append),
|
|
91
106
|
generate multiple steps in logical order
|
|
92
107
|
- Only include transform steps
|
|
93
|
-
- Each step must include: action, targetFile, description, metadata
|
|
108
|
+
- Each step must include: action, actionId, actionArgs, targetFile, description, metadata
|
|
109
|
+
- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.
|
|
94
110
|
|
|
95
111
|
Return strictly valid JSON:
|
|
96
112
|
|
|
97
|
-
{ "steps": [ { "action": "stepName", "targetFile": "${targetFile}", "description": "what to do and where (using excerpt hints)", "metadata": {} } ] }
|
|
113
|
+
{ "steps": [ { "action": "stepName", "actionId": "stepName", "actionArgs": {}, "targetFile": "${targetFile}", "description": "what to do and where (using excerpt hints)", "metadata": { "doneWhenRegex": { "filePath": "${targetFile}", "pattern": "...", "flags": "m" } } } ] }
|
|
98
114
|
`.trim()
|
|
99
115
|
: `
|
|
100
116
|
You are an autonomous coding agent.
|
|
@@ -115,40 +131,64 @@ ${intentCategory}
|
|
|
115
131
|
Allowed actions (transform only):
|
|
116
132
|
${actionsJson}
|
|
117
133
|
|
|
134
|
+
${orderedQuestions.length > 0 ? `Ordered question parts:\n${JSON.stringify(orderedQuestions, null, 2)}\n` : ""}
|
|
135
|
+
|
|
118
136
|
Rules:
|
|
119
137
|
- Plan purely from intent
|
|
120
138
|
- If the intent implies multiple operations (e.g. move = remove + append),
|
|
121
139
|
generate multiple steps in logical order
|
|
122
140
|
- Do NOT include any location hints or references
|
|
123
141
|
- Only include transform steps
|
|
124
|
-
- Each step must include: action, targetFile, description, metadata
|
|
142
|
+
- Each step must include: action, actionId, actionArgs, targetFile, description, metadata
|
|
143
|
+
- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.
|
|
125
144
|
|
|
126
145
|
Return strictly valid JSON:
|
|
127
146
|
|
|
128
|
-
{ "steps": [ { "action": "stepName", "targetFile": "${targetFile}", "description": "what to do (no location hints)", "metadata": {} } ] }
|
|
147
|
+
{ "steps": [ { "action": "stepName", "actionId": "stepName", "actionArgs": {}, "targetFile": "${targetFile}", "description": "what to do (no location hints)", "metadata": { "doneWhenRegex": { "filePath": "${targetFile}", "pattern": "...", "flags": "m" } } } ] }
|
|
129
148
|
`.trim();
|
|
130
149
|
try {
|
|
131
150
|
const genInput = { query: intentText, content: prompt };
|
|
132
|
-
const genOutput = await generate(genInput
|
|
151
|
+
const genOutput = await generate(genInput, {
|
|
152
|
+
caller: "transformPlanGenStep",
|
|
153
|
+
inputContext: {
|
|
154
|
+
intentText,
|
|
155
|
+
intentCategory,
|
|
156
|
+
targetFile,
|
|
157
|
+
orderedQuestions,
|
|
158
|
+
currentQuestionId,
|
|
159
|
+
hasExcerpts,
|
|
160
|
+
excerpts,
|
|
161
|
+
allowedActions: effectiveActions,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
133
164
|
const raw = typeof genOutput.data === 'string'
|
|
134
165
|
? genOutput.data
|
|
135
166
|
: JSON.stringify(genOutput.data ?? '{}');
|
|
136
167
|
const cleaned = await cleanupModule.run({ query: intentText, content: raw });
|
|
137
|
-
const jsonString = typeof cleaned.content === 'string'
|
|
138
|
-
? cleaned.content
|
|
139
|
-
: JSON.stringify(cleaned.content ?? '{}');
|
|
140
168
|
let parsed = null;
|
|
141
|
-
|
|
142
|
-
parsed =
|
|
169
|
+
if (typeof cleaned.data === 'object' && cleaned.data !== null) {
|
|
170
|
+
parsed = cleaned.data;
|
|
143
171
|
}
|
|
144
|
-
|
|
145
|
-
|
|
172
|
+
else if (typeof cleaned.content === 'string') {
|
|
173
|
+
try {
|
|
174
|
+
parsed = JSON.parse(cleaned.content);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
parsed = null;
|
|
178
|
+
}
|
|
146
179
|
}
|
|
147
|
-
const
|
|
180
|
+
const parsedSteps = Array.isArray(parsed?.steps) ? parsed.steps : null;
|
|
181
|
+
const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);
|
|
182
|
+
// Keep an explicit empty planner result as a real no-op.
|
|
183
|
+
const effectiveSteps = parsedSteps ?? (fallbackStep ? [fallbackStep] : []);
|
|
148
184
|
// Normalize steps: enforce targetFile, groups, metadata
|
|
149
|
-
const normalizedSteps =
|
|
185
|
+
const normalizedSteps = effectiveSteps.map((step, index) => {
|
|
150
186
|
step.id = `transform:${targetFile}:${index + 1}`;
|
|
151
187
|
step.targetFile = targetFile;
|
|
188
|
+
// ActionRouter consumes actionId/actionArgs; action is kept for backward compatibility.
|
|
189
|
+
step.actionId = step.actionId ?? step.action;
|
|
190
|
+
step.actionArgs = step.actionArgs ?? {};
|
|
191
|
+
step.questionId = step.questionId ?? currentQuestionId;
|
|
152
192
|
const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);
|
|
153
193
|
step.groups = actionDef?.groups ?? ['transform'];
|
|
154
194
|
const confidence = context.analysis?.routingDecision?.confidence;
|
|
@@ -161,11 +201,58 @@ Return strictly valid JSON:
|
|
|
161
201
|
return step;
|
|
162
202
|
});
|
|
163
203
|
context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };
|
|
164
|
-
logInputOutput('transformPlanGen', 'output',
|
|
204
|
+
logInputOutput('transformPlanGen', 'output', {
|
|
205
|
+
callId: genOutput.trace?.callId,
|
|
206
|
+
source: parsedSteps
|
|
207
|
+
? 'model'
|
|
208
|
+
: (fallbackStep ? 'fallback' : 'empty'),
|
|
209
|
+
steps: normalizedSteps,
|
|
210
|
+
});
|
|
165
211
|
}
|
|
166
212
|
catch (err) {
|
|
167
213
|
console.warn('⚠️ Failed to generate transform plan:', err);
|
|
168
|
-
|
|
214
|
+
const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);
|
|
215
|
+
const fallbackSteps = fallbackStep ? [fallbackStep] : [];
|
|
216
|
+
context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };
|
|
217
|
+
logInputOutput('transformPlanGen', 'output', {
|
|
218
|
+
source: fallbackStep ? 'fallback-after-error' : 'empty-after-error',
|
|
219
|
+
steps: fallbackSteps,
|
|
220
|
+
});
|
|
169
221
|
}
|
|
170
222
|
}
|
|
171
223
|
};
|
|
224
|
+
/**
|
|
225
|
+
* Builds a safe one-step transform fallback from semantic analysis when plan JSON is missing.
|
|
226
|
+
*
|
|
227
|
+
* Example:
|
|
228
|
+
* - summary "Add a hello world comment near the imports" -> one `codeTransform` step with that description
|
|
229
|
+
* - shouldModify false -> no fallback step
|
|
230
|
+
*/
|
|
231
|
+
function buildFallbackTransformStep(targetFile, fileAnalysis, routingConfidence, currentQuestionId) {
|
|
232
|
+
if (!fileAnalysis?.action?.shouldModify) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
const summary = fileAnalysis.proposedChanges?.summary?.trim();
|
|
236
|
+
const rationale = fileAnalysis.proposedChanges?.rationale?.trim();
|
|
237
|
+
const description = [summary, rationale].filter(Boolean).join(" ");
|
|
238
|
+
if (!description) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
id: `transform:${targetFile}:fallback`,
|
|
243
|
+
action: "codeTransform",
|
|
244
|
+
actionId: "codeTransform",
|
|
245
|
+
actionArgs: {},
|
|
246
|
+
targetFile,
|
|
247
|
+
questionId: currentQuestionId,
|
|
248
|
+
description,
|
|
249
|
+
groups: ["transform"],
|
|
250
|
+
metadata: {
|
|
251
|
+
source: "semantic-fallback",
|
|
252
|
+
...(typeof routingConfidence === "number" && routingConfidence > 0
|
|
253
|
+
? { routingConfidence }
|
|
254
|
+
: {}),
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=transformPlanGenStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformPlanGenStep.js","sourceRoot":"","sources":["../../src/agents/transformPlanGenStep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Builds one-file transform plans from user intent and local file evidence.\n *\n * Why this file exists:\n * - the agent needs typed transform steps before it can call the runtime action router\n * - plan generation stays narrow so single-file edits do not spill into unrelated files\n */\nimport { generate } from '../lib/generate.js';\nimport { PLAN_ACTIONS } from '../utils/planActions.js';\nimport { logInputOutput } from '../utils/promptLogHelper.js';\nimport { cleanupModule } from '../pipeline/modules/cleanupModule.js';\nimport type { ModuleIO, StructuredContext, AgentPlanStep, FileAnalysis } from '../types.js';\n\n/**\n * Refactor note:\n * - Transform planner emits typed actions and optional doneWhenRegex hints.\n * - Why it exists: deterministic completion checks should be planner-assisted.\n */\n/**\n * TRANSFORM PLAN GENERATOR\n * Generates one or more code transformation steps per iteration,\n * strictly scoped to the current durable Step file.\n */\nexport const transformPlanGenStep = {\n name: 'transformPlanGen',\n description: 'Generates code transformation steps for a single target file.',\n\n requires: ['analysis.intent', 'analysis.focus', 'analysis.fileAnalysis', 'task.currentStep'],\n produces: ['analysis.planSuggestion'],\n\n async run(context: StructuredContext): Promise<void> {\n // ✅ Fail early if no task\n if (!context.task) {\n throw new Error(\"transformPlanGen: missing context.task\");\n }\n\n // ✅ Fail early if no current step\n const currentStep = context.task.currentStep;\n if (!currentStep) {\n throw new Error(\"transformPlanGen: missing context.task.currentStep\");\n }\n\n context.analysis ||= {};\n context.execution ||= {};\n\n // Always clear previous transform plan\n delete context.analysis.planSuggestion;\n\n // Restrict actions to TRANSFORM only\n const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes('transform'));\n if (!effectiveActions.length) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput('transformPlanGen', 'output', { steps: [] });\n return;\n }\n\n const actionsJson = JSON.stringify(effectiveActions, null, 2);\n const intentText = context.analysis.intent?.normalizedQuery ?? '';\n const intentCategory = context.analysis.intent?.intentCategory ?? '';\n const orderedQuestions = context.analysis.intent?.questions ?? [];\n\n const fileAnalysis: Record<string, FileAnalysis> = context.analysis.fileAnalysis ?? {};\n\n // ✅ Use currentStep file\n const targetFile = currentStep.filePath;\n const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);\n\n // Guard: nothing to transform\n if (!targetFile || !fileAnalysis[targetFile]) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput('transformPlanGen', 'output', { steps: [] });\n return;\n }\n\n const fa = fileAnalysis[targetFile];\n\n const excerpts = fa.excerpts?.map(e => ({\n description: e.description,\n startLine: e.startLine,\n endLine: e.endLine,\n symbols: e.symbols,\n code: e.code\n })) ?? [];\n\n const hasExcerpts = excerpts.length > 0;\n\n // Build prompt\n const prompt = hasExcerpts\n ? `\nYou are an autonomous coding agent.\n\nYour task is to generate a transform plan using ONLY:\n- the user intent\n- the provided excerpts as localized hints\n\nIMPORTANT CONSTRAINTS:\n- All steps MUST target the same file: ${targetFile}\n- Do NOT reference or modify any other file\n- Do NOT invent file structure beyond what excerpts explicitly show\n- Do NOT infer missing excerpt fields\n\nIntent:\n${intentText}\n\nTask category:\n${intentCategory}\n\nAllowed actions (transform only):\n${actionsJson}\n\nExcerpts (localized hints):\n${JSON.stringify(excerpts, null, 2)}\n\n${orderedQuestions.length > 0 ? `Ordered question parts:\\n${JSON.stringify(orderedQuestions, null, 2)}\\n` : \"\"}\n\nRules:\n- Use excerpts ONLY to infer WHERE changes occur\n- You MAY reference startLine/endLine ONLY if they are present\n- You MAY reference description or symbols if useful\n- Treat code snippets as context, not as the full file\n- If the intent implies multiple operations (e.g. move = remove + append),\n generate multiple steps in logical order\n- Only include transform steps\n- Each step must include: action, actionId, actionArgs, targetFile, description, metadata\n- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.\n\nReturn strictly valid JSON:\n\n{ \"steps\": [ { \"action\": \"stepName\", \"actionId\": \"stepName\", \"actionArgs\": {}, \"targetFile\": \"${targetFile}\", \"description\": \"what to do and where (using excerpt hints)\", \"metadata\": { \"doneWhenRegex\": { \"filePath\": \"${targetFile}\", \"pattern\": \"...\", \"flags\": \"m\" } } } ] }\n`.trim()\n : `\nYou are an autonomous coding agent.\n\nYour task is to generate a transform plan using ONLY the user intent.\n\nIMPORTANT CONSTRAINTS:\n- All steps MUST target the same file: ${targetFile}\n- Do NOT reference or modify any other file\n- Do NOT invent line numbers, sections, symbols, or file structure\n\nIntent:\n${intentText}\n\nTask category:\n${intentCategory}\n\nAllowed actions (transform only):\n${actionsJson}\n\n${orderedQuestions.length > 0 ? `Ordered question parts:\\n${JSON.stringify(orderedQuestions, null, 2)}\\n` : \"\"}\n\nRules:\n- Plan purely from intent\n- If the intent implies multiple operations (e.g. move = remove + append),\n generate multiple steps in logical order\n- Do NOT include any location hints or references\n- Only include transform steps\n- Each step must include: action, actionId, actionArgs, targetFile, description, metadata\n- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.\n\nReturn strictly valid JSON:\n\n{ \"steps\": [ { \"action\": \"stepName\", \"actionId\": \"stepName\", \"actionArgs\": {}, \"targetFile\": \"${targetFile}\", \"description\": \"what to do (no location hints)\", \"metadata\": { \"doneWhenRegex\": { \"filePath\": \"${targetFile}\", \"pattern\": \"...\", \"flags\": \"m\" } } } ] }\n`.trim();\n\n try {\n const genInput: ModuleIO = { query: intentText, content: prompt };\n const genOutput = await generate(genInput, {\n caller: \"transformPlanGenStep\",\n inputContext: {\n intentText,\n intentCategory,\n targetFile,\n orderedQuestions,\n currentQuestionId,\n hasExcerpts,\n excerpts,\n allowedActions: effectiveActions,\n },\n });\n\n const raw = typeof genOutput.data === 'string'\n ? genOutput.data\n : JSON.stringify(genOutput.data ?? '{}');\n\n const cleaned = await cleanupModule.run({ query: intentText, content: raw });\n\n let parsed: { steps?: AgentPlanStep[] } | null = null;\n if (typeof cleaned.data === 'object' && cleaned.data !== null) {\n parsed = cleaned.data as { steps?: AgentPlanStep[] };\n } else if (typeof cleaned.content === 'string') {\n try {\n parsed = JSON.parse(cleaned.content);\n } catch {\n parsed = null;\n }\n }\n\n const parsedSteps = Array.isArray(parsed?.steps) ? parsed.steps : null;\n const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);\n // Keep an explicit empty planner result as a real no-op.\n const effectiveSteps = parsedSteps ?? (fallbackStep ? [fallbackStep] : []);\n\n // Normalize steps: enforce targetFile, groups, metadata\n const normalizedSteps: AgentPlanStep[] = effectiveSteps.map((step, index) => {\n step.id = `transform:${targetFile}:${index + 1}`;\n step.targetFile = targetFile;\n // ActionRouter consumes actionId/actionArgs; action is kept for backward compatibility.\n step.actionId = step.actionId ?? step.action;\n step.actionArgs = step.actionArgs ?? {};\n step.questionId = step.questionId ?? currentQuestionId;\n\n const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);\n step.groups = actionDef?.groups ?? ['transform'];\n\n const confidence = context.analysis?.routingDecision?.confidence;\n step.metadata = {\n ...step.metadata,\n ...(typeof confidence === 'number' && confidence > 0\n ? { routingConfidence: confidence }\n : {})\n };\n\n return step;\n });\n\n context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };\n logInputOutput('transformPlanGen', 'output', {\n callId: genOutput.trace?.callId,\n source: parsedSteps\n ? 'model'\n : (fallbackStep ? 'fallback' : 'empty'),\n steps: normalizedSteps,\n });\n\n } catch (err) {\n console.warn('⚠️ Failed to generate transform plan:', err);\n const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);\n const fallbackSteps = fallbackStep ? [fallbackStep] : [];\n context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };\n logInputOutput('transformPlanGen', 'output', {\n source: fallbackStep ? 'fallback-after-error' : 'empty-after-error',\n steps: fallbackSteps,\n });\n }\n }\n};\n\n/**\n * Builds a safe one-step transform fallback from semantic analysis when plan JSON is missing.\n *\n * Example:\n * - summary \"Add a hello world comment near the imports\" -> one `codeTransform` step with that description\n * - shouldModify false -> no fallback step\n */\nfunction buildFallbackTransformStep(\n targetFile: string,\n fileAnalysis: FileAnalysis | undefined,\n routingConfidence: number | undefined,\n currentQuestionId?: string,\n): AgentPlanStep | null {\n if (!fileAnalysis?.action?.shouldModify) {\n return null;\n }\n\n const summary = fileAnalysis.proposedChanges?.summary?.trim();\n const rationale = fileAnalysis.proposedChanges?.rationale?.trim();\n const description = [summary, rationale].filter(Boolean).join(\" \");\n if (!description) {\n return null;\n }\n\n return {\n id: `transform:${targetFile}:fallback`,\n action: \"codeTransform\",\n actionId: \"codeTransform\",\n actionArgs: {},\n targetFile,\n questionId: currentQuestionId,\n description,\n groups: [\"transform\"],\n metadata: {\n source: \"semantic-fallback\",\n ...(typeof routingConfidence === \"number\" && routingConfidence > 0\n ? { routingConfidence }\n : {}),\n },\n };\n}\n"]}
|