scai 0.1.178 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -267
- package/dist/__tests__/CommitSuggesterCmd.test.js +112 -0
- package/dist/__tests__/CommitSuggesterCmd.test.js.map +1 -0
- package/dist/__tests__/EvalReportCmd.test.js +645 -0
- package/dist/__tests__/EvalReportCmd.test.js.map +1 -0
- package/dist/__tests__/ModelCmd.test.js +64 -0
- package/dist/__tests__/ModelCmd.test.js.map +1 -0
- package/dist/__tests__/agents/agentActions.test.js +345 -0
- package/dist/__tests__/agents/agentActions.test.js.map +1 -0
- package/dist/__tests__/agents/agentFeedback.test.js +118 -0
- package/dist/__tests__/agents/agentFeedback.test.js.map +1 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js +74 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js.map +1 -0
- package/dist/__tests__/agents/agentLoop.test.js +1723 -0
- package/dist/__tests__/agents/agentLoop.test.js.map +1 -0
- package/dist/__tests__/agents/agentPolicyState.test.js +948 -0
- package/dist/__tests__/agents/agentPolicyState.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js +170 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js +129 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js +90 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js +289 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js +166 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js +139 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js +584 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js +23 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchShared.test.js +78 -0
- package/dist/__tests__/agents/agentSearchShared.test.js.map +1 -0
- package/dist/__tests__/agents/agentStateMachine.test.js +58 -0
- package/dist/__tests__/agents/agentStateMachine.test.js.map +1 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js +156 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentTools.test.js +69 -0
- package/dist/__tests__/agents/agentTools.test.js.map +1 -0
- package/dist/__tests__/agents/agentTransform.test.js +779 -0
- package/dist/__tests__/agents/agentTransform.test.js.map +1 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js +157 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js +75 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js.map +1 -0
- package/dist/__tests__/agents/decideNextAction.test.js +1662 -0
- package/dist/__tests__/agents/decideNextAction.test.js.map +1 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js +258 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js.map +1 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js +113 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js.map +1 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js +208 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js.map +1 -0
- package/dist/__tests__/agents/fileCheckStep.test.js +299 -0
- package/dist/__tests__/agents/fileCheckStep.test.js.map +1 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js +35 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/guardState.test.js +297 -0
- package/dist/__tests__/agents/guardState.test.js.map +1 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js +72 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js.map +1 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js +60 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js +207 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js.map +1 -0
- package/dist/__tests__/agents/prompting.test.js +363 -0
- package/dist/__tests__/agents/prompting.test.js.map +1 -0
- package/dist/__tests__/agents/readinessGateStep.test.js +180 -0
- package/dist/__tests__/agents/readinessGateStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextStep.test.js +56 -0
- package/dist/__tests__/agents/reasonNextStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js +284 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js.map +1 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js +170 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js.map +1 -0
- package/dist/__tests__/agents/resolveProgressState.test.js +526 -0
- package/dist/__tests__/agents/resolveProgressState.test.js.map +1 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js +50 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js +134 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js.map +1 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js +118 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js.map +1 -0
- package/dist/__tests__/agents/searchContext.test.js +97 -0
- package/dist/__tests__/agents/searchContext.test.js.map +1 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js +73 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js.map +1 -0
- package/dist/__tests__/agents/structuredOutput.test.js +45 -0
- package/dist/__tests__/agents/structuredOutput.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js +59 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js +92 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandIntentStep.test.js +237 -0
- package/dist/__tests__/agents/understandIntentStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandResumeContext.test.js +65 -0
- package/dist/__tests__/agents/understandResumeContext.test.js.map +1 -0
- package/dist/__tests__/agents/understandScope.test.js +227 -0
- package/dist/__tests__/agents/understandScope.test.js.map +1 -0
- package/dist/__tests__/agents/validateChangesStep.test.js +52 -0
- package/dist/__tests__/agents/validateChangesStep.test.js.map +1 -0
- package/dist/__tests__/askCommandTaskBinding.test.js +176 -0
- package/dist/__tests__/askCommandTaskBinding.test.js.map +1 -0
- package/dist/__tests__/commandVisibility.test.js +25 -0
- package/dist/__tests__/commandVisibility.test.js.map +1 -0
- package/dist/__tests__/config.devOutput.test.js +82 -0
- package/dist/__tests__/config.devOutput.test.js.map +1 -0
- package/dist/__tests__/currentContext.test.js +43 -0
- package/dist/__tests__/currentContext.test.js.map +1 -0
- package/dist/__tests__/daemonWorker.test.js +51 -0
- package/dist/__tests__/daemonWorker.test.js.map +1 -0
- package/dist/__tests__/dialogState.test.js +113 -0
- package/dist/__tests__/dialogState.test.js.map +1 -0
- package/dist/__tests__/evalCommands.test.js +506 -0
- package/dist/__tests__/evalCommands.test.js.map +1 -0
- package/dist/__tests__/evalCommandsSummary.test.js +68 -0
- package/dist/__tests__/evalCommandsSummary.test.js.map +1 -0
- package/dist/__tests__/example.test.js +1 -0
- package/dist/__tests__/example.test.js.map +1 -0
- package/dist/__tests__/factory.commitCommand.test.js +45 -0
- package/dist/__tests__/factory.commitCommand.test.js.map +1 -0
- package/dist/__tests__/factory.devOutputCommand.test.js +122 -0
- package/dist/__tests__/factory.devOutputCommand.test.js.map +1 -0
- package/dist/__tests__/factory.evalCommands.test.js +38 -0
- package/dist/__tests__/factory.evalCommands.test.js.map +1 -0
- package/dist/__tests__/factory.planCommand.test.js +35 -0
- package/dist/__tests__/factory.planCommand.test.js.map +1 -0
- package/dist/__tests__/factory.setupCommand.test.js +34 -0
- package/dist/__tests__/factory.setupCommand.test.js.map +1 -0
- package/dist/__tests__/factory.statusCommand.test.js +54 -0
- package/dist/__tests__/factory.statusCommand.test.js.map +1 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js +35 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js.map +1 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js +57 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js.map +1 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js +344 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js.map +1 -0
- package/dist/__tests__/index.modelStartup.test.js +24 -0
- package/dist/__tests__/index.modelStartup.test.js.map +1 -0
- package/dist/__tests__/indexCmd.test.js +85 -0
- package/dist/__tests__/indexCmd.test.js.map +1 -0
- package/dist/__tests__/indexSlashCommand.test.js +50 -0
- package/dist/__tests__/indexSlashCommand.test.js.map +1 -0
- package/dist/__tests__/ollamaService.test.js +103 -0
- package/dist/__tests__/ollamaService.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js +68 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js +68 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js +284 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js +1139 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js +146 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js +192 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js.map +1 -0
- package/dist/__tests__/repoIdentity.test.js +31 -0
- package/dist/__tests__/repoIdentity.test.js.map +1 -0
- package/dist/__tests__/resumeContext.test.js +87 -0
- package/dist/__tests__/resumeContext.test.js.map +1 -0
- package/dist/__tests__/resumeState.test.js +239 -0
- package/dist/__tests__/resumeState.test.js.map +1 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js +836 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js.map +1 -0
- package/dist/__tests__/shellDialogUi.test.js +52 -0
- package/dist/__tests__/shellDialogUi.test.js.map +1 -0
- package/dist/__tests__/shellSession.test.js +102 -0
- package/dist/__tests__/shellSession.test.js.map +1 -0
- package/dist/__tests__/statusOwner.test.js +215 -0
- package/dist/__tests__/statusOwner.test.js.map +1 -0
- package/dist/__tests__/testing/contextEval.test.js +244 -0
- package/dist/__tests__/testing/contextEval.test.js.map +1 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js +124 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js.map +1 -0
- package/dist/__tests__/testing/llmTraceSession.test.js +67 -0
- package/dist/__tests__/testing/llmTraceSession.test.js.map +1 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js +35 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js.map +1 -0
- package/dist/__tests__/testing/runDiagnosis.test.js +159 -0
- package/dist/__tests__/testing/runDiagnosis.test.js.map +1 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js +66 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js.map +1 -0
- package/dist/__tests__/testing/testCommands.test.js +53 -0
- package/dist/__tests__/testing/testCommands.test.js.map +1 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js +38 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js.map +1 -0
- package/dist/__tests__/utils/consolePresentation.test.js +105 -0
- package/dist/__tests__/utils/consolePresentation.test.js.map +1 -0
- package/dist/__tests__/utils/extractFileReferences.test.js +41 -0
- package/dist/__tests__/utils/extractFileReferences.test.js.map +1 -0
- package/dist/__tests__/utils/log.test.js +34 -0
- package/dist/__tests__/utils/log.test.js.map +1 -0
- package/dist/__tests__/utils/runtimeLogger.test.js +200 -0
- package/dist/__tests__/utils/runtimeLogger.test.js.map +1 -0
- package/dist/__tests__/utils/spinner.test.js +31 -0
- package/dist/__tests__/utils/spinner.test.js.map +1 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js +41 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js.map +1 -0
- package/dist/agent/actions/index.js +301 -0
- package/dist/agent/actions/index.js.map +1 -0
- package/dist/agent/actions/normalize.js +360 -0
- package/dist/agent/actions/normalize.js.map +1 -0
- package/dist/agent/actions/schemas.js +129 -0
- package/dist/agent/actions/schemas.js.map +1 -0
- package/dist/agent/evidence/index.js +320 -0
- package/dist/agent/evidence/index.js.map +1 -0
- package/dist/agent/feedback/index.js +187 -0
- package/dist/agent/feedback/index.js.map +1 -0
- package/dist/agent/finalization/index.js +35 -0
- package/dist/agent/finalization/index.js.map +1 -0
- package/dist/agent/index.js +126 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/logging/index.js +350 -0
- package/dist/agent/logging/index.js.map +1 -0
- package/dist/agent/persistence/boot.js +58 -0
- package/dist/agent/persistence/boot.js.map +1 -0
- package/dist/agent/persistence/currentTask.js +36 -0
- package/dist/agent/persistence/currentTask.js.map +1 -0
- package/dist/agent/persistence/hydrate.js +42 -0
- package/dist/agent/persistence/hydrate.js.map +1 -0
- package/dist/agent/persistence/index.js +15 -0
- package/dist/agent/persistence/index.js.map +1 -0
- package/dist/agent/persistence/snapshots.js +97 -0
- package/dist/agent/persistence/snapshots.js.map +1 -0
- package/dist/agent/persistence/steps.js +95 -0
- package/dist/agent/persistence/steps.js.map +1 -0
- package/dist/agent/persistence/tasks.js +195 -0
- package/dist/agent/persistence/tasks.js.map +1 -0
- package/dist/agent/persistence/turns.js +92 -0
- package/dist/agent/persistence/turns.js.map +1 -0
- package/dist/agent/policy/ambiguityResolution.js +226 -0
- package/dist/agent/policy/ambiguityResolution.js.map +1 -0
- package/dist/agent/policy/contracts.js +2 -0
- package/dist/agent/policy/contracts.js.map +1 -0
- package/dist/agent/policy/coveragePolicy.js +309 -0
- package/dist/agent/policy/coveragePolicy.js.map +1 -0
- package/dist/agent/policy/endDecisionPolicy.js +31 -0
- package/dist/agent/policy/endDecisionPolicy.js.map +1 -0
- package/dist/agent/policy/index.js +344 -0
- package/dist/agent/policy/index.js.map +1 -0
- package/dist/agent/policy/loopReview.js +778 -0
- package/dist/agent/policy/loopReview.js.map +1 -0
- package/dist/agent/policy/readinessPolicy.js +108 -0
- package/dist/agent/policy/readinessPolicy.js.map +1 -0
- package/dist/agent/policy/resolutionPipeline.js +356 -0
- package/dist/agent/policy/resolutionPipeline.js.map +1 -0
- package/dist/agent/policy/targetClassification.js +33 -0
- package/dist/agent/policy/targetClassification.js.map +1 -0
- package/dist/agent/prompting/actionChoice.js +90 -0
- package/dist/agent/prompting/actionChoice.js.map +1 -0
- package/dist/agent/prompting/finalAnswer.js +38 -0
- package/dist/agent/prompting/finalAnswer.js.map +1 -0
- package/dist/agent/prompting/index.js +14 -0
- package/dist/agent/prompting/index.js.map +1 -0
- package/dist/agent/prompting/plan.js +59 -0
- package/dist/agent/prompting/plan.js.map +1 -0
- package/dist/agent/prompting/transform.js +175 -0
- package/dist/agent/prompting/transform.js.map +1 -0
- package/dist/agent/prompting/understand.js +70 -0
- package/dist/agent/prompting/understand.js.map +1 -0
- package/dist/agent/read/freshness.js +29 -0
- package/dist/agent/read/freshness.js.map +1 -0
- package/dist/agent/read/fullReadPrompt.js +43 -0
- package/dist/agent/read/fullReadPrompt.js.map +1 -0
- package/dist/agent/read/index.js +140 -0
- package/dist/agent/read/index.js.map +1 -0
- package/dist/agent/read/persistence.js +88 -0
- package/dist/agent/read/persistence.js.map +1 -0
- package/dist/agent/read/summarizeReadEvidence.js +733 -0
- package/dist/agent/read/summarizeReadEvidence.js.map +1 -0
- package/dist/agent/read/targetResolution.js +126 -0
- package/dist/agent/read/targetResolution.js.map +1 -0
- package/dist/agent/resume/checkpoint.js +41 -0
- package/dist/agent/resume/checkpoint.js.map +1 -0
- package/dist/agent/runtime/lifecycle.js +67 -0
- package/dist/agent/runtime/lifecycle.js.map +1 -0
- package/dist/agent/runtime/progress.js +178 -0
- package/dist/agent/runtime/progress.js.map +1 -0
- package/dist/agent/runtime/runAgentLoop.js +402 -0
- package/dist/agent/runtime/runAgentLoop.js.map +1 -0
- package/dist/agent/runtime/runAgentPlanOnly.js +127 -0
- package/dist/agent/runtime/runAgentPlanOnly.js.map +1 -0
- package/dist/agent/runtime/understand.js +336 -0
- package/dist/agent/runtime/understand.js.map +1 -0
- package/dist/agent/search/batchPlanner.js +274 -0
- package/dist/agent/search/batchPlanner.js.map +1 -0
- package/dist/agent/search/candidateRetentionPolicy.js +184 -0
- package/dist/agent/search/candidateRetentionPolicy.js.map +1 -0
- package/dist/agent/search/directory.js +51 -0
- package/dist/agent/search/directory.js.map +1 -0
- package/dist/agent/search/exactTarget.js +151 -0
- package/dist/agent/search/exactTarget.js.map +1 -0
- package/dist/agent/search/fragment.js +110 -0
- package/dist/agent/search/fragment.js.map +1 -0
- package/dist/agent/search/index.js +166 -0
- package/dist/agent/search/index.js.map +1 -0
- package/dist/agent/search/laneClassifier.js +119 -0
- package/dist/agent/search/laneClassifier.js.map +1 -0
- package/dist/agent/search/limits.js +10 -0
- package/dist/agent/search/limits.js.map +1 -0
- package/dist/agent/search/ranking.js +22 -0
- package/dist/agent/search/ranking.js.map +1 -0
- package/dist/agent/search/regex.js +83 -0
- package/dist/agent/search/regex.js.map +1 -0
- package/dist/agent/search/routePolicy.js +11 -0
- package/dist/agent/search/routePolicy.js.map +1 -0
- package/dist/agent/search/searchContext.js +128 -0
- package/dist/agent/search/searchContext.js.map +1 -0
- package/dist/agent/search/semantic.js +113 -0
- package/dist/agent/search/semantic.js.map +1 -0
- package/dist/agent/search/semanticIndexSearch.js +202 -0
- package/dist/agent/search/semanticIndexSearch.js.map +1 -0
- package/dist/agent/search/shared.js +283 -0
- package/dist/agent/search/shared.js.map +1 -0
- package/dist/agent/search/shell.js +202 -0
- package/dist/agent/search/shell.js.map +1 -0
- package/dist/agent/search/snippetEvidence.js +57 -0
- package/dist/agent/search/snippetEvidence.js.map +1 -0
- package/dist/agent/search/types.js +2 -0
- package/dist/agent/search/types.js.map +1 -0
- package/dist/agent/state/index.js +99 -0
- package/dist/agent/state/index.js.map +1 -0
- package/dist/agent/state/memory.js +56 -0
- package/dist/agent/state/memory.js.map +1 -0
- package/dist/agent/structuredOutput/index.js +28 -0
- package/dist/agent/structuredOutput/index.js.map +1 -0
- package/dist/agent/tools/index.js +199 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/transform/index.js +519 -0
- package/dist/agent/transform/index.js.map +1 -0
- package/dist/agent/transform/syntax.js +49 -0
- package/dist/agent/transform/syntax.js.map +1 -0
- package/dist/agent/types.js +20 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agents/actionRegistry.js +114 -0
- package/dist/agents/actionRegistry.js.map +1 -0
- package/dist/agents/agent.js +5 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/agentActions.js +5 -0
- package/dist/agents/agentActions.js.map +1 -0
- package/dist/agents/agentEvidence.js +5 -0
- package/dist/agents/agentEvidence.js.map +1 -0
- package/dist/agents/agentFeedback.js +5 -0
- package/dist/agents/agentFeedback.js.map +1 -0
- package/dist/agents/agentLogging.js +5 -0
- package/dist/agents/agentLogging.js.map +1 -0
- package/dist/agents/agentLoop.js +5 -0
- package/dist/agents/agentLoop.js.map +1 -0
- package/dist/agents/agentMemory.js +5 -0
- package/dist/agents/agentMemory.js.map +1 -0
- package/dist/agents/agentPlanMode.js +5 -0
- package/dist/agents/agentPlanMode.js.map +1 -0
- package/dist/agents/agentPolicyState.js +5 -0
- package/dist/agents/agentPolicyState.js.map +1 -0
- package/dist/agents/agentProgress.js +93 -0
- package/dist/agents/agentProgress.js.map +1 -0
- package/dist/agents/agentSchemas.js +5 -0
- package/dist/agents/agentSchemas.js.map +1 -0
- package/dist/agents/agentSearchScoring.js +5 -0
- package/dist/agents/agentSearchScoring.js.map +1 -0
- package/dist/agents/agentStateMachine.js +5 -0
- package/dist/agents/agentStateMachine.js.map +1 -0
- package/dist/agents/agentTools.js +5 -0
- package/dist/agents/agentTools.js.map +1 -0
- package/dist/agents/agentTypes.js +5 -0
- package/dist/agents/agentTypes.js.map +1 -0
- package/dist/agents/agentUnderstand.js +5 -0
- package/dist/agents/agentUnderstand.js.map +1 -0
- package/dist/agents/analysisPlanGenStep.js +194 -17
- package/dist/agents/analysisPlanGenStep.js.map +1 -0
- package/dist/agents/answerOnlyCompletion.js +32 -0
- package/dist/agents/answerOnlyCompletion.js.map +1 -0
- package/dist/agents/collaboratorStep.js +1 -0
- package/dist/agents/collaboratorStep.js.map +1 -0
- package/dist/agents/decideNextAction.js +444 -0
- package/dist/agents/decideNextAction.js.map +1 -0
- package/dist/agents/deriveFocusFromSearchStep.js +83 -0
- package/dist/agents/deriveFocusFromSearchStep.js.map +1 -0
- package/dist/agents/evidenceVerifierStep.js +104 -13
- package/dist/agents/evidenceVerifierStep.js.map +1 -0
- package/dist/agents/fileCheckStep.js +381 -12
- package/dist/agents/fileCheckStep.js.map +1 -0
- package/dist/agents/giveUpEvaluatorStep.js +63 -0
- package/dist/agents/giveUpEvaluatorStep.js.map +1 -0
- package/dist/agents/guardPolicy.js +20 -0
- package/dist/agents/guardPolicy.js.map +1 -0
- package/dist/agents/guards/executionPolicyResolver.js +165 -0
- package/dist/agents/guards/executionPolicyResolver.js.map +1 -0
- package/dist/agents/guards/guardState.js +195 -0
- package/dist/agents/guards/guardState.js.map +1 -0
- package/dist/agents/guards/resolveProgressState.js +403 -0
- package/dist/agents/guards/resolveProgressState.js.map +1 -0
- package/dist/agents/infoPlanGenStep.js +66 -8
- package/dist/agents/infoPlanGenStep.js.map +1 -0
- package/dist/agents/integrateFeedbackStep.js +1 -0
- package/dist/agents/integrateFeedbackStep.js.map +1 -0
- package/dist/agents/iterationFileSelector.js +8 -7
- package/dist/agents/iterationFileSelector.js.map +1 -0
- package/dist/agents/mainAgentActivityLog.js +85 -0
- package/dist/agents/mainAgentActivityLog.js.map +1 -0
- package/dist/agents/mainAgentHeuristics.js +173 -0
- package/dist/agents/mainAgentHeuristics.js.map +1 -0
- package/dist/agents/mainAgentVerify.js +159 -0
- package/dist/agents/mainAgentVerify.js.map +1 -0
- package/dist/agents/objectiveEvaluatorStep.js +103 -0
- package/dist/agents/objectiveEvaluatorStep.js.map +1 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js +108 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js.map +1 -0
- package/dist/agents/readinessGateStep.js +95 -9
- package/dist/agents/readinessGateStep.js.map +1 -0
- package/dist/agents/reasonNextStep.js +9 -8
- package/dist/agents/reasonNextStep.js.map +1 -0
- package/dist/agents/reasonNextTaskStep.js +267 -144
- package/dist/agents/reasonNextTaskStep.js.map +1 -0
- package/dist/agents/researchPlanGenStep.js +61 -25
- package/dist/agents/researchPlanGenStep.js.map +1 -0
- package/dist/agents/resolveAgentTargetClassification.js +5 -0
- package/dist/agents/resolveAgentTargetClassification.js.map +1 -0
- package/dist/agents/resolveExecutionModeStep.js +1 -0
- package/dist/agents/resolveExecutionModeStep.js.map +1 -0
- package/dist/agents/resolveExplicitTargetsStep.js +74 -0
- package/dist/agents/resolveExplicitTargetsStep.js.map +1 -0
- package/dist/agents/routingDecisionStep.js +58 -11
- package/dist/agents/routingDecisionStep.js.map +1 -0
- package/dist/agents/scopeClassificationStep.js +66 -3
- package/dist/agents/scopeClassificationStep.js.map +1 -0
- package/dist/agents/selectRelevantSourcesStep.js +13 -5
- package/dist/agents/selectRelevantSourcesStep.js.map +1 -0
- package/dist/agents/structuralPreloadStep.js +3 -4
- package/dist/agents/structuralPreloadStep.js.map +1 -0
- package/dist/agents/transformPlanGenStep.js +105 -18
- package/dist/agents/transformPlanGenStep.js.map +1 -0
- package/dist/agents/understandIntentStep.js +237 -17
- package/dist/agents/understandIntentStep.js.map +1 -0
- package/dist/agents/validateChangesStep.js +16 -2
- package/dist/agents/validateChangesStep.js.map +1 -0
- package/dist/agents/writeFileStep.js +1 -0
- package/dist/agents/writeFileStep.js.map +1 -0
- package/dist/commands/AskCmd.js +139 -44
- package/dist/commands/AskCmd.js.map +1 -0
- package/dist/commands/BackupCmd.js +1 -0
- package/dist/commands/BackupCmd.js.map +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js.map +1 -0
- package/dist/commands/CommitSuggesterCmd.js +55 -13
- package/dist/commands/CommitSuggesterCmd.js.map +1 -0
- package/dist/commands/DaemonCmd.js +52 -14
- package/dist/commands/DaemonCmd.js.map +1 -0
- package/dist/commands/DeleteIndex.js +1 -0
- package/dist/commands/DeleteIndex.js.map +1 -0
- package/dist/commands/EvalReportCmd.js +374 -0
- package/dist/commands/EvalReportCmd.js.map +1 -0
- package/dist/commands/FindCmd.js +1 -0
- package/dist/commands/FindCmd.js.map +1 -0
- package/dist/commands/GitCmd.js +1 -0
- package/dist/commands/GitCmd.js.map +1 -0
- package/dist/commands/IndexCmd.js +11 -79
- package/dist/commands/IndexCmd.js.map +1 -0
- package/dist/commands/InspectCmd.js +1 -0
- package/dist/commands/InspectCmd.js.map +1 -0
- package/dist/commands/ModelCmd.js +24 -0
- package/dist/commands/ModelCmd.js.map +1 -0
- package/dist/commands/ReadlineSingleton.js +1 -0
- package/dist/commands/ReadlineSingleton.js.map +1 -0
- package/dist/commands/ResetDbCmd.js +18 -1
- package/dist/commands/ResetDbCmd.js.map +1 -0
- package/dist/commands/ReviewCmd.js +1 -0
- package/dist/commands/ReviewCmd.js.map +1 -0
- package/dist/commands/StatusCmd.js +22 -0
- package/dist/commands/StatusCmd.js.map +1 -0
- package/dist/commands/StopDaemonCmd.js +1 -0
- package/dist/commands/StopDaemonCmd.js.map +1 -0
- package/dist/commands/SummaryCmd.js +1 -0
- package/dist/commands/SummaryCmd.js.map +1 -0
- package/dist/commands/SwitchCmd.js +9 -15
- package/dist/commands/SwitchCmd.js.map +1 -0
- package/dist/commands/TasksCmd.js +142 -57
- package/dist/commands/TasksCmd.js.map +1 -0
- package/dist/commands/TestCmd.js +66 -0
- package/dist/commands/TestCmd.js.map +1 -0
- package/dist/commands/WorkflowCmd.js +1 -0
- package/dist/commands/WorkflowCmd.js.map +1 -0
- package/dist/commands/commandVisibility.js +27 -0
- package/dist/commands/commandVisibility.js.map +1 -0
- package/dist/commands/evalCommands.js +1337 -0
- package/dist/commands/evalCommands.js.map +1 -0
- package/dist/commands/factory.js +206 -38
- package/dist/commands/factory.js.map +1 -0
- package/dist/config.js +62 -11
- package/dist/config.js.map +1 -0
- package/dist/constants.js +21 -3
- package/dist/constants.js.map +1 -0
- package/dist/context.js +33 -32
- package/dist/context.js.map +1 -0
- package/dist/daemon/daemonQueues.js +1 -20
- package/dist/daemon/daemonQueues.js.map +1 -0
- package/dist/daemon/daemonWorker.js +26 -37
- package/dist/daemon/daemonWorker.js.map +1 -0
- package/dist/daemon/generateSummaries.js +1 -0
- package/dist/daemon/generateSummaries.js.map +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js.map +1 -0
- package/dist/daemon/runIndexingBatch.js +1 -0
- package/dist/daemon/runIndexingBatch.js.map +1 -0
- package/dist/daemon/runKgBatch.js +9 -1
- package/dist/daemon/runKgBatch.js.map +1 -0
- package/dist/db/backup.js +1 -0
- package/dist/db/backup.js.map +1 -0
- package/dist/db/client.js +18 -3
- package/dist/db/client.js.map +1 -0
- package/dist/db/fileIndex.js +110 -152
- package/dist/db/fileIndex.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJava.js +1 -0
- package/dist/db/functionExtractors/extractFromJava.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJs.js +1 -0
- package/dist/db/functionExtractors/extractFromJs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromTs.js +1 -0
- package/dist/db/functionExtractors/extractFromTs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromXML.js +1 -0
- package/dist/db/functionExtractors/extractFromXML.js.map +1 -0
- package/dist/db/functionExtractors/index.js +1 -0
- package/dist/db/functionExtractors/index.js.map +1 -0
- package/dist/db/functionIndex.js +9 -0
- package/dist/db/functionIndex.js.map +1 -0
- package/dist/db/schema.js +314 -99
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sqlTemplates.js +1 -0
- package/dist/db/sqlTemplates.js.map +1 -0
- package/dist/fileRules/builtins.js +1 -0
- package/dist/fileRules/builtins.js.map +1 -0
- package/dist/fileRules/classifyFile.js +1 -0
- package/dist/fileRules/classifyFile.js.map +1 -0
- package/dist/fileRules/codeAllowedExtensions.js +1 -0
- package/dist/fileRules/codeAllowedExtensions.js.map +1 -0
- package/dist/fileRules/detectFileType.js +1 -0
- package/dist/fileRules/detectFileType.js.map +1 -0
- package/dist/fileRules/fileClassifier.js +1 -0
- package/dist/fileRules/fileClassifier.js.map +1 -0
- package/dist/fileRules/fileExceptions.js +1 -0
- package/dist/fileRules/fileExceptions.js.map +1 -0
- package/dist/fileRules/ignoredExtensions.js +1 -0
- package/dist/fileRules/ignoredExtensions.js.map +1 -0
- package/dist/fileRules/ignoredPaths.js +48 -5
- package/dist/fileRules/ignoredPaths.js.map +1 -0
- package/dist/fileRules/queryTokenRules.js +176 -0
- package/dist/fileRules/queryTokenRules.js.map +1 -0
- package/dist/fileRules/searchPathClassification.js +58 -0
- package/dist/fileRules/searchPathClassification.js.map +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js.map +1 -0
- package/dist/fileRules/stopWords.js +9 -0
- package/dist/fileRules/stopWords.js.map +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js.map +1 -0
- package/dist/git/commitSummary.js +227 -0
- package/dist/git/commitSummary.js.map +1 -0
- package/dist/github/api.js +1 -0
- package/dist/github/api.js.map +1 -0
- package/dist/github/auth.js +1 -0
- package/dist/github/auth.js.map +1 -0
- package/dist/github/github.js +1 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/githubAuthCheck.js +1 -0
- package/dist/github/githubAuthCheck.js.map +1 -0
- package/dist/github/postComments.js +1 -0
- package/dist/github/postComments.js.map +1 -0
- package/dist/github/repo.js +15 -24
- package/dist/github/repo.js.map +1 -0
- package/dist/github/token.js +1 -0
- package/dist/github/token.js.map +1 -0
- package/dist/github/types.js +1 -0
- package/dist/github/types.js.map +1 -0
- package/dist/index.js +318 -37
- package/dist/index.js.map +1 -0
- package/dist/lib/generate.js +264 -20
- package/dist/lib/generate.js.map +1 -0
- package/dist/lib/generateFolderCapsules.js +1 -0
- package/dist/lib/generateFolderCapsules.js.map +1 -0
- package/dist/lib/ollamaModelPolicy.js +59 -0
- package/dist/lib/ollamaModelPolicy.js.map +1 -0
- package/dist/lib/spinner.js +29 -9
- package/dist/lib/spinner.js.map +1 -0
- package/dist/modelSetup.js +25 -78
- package/dist/modelSetup.js.map +1 -0
- package/dist/pipeline/modules/changeLogModule.js +10 -1
- package/dist/pipeline/modules/changeLogModule.js.map +1 -0
- package/dist/pipeline/modules/cleanupModule.js +1 -0
- package/dist/pipeline/modules/cleanupModule.js.map +1 -0
- package/dist/pipeline/modules/codeTransformModule.js +10 -16
- package/dist/pipeline/modules/codeTransformModule.js.map +1 -0
- package/dist/pipeline/modules/commentModule.js +12 -0
- package/dist/pipeline/modules/commentModule.js.map +1 -0
- package/dist/pipeline/modules/commitSuggesterModule.js +82 -12
- package/dist/pipeline/modules/commitSuggesterModule.js.map +1 -0
- package/dist/pipeline/modules/contextReviewModule.js +12 -1
- package/dist/pipeline/modules/contextReviewModule.js.map +1 -0
- package/dist/pipeline/modules/dialogAnswerModule.js +58 -0
- package/dist/pipeline/modules/dialogAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/fileSearchModule.js +5 -143
- package/dist/pipeline/modules/fileSearchModule.js.map +1 -0
- package/dist/pipeline/modules/finalAnswerModule.js +1176 -151
- package/dist/pipeline/modules/finalAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/kgModule.js +18 -1
- package/dist/pipeline/modules/kgModule.js.map +1 -0
- package/dist/pipeline/modules/planAnswerModule.js +99 -0
- package/dist/pipeline/modules/planAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/readFileModule.js +300 -0
- package/dist/pipeline/modules/readFileModule.js.map +1 -0
- package/dist/pipeline/modules/reviewModule.js +10 -1
- package/dist/pipeline/modules/reviewModule.js.map +1 -0
- package/dist/pipeline/modules/searchDbModule.js +159 -0
- package/dist/pipeline/modules/searchDbModule.js.map +1 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js +62 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js.map +1 -0
- package/dist/pipeline/modules/searchModuleShared.js +71 -0
- package/dist/pipeline/modules/searchModuleShared.js.map +1 -0
- package/dist/pipeline/modules/searchRegexModule.js +59 -0
- package/dist/pipeline/modules/searchRegexModule.js.map +1 -0
- package/dist/pipeline/modules/semanticAnalysisModule.js +185 -28
- package/dist/pipeline/modules/semanticAnalysisModule.js.map +1 -0
- package/dist/pipeline/modules/summaryModule.js +11 -1
- package/dist/pipeline/modules/summaryModule.js.map +1 -0
- package/dist/pipeline/registry/moduleRegistry.js +9 -0
- package/dist/pipeline/registry/moduleRegistry.js.map +1 -0
- package/dist/pipeline/runModulePipeline.js +1 -0
- package/dist/pipeline/runModulePipeline.js.map +1 -0
- package/dist/scripts/dbScriptSupport.js +172 -0
- package/dist/scripts/dbScriptSupport.js.map +1 -0
- package/dist/scripts/dbcheck.js +173 -267
- package/dist/scripts/dbcheck.js.map +1 -0
- package/dist/scripts/dboverview.js +161 -0
- package/dist/scripts/dboverview.js.map +1 -0
- package/dist/scripts/migrateDb.js +1 -0
- package/dist/scripts/migrateDb.js.map +1 -0
- package/dist/search/SearchOrchestrator.js +928 -0
- package/dist/search/SearchOrchestrator.js.map +1 -0
- package/dist/search/sharedRankingPolicy.js +283 -0
- package/dist/search/sharedRankingPolicy.js.map +1 -0
- package/dist/setup/reindexOwner.js +97 -0
- package/dist/setup/reindexOwner.js.map +1 -0
- package/dist/setup/setupOwner.js +100 -0
- package/dist/setup/setupOwner.js.map +1 -0
- package/dist/shell/dialogUi.js +81 -0
- package/dist/shell/dialogUi.js.map +1 -0
- package/dist/shellSession.js +126 -0
- package/dist/shellSession.js.map +1 -0
- package/dist/status/statusOwner.js +239 -0
- package/dist/status/statusOwner.js.map +1 -0
- package/dist/testing/contextEval.js +514 -0
- package/dist/testing/contextEval.js.map +1 -0
- package/dist/testing/fixtures/transform/small-file.input.js +5 -0
- package/dist/testing/fixtures/transform/small-file.input.js.map +1 -0
- package/dist/testing/harnessArtifacts.js +112 -0
- package/dist/testing/harnessArtifacts.js.map +1 -0
- package/dist/testing/llmTraceSession.js +67 -0
- package/dist/testing/llmTraceSession.js.map +1 -0
- package/dist/testing/registerDevCliCommands.js +43 -0
- package/dist/testing/registerDevCliCommands.js.map +1 -0
- package/dist/testing/runDiagnosis.js +248 -0
- package/dist/testing/runDiagnosis.js.map +1 -0
- package/dist/testing/runtimeLogReader.js +144 -0
- package/dist/testing/runtimeLogReader.js.map +1 -0
- package/dist/testing/testCommands.js +35 -303
- package/dist/testing/testCommands.js.map +1 -0
- package/dist/testing/testRegistry.js +233 -0
- package/dist/testing/testRegistry.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/buildContextualPrompt.js +26 -75
- package/dist/utils/buildContextualPrompt.js.map +1 -0
- package/dist/utils/changeLogPrompt.js +1 -0
- package/dist/utils/changeLogPrompt.js.map +1 -0
- package/dist/utils/checkModel.js +17 -92
- package/dist/utils/checkModel.js.map +1 -0
- package/dist/utils/commentMap.js +1 -0
- package/dist/utils/commentMap.js.map +1 -0
- package/dist/utils/compileSearchQuery.js +23 -9
- package/dist/utils/compileSearchQuery.js.map +1 -0
- package/dist/utils/consolePresentation.js +208 -0
- package/dist/utils/consolePresentation.js.map +1 -0
- package/dist/utils/contentUtils.js +17 -2
- package/dist/utils/contentUtils.js.map +1 -0
- package/dist/utils/debugContext.js +1 -0
- package/dist/utils/debugContext.js.map +1 -0
- package/dist/utils/dialogState.js +201 -0
- package/dist/utils/dialogState.js.map +1 -0
- package/dist/utils/editor.js +1 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/executionEvidence.js +50 -0
- package/dist/utils/executionEvidence.js.map +1 -0
- package/dist/utils/extractFileReferences.js +140 -6
- package/dist/utils/extractFileReferences.js.map +1 -0
- package/dist/utils/fileEvidenceCache.js +50 -0
- package/dist/utils/fileEvidenceCache.js.map +1 -0
- package/dist/utils/fileTree.js +1 -0
- package/dist/utils/fileTree.js.map +1 -0
- package/dist/utils/loadRelevantFolderCapsules.js +35 -5
- package/dist/utils/loadRelevantFolderCapsules.js.map +1 -0
- package/dist/utils/log.js +10 -1
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/normalizeData.js +1 -0
- package/dist/utils/normalizeData.js.map +1 -0
- package/dist/utils/ollamaModelStatus.js +28 -0
- package/dist/utils/ollamaModelStatus.js.map +1 -0
- package/dist/utils/ollamaService.js +294 -0
- package/dist/utils/ollamaService.js.map +1 -0
- package/dist/utils/outputFormatter.js +1 -0
- package/dist/utils/outputFormatter.js.map +1 -0
- package/dist/utils/parseTaggedContent.js +1 -0
- package/dist/utils/parseTaggedContent.js.map +1 -0
- package/dist/utils/planActions.js +27 -46
- package/dist/utils/planActions.js.map +1 -0
- package/dist/utils/promptBuilderHelper.js +1 -0
- package/dist/utils/promptBuilderHelper.js.map +1 -0
- package/dist/utils/promptLogHelper.js +29 -13
- package/dist/utils/promptLogHelper.js.map +1 -0
- package/dist/utils/queryAnchors.js +71 -0
- package/dist/utils/queryAnchors.js.map +1 -0
- package/dist/utils/repoIdentity.js +82 -0
- package/dist/utils/repoIdentity.js.map +1 -0
- package/dist/utils/repoKey.js +1 -0
- package/dist/utils/repoKey.js.map +1 -0
- package/dist/utils/resolveTargetsToFiles.js +1 -0
- package/dist/utils/resolveTargetsToFiles.js.map +1 -0
- package/dist/utils/resumeContext.js +219 -0
- package/dist/utils/resumeContext.js.map +1 -0
- package/dist/utils/resumeState.js +310 -0
- package/dist/utils/resumeState.js.map +1 -0
- package/dist/utils/rollingPlan.js +118 -0
- package/dist/utils/rollingPlan.js.map +1 -0
- package/dist/utils/runQueryWithDaemonControl.js +11 -3
- package/dist/utils/runQueryWithDaemonControl.js.map +1 -0
- package/dist/utils/runtimeLogger.js +252 -0
- package/dist/utils/runtimeLogger.js.map +1 -0
- package/dist/utils/sanitizeQuery.js +1 -0
- package/dist/utils/sanitizeQuery.js.map +1 -0
- package/dist/utils/sharedUtils.js +1 -0
- package/dist/utils/sharedUtils.js.map +1 -0
- package/dist/utils/sleep.js +1 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/splitCodeIntoChunk.js +1 -0
- package/dist/utils/splitCodeIntoChunk.js.map +1 -0
- package/dist/utils/time.js +66 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/verifyFocusPreference.js +107 -0
- package/dist/utils/verifyFocusPreference.js.map +1 -0
- package/dist/utils/vscode.js +1 -0
- package/dist/utils/vscode.js.map +1 -0
- package/dist/workflow/workflowResolver.js +1 -0
- package/dist/workflow/workflowResolver.js.map +1 -0
- package/dist/workflow/workflowRunner.js +1 -0
- package/dist/workflow/workflowRunner.js.map +1 -0
- package/package.json +3 -3
- package/dist/agents/MainAgent.js +0 -1886
- package/dist/agents/contextReviewStep.js +0 -101
- package/dist/agents/finalPlanGenStep.js +0 -107
- package/dist/agents/structuralAnalysisStep.js +0 -46
- package/dist/agents/validationAnalysisStep.js +0 -87
- package/dist/pipeline/modules/chunkManagerModule.js +0 -24
- package/dist/pipeline/modules/cleanGeneratedTestsModule.js +0 -33
- package/dist/pipeline/modules/fileReaderModule.js +0 -72
- package/dist/pipeline/modules/gatherInfoModule.js +0 -181
- package/dist/pipeline/modules/generateTestsModule.js +0 -68
- package/dist/pipeline/modules/preserveCodeModule.js +0 -195
- package/dist/pipeline/modules/refactorModule.js +0 -40
- package/dist/pipeline/modules/repairTestsModule.js +0 -48
- package/dist/pipeline/modules/runTestsModule.js +0 -37
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLoop.test.js","sourceRoot":"","sources":["../../../src/__tests__/agents/agentLoop.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Covers the first simple agent loop slice without touching the legacy MainAgent.\n *\n * Why this file exists:\n * - the new runtime needs one tight end-to-end test while it is still small\n * - read-only answer flow should stay stable before more actions are reintroduced\n * - mocked model calls let the test focus on loop behavior instead of model variance\n */\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport { afterEach, beforeEach, describe, expect, it, vi } from \"vitest\";\nconst configState = vi.hoisted(() => ({\n getDevOutput: vi.fn(() => false),\n}));\nconst searchState = vi.hoisted(() => ({\n dbFileCandidates: new Map<string, string[]>(),\n}));\n\nvi.mock(\"../../config.js\", () => ({\n Config: {\n getDevOutput: configState.getDevOutput,\n },\n}));\n\nimport { runAgentLoop } from \"../../agents/agentLoop.js\";\nimport { createAgentMemory } from \"../../agents/agentMemory.js\";\n\nconst generateMock = vi.fn();\nconst state = vi.hoisted(() => ({\n logRuntimeRecord: vi.fn(),\n}));\n\nvi.mock(\"../../lib/generate.js\", () => ({\n generate: (...args: unknown[]) => generateMock(...args),\n}));\n\nvi.mock(\"../../utils/promptLogHelper.js\", () => ({\n logInputOutput: vi.fn(),\n}));\n\nvi.mock(\"../../search/SearchOrchestrator.js\", () => ({\n SearchOrchestrator: class {\n async runDbSearch(args: { query: string }) {\n const filePaths = searchState.dbFileCandidates.get(args.query) ?? [];\n return {\n route: \"db\",\n mode: args.query.includes(\"/resume\") ? \"exact-target\" : \"semantic-retrieval\",\n stagesRun: args.query.includes(\"/resume\")\n ? [\"explicit-target-resolver\", \"fallback-semantic-retriever\", \"result-merger-and-ranker\"]\n : [\"semantic-retriever\", \"result-merger-and-ranker\"],\n resolvedFiles: [],\n resolvedFolders: [],\n resolvedSymbols: [],\n unresolvedRefs: args.query.includes(\"/resume\") ? [\"/resume\"] : [],\n ambiguousRefs: [],\n fileCandidates: filePaths.map((filePath) => ({\n id: 1,\n path: filePath,\n filename: path.basename(filePath),\n summary: null,\n type: path.extname(filePath).replace(/^\\./, \"\") || \"ts\",\n lastModified: new Date(0).toISOString(),\n })),\n folderCandidates: [],\n symbolCandidates: [],\n fragmentMatches: [],\n patternMatches: [],\n directoryEntries: [],\n fallbackUsed: args.query.includes(\"/resume\"),\n };\n }\n\n async runRegexSearch() {\n return {\n route: \"regex\",\n mode: \"regex-execution\",\n stagesRun: [\"regex-searcher\", \"result-merger-and-ranker\"],\n resolvedFiles: [],\n resolvedFolders: [],\n resolvedSymbols: [],\n unresolvedRefs: [],\n ambiguousRefs: [],\n fileCandidates: [{\n id: 1,\n path: \"/repo/mock-regex-hit.ts\",\n filename: \"mock-regex-hit.ts\",\n summary: null,\n type: \"ts\",\n lastModified: new Date(0).toISOString(),\n }],\n folderCandidates: [],\n symbolCandidates: [],\n fragmentMatches: [],\n patternMatches: [{\n path: \"/repo/mock-regex-hit.ts\",\n line: 1,\n column: 1,\n snippet: \"mock regex hit\",\n }],\n directoryEntries: [],\n fallbackUsed: false,\n };\n }\n\n runDirectoryListing(args: { query: string }) {\n return {\n route: \"list-directory\",\n mode: \"directory-listing\",\n stagesRun: [\"directory-listing\"],\n resolvedFiles: [],\n resolvedFolders: [args.query],\n resolvedSymbols: [],\n unresolvedRefs: [],\n ambiguousRefs: [],\n fileCandidates: [],\n folderCandidates: [args.query],\n symbolCandidates: [],\n fragmentMatches: [],\n patternMatches: [],\n directoryEntries: [],\n fallbackUsed: false,\n };\n }\n },\n}));\n\nvi.mock(\"../../utils/runtimeLogger.js\", () => ({\n logRuntimeRecord: state.logRuntimeRecord,\n clearRuntimeLogs: vi.fn(),\n appendHumanRuntimeEntry: vi.fn(),\n}));\n\ndescribe(\"runAgentLoop\", () => {\n let tempDir: string;\n let targetFile: string;\n\n beforeEach(() => {\n tempDir = fs.mkdtempSync(path.join(os.tmpdir(), \"scai-agent-loop-\"));\n targetFile = path.join(tempDir, \"sample.ts\");\n fs.writeFileSync(\n targetFile,\n [\n \"/**\",\n \" * Sample file for the new agent loop test.\",\n \" * It exposes a few exported contracts for grounding checks.\",\n \" */\",\n \"export interface SampleConfig {\",\n \" enabled: boolean;\",\n \"}\",\n \"export function sampleAnswer() {\",\n \" return 'answer';\",\n \"}\",\n \"export const sampleLabel = 'sample';\",\n ].join(\"\\n\"),\n \"utf-8\"\n );\n generateMock.mockReset();\n state.logRuntimeRecord.mockReset();\n searchState.dbFileCandidates.clear();\n configState.getDevOutput.mockReset();\n configState.getDevOutput.mockReturnValue(false);\n });\n\n afterEach(() => {\n fs.rmSync(tempDir, { recursive: true, force: true });\n });\n\n it(\"reads one explicit file and produces a final answer\", async () => {\n configState.getDevOutput.mockReturnValue(true);\n generateMock\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0001-agent-understand\",\n startedAt: \"2026-05-01T06:16:21.000+02:00\",\n finishedAt: \"2026-05-01T06:16:23.000+02:00\",\n durationMs: 2000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n normalizedQuery: `Explain ${targetFile}`,\n explicitTargets: [targetFile],\n constraints: [],\n primaryIntent: \"Explain the target file.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0002-agent-action-choice\",\n startedAt: \"2026-05-01T06:16:24.000+02:00\",\n finishedAt: \"2026-05-01T06:16:25.000+02:00\",\n durationMs: 1000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the explicit file first.\",\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0003-agent-read-file\",\n startedAt: \"2026-05-01T06:16:25.100+02:00\",\n finishedAt: \"2026-05-01T06:16:25.400+02:00\",\n durationMs: 300,\n attemptCount: 1,\n },\n data: JSON.stringify({\n summary: \"Sample file for the new agent loop test.\",\n relevanceExplanation: \"This file defines sampleAnswer and the exported sample contracts used by the query.\",\n role: \"primary\",\n keySymbols: [\"SampleConfig\", \"sampleAnswer\", \"sampleLabel\"],\n excerpts: [{\n description: \"The main answer function.\",\n startLine: 8,\n endLine: 10,\n symbols: [\"sampleAnswer\"],\n code: \"export function sampleAnswer() {\\n return 'answer';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0004-agent-action-choice\",\n startedAt: \"2026-05-01T06:16:25.500+02:00\",\n finishedAt: \"2026-05-01T06:16:26.000+02:00\",\n durationMs: 500,\n attemptCount: 1,\n },\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The file read is enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0005-agent-final-answer\",\n startedAt: \"2026-05-01T06:16:26.000+02:00\",\n finishedAt: \"2026-05-01T06:16:29.000+02:00\",\n durationMs: 3000,\n attemptCount: 1,\n },\n data: \"The file defines sampleAnswer in sample.ts.\",\n });\n\n const memory = createAgentMemory(`Explain ${targetFile}`, tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n const finalStep = memory.steps.find((step) => step.action === \"final-answer\");\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.artifacts.finalAnswer).toContain(\"sampleAnswer\");\n expect(Object.keys(memory.evidence.fileReads)).toContain(targetFile);\n expect(memory.events.map((event) => event.type)).toContain(\"task-finalized\");\n expect(finalStep).toMatchObject({\n status: \"done\",\n resultSummary: \"Task completed with a final answer.\",\n });\n expect(finalStep?.startedAt).toBeTruthy();\n expect(finalStep?.completedAt).toBeTruthy();\n expect(ui.update).toHaveBeenCalledWith(\"Understanding request\");\n expect(ui.update).toHaveBeenCalledWith(\"Choosing next action (turn 1/12)\");\n expect(ui.update).toHaveBeenCalledWith(\"Reading file (turn 1/12)\");\n expect(ui.update).toHaveBeenCalledWith(\"Producing final answer (turn 2/12)\");\n expect(ui.message).toHaveBeenCalledWith(\"[LLM] understand finished | 2s\");\n expect(ui.message).toHaveBeenCalledWith(\"[LLM] action-choice finished | 1s\");\n expect(ui.message).toHaveBeenCalledWith(\"[LLM] action-choice finished | 500ms\");\n expect(ui.message).toHaveBeenCalledWith(\"[LLM] final-answer finished | 3s\");\n expect(ui.message).toHaveBeenCalledWith(\"[STATE] step step-001 created -> pending | action=read-file\");\n expect(ui.message).toHaveBeenCalledWith(expect.stringContaining(\"[STATE] step step-001 pending -> running | action=read-file\"));\n expect(ui.message).toHaveBeenCalledWith(\"[STATE] step step-002 created -> pending | action=final-answer\");\n expect(ui.message).toHaveBeenCalledWith(\"[STATE] task active -> done | reason=completed\");\n expect(ui.message).not.toHaveBeenCalledWith(\"Understanding request.\");\n expect(ui.message).not.toHaveBeenCalledWith(\"Chose direct file read.\");\n expect(ui.message).not.toHaveBeenCalledWith(\"Producing final answer.\");\n expect(state.logRuntimeRecord).toHaveBeenCalledWith(expect.objectContaining({\n kind: \"llm\",\n phase: \"output\",\n payload: expect.objectContaining({\n durationMs: 3000,\n attemptCount: 1,\n callId: \"llm-0005-agent-final-answer\",\n }),\n }));\n expect(generateMock).toHaveBeenLastCalledWith(expect.objectContaining({\n content: expect.stringContaining('\"keySymbols\": ['),\n }), expect.objectContaining({\n inputContext: expect.objectContaining({\n fileReads: [\n expect.objectContaining({\n filePath: targetFile,\n keySymbols: expect.arrayContaining([\"SampleConfig\", \"sampleAnswer\", \"sampleLabel\"]),\n }),\n ],\n }),\n }));\n });\n\n it(\"lists a resolved folder first and then reads canonical folder files before answering\", async () => {\n const guardsDir = path.join(tempDir, \"cli\", \"src\", \"agents\", \"guards\");\n const resolverFile = path.join(guardsDir, \"executionPolicyResolver.ts\");\n const stateFile = path.join(guardsDir, \"guardState.ts\");\n fs.mkdirSync(guardsDir, { recursive: true });\n fs.writeFileSync(resolverFile, \"export const resolver = true;\\n\", \"utf-8\");\n fs.writeFileSync(stateFile, \"export const guard = true;\\n\", \"utf-8\");\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: guardsDir,\n explicitTargets: [guardsDir],\n constraints: [],\n primaryIntent: \"Explain the guards directory.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: guardsDir },\n reason: \"Read the directory directly.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: guardsDir },\n reason: \"Read one file from the directory.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Execution policy owner.\",\n relevanceExplanation: \"This file resolves execution policy for the guards area.\",\n role: \"primary\",\n excerpts: [{\n description: \"Resolver export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"resolver\"],\n code: \"export const resolver = true;\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"One file should be enough.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Guard state owner.\",\n relevanceExplanation: \"This file holds guard state used by the directory the user asked about.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Guard export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"guard\"],\n code: \"export const guard = true;\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The folder evidence is grounded now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The guards directory includes executionPolicyResolver.ts and guardState.ts.\",\n });\n\n const memory = createAgentMemory(guardsDir, tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.steps.map((step) => step.action)).toEqual([\n \"search-list-directory\",\n \"read-file\",\n \"read-file\",\n \"final-answer\",\n ]);\n expect(memory.steps.some((step) => step.status === \"failed\")).toBe(false);\n expect(Object.keys(memory.evidence.fileReads)).toEqual(expect.arrayContaining([resolverFile, stateFile]));\n expect(memory.artifacts.finalAnswer).toContain(\"executionPolicyResolver.ts\");\n });\n\n it(\"does not allow final-answer until all explicit targets have been read\", async () => {\n const secondFile = path.join(tempDir, \"factory.ts\");\n const thirdFile = path.join(tempDir, \"runQueryWithDaemonControl.ts\");\n fs.writeFileSync(secondFile, \"export function createFactory() {}\\n\", \"utf-8\");\n fs.writeFileSync(thirdFile, \"export function runQueryWithDaemonControl() {}\\n\", \"utf-8\");\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Summarize CLI architecture\",\n explicitTargets: [targetFile, secondFile, thirdFile],\n constraints: [],\n primaryIntent: \"Summarize the CLI architecture.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the first explicit target.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Primary sample file.\",\n relevanceExplanation: \"This file is one explicit target in the requested architecture summary.\",\n role: \"primary\",\n excerpts: [{\n description: \"Sample answer export.\",\n startLine: 8,\n endLine: 10,\n symbols: [\"sampleAnswer\"],\n code: \"export function sampleAnswer() {\\n return 'answer';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"One file seems enough.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Factory file.\",\n relevanceExplanation: \"This explicit target contributes the factory step in the requested architecture summary.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Factory export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"createFactory\"],\n code: \"export function createFactory() {}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the next explicit target instead of answering.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Daemon control file.\",\n relevanceExplanation: \"This final explicit target completes the architecture path the user asked about.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Daemon control export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"runQueryWithDaemonControl\"],\n code: \"export function runQueryWithDaemonControl() {}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"Two files seem enough.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the last explicit target instead of answering.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"README install guide.\",\n relevanceExplanation: \"This README is the resolved documentation file that contains the install instructions.\",\n role: \"primary\",\n excerpts: [{\n description: \"Install section.\",\n startLine: 1,\n endLine: 3,\n symbols: [\"README\"],\n code: \"# Install\\n\\nRun `npm install -g scai-cli`.\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"All explicit targets are grounded now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The architecture flows from sample.ts into factory.ts and then runQueryWithDaemonControl.ts.\",\n });\n\n const memory = createAgentMemory(\"Summarize CLI architecture\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.steps.map((step) => step.action)).toEqual([\n \"read-file\",\n \"read-file\",\n \"read-file\",\n \"final-answer\",\n ]);\n expect(Object.keys(memory.evidence.fileReads)).toEqual(expect.arrayContaining([targetFile, secondFile, thirdFile]));\n });\n\n it(\"auto-resolves the scoped duplicate filename before reading when sibling explicit targets make the scope clear\", async () => {\n const cliIndex = path.join(tempDir, \"cli\", \"src\", \"index.ts\");\n const webIndex = path.join(tempDir, \"web\", \"src\", \"index.ts\");\n const factoryFile = path.join(tempDir, \"cli\", \"src\", \"commands\", \"factory.ts\");\n const daemonFile = path.join(tempDir, \"cli\", \"src\", \"runQueryWithDaemonControl.ts\");\n fs.mkdirSync(path.dirname(cliIndex), { recursive: true });\n fs.mkdirSync(path.dirname(webIndex), { recursive: true });\n fs.mkdirSync(path.dirname(factoryFile), { recursive: true });\n fs.writeFileSync(cliIndex, \"export const cli = true;\\n\", \"utf-8\");\n fs.writeFileSync(webIndex, \"export const web = true;\\n\", \"utf-8\");\n fs.writeFileSync(factoryFile, \"export function createFactory() {}\\n\", \"utf-8\");\n fs.writeFileSync(daemonFile, \"export function runQueryWithDaemonControl() {}\\n\", \"utf-8\");\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Summarize CLI architecture from index.ts, commands/factory.ts, and runQueryWithDaemonControl.ts\",\n explicitTargets: [\"index.ts\", \"commands/factory.ts\", \"runQueryWithDaemonControl.ts\"],\n constraints: [],\n primaryIntent: \"Summarize the CLI architecture from the requested files.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"Summarize CLI architecture from index.ts, commands/factory.ts, and runQueryWithDaemonControl.ts\" },\n reason: \"Resolve the explicit targets first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"Try to answer immediately.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"CLI index entrypoint.\",\n relevanceExplanation: \"This is the scoped CLI index target selected from the duplicate basename candidates.\",\n role: \"primary\",\n excerpts: [{\n description: \"CLI export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"cli\"],\n code: \"export const cli = true;\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"Try to answer again.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Factory file.\",\n relevanceExplanation: \"This file contributes the command factory step in the requested architecture summary.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Factory export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"createFactory\"],\n code: \"export function createFactory() {}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"Try to answer a third time.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Daemon control file.\",\n relevanceExplanation: \"This file completes the daemon-controlled query path the user asked about.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Daemon control export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"runQueryWithDaemonControl\"],\n code: \"export function runQueryWithDaemonControl() {}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"All requested files are grounded now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The CLI architecture flows from cli/src/index.ts into commands/factory.ts and then runQueryWithDaemonControl.ts.\",\n });\n\n const memory = createAgentMemory(\"Summarize CLI architecture from index.ts, commands/factory.ts, and runQueryWithDaemonControl.ts\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.task.dialogState).toBeUndefined();\n expect(memory.steps.map((step) => step.action)).toEqual([\n \"search-db\",\n \"read-file\",\n \"read-file\",\n \"read-file\",\n \"final-answer\",\n ]);\n expect(Object.keys(memory.evidence.fileReads)).toEqual(expect.arrayContaining([cliIndex, factoryFile, daemonFile]));\n expect(Object.keys(memory.evidence.fileReads)).not.toContain(webIndex);\n });\n\n it(\"waits for user input immediately when a duplicate filename stays ambiguous\", async () => {\n const cliIndex = path.join(tempDir, \"cli\", \"src\", \"index.ts\");\n const webIndex = path.join(tempDir, \"web\", \"src\", \"index.ts\");\n fs.mkdirSync(path.dirname(cliIndex), { recursive: true });\n fs.mkdirSync(path.dirname(webIndex), { recursive: true });\n fs.writeFileSync(cliIndex, \"export const cli = true;\\n\", \"utf-8\");\n fs.writeFileSync(webIndex, \"export const web = true;\\n\", \"utf-8\");\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Summarize architecture from index.ts\",\n explicitTargets: [\"index.ts\"],\n constraints: [],\n primaryIntent: \"Summarize the requested file.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"Summarize architecture from index.ts\" },\n reason: \"Resolve the explicit target first.\",\n }),\n });\n\n const memory = createAgentMemory(\"Summarize architecture from index.ts\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"waiting\");\n expect(memory.steps.map((step) => step.action)).toEqual([\n \"search-db\",\n \"request-user-input\",\n ]);\n expect(memory.task.dialogState).toMatchObject({\n status: \"awaiting-user\",\n target: \"index.ts\",\n options: [cliIndex, webIndex],\n });\n expect(ui.message).toHaveBeenCalledWith(\"Requesting user input.\");\n });\n\n it(\"reads a resolved README candidate before answering doc-style install questions\", async () => {\n const readmeFile = path.join(tempDir, \"README.md\");\n fs.writeFileSync(readmeFile, \"# Install\\n\\nRun `npm install -g scai-cli`.\\n\", \"utf-8\");\n searchState.dbFileCandidates.set(\"please check the readme for how to install scai cli?\", [readmeFile]);\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"please check the readme for how to install scai cli?\",\n explicitTargets: [\"readme\"],\n constraints: [],\n primaryIntent: \"Explain the install instructions from the docs.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"please check the readme for how to install scai cli?\" },\n reason: \"Find the likely documentation file first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: \"readme\" },\n reason: \"Read the resolved README before answering.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"README completeness audit target.\",\n relevanceExplanation: \"This README is the explicit file the user asked to audit for missing sections.\",\n role: \"primary\",\n excerpts: [{\n description: \"Install and usage sections.\",\n startLine: 1,\n endLine: 9,\n symbols: [\"README\"],\n code: \"# CLI\\n\\n## Install\\n\\nRun `npm install -g scai-cli`.\\n\\n## Usage\\n\\nUse `scai ask` to query the repo.\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The grounded README read is enough to answer.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The install instructions are in README.md.\",\n });\n\n const memory = createAgentMemory(\"please check the readme for how to install scai cli?\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(Object.keys(memory.evidence.fileReads)).toContain(readmeFile);\n expect(memory.steps.map((step) => step.action)).toEqual([\"search-db\", \"read-file\", \"final-answer\"]);\n });\n\n it(\"uses one read-file step for README completeness questions and avoids rereading the same file\", async () => {\n const readmeFile = path.join(tempDir, \"README.md\");\n fs.writeFileSync(\n readmeFile,\n [\n \"# CLI\",\n \"\",\n \"## Install\",\n \"\",\n \"Run `npm install -g scai-cli`.\",\n \"\",\n \"## Usage\",\n \"\",\n \"Use `scai ask` to query the repo.\",\n ].join(\"\\n\"),\n \"utf-8\"\n );\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"is anything missing from the readme?\",\n explicitTargets: [readmeFile],\n constraints: [],\n primaryIntent: \"Audit the README for missing information.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: readmeFile },\n reason: \"Read the README first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Matching scai README.\",\n relevanceExplanation: \"The resolved README directly matches the search request and contains the scai docs.\",\n role: \"primary\",\n excerpts: [{\n description: \"README body.\",\n startLine: 1,\n endLine: 2,\n code: \"# Scai\\n\\nThis README explains how to find and use the scai project docs.\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The grounded README read is enough to answer.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The README covers install and usage, but I do not see sections for configuration or contribution guidance.\",\n });\n\n const memory = createAgentMemory(\"is anything missing from the readme?\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.steps.map((step) => step.action)).toEqual([\"read-file\", \"final-answer\"]);\n expect(memory.evidence.fileReads[readmeFile]).toMatchObject({\n filePath: readmeFile,\n relevantContext: expect.arrayContaining([\n expect.objectContaining({ kind: \"purpose\" }),\n ]),\n });\n expect(memory.artifacts.finalAnswer).toContain(\"configuration\");\n });\n\n it(\"normalizes search-db pattern args into query before validation\", async () => {\n const readmeFile = path.join(tempDir, \"README.md\");\n fs.writeFileSync(readmeFile, \"# Scai\\n\\nThis README explains how to find and use the scai project docs.\\n\", \"utf-8\");\n searchState.dbFileCandidates.set(\"scai\", [readmeFile]);\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"find readme files for scai\",\n explicitTargets: [\"readme\"],\n constraints: [],\n primaryIntent: \"Locate readme files for scai.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { pattern: \"scai\" },\n reason: \"Search for likely scai docs first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: \"readme\" },\n reason: \"Read the matching readme.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The grounded readme is enough to answer.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"README.md matches the scai search.\",\n });\n\n const memory = createAgentMemory(\"find readme files for scai\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.events.some((event) => event.type === \"validation-failed\")).toBe(false);\n expect(memory.evidence.searches[0]).toMatchObject({\n action: \"search-db\",\n query: \"find readme files for scai\",\n });\n expect(Object.keys(memory.evidence.fileReads)).toContain(readmeFile);\n expect(memory.task.status).toBe(\"done\");\n });\n\n it(\"keeps new-agent timing out of console milestones when dev output is off\", async () => {\n generateMock\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0001-agent-understand\",\n startedAt: \"2026-05-01T06:16:21.000+02:00\",\n finishedAt: \"2026-05-01T06:16:23.000+02:00\",\n durationMs: 2000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n normalizedQuery: `Explain ${targetFile}`,\n explicitTargets: [targetFile],\n constraints: [],\n primaryIntent: \"Explain the target file.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0002-agent-action-choice\",\n startedAt: \"2026-05-01T06:16:24.000+02:00\",\n finishedAt: \"2026-05-01T06:16:25.000+02:00\",\n durationMs: 1000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the explicit file first.\",\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0003-agent-read-file\",\n startedAt: \"2026-05-01T06:16:25.100+02:00\",\n finishedAt: \"2026-05-01T06:16:25.400+02:00\",\n durationMs: 300,\n attemptCount: 1,\n },\n data: JSON.stringify({\n summary: \"Sample file for the new agent loop test.\",\n relevanceExplanation: \"This file defines sampleAnswer and the exported sample contracts used by the query.\",\n role: \"primary\",\n excerpts: [{\n description: \"The main answer function.\",\n startLine: 8,\n endLine: 10,\n symbols: [\"sampleAnswer\"],\n code: \"export function sampleAnswer() {\\n return 'answer';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0004-agent-action-choice\",\n startedAt: \"2026-05-01T06:16:25.500+02:00\",\n finishedAt: \"2026-05-01T06:16:26.000+02:00\",\n durationMs: 500,\n attemptCount: 1,\n },\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The file read is enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0005-agent-final-answer\",\n startedAt: \"2026-05-01T06:16:26.000+02:00\",\n finishedAt: \"2026-05-01T06:16:29.000+02:00\",\n durationMs: 3000,\n attemptCount: 1,\n },\n data: \"The file defines sampleAnswer in sample.ts.\",\n });\n\n const memory = createAgentMemory(`Explain ${targetFile}`, tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(ui.message).not.toHaveBeenCalledWith(\"Understanding request (2s).\");\n expect(ui.message).not.toHaveBeenCalledWith(\"Choosing next action (1s).\");\n expect(ui.message).not.toHaveBeenCalledWith(\"Producing final answer (3s).\");\n });\n\n it(\"requests one focused user input when no grounded evidence exists and scope stays broad\", async () => {\n generateMock\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0001-agent-understand\",\n startedAt: \"2026-05-01T06:16:21.000+02:00\",\n finishedAt: \"2026-05-01T06:16:23.000+02:00\",\n durationMs: 2000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n normalizedQuery: \"Explain how missing evidence flow works\",\n queryScope: \"broad-repo\",\n explicitTargets: [],\n constraints: [],\n primaryIntent: \"Explain how missing evidence flow works.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0002-agent-action-choice\",\n startedAt: \"2026-05-01T06:16:24.000+02:00\",\n finishedAt: \"2026-05-01T06:16:25.000+02:00\",\n durationMs: 1000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n action: \"plan\",\n args: {},\n reason: \"Plan the next step.\",\n }),\n })\n .mockResolvedValueOnce({\n trace: {\n callId: \"llm-0003-agent-plan\",\n startedAt: \"2026-05-01T06:16:26.000+02:00\",\n finishedAt: \"2026-05-01T06:16:28.000+02:00\",\n durationMs: 2000,\n attemptCount: 1,\n },\n data: JSON.stringify({\n goal: \"Explain missing evidence flow\",\n why: \"Need one step first.\",\n steps: [\n {\n action: \"search-db\",\n args: { query: \"missing evidence flow\" },\n purpose: \"Try indexed search.\",\n expectedEvidence: [\"candidate files\"],\n },\n ],\n }),\n })\n const memory = createAgentMemory(\"Explain how missing evidence flow works\", tempDir, tempDir);\n memory.task.maxTurns = 2;\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n const waitingStep = memory.steps.find((step) => step.action === \"request-user-input\");\n\n expect(memory.task.status).toBe(\"waiting\");\n expect(memory.artifacts.stopMessage).toContain(\"I could not answer yet.\");\n expect(memory.artifacts.stopMessage).toContain(\"I need one thing from you:\");\n expect(memory.task.dialogState).toMatchObject({\n status: \"awaiting-user\",\n kind: \"clarification\",\n });\n expect(waitingStep).toMatchObject({\n status: \"done\",\n resultSummary: \"Requested one focused user input.\",\n });\n expect(waitingStep?.startedAt).toBeTruthy();\n expect(waitingStep?.completedAt).toBeTruthy();\n expect(ui.message).toHaveBeenCalledWith(\"Requesting user input.\");\n });\n\n it(\"normalizes loose regex-search args before validation\", async () => {\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Find action names with regex\",\n explicitTargets: [],\n constraints: [],\n primaryIntent: \"Find action names with regex.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-regex\",\n args: {\n pattern: \"plan|search-db|search-regex\",\n directory: \".\",\n },\n reason: \"Search action names by regex.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"I searched file content for the requested regex pattern.\",\n });\n\n const memory = createAgentMemory(\"Find action names with regex\", tempDir, tempDir);\n memory.task.maxTurns = 1;\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.events.map((event) => event.type)).not.toContain(\"validation-failed\");\n expect(memory.evidence.searches.some((search) => search.action === \"search-regex\")).toBe(true);\n expect(memory.task.status).toBe(\"blocked\");\n expect(memory.artifacts.stopMessage).toContain(\"I could not answer from grounded repo evidence.\");\n });\n\n it(\"reports cannot-answer when explicit targets still do not produce grounded evidence\", async () => {\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Explain how /etc/hosts is handled\",\n explicitTargets: [\"/etc/hosts\"],\n constraints: [],\n primaryIntent: \"Explain how the target file is handled.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"plan\",\n args: {},\n reason: \"The explicit path is outside the repo, so plan a safer stop.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n goal: \"Find a safe next step.\",\n why: \"The direct file read failed.\",\n steps: [],\n }),\n });\n\n const memory = createAgentMemory(\"Explain how /etc/hosts is handled\", tempDir, tempDir);\n memory.task.maxTurns = 1;\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n const stopStep = memory.steps.find((step) => step.action === \"cannot-answer\");\n\n expect(memory.task.status).toBe(\"blocked\");\n expect(memory.artifacts.stopMessage).toContain(\"I could not answer from grounded repo evidence.\");\n expect(stopStep).toMatchObject({\n status: \"done\",\n resultSummary: \"Reported that the agent could not answer.\",\n });\n expect(Object.keys(memory.evidence.fileReads)).toHaveLength(0);\n });\n\n it(\"logs validation failures without pretending the step started\", async () => {\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Run a regex search for test files\",\n queryScope: \"targeted\",\n explicitTargets: [],\n constraints: [],\n primaryIntent: \"Run a regex search safely.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-regex\",\n args: {},\n reason: \"Try a regex search first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n goal: \"Find a safer step.\",\n why: \"The first step was invalid.\",\n steps: [],\n }),\n })\n .mockResolvedValueOnce({\n data: \"I could not complete the regex search because the step arguments were invalid.\",\n });\n\n const memory = createAgentMemory(\"Run a regex search for test files\", tempDir, tempDir);\n memory.task.maxTurns = 2;\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n const blockedStep = memory.steps.find((step) => step.action === \"search-regex\");\n\n expect(memory.events.map((event) => event.type)).toContain(\"validation-failed\");\n expect(blockedStep?.status).toBe(\"blocked\");\n expect(blockedStep?.startedAt).toBeUndefined();\n expect(memory.events.some((event) => event.type === \"step-started\" && event.stepId === blockedStep?.id)).toBe(false);\n expect(ui.update).toHaveBeenCalledWith(\"Planning next steps (turn 1/2)\");\n expect(ui.message).toHaveBeenCalledWith(\"Planning next steps.\");\n });\n\n it(\"marks a running step failed and finalizes once when the end-of-run answer throws\", async () => {\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: `Explain ${targetFile}`,\n explicitTargets: [targetFile],\n constraints: [],\n primaryIntent: \"Explain the target file.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: targetFile },\n reason: \"Read the explicit file first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Sample file for the explicit-target explanation.\",\n relevanceExplanation: \"This explicit file is the user-requested answer source.\",\n role: \"primary\",\n excerpts: [{\n description: \"Main export block.\",\n startLine: 8,\n endLine: 10,\n symbols: [\"sampleAnswer\"],\n code: \"export function sampleAnswer() {\\n return 'answer';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The file read is enough to answer now.\",\n }),\n })\n .mockRejectedValueOnce(Object.assign(new Error(\"final answer model failure\"), {\n trace: {\n callId: \"llm-0004-agent-final-answer\",\n },\n }));\n\n const memory = createAgentMemory(`Explain ${targetFile}`, tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await expect(runAgentLoop(memory, ui)).rejects.toThrow(\"final answer model failure\");\n\n const finalStep = memory.steps.find((step) => step.action === \"final-answer\");\n const finalizedEvents = memory.events.filter((event) => event.type === \"task-finalized\");\n\n expect(finalStep).toMatchObject({\n status: \"failed\",\n resultSummary: \"final answer model failure\",\n });\n expect(memory.task.status).toBe(\"failed\");\n expect(memory.task.stopReason).toBe(\"final-answer\");\n expect(finalizedEvents).toHaveLength(1);\n });\n\n it(\"uses search fallback results for /resume-style queries instead of ending empty\", async () => {\n const resumeFile = path.join(tempDir, \"cli\", \"src\", \"commands\", \"TasksCmd.ts\");\n fs.mkdirSync(path.dirname(resumeFile), { recursive: true });\n fs.writeFileSync(\n resumeFile,\n [\n \"/**\",\n \" * Handles task shell commands, including resume.\",\n \" */\",\n \"export function runResumeCommand() {\",\n \" return 'resume';\",\n \"}\",\n ].join(\"\\n\"),\n \"utf-8\"\n );\n searchState.dbFileCandidates.set(\"How does /resume for the simple agent work?\", [resumeFile]);\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"How does /resume for the simple agent work?\",\n explicitTargets: [\"/resume\"],\n constraints: [],\n primaryIntent: \"Explain the resume command flow.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"How does /resume for the simple agent work?\" },\n reason: \"Search for the command implementation first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: resumeFile },\n reason: \"Read the best fallback candidate before answering.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Resume command implementation.\",\n relevanceExplanation: \"This fallback candidate implements the resume command flow the user asked about.\",\n role: \"primary\",\n excerpts: [{\n description: \"Resume command function.\",\n startLine: 4,\n endLine: 6,\n symbols: [\"runResumeCommand\"],\n code: \"export function runResumeCommand() {\\n return 'resume';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The candidate read is enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The resume flow is handled in TasksCmd.ts.\",\n });\n\n const memory = createAgentMemory(\"How does /resume for the simple agent work?\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.evidence.candidateFiles).toContain(resumeFile);\n expect(Object.keys(memory.evidence.fileReads).length).toBeGreaterThan(0);\n expect(memory.artifacts.finalAnswer).toContain(\"TasksCmd.ts\");\n expect(memory.steps.some((step) => step.action === \"cannot-answer\")).toBe(false);\n });\n\n it(\"searches before reading when the explicit target is only a basename\", async () => {\n const indexFile = path.join(tempDir, \"cli\", \"src\", \"index.ts\");\n fs.mkdirSync(path.dirname(indexFile), { recursive: true });\n fs.writeFileSync(\n indexFile,\n [\n \"/**\",\n \" * CLI entrypoint for the basename resolution test.\",\n \" */\",\n \"export function runCliEntry() {\",\n \" return 'cli';\",\n \"}\",\n ].join(\"\\n\"),\n \"utf-8\"\n );\n searchState.dbFileCandidates.set(\"Explain index.ts\", [indexFile]);\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Explain index.ts\",\n explicitTargets: [\"index.ts\"],\n constraints: [],\n primaryIntent: \"Explain the index file.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"Explain index.ts\" },\n reason: \"Resolve the basename before reading.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: \"index.ts\" },\n reason: \"Read the resolved basename target.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Resolved basename target.\",\n relevanceExplanation: \"This file is the resolved index.ts target and contains the CLI entrypoint.\",\n role: \"primary\",\n excerpts: [{\n description: \"CLI entrypoint export.\",\n startLine: 4,\n endLine: 6,\n symbols: [\"runCliEntry\"],\n code: \"export function runCliEntry() {\\n return 'cli';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The grounded read is enough to answer.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The basename target resolves to cli/src/index.ts and defines runCliEntry.\",\n });\n\n const memory = createAgentMemory(\"Explain index.ts\", tempDir, tempDir);\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(memory.evidence.candidateFiles).toContain(indexFile);\n expect(Object.keys(memory.evidence.fileReads)).toContain(indexFile);\n expect(memory.steps.filter((step) => step.action === \"read-file\" && step.status === \"failed\")).toHaveLength(0);\n expect(memory.artifacts.finalAnswer).toContain(\"cli/src/index.ts\");\n });\n\n it(\"normalizes read-file path aliases from model output so /resume-style reads do not block\", async () => {\n const resumeFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"resumeContinuityStep.ts\");\n fs.mkdirSync(path.dirname(resumeFile), { recursive: true });\n fs.writeFileSync(\n resumeFile,\n [\n \"/**\",\n \" * Explains how resume continuity works.\",\n \" */\",\n \"export function resumeContinuityStep() {\",\n \" return 'resume continuity';\",\n \"}\",\n ].join(\"\\n\"),\n \"utf-8\"\n );\n searchState.dbFileCandidates.set(\n \"How does /resume for the simple agent work, and when is in-memory glob data reused?\",\n [resumeFile]\n );\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"How does /resume for the simple agent work, and when is in-memory glob data reused?\",\n explicitTargets: [\"/resume\"],\n constraints: [],\n primaryIntent: \"Explain the resume command flow and continuity reuse.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: { query: \"How does /resume for the simple agent work, and when is in-memory glob data reused?\" },\n reason: \"Find likely implementation files first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: {\n path: resumeFile,\n target: \"/resume\",\n },\n reason: \"Read the most relevant candidate file next.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Resume continuity implementation.\",\n relevanceExplanation: \"This candidate contains the resume continuity logic named in the question.\",\n role: \"primary\",\n excerpts: [{\n description: \"Resume continuity export.\",\n startLine: 4,\n endLine: 6,\n symbols: [\"resumeContinuityStep\"],\n code: \"export function resumeContinuityStep() {\\n return 'resume continuity';\\n}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The file read is enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"The resume continuity flow is handled in resumeContinuityStep.ts.\",\n });\n\n const memory = createAgentMemory(\n \"How does /resume for the simple agent work, and when is in-memory glob data reused?\",\n tempDir,\n tempDir\n );\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.task.status).toBe(\"done\");\n expect(Object.keys(memory.evidence.fileReads)).toContain(resumeFile);\n expect(memory.steps.find((step) => step.action === \"read-file\")).toMatchObject({\n status: \"done\",\n });\n expect(memory.events.some((event) => event.type === \"validation-failed\")).toBe(false);\n });\n\n it(\"keeps reading ranked candidates until the model has enough evidence\", async () => {\n const loopFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentLoop.ts\");\n const actionsFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentActions.ts\");\n const stateFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentStateMachine.ts\");\n fs.mkdirSync(path.dirname(loopFile), { recursive: true });\n fs.writeFileSync(loopFile, \"export function runAgentLoop() {}\\n\", \"utf-8\");\n fs.writeFileSync(actionsFile, \"export const buildActionMenu = () => [];\\n\", \"utf-8\");\n fs.writeFileSync(stateFile, \"export const startStep = () => {};\\n\", \"utf-8\");\n searchState.dbFileCandidates.set(\n \"Explain how agentMemory, agentLoop, agentActions, and agentStateMachine divide responsibilities\",\n [loopFile, actionsFile, stateFile]\n );\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Explain how agentMemory, agentLoop, agentActions, and agentStateMachine divide responsibilities\",\n queryScope: \"multi-file\",\n explicitTargets: [],\n constraints: [],\n primaryIntent: \"Explain how the simple-agent parts divide responsibilities.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: {\n query: \"Explain how agentMemory, agentLoop, agentActions, and agentStateMachine divide responsibilities\",\n },\n reason: \"Find likely source files first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: {\n target: loopFile,\n },\n reason: \"Read the top-ranked candidate first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Loop coordinator file.\",\n relevanceExplanation: \"This top-ranked candidate owns the loop execution part of the responsibilities question.\",\n role: \"primary\",\n excerpts: [{\n description: \"Loop export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"runAgentLoop\"],\n code: \"export function runAgentLoop() {}\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: {},\n reason: \"One read was not enough, so read the next ranked candidate.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Action menu file.\",\n relevanceExplanation: \"This second candidate owns action construction and complements the loop file for the requested explanation.\",\n role: \"supporting\",\n excerpts: [{\n description: \"Action menu export.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"buildActionMenu\"],\n code: \"export const buildActionMenu = () => [];\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The grounded file reads are enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"agentLoop coordinates execution, agentActions normalizes and runs actions, and agentStateMachine owns transitions.\",\n });\n\n const memory = createAgentMemory(\n \"Explain how agentMemory, agentLoop, agentActions, and agentStateMachine divide responsibilities\",\n tempDir,\n tempDir\n );\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.events.map((event) => event.type)).not.toContain(\"validation-failed\");\n expect(Object.keys(memory.evidence.fileReads)).toEqual(expect.arrayContaining([loopFile, actionsFile]));\n expect(Object.keys(memory.evidence.fileReads)).not.toContain(stateFile);\n expect(memory.task.status).toBe(\"done\");\n expect(memory.artifacts.finalAnswer).toContain(\"agentLoop coordinates execution\");\n });\n\n it(\"uses triage-file before full reads on broad candidate sets\", async () => {\n const loopFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentLoop.ts\");\n const actionsFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentActions.ts\");\n const stateFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentStateMachine.ts\");\n const policyFile = path.join(tempDir, \"cli\", \"src\", \"agents\", \"agentPolicyState.ts\");\n fs.mkdirSync(path.dirname(loopFile), { recursive: true });\n fs.writeFileSync(loopFile, \"export function runAgentLoop() {}\\n\", \"utf-8\");\n fs.writeFileSync(actionsFile, \"export const buildActionMenu = () => [];\\n\", \"utf-8\");\n fs.writeFileSync(stateFile, \"export const startStep = () => {};\\n\", \"utf-8\");\n fs.writeFileSync(policyFile, \"export const resolvePolicyState = () => ({});\\n\", \"utf-8\");\n searchState.dbFileCandidates.set(\n \"Explain how the modular agent chooses between triage-file and read-file\",\n [loopFile, actionsFile, stateFile, policyFile]\n );\n\n generateMock\n .mockResolvedValueOnce({\n data: JSON.stringify({\n normalizedQuery: \"Explain how the modular agent chooses between triage-file and read-file\",\n queryScope: \"multi-file\",\n explicitTargets: [],\n constraints: [],\n primaryIntent: \"Explain read and triage decision ownership.\",\n alternativeIntents: [],\n ambiguityFlags: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"search-db\",\n args: {\n query: \"Explain how the modular agent chooses between triage-file and read-file\",\n },\n reason: \"Find likely source files first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"triage-file\",\n args: { target: loopFile },\n reason: \"Triage the strongest ranked candidate first.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"triage-file\",\n args: { target: actionsFile },\n reason: \"Triage one more top candidate before a full read.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"read-file\",\n args: { target: actionsFile },\n reason: \"The second triaged candidate now looks like the clearest owner.\",\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n summary: \"Action normalization and menu wiring.\",\n relevanceExplanation: \"This file owns action contracts and shows how triage-file and read-file are surfaced to the runtime.\",\n role: \"primary\",\n excerpts: [{\n description: \"Action registration block.\",\n startLine: 1,\n endLine: 1,\n symbols: [\"buildActionMenu\"],\n code: \"export const buildActionMenu = () => [];\",\n }],\n risks: [],\n }),\n })\n .mockResolvedValueOnce({\n data: JSON.stringify({\n action: \"final-answer\",\n args: {},\n reason: \"The promoted full read is enough to answer now.\",\n }),\n })\n .mockResolvedValueOnce({\n data: \"agentActions owns action contracts while policy decides when triage-file or read-file should run.\",\n });\n\n const memory = createAgentMemory(\n \"Explain how the modular agent chooses between triage-file and read-file\",\n tempDir,\n tempDir\n );\n const ui = {\n update: vi.fn(),\n message: vi.fn(),\n pause: vi.fn((fn: () => void) => fn()),\n succeed: vi.fn(),\n fail: vi.fn(),\n stop: vi.fn(),\n };\n\n await runAgentLoop(memory, ui);\n\n expect(memory.steps.map((step) => step.action)).toEqual([\n \"search-db\",\n \"triage-file\",\n \"triage-file\",\n \"read-file\",\n \"final-answer\",\n ]);\n expect(Object.values(memory.evidence.fileReads).filter((read) => read.readMode === \"triage\").length).toBeGreaterThanOrEqual(1);\n expect(Object.values(memory.evidence.fileReads).filter((read) => read.readMode === \"full\")).toHaveLength(1);\n expect(memory.artifacts.finalAnswer).toContain(\"triage-file\");\n });\n});\n"]}
|