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
|
@@ -1,12 +1,92 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Generates one analysis step from the current focus without re-explaining the whole task.
|
|
3
|
+
*
|
|
4
|
+
* Why this file exists:
|
|
5
|
+
* - planner retries should change only when evidence changes
|
|
6
|
+
* - generic assumptions and stale resume text make repeated planner prompts look identical
|
|
7
|
+
* - the chosen target file should stay aligned with the focus rationale and downstream answer grounding
|
|
8
|
+
*/
|
|
2
9
|
import { generate } from "../lib/generate.js";
|
|
3
10
|
import { PLAN_ACTIONS } from "../utils/planActions.js";
|
|
4
11
|
import { logInputOutput } from "../utils/promptLogHelper.js";
|
|
5
12
|
import { cleanupModule } from "../pipeline/modules/cleanupModule.js";
|
|
13
|
+
import { buildResumePacket, renderResumePacket } from "../utils/resumeState.js";
|
|
6
14
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
15
|
+
* Builds one safe semantic fallback when the planner returns no usable step.
|
|
16
|
+
*
|
|
17
|
+
* Why this exists:
|
|
18
|
+
* - empty planner output leaves the current task step pending
|
|
19
|
+
* - repeated empty retries burn the give-up budget without new evidence
|
|
20
|
+
* - semanticAnalysis is a stable read-only fallback for the current file
|
|
9
21
|
*/
|
|
22
|
+
function buildFallbackAnalysisStep(targetFile, currentQuestionId) {
|
|
23
|
+
return {
|
|
24
|
+
id: `analysis:fallback:${targetFile}`,
|
|
25
|
+
action: "semanticAnalysis",
|
|
26
|
+
actionId: "semanticAnalysis",
|
|
27
|
+
actionArgs: {},
|
|
28
|
+
targetFile,
|
|
29
|
+
questionId: currentQuestionId,
|
|
30
|
+
description: "Run one deterministic semantic pass on the current target file.",
|
|
31
|
+
metadata: {
|
|
32
|
+
fallbackAnalysisPlan: true,
|
|
33
|
+
},
|
|
34
|
+
groups: ["analysis"],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function reduceUnderstanding(value) {
|
|
38
|
+
if (!value)
|
|
39
|
+
return "";
|
|
40
|
+
const compact = {};
|
|
41
|
+
const genericLine = /(repository|codebase|module|system|task|current selected files|partial and based)/i;
|
|
42
|
+
for (const [key, rawItems] of Object.entries(value)) {
|
|
43
|
+
if (!Array.isArray(rawItems))
|
|
44
|
+
continue;
|
|
45
|
+
const filtered = rawItems
|
|
46
|
+
.map(item => String(item).trim())
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
.filter(item => !genericLine.test(item))
|
|
49
|
+
.slice(0, 2);
|
|
50
|
+
if (filtered.length > 0) {
|
|
51
|
+
compact[key] = filtered;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return Object.keys(compact).length > 0 ? JSON.stringify(compact, null, 2) : "";
|
|
55
|
+
}
|
|
56
|
+
function buildPlannerFrontierSignature(context) {
|
|
57
|
+
const trail = context.analysis?.trail;
|
|
58
|
+
if (!trail)
|
|
59
|
+
return undefined;
|
|
60
|
+
const frontier = (trail.frontier ?? [])
|
|
61
|
+
.map(candidate => `${candidate.filePath}:${candidate.confidence.toFixed(2)}`)
|
|
62
|
+
.sort();
|
|
63
|
+
const pendingQueries = [...(trail.pendingQueries ?? [])].sort();
|
|
64
|
+
if (frontier.length === 0 && pendingQueries.length === 0)
|
|
65
|
+
return undefined;
|
|
66
|
+
return JSON.stringify({ frontier, pendingQueries });
|
|
67
|
+
}
|
|
68
|
+
function buildPlannerPromptSignature(args) {
|
|
69
|
+
return JSON.stringify(args);
|
|
70
|
+
}
|
|
71
|
+
function buildPlannerPromptState(args) {
|
|
72
|
+
const signature = buildPlannerPromptSignature({
|
|
73
|
+
targetFile: args.targetFile,
|
|
74
|
+
rationaleText: args.rationaleText,
|
|
75
|
+
currentQuestionId: args.currentQuestionId,
|
|
76
|
+
promptMode: args.promptMode,
|
|
77
|
+
});
|
|
78
|
+
const repeated = args.prior?.signature === signature &&
|
|
79
|
+
args.prior?.frontierSignature === args.frontierSignature;
|
|
80
|
+
return {
|
|
81
|
+
targetFile: args.targetFile,
|
|
82
|
+
rationaleText: args.rationaleText,
|
|
83
|
+
currentQuestionId: args.currentQuestionId,
|
|
84
|
+
promptMode: args.promptMode,
|
|
85
|
+
signature,
|
|
86
|
+
frontierSignature: args.frontierSignature,
|
|
87
|
+
repeatCount: repeated ? (args.prior?.repeatCount ?? 1) + 1 : 1,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
10
90
|
export const analysisPlanGenStep = {
|
|
11
91
|
name: "analysisPlanGen",
|
|
12
92
|
description: "Generates a single analysis reasoning step.",
|
|
@@ -15,6 +95,7 @@ export const analysisPlanGenStep = {
|
|
|
15
95
|
async run(context) {
|
|
16
96
|
context.analysis || (context.analysis = {});
|
|
17
97
|
context.execution || (context.execution = {});
|
|
98
|
+
const priorPlannerState = context.analysis.plannerPromptState;
|
|
18
99
|
// Ensure task exists (required for currentStep)
|
|
19
100
|
if (!context.task) {
|
|
20
101
|
throw new Error("analysisPlanGenStep: context.task must exist — ensure runBoot has been called");
|
|
@@ -41,9 +122,40 @@ export const analysisPlanGenStep = {
|
|
|
41
122
|
const intentCategory = context.analysis.intent?.intentCategory ?? "";
|
|
42
123
|
const relevantFiles = JSON.stringify([targetFile], null, 2);
|
|
43
124
|
const rationaleText = context.analysis.focus?.rationale ?? "";
|
|
44
|
-
const understandingText = context.analysis.understanding
|
|
45
|
-
|
|
46
|
-
|
|
125
|
+
const understandingText = reduceUnderstanding(context.analysis.understanding);
|
|
126
|
+
const orderedQuestions = context.analysis.intent?.questions ?? [];
|
|
127
|
+
const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);
|
|
128
|
+
const resumedContextCapsule = renderResumePacket(buildResumePacket(context.analysis?.resumeState)) ||
|
|
129
|
+
context.initContext?.resumedContextCapsule ||
|
|
130
|
+
"";
|
|
131
|
+
const compactRetry = shouldUseCompactRetryPrompt({
|
|
132
|
+
prior: priorPlannerState,
|
|
133
|
+
targetFile,
|
|
134
|
+
rationaleText,
|
|
135
|
+
currentQuestionId,
|
|
136
|
+
});
|
|
137
|
+
const promptMode = compactRetry ? "delta" : "full";
|
|
138
|
+
const frontierSignature = buildPlannerFrontierSignature(context);
|
|
139
|
+
const nextPlannerState = buildPlannerPromptState({
|
|
140
|
+
prior: priorPlannerState,
|
|
141
|
+
targetFile,
|
|
142
|
+
rationaleText,
|
|
143
|
+
currentQuestionId,
|
|
144
|
+
promptMode,
|
|
145
|
+
frontierSignature,
|
|
146
|
+
});
|
|
147
|
+
const promptRationaleText = compactRetry
|
|
148
|
+
? buildCompactRetryRationale(targetFile, rationaleText)
|
|
149
|
+
: rationaleText;
|
|
150
|
+
const promptAllowedActions = compactRetry
|
|
151
|
+
? renderCompactActionIds(effectiveActions)
|
|
152
|
+
: JSON.stringify(effectiveActions, null, 2);
|
|
153
|
+
const promptOrderedQuestions = compactRetry
|
|
154
|
+
? renderCompactQuestionState(orderedQuestions, currentQuestionId)
|
|
155
|
+
: orderedQuestions.length > 0
|
|
156
|
+
? JSON.stringify(orderedQuestions, null, 2)
|
|
157
|
+
: "";
|
|
158
|
+
const promptResumedContext = compactRetry ? "" : resumedContextCapsule;
|
|
47
159
|
const prompt = `
|
|
48
160
|
You are an autonomous coding agent.
|
|
49
161
|
Produce **exactly one structured analysis step** that will advance understanding
|
|
@@ -55,17 +167,23 @@ ${intentText}
|
|
|
55
167
|
Task category:
|
|
56
168
|
${intentCategory}
|
|
57
169
|
|
|
58
|
-
Allowed actions (analysis only):
|
|
59
|
-
${
|
|
170
|
+
${compactRetry ? "Allowed action ids (analysis only, unchanged from prior planner step):" : "Allowed actions (analysis only):"}
|
|
171
|
+
${promptAllowedActions}
|
|
60
172
|
|
|
61
173
|
Relevant files:
|
|
62
174
|
${relevantFiles}
|
|
63
175
|
|
|
64
|
-
|
|
65
|
-
${
|
|
176
|
+
Primary target file:
|
|
177
|
+
${targetFile}
|
|
178
|
+
|
|
179
|
+
Focus rationale:
|
|
180
|
+
${promptRationaleText}
|
|
181
|
+
|
|
182
|
+
${understandingText ? `Grounded understanding:\n${understandingText}\n` : ""}
|
|
66
183
|
|
|
67
|
-
|
|
68
|
-
|
|
184
|
+
${promptOrderedQuestions ? `Ordered question parts:\n${promptOrderedQuestions}\n` : ""}
|
|
185
|
+
|
|
186
|
+
${promptResumedContext ? `Resumed context capsule:\n${promptResumedContext}\n` : ""}
|
|
69
187
|
|
|
70
188
|
If this is NOT a coding, refactoring, or inline commenting task,
|
|
71
189
|
return: { "step": null }
|
|
@@ -75,6 +193,8 @@ Return a valid JSON object in this format:
|
|
|
75
193
|
{
|
|
76
194
|
"step": {
|
|
77
195
|
"action": "analysisAction",
|
|
196
|
+
"actionId": "analysisAction",
|
|
197
|
+
"actionArgs": {},
|
|
78
198
|
"targetFile": "optional/path.ts",
|
|
79
199
|
"description": "what this analysis step achieves",
|
|
80
200
|
"metadata": {}
|
|
@@ -83,7 +203,23 @@ Return a valid JSON object in this format:
|
|
|
83
203
|
`.trim();
|
|
84
204
|
try {
|
|
85
205
|
const genInput = { query: intentText, content: prompt };
|
|
86
|
-
const genOutput = await generate(genInput
|
|
206
|
+
const genOutput = await generate(genInput, {
|
|
207
|
+
caller: "analysisPlanGenStep",
|
|
208
|
+
inputContext: {
|
|
209
|
+
intentText,
|
|
210
|
+
intentCategory,
|
|
211
|
+
targetFile,
|
|
212
|
+
rationaleText: promptRationaleText,
|
|
213
|
+
understandingText,
|
|
214
|
+
orderedQuestions,
|
|
215
|
+
currentQuestionId,
|
|
216
|
+
resumedContextCapsule: promptResumedContext,
|
|
217
|
+
plannerRetryMode: promptMode,
|
|
218
|
+
...(compactRetry
|
|
219
|
+
? { allowedActionIds: effectiveActions.map(action => action.actionId ?? action.action) }
|
|
220
|
+
: { allowedActions: effectiveActions }),
|
|
221
|
+
},
|
|
222
|
+
});
|
|
87
223
|
const raw = typeof genOutput.data === "string"
|
|
88
224
|
? genOutput.data
|
|
89
225
|
: JSON.stringify(genOutput.data ?? "{}");
|
|
@@ -97,12 +233,23 @@ Return a valid JSON object in this format:
|
|
|
97
233
|
const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);
|
|
98
234
|
return {
|
|
99
235
|
...step,
|
|
236
|
+
// Example: planner returns action="semanticAnalysis".
|
|
237
|
+
actionId: step.actionId ?? step.action,
|
|
238
|
+
actionArgs: step.actionArgs ?? {},
|
|
239
|
+
questionId: step.questionId ?? currentQuestionId,
|
|
100
240
|
groups: actionDef?.groups ?? ["analysis"],
|
|
101
241
|
metadata: step.metadata ?? {},
|
|
102
242
|
};
|
|
103
243
|
});
|
|
104
|
-
|
|
105
|
-
|
|
244
|
+
const normalizedSteps = finalSteps.length > 0
|
|
245
|
+
? finalSteps
|
|
246
|
+
: [buildFallbackAnalysisStep(targetFile, currentQuestionId)];
|
|
247
|
+
context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };
|
|
248
|
+
context.analysis.plannerPromptState = nextPlannerState;
|
|
249
|
+
logInputOutput("analysisPlanGen", "output", {
|
|
250
|
+
callId: genOutput.trace?.callId,
|
|
251
|
+
steps: normalizedSteps,
|
|
252
|
+
});
|
|
106
253
|
if (process.env.SCAI_VERBOSE_AGENT_LOGS === "1") {
|
|
107
254
|
console.log("🧠 [analysisPlanGenStep] EXIT (success)");
|
|
108
255
|
}
|
|
@@ -111,8 +258,38 @@ Return a valid JSON object in this format:
|
|
|
111
258
|
if (process.env.SCAI_VERBOSE_AGENT_LOGS === "1") {
|
|
112
259
|
console.warn("⚠️ [analysisPlanGenStep] FAILED to generate analysis plan:", err);
|
|
113
260
|
}
|
|
114
|
-
|
|
115
|
-
|
|
261
|
+
const fallbackSteps = [buildFallbackAnalysisStep(targetFile, currentQuestionId)];
|
|
262
|
+
context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };
|
|
263
|
+
context.analysis.plannerPromptState = nextPlannerState;
|
|
264
|
+
logInputOutput("analysisPlanGen", "output", { steps: fallbackSteps });
|
|
116
265
|
}
|
|
117
266
|
}
|
|
118
267
|
};
|
|
268
|
+
function shouldUseCompactRetryPrompt(args) {
|
|
269
|
+
return Boolean(args.prior &&
|
|
270
|
+
args.prior.targetFile === args.targetFile &&
|
|
271
|
+
args.prior.rationaleText === args.rationaleText &&
|
|
272
|
+
args.prior.currentQuestionId === args.currentQuestionId);
|
|
273
|
+
}
|
|
274
|
+
function buildCompactRetryRationale(targetFile, rationaleText) {
|
|
275
|
+
const lines = rationaleText
|
|
276
|
+
.split("\n")
|
|
277
|
+
.map(line => line.trim())
|
|
278
|
+
.filter(Boolean)
|
|
279
|
+
.filter(line => /^Pre-check:/i.test(line) || /^\[Post-check\]/i.test(line));
|
|
280
|
+
const summary = lines.slice(0, 2).join("\n").trim();
|
|
281
|
+
return summary || `Focus unchanged for ${targetFile}; reuse the same target and only add materially new analysis evidence.`;
|
|
282
|
+
}
|
|
283
|
+
function renderCompactActionIds(actions) {
|
|
284
|
+
return actions.map(action => action.actionId ?? action.action).join(", ");
|
|
285
|
+
}
|
|
286
|
+
function renderCompactQuestionState(orderedQuestions, currentQuestionId) {
|
|
287
|
+
if (orderedQuestions.length === 0)
|
|
288
|
+
return "";
|
|
289
|
+
const current = orderedQuestions.find(question => question.id === currentQuestionId);
|
|
290
|
+
if (current?.text) {
|
|
291
|
+
return `Current question: ${current.text}`;
|
|
292
|
+
}
|
|
293
|
+
return `Question count unchanged: ${orderedQuestions.length}`;
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=analysisPlanGenStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisPlanGenStep.js","sourceRoot":"","sources":["../../src/agents/analysisPlanGenStep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generates one analysis step from the current focus without re-explaining the whole task.\n *\n * Why this file exists:\n * - planner retries should change only when evidence changes\n * - generic assumptions and stale resume text make repeated planner prompts look identical\n * - the chosen target file should stay aligned with the focus rationale and downstream answer grounding\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, PlannerPromptState } from \"../types.js\";\nimport { buildResumePacket, renderResumePacket } from \"../utils/resumeState.js\";\n\n/**\n * Builds one safe semantic fallback when the planner returns no usable step.\n *\n * Why this exists:\n * - empty planner output leaves the current task step pending\n * - repeated empty retries burn the give-up budget without new evidence\n * - semanticAnalysis is a stable read-only fallback for the current file\n */\nfunction buildFallbackAnalysisStep(targetFile: string, currentQuestionId?: string): AgentPlanStep {\n return {\n id: `analysis:fallback:${targetFile}`,\n action: \"semanticAnalysis\",\n actionId: \"semanticAnalysis\",\n actionArgs: {},\n targetFile,\n questionId: currentQuestionId,\n description: \"Run one deterministic semantic pass on the current target file.\",\n metadata: {\n fallbackAnalysisPlan: true,\n },\n groups: [\"analysis\"],\n };\n}\n\nfunction reduceUnderstanding(value: {\n problemStatement?: string;\n constraints?: string[];\n assumptions?: string[];\n risks?: string[];\n sharedPatterns?: string[];\n hotspots?: string[];\n couplingPoints?: string[];\n} | undefined): string {\n if (!value) return \"\";\n const compact: Record<string, unknown> = {};\n const genericLine = /(repository|codebase|module|system|task|current selected files|partial and based)/i;\n\n for (const [key, rawItems] of Object.entries(value)) {\n if (!Array.isArray(rawItems)) continue;\n const filtered = rawItems\n .map(item => String(item).trim())\n .filter(Boolean)\n .filter(item => !genericLine.test(item))\n .slice(0, 2);\n if (filtered.length > 0) {\n compact[key] = filtered;\n }\n }\n\n return Object.keys(compact).length > 0 ? JSON.stringify(compact, null, 2) : \"\";\n}\n\nfunction buildPlannerFrontierSignature(context: StructuredContext): string | undefined {\n const trail = context.analysis?.trail;\n if (!trail) return undefined;\n\n const frontier = (trail.frontier ?? [])\n .map(candidate => `${candidate.filePath}:${candidate.confidence.toFixed(2)}`)\n .sort();\n const pendingQueries = [...(trail.pendingQueries ?? [])].sort();\n if (frontier.length === 0 && pendingQueries.length === 0) return undefined;\n\n return JSON.stringify({ frontier, pendingQueries });\n}\n\nfunction buildPlannerPromptSignature(args: {\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n promptMode: \"full\" | \"delta\";\n}): string {\n return JSON.stringify(args);\n}\n\nfunction buildPlannerPromptState(args: {\n prior: PlannerPromptState | undefined;\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n promptMode: \"full\" | \"delta\";\n frontierSignature?: string;\n}): PlannerPromptState {\n const signature = buildPlannerPromptSignature({\n targetFile: args.targetFile,\n rationaleText: args.rationaleText,\n currentQuestionId: args.currentQuestionId,\n promptMode: args.promptMode,\n });\n const repeated =\n args.prior?.signature === signature &&\n args.prior?.frontierSignature === args.frontierSignature;\n\n return {\n targetFile: args.targetFile,\n rationaleText: args.rationaleText,\n currentQuestionId: args.currentQuestionId,\n promptMode: args.promptMode,\n signature,\n frontierSignature: args.frontierSignature,\n repeatCount: repeated ? (args.prior?.repeatCount ?? 1) + 1 : 1,\n };\n}\n\nexport const analysisPlanGenStep = {\n name: \"analysisPlanGen\",\n description: \"Generates a single analysis reasoning step.\",\n\n requires: [\"analysis.intent\", \"analysis.focus\", \"analysis.routingDecision\"],\n produces: [\"analysis.planSuggestion\"],\n\n async run(context: StructuredContext): Promise<void> {\n context.analysis ||= {};\n context.execution ||= {};\n const priorPlannerState = context.analysis.plannerPromptState;\n\n // Ensure task exists (required for currentStep)\n if (!context.task) {\n throw new Error(\n \"analysisPlanGenStep: context.task must exist — ensure runBoot has been called\"\n );\n }\n\n // 🔁 Always overwrite previous planSuggestion\n delete context.analysis.planSuggestion;\n\n // Use the DB-backed currentStep\n const currentStep = context.task.currentStep;\n if (!currentStep?.filePath) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: [] });\n return;\n }\n const targetFile = currentStep.filePath;\n\n // Restrict actions to ANALYSIS only\n const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes(\"analysis\"));\n if (!effectiveActions.length) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: [] });\n return;\n }\n\n const actionsJson = JSON.stringify(effectiveActions, null, 2);\n const intentText = context.analysis.intent?.normalizedQuery ?? context.initContext?.userQuery ?? \"\";\n const intentCategory = context.analysis.intent?.intentCategory ?? \"\";\n const relevantFiles = JSON.stringify([targetFile], null, 2);\n const rationaleText = context.analysis.focus?.rationale ?? \"\";\n const understandingText = reduceUnderstanding(context.analysis.understanding);\n const orderedQuestions = context.analysis.intent?.questions ?? [];\n const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);\n const resumedContextCapsule =\n renderResumePacket(buildResumePacket(context.analysis?.resumeState)) ||\n context.initContext?.resumedContextCapsule ||\n \"\";\n const compactRetry = shouldUseCompactRetryPrompt({\n prior: priorPlannerState,\n targetFile,\n rationaleText,\n currentQuestionId,\n });\n const promptMode = compactRetry ? \"delta\" : \"full\";\n const frontierSignature = buildPlannerFrontierSignature(context);\n const nextPlannerState = buildPlannerPromptState({\n prior: priorPlannerState,\n targetFile,\n rationaleText,\n currentQuestionId,\n promptMode,\n frontierSignature,\n });\n const promptRationaleText = compactRetry\n ? buildCompactRetryRationale(targetFile, rationaleText)\n : rationaleText;\n const promptAllowedActions = compactRetry\n ? renderCompactActionIds(effectiveActions)\n : JSON.stringify(effectiveActions, null, 2);\n const promptOrderedQuestions = compactRetry\n ? renderCompactQuestionState(orderedQuestions, currentQuestionId)\n : orderedQuestions.length > 0\n ? JSON.stringify(orderedQuestions, null, 2)\n : \"\";\n const promptResumedContext = compactRetry ? \"\" : resumedContextCapsule;\n\n const prompt = `\nYou are an autonomous coding agent.\nProduce **exactly one structured analysis step** that will advance understanding\nof the codebase, suitable for safe planning of transformations.\n\nIntent / task description:\n${intentText}\n\nTask category:\n${intentCategory}\n\n${compactRetry ? \"Allowed action ids (analysis only, unchanged from prior planner step):\" : \"Allowed actions (analysis only):\"}\n${promptAllowedActions}\n\nRelevant files:\n${relevantFiles}\n\nPrimary target file:\n${targetFile}\n\nFocus rationale:\n${promptRationaleText}\n\n${understandingText ? `Grounded understanding:\\n${understandingText}\\n` : \"\"}\n\n${promptOrderedQuestions ? `Ordered question parts:\\n${promptOrderedQuestions}\\n` : \"\"}\n\n${promptResumedContext ? `Resumed context capsule:\\n${promptResumedContext}\\n` : \"\"}\n\nIf this is NOT a coding, refactoring, or inline commenting task,\nreturn: { \"step\": null }\n\nReturn a valid JSON object in this format:\n\n{\n \"step\": {\n \"action\": \"analysisAction\",\n \"actionId\": \"analysisAction\",\n \"actionArgs\": {},\n \"targetFile\": \"optional/path.ts\",\n \"description\": \"what this analysis step achieves\",\n \"metadata\": {}\n }\n}\n `.trim();\n\n try {\n const genInput: ModuleIO = { query: intentText, content: prompt };\n const genOutput = await generate(genInput, {\n caller: \"analysisPlanGenStep\",\n inputContext: {\n intentText,\n intentCategory,\n targetFile,\n rationaleText: promptRationaleText,\n understandingText,\n orderedQuestions,\n currentQuestionId,\n resumedContextCapsule: promptResumedContext,\n plannerRetryMode: promptMode,\n ...(compactRetry\n ? { allowedActionIds: effectiveActions.map(action => action.actionId ?? action.action) }\n : { allowedActions: effectiveActions }),\n },\n });\n\n const raw =\n typeof genOutput.data === \"string\"\n ? genOutput.data\n : JSON.stringify(genOutput.data ?? \"{}\");\n\n const cleaned = await cleanupModule.run({ query: intentText, content: raw });\n const jsonString =\n typeof cleaned.content === \"string\"\n ? cleaned.content\n : JSON.stringify(cleaned.content ?? \"{}\");\n\n const planObj: { step?: AgentPlanStep | null } = JSON.parse(jsonString);\n const steps: AgentPlanStep[] = planObj.step ? [planObj.step] : [];\n\n const finalSteps = steps.map((step: AgentPlanStep) => {\n const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);\n return {\n ...step,\n // Example: planner returns action=\"semanticAnalysis\".\n actionId: step.actionId ?? step.action,\n actionArgs: step.actionArgs ?? {},\n questionId: step.questionId ?? currentQuestionId,\n groups: actionDef?.groups ?? [\"analysis\"],\n metadata: step.metadata ?? {},\n };\n });\n\n const normalizedSteps = finalSteps.length > 0\n ? finalSteps\n : [buildFallbackAnalysisStep(targetFile, currentQuestionId)];\n\n context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };\n context.analysis.plannerPromptState = nextPlannerState;\n logInputOutput(\"analysisPlanGen\", \"output\", {\n callId: genOutput.trace?.callId,\n steps: normalizedSteps,\n });\n if (process.env.SCAI_VERBOSE_AGENT_LOGS === \"1\") {\n console.log(\"🧠 [analysisPlanGenStep] EXIT (success)\");\n }\n\n } catch (err) {\n if (process.env.SCAI_VERBOSE_AGENT_LOGS === \"1\") {\n console.warn(\"⚠️ [analysisPlanGenStep] FAILED to generate analysis plan:\", err);\n }\n const fallbackSteps = [buildFallbackAnalysisStep(targetFile, currentQuestionId)];\n context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };\n context.analysis.plannerPromptState = nextPlannerState;\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: fallbackSteps });\n }\n }\n};\n\nfunction shouldUseCompactRetryPrompt(args: {\n prior: PlannerPromptState | undefined;\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n}): boolean {\n return Boolean(\n args.prior &&\n args.prior.targetFile === args.targetFile &&\n args.prior.rationaleText === args.rationaleText &&\n args.prior.currentQuestionId === args.currentQuestionId\n );\n}\n\nfunction buildCompactRetryRationale(targetFile: string, rationaleText: string): string {\n const lines = rationaleText\n .split(\"\\n\")\n .map(line => line.trim())\n .filter(Boolean)\n .filter(line => /^Pre-check:/i.test(line) || /^\\[Post-check\\]/i.test(line));\n const summary = lines.slice(0, 2).join(\"\\n\").trim();\n return summary || `Focus unchanged for ${targetFile}; reuse the same target and only add materially new analysis evidence.`;\n}\n\nfunction renderCompactActionIds(actions: Array<{ actionId?: string; action: string }>): string {\n return actions.map(action => action.actionId ?? action.action).join(\", \");\n}\n\nfunction renderCompactQuestionState(\n orderedQuestions: Array<{ id?: string; text?: string; order?: number }> ,\n currentQuestionId?: string\n): string {\n if (orderedQuestions.length === 0) return \"\";\n const current = orderedQuestions.find(question => question.id === currentQuestionId);\n if (current?.text) {\n return `Current question: ${current.text}`;\n }\n return `Question count unchanged: ${orderedQuestions.length}`;\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function keepStartedOrCompletedSteps(steps) {
|
|
2
|
+
return (steps ?? []).filter((step) => {
|
|
3
|
+
return step.status === "completed" || step.startTime != null || step.endTime != null;
|
|
4
|
+
});
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Converts direct-answer and analysis-only answer paths into completed tasks.
|
|
8
|
+
* Example: finalAnswer exists, transform route disabled, and only pending seeded steps exist.
|
|
9
|
+
*/
|
|
10
|
+
export function normalizeAnswerOnlyCompletion(context, answerPath) {
|
|
11
|
+
const finalAnswer = context.analysis?.finalAnswer?.trim();
|
|
12
|
+
if (!finalAnswer)
|
|
13
|
+
return false;
|
|
14
|
+
const startedOrCompletedSteps = keepStartedOrCompletedSteps(context.task.steps);
|
|
15
|
+
const hasStartedOrCompletedSteps = startedOrCompletedSteps.length > 0;
|
|
16
|
+
const allowTransform = Boolean(context.analysis?.routingDecision?.allowTransform ??
|
|
17
|
+
context.analysis?.executionPolicy?.routeAllowed?.transform);
|
|
18
|
+
const isDirectContinuityAnswer = answerPath === "continuity";
|
|
19
|
+
const isAnalysisOnlyFinalAnswer = answerPath === "final" &&
|
|
20
|
+
!allowTransform &&
|
|
21
|
+
!hasStartedOrCompletedSteps;
|
|
22
|
+
if (!isDirectContinuityAnswer && !isAnalysisOnlyFinalAnswer) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
context.task.status = "completed";
|
|
26
|
+
delete context.task.reason;
|
|
27
|
+
context.task.currentStep = undefined;
|
|
28
|
+
context.task.steps = startedOrCompletedSteps;
|
|
29
|
+
context.currentStep = undefined;
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=answerOnlyCompletion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerOnlyCompletion.js","sourceRoot":"","sources":["../../src/agents/answerOnlyCompletion.ts"],"names":[],"mappings":"AAiBA,SAAS,2BAA2B,CAAC,KAAyB;IAC5D,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAA0B,EAC1B,UAA0B;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,OAAO,CAC5B,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc;QACjD,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,CAC3D,CAAC;IACF,MAAM,wBAAwB,GAAG,UAAU,KAAK,YAAY,CAAC;IAC7D,MAAM,yBAAyB,GAC7B,UAAU,KAAK,OAAO;QACtB,CAAC,cAAc;QACf,CAAC,0BAA0B,CAAC;IAE9B,IAAI,CAAC,wBAAwB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IAClC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC;IAC7C,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/**\n * Normalizes answer-only runs into a clean completed terminal state.\n *\n * Why this exists:\n * - some runs can produce a valid final answer without entering real execution work\n * - those runs should not stay `deferred` or carry stale pending plan seeds\n * - the rule must live in one place before the future Session/Task/Step rebuild\n *\n * Examples:\n * - continuity direct answer -> completed with zero steps\n * - explicit-target explanation with no execution work -> completed with zero steps\n * - transform route with real execution expectation -> do not normalize here\n */\nimport type { StructuredContext, Step } from \"../types.js\";\n\ntype AnswerPathKind = \"continuity\" | \"final\";\n\nfunction keepStartedOrCompletedSteps(steps: Step[] | undefined): Step[] {\n return (steps ?? []).filter((step) => {\n return step.status === \"completed\" || step.startTime != null || step.endTime != null;\n });\n}\n\n/**\n * Converts direct-answer and analysis-only answer paths into completed tasks.\n * Example: finalAnswer exists, transform route disabled, and only pending seeded steps exist.\n */\nexport function normalizeAnswerOnlyCompletion(\n context: StructuredContext,\n answerPath: AnswerPathKind\n): boolean {\n const finalAnswer = context.analysis?.finalAnswer?.trim();\n if (!finalAnswer) return false;\n\n const startedOrCompletedSteps = keepStartedOrCompletedSteps(context.task.steps);\n const hasStartedOrCompletedSteps = startedOrCompletedSteps.length > 0;\n const allowTransform = Boolean(\n context.analysis?.routingDecision?.allowTransform ??\n context.analysis?.executionPolicy?.routeAllowed?.transform\n );\n const isDirectContinuityAnswer = answerPath === \"continuity\";\n const isAnalysisOnlyFinalAnswer =\n answerPath === \"final\" &&\n !allowTransform &&\n !hasStartedOrCompletedSteps;\n\n if (!isDirectContinuityAnswer && !isAnalysisOnlyFinalAnswer) {\n return false;\n }\n\n context.task.status = \"completed\";\n delete context.task.reason;\n context.task.currentStep = undefined;\n context.task.steps = startedOrCompletedSteps;\n context.currentStep = undefined;\n return true;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collaboratorStep.js","sourceRoot":"","sources":["../../src/agents/collaboratorStep.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,2DAA2D;IAExE,QAAQ,EAAE,CAAC,6BAA6B,CAAC;IACzC,QAAQ,EAAE,CAAC,+BAA+B,EAAE,6BAA6B,CAAC;IAE1E,KAAK,CAAC,GAAG,CAAC,OAA0B;QAChC,OAAO,CAAC,QAAQ,KAAhB,OAAO,CAAC,QAAQ,GAAK,EAAE,EAAC;QAExB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,wDAAwD;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACvD,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QAE3C,qDAAqD;QACrD,IAAI,SAAS,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO;QAExD,sDAAsD;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAyB;gBACnC,cAAc,EACV,iGAAiG;gBACrG,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,IAAI;aACvB,CAAC;YAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrD,CAAC;QAED,mEAAmE;QACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG;YAClC,GAAG,SAAS;YACZ,OAAO,EAAE,gCAAgC;YACzC,SAAS,EACL,wEAAwE;YAC5E,UAAU,EAAE,GAAG;SAClB,CAAC;QAEF,cAAc,CACV,kBAAkB,EAClB,QAAQ,EACR;YACI,oBAAoB,EAAE,OAAO,CAAC,QAAQ,EAAE,oBAAoB;YAC5D,kBAAkB,EAAE,OAAO,CAAC,QAAQ,EAAE,kBAAkB;SAC3D,CACJ,CAAC;IAEN,CAAC;CACJ,CAAC","sourcesContent":["// File: src/agents/collaboratorStep.ts\nimport type {\n StructuredContext,\n CollaboratorFeedback,\n IterationReasoning\n} from '../types.js';\nimport { logInputOutput } from '../utils/promptLogHelper.js';\n\n/**\n * COLLABORATOR STEP\n * Prepares or collects collaborator / human feedback when required.\n * Does NOT advance execution unless feedback is resolved.\n */\nexport const collaboratorStep = {\n name: 'collaboratorStep',\n description: 'Requests or integrates collaborator feedback when needed.',\n\n requires: ['analysis.iterationReasoning'],\n produces: ['analysis.collaboratorFeedback', 'analysis.iterationReasoning'],\n\n async run(context: StructuredContext): Promise<void> {\n context.analysis ||= {};\n\n const reasoning = context.analysis.iterationReasoning;\n if (!reasoning) return;\n\n // If feedback already exists and is applied, do nothing\n const existing = context.analysis.collaboratorFeedback;\n if (existing?.status === 'applied') return;\n\n // Only act if iteration explicitly requests feedback\n if (reasoning.nextAction !== 'request-feedback') return;\n\n // Initialize collaborator feedback request if missing\n if (!existing) {\n const feedback: CollaboratorFeedback = {\n summaryForUser:\n 'Additional review is requested before continuing. Please confirm or correct the recent changes.',\n status: 'pending',\n requiresAction: true\n };\n\n context.analysis.collaboratorFeedback = feedback;\n }\n\n // Update iteration reasoning to reflect wait state (no new fields)\n context.analysis.iterationReasoning = {\n ...reasoning,\n summary: 'Awaiting collaborator feedback',\n rationale:\n 'Iteration paused until external confirmation or correction is received',\n confidence: 0.5\n };\n\n logInputOutput(\n \"collaboratorStep\",\n \"output\",\n {\n collaboratorFeedback: context.analysis?.collaboratorFeedback,\n iterationReasoning: context.analysis?.iterationReasoning\n }\n );\n\n }\n};\n"]}
|