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,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads runtime log text in both legacy banner format and newer shared-log format.
|
|
3
|
+
*
|
|
4
|
+
* Why this file exists:
|
|
5
|
+
* - evals and diagnosis still need to read old banner logs during migration
|
|
6
|
+
* - newer runtime entries no longer all use `INPUT | ...` / `OUTPUT | ...` blocks
|
|
7
|
+
* - one parser keeps report code from duplicating fragile log scraping rules
|
|
8
|
+
*/
|
|
9
|
+
function stripAnsi(text) {
|
|
10
|
+
return text.replace(/\x1B\[[0-9;]*m/g, "");
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Normalizes runtime log text before eval token checks.
|
|
14
|
+
* Example: `[agent] [\x1b[33mtask:created\x1b[39m]` -> `[agent] [task:created]`.
|
|
15
|
+
*/
|
|
16
|
+
export function normalizeRuntimeLogText(text) {
|
|
17
|
+
return stripAnsi(text);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Matches both older ISO-UTC runtime headers and newer local-time human headers.
|
|
21
|
+
* Example: `[2026-04-30T12:00:00.000Z] ...` and `[2026-05-01 12:15:00 +02:00] ...`.
|
|
22
|
+
*/
|
|
23
|
+
function isStructuredRuntimeHeader(line) {
|
|
24
|
+
return /^\[[^\]]+\] \[[^\]]+\] \[[^:\]]+:[^\]]+\]/.test(normalizeRuntimeLogText(line));
|
|
25
|
+
}
|
|
26
|
+
function parseJsonIfPossible(text) {
|
|
27
|
+
const trimmed = text.trim();
|
|
28
|
+
if (!trimmed)
|
|
29
|
+
return "";
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(trimmed);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return trimmed;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function splitStructuredRuntimeEntries(runLog) {
|
|
38
|
+
const lines = runLog.split("\n");
|
|
39
|
+
const entries = [];
|
|
40
|
+
let currentHeader;
|
|
41
|
+
let currentBody = [];
|
|
42
|
+
const flush = () => {
|
|
43
|
+
if (!currentHeader)
|
|
44
|
+
return;
|
|
45
|
+
entries.push({
|
|
46
|
+
header: currentHeader,
|
|
47
|
+
body: currentBody.join("\n").trim(),
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
for (const line of lines) {
|
|
51
|
+
if (isStructuredRuntimeHeader(line)) {
|
|
52
|
+
flush();
|
|
53
|
+
currentHeader = line;
|
|
54
|
+
currentBody = [];
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (currentHeader) {
|
|
58
|
+
currentBody.push(line);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
flush();
|
|
62
|
+
return entries;
|
|
63
|
+
}
|
|
64
|
+
function extractLegacyBannerPayloads(runLog, stepName) {
|
|
65
|
+
const escapedName = stepName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
66
|
+
const regex = new RegExp(`š OUTPUT \\| ${escapedName}[\\s\\S]*?\\n={68}\\n([\\s\\S]*?)\\n={68}\\n`, "g");
|
|
67
|
+
const payloads = [];
|
|
68
|
+
let match = null;
|
|
69
|
+
while ((match = regex.exec(runLog)) !== null) {
|
|
70
|
+
payloads.push(parseJsonIfPossible(match[1] ?? ""));
|
|
71
|
+
}
|
|
72
|
+
return payloads;
|
|
73
|
+
}
|
|
74
|
+
function extractStructuredLegacyPayloads(runLog, stepName) {
|
|
75
|
+
return splitStructuredRuntimeEntries(runLog)
|
|
76
|
+
.filter((entry) => entry.header.includes("[shared] [legacy:output]"))
|
|
77
|
+
.map((entry) => parseJsonIfPossible(entry.body))
|
|
78
|
+
.flatMap((payload) => {
|
|
79
|
+
if (typeof payload !== "object" || payload === null)
|
|
80
|
+
return [];
|
|
81
|
+
const legacy = payload;
|
|
82
|
+
if (legacy.payload?.type !== "output" || legacy.payload?.stepName !== stepName) {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
return [legacy.payload.content];
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export function extractStepPayloadsFromRuntimeLog(runLog, stepName) {
|
|
89
|
+
return [
|
|
90
|
+
...extractLegacyBannerPayloads(runLog, stepName),
|
|
91
|
+
...extractStructuredLegacyPayloads(runLog, stepName),
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
function extractLegacyFinalAnswerText(runLog) {
|
|
95
|
+
const blockRegex = /š OUTPUT \| (?:finalAnswerModule|continuityAnswerModule|final-answer)[\s\S]*?\n={68}\n([\s\S]*?)\n={68}\n/g;
|
|
96
|
+
let lastBody = "";
|
|
97
|
+
let match = null;
|
|
98
|
+
while ((match = blockRegex.exec(runLog)) !== null) {
|
|
99
|
+
lastBody = match[1] ?? "";
|
|
100
|
+
}
|
|
101
|
+
if (!lastBody)
|
|
102
|
+
return "";
|
|
103
|
+
const parsed = parseJsonIfPossible(lastBody);
|
|
104
|
+
if (typeof parsed === "string")
|
|
105
|
+
return parsed;
|
|
106
|
+
if (typeof parsed === "object" && parsed !== null && "data" in parsed) {
|
|
107
|
+
const data = parsed.data;
|
|
108
|
+
return typeof data === "string" ? data : JSON.stringify(data ?? "");
|
|
109
|
+
}
|
|
110
|
+
return typeof parsed === "string" ? parsed : JSON.stringify(parsed);
|
|
111
|
+
}
|
|
112
|
+
export function extractFinalAnswerTextFromRuntimeLog(runLog) {
|
|
113
|
+
const legacyAnswer = extractLegacyFinalAnswerText(runLog);
|
|
114
|
+
if (legacyAnswer)
|
|
115
|
+
return legacyAnswer;
|
|
116
|
+
const structuredEntries = splitStructuredRuntimeEntries(runLog);
|
|
117
|
+
let latestAnswer = "";
|
|
118
|
+
for (const entry of structuredEntries) {
|
|
119
|
+
if (normalizeRuntimeLogText(entry.header).includes("artifact final-answer")) {
|
|
120
|
+
const parsed = parseJsonIfPossible(entry.body);
|
|
121
|
+
latestAnswer = typeof parsed === "string" ? parsed : JSON.stringify(parsed);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (!normalizeRuntimeLogText(entry.header).includes("[shared] [legacy:output]"))
|
|
125
|
+
continue;
|
|
126
|
+
const parsed = parseJsonIfPossible(entry.body);
|
|
127
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
128
|
+
continue;
|
|
129
|
+
const legacy = parsed;
|
|
130
|
+
if (legacy.payload?.stepName !== "finalAnswerModule" && legacy.payload?.stepName !== "continuityAnswerModule") {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const content = legacy.payload.content;
|
|
134
|
+
if (typeof content === "object" && content !== null && "data" in content) {
|
|
135
|
+
const data = content.data;
|
|
136
|
+
latestAnswer = typeof data === "string" ? data : JSON.stringify(data ?? "");
|
|
137
|
+
}
|
|
138
|
+
else if (typeof content === "string") {
|
|
139
|
+
latestAnswer = content;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return latestAnswer;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=runtimeLogReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeLogReader.js","sourceRoot":"","sources":["../../src/testing/runtimeLogReader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,2CAA2C,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAc;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,aAAiC,CAAC;IACtC,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,EAAE,CAAC;YACR,aAAa,GAAG,IAAI,CAAC;YACrB,WAAW,GAAG,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAc,EAAE,QAAgB;IACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,iBAAiB,WAAW,8CAA8C,EAC1E,GAAG,CACJ,CAAC;IACF,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,+BAA+B,CAAC,MAAc,EAAE,QAAgB;IACvE,OAAO,6BAA6B,CAAC,MAAM,CAAC;SACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;SACpE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC/C,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,OAMd,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/E,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,MAAc,EAAE,QAAgB;IAChF,OAAO;QACL,GAAG,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,GAAG,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAc;IAClD,MAAM,UAAU,GACd,6GAA6G,CAAC;IAChH,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACtE,MAAM,IAAI,GAAI,MAA6B,CAAC,IAAI,CAAC;QACjD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,MAAc;IACjE,MAAM,YAAY,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,YAAY,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAAE,SAAS;QAC1F,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC5D,MAAM,MAAM,GAAG,MAKd,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,mBAAmB,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAC9G,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACzE,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAC;YAClD,YAAY,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["/**\n * Reads runtime log text in both legacy banner format and newer shared-log format.\n *\n * Why this file exists:\n * - evals and diagnosis still need to read old banner logs during migration\n * - newer runtime entries no longer all use `INPUT | ...` / `OUTPUT | ...` blocks\n * - one parser keeps report code from duplicating fragile log scraping rules\n */\n\ntype RuntimeLogEntry = {\n header: string;\n body: string;\n};\n\nfunction stripAnsi(text: string): string {\n return text.replace(/\\x1B\\[[0-9;]*m/g, \"\");\n}\n\n/**\n * Normalizes runtime log text before eval token checks.\n * Example: `[agent] [\\x1b[33mtask:created\\x1b[39m]` -> `[agent] [task:created]`.\n */\nexport function normalizeRuntimeLogText(text: string): string {\n return stripAnsi(text);\n}\n\n/**\n * Matches both older ISO-UTC runtime headers and newer local-time human headers.\n * Example: `[2026-04-30T12:00:00.000Z] ...` and `[2026-05-01 12:15:00 +02:00] ...`.\n */\nfunction isStructuredRuntimeHeader(line: string): boolean {\n return /^\\[[^\\]]+\\] \\[[^\\]]+\\] \\[[^:\\]]+:[^\\]]+\\]/.test(normalizeRuntimeLogText(line));\n}\n\nfunction parseJsonIfPossible(text: string): unknown {\n const trimmed = text.trim();\n if (!trimmed) return \"\";\n try {\n return JSON.parse(trimmed);\n } catch {\n return trimmed;\n }\n}\n\nfunction splitStructuredRuntimeEntries(runLog: string): RuntimeLogEntry[] {\n const lines = runLog.split(\"\\n\");\n const entries: RuntimeLogEntry[] = [];\n let currentHeader: string | undefined;\n let currentBody: string[] = [];\n\n const flush = () => {\n if (!currentHeader) return;\n entries.push({\n header: currentHeader,\n body: currentBody.join(\"\\n\").trim(),\n });\n };\n\n for (const line of lines) {\n if (isStructuredRuntimeHeader(line)) {\n flush();\n currentHeader = line;\n currentBody = [];\n continue;\n }\n if (currentHeader) {\n currentBody.push(line);\n }\n }\n\n flush();\n return entries;\n}\n\nfunction extractLegacyBannerPayloads(runLog: string, stepName: string): unknown[] {\n const escapedName = stepName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const regex = new RegExp(\n `š OUTPUT \\\\| ${escapedName}[\\\\s\\\\S]*?\\\\n={68}\\\\n([\\\\s\\\\S]*?)\\\\n={68}\\\\n`,\n \"g\"\n );\n const payloads: unknown[] = [];\n let match: RegExpExecArray | null = null;\n while ((match = regex.exec(runLog)) !== null) {\n payloads.push(parseJsonIfPossible(match[1] ?? \"\"));\n }\n return payloads;\n}\n\nfunction extractStructuredLegacyPayloads(runLog: string, stepName: string): unknown[] {\n return splitStructuredRuntimeEntries(runLog)\n .filter((entry) => entry.header.includes(\"[shared] [legacy:output]\"))\n .map((entry) => parseJsonIfPossible(entry.body))\n .flatMap((payload) => {\n if (typeof payload !== \"object\" || payload === null) return [];\n const legacy = payload as {\n payload?: {\n stepName?: unknown;\n type?: unknown;\n content?: unknown;\n };\n };\n if (legacy.payload?.type !== \"output\" || legacy.payload?.stepName !== stepName) {\n return [];\n }\n return [legacy.payload.content];\n });\n}\n\nexport function extractStepPayloadsFromRuntimeLog(runLog: string, stepName: string): unknown[] {\n return [\n ...extractLegacyBannerPayloads(runLog, stepName),\n ...extractStructuredLegacyPayloads(runLog, stepName),\n ];\n}\n\nfunction extractLegacyFinalAnswerText(runLog: string): string {\n const blockRegex =\n /š OUTPUT \\| (?:finalAnswerModule|continuityAnswerModule|final-answer)[\\s\\S]*?\\n={68}\\n([\\s\\S]*?)\\n={68}\\n/g;\n let lastBody = \"\";\n let match: RegExpExecArray | null = null;\n while ((match = blockRegex.exec(runLog)) !== null) {\n lastBody = match[1] ?? \"\";\n }\n if (!lastBody) return \"\";\n const parsed = parseJsonIfPossible(lastBody);\n if (typeof parsed === \"string\") return parsed;\n if (typeof parsed === \"object\" && parsed !== null && \"data\" in parsed) {\n const data = (parsed as { data?: unknown }).data;\n return typeof data === \"string\" ? data : JSON.stringify(data ?? \"\");\n }\n return typeof parsed === \"string\" ? parsed : JSON.stringify(parsed);\n}\n\nexport function extractFinalAnswerTextFromRuntimeLog(runLog: string): string {\n const legacyAnswer = extractLegacyFinalAnswerText(runLog);\n if (legacyAnswer) return legacyAnswer;\n\n const structuredEntries = splitStructuredRuntimeEntries(runLog);\n let latestAnswer = \"\";\n for (const entry of structuredEntries) {\n if (normalizeRuntimeLogText(entry.header).includes(\"artifact final-answer\")) {\n const parsed = parseJsonIfPossible(entry.body);\n latestAnswer = typeof parsed === \"string\" ? parsed : JSON.stringify(parsed);\n continue;\n }\n if (!normalizeRuntimeLogText(entry.header).includes(\"[shared] [legacy:output]\")) continue;\n const parsed = parseJsonIfPossible(entry.body);\n if (typeof parsed !== \"object\" || parsed === null) continue;\n const legacy = parsed as {\n payload?: {\n stepName?: unknown;\n content?: unknown;\n };\n };\n if (legacy.payload?.stepName !== \"finalAnswerModule\" && legacy.payload?.stepName !== \"continuityAnswerModule\") {\n continue;\n }\n const content = legacy.payload.content;\n if (typeof content === \"object\" && content !== null && \"data\" in content) {\n const data = (content as { data?: unknown }).data;\n latestAnswer = typeof data === \"string\" ? data : JSON.stringify(data ?? \"\");\n } else if (typeof content === \"string\") {\n latestAnswer = content;\n }\n }\n return latestAnswer;\n}\n"]}
|
|
@@ -1,310 +1,42 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Registers dev-only shell test helpers.
|
|
3
|
+
*
|
|
4
|
+
* Why this file exists:
|
|
5
|
+
* - dev shell commands should stay in one place instead of being spread across the shell setup
|
|
6
|
+
* - test commands should stay in one place instead of being spread across shell setup
|
|
7
|
+
* - the shell should only show explicit maintainer helpers when dev mode is enabled
|
|
8
|
+
*/
|
|
2
9
|
import chalk from "chalk";
|
|
3
|
-
import {
|
|
4
|
-
// ---------------- Test Queries ----------------
|
|
5
|
-
export const testQueries = [
|
|
6
|
-
"Add concise comments to semanticAnalysisModule.ts and finalAnswerModule.ts describing phase boundaries.",
|
|
7
|
-
"Refactor MainAgent runVerify flow to reduce nesting while preserving behavior.",
|
|
8
|
-
"Explain how resolveExecutionModeStep, routingDecisionStep, and canExecuteRoute interact.",
|
|
9
|
-
"Add stronger validation and safer fallback behavior in contextReviewStep.ts.",
|
|
10
|
-
"Summarize CLI architecture from index.ts, commands/factory.ts, and runQueryWithDaemonControl.ts.",
|
|
11
|
-
"Where are SQLite queries defined in db/fileIndex.ts and db/client.ts?",
|
|
12
|
-
"Which agent step files under cli/src/agents are missing test coverage?",
|
|
13
|
-
"What parts of runWorkLoop could cause repeated pending task steps?",
|
|
14
|
-
"How does runSearch seed relatedFiles and how does verify prune missing paths?",
|
|
15
|
-
"Refactor buildContextualPrompt.ts into smaller focused helpers without behavior change.",
|
|
16
|
-
"Is error handling consistent across MainAgent.ts, evidenceVerifierStep.ts, and semanticAnalysisModule.ts?",
|
|
17
|
-
"What important usage examples are missing from README for shell commands and /edit flow?",
|
|
18
|
-
"How does this repo run tests and where are the test entry points configured?",
|
|
19
|
-
"Are there flaky-test signals in __tests__ or test scripts, and where would retries be added?",
|
|
20
|
-
"Is there dead code in cli/src/agents that is never referenced by MainAgent or command flow?",
|
|
21
|
-
"Map the full run lifecycle in MainAgent and point out where routing decisions are made.",
|
|
22
|
-
"For repo-wide analysis questions, which method decides verify wave budget and why?",
|
|
23
|
-
"Compare runSearch, runVerify, and runResearch responsibilities and identify overlap risks.",
|
|
24
|
-
"Trace how selectedFiles and candidateFiles evolve across verify waves for this query.",
|
|
25
|
-
"Show where taskStep status can get stuck pending and propose a bounded completion rule.",
|
|
26
|
-
"Refactor evidenceVerifierStep so verify data is separated from semantic analysis outputs.",
|
|
27
|
-
"Identify all places where action.shouldModify is set and flag analyze-mode violations.",
|
|
28
|
-
"Which modules still read FileAnalysis.evidence or searchScore after verify-state split?",
|
|
29
|
-
"Given a multi-question prompt, how should planning split research vs execution steps?",
|
|
30
|
-
"Find the minimal file set required to answer: how do I run tests and where are flaky tests detected?",
|
|
31
|
-
"Explain why a repo-wide question might still end up analyzing only a few files.",
|
|
32
|
-
"List all gate checks (phase/scope/route/readiness/research) and the exact stop conditions.",
|
|
33
|
-
"Audit finalAnswer analyzed-files output for mismatch against actually executed taskSteps.",
|
|
34
|
-
"Where does semanticAnalysis merge prior state, and what fields should remain semantic-only?",
|
|
35
|
-
];
|
|
36
|
-
// ---------------- Local Evals ----------------
|
|
37
|
-
export const localEvalCases = [
|
|
38
|
-
// ---------------- Routing / Verify ----------------
|
|
39
|
-
{
|
|
40
|
-
id: "routing_repo_wide_question",
|
|
41
|
-
query: "summarize this repo architecture and identify weak coupling points",
|
|
42
|
-
checks: {
|
|
43
|
-
mustContain: [
|
|
44
|
-
"OUTPUT | readinessGateStep",
|
|
45
|
-
"OUTPUT | runResearch",
|
|
46
|
-
"OUTPUT | reasonNextTaskStep",
|
|
47
|
-
],
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
id: "verify_pipeline_sqlite_query",
|
|
52
|
-
query: "Where are SQLite queries defined in db/fileIndex.ts and db/client.ts?",
|
|
53
|
-
checks: {
|
|
54
|
-
mustContain: [
|
|
55
|
-
"OUTPUT | evidenceVerifier",
|
|
56
|
-
"OUTPUT | preFileSearchCheckStep",
|
|
57
|
-
"OUTPUT | readinessGateStep",
|
|
58
|
-
],
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
id: "verify_focus_evolution",
|
|
63
|
-
query: "Trace how selectedFiles and candidateFiles evolve across verify waves for this query.",
|
|
64
|
-
checks: {
|
|
65
|
-
mustContain: [
|
|
66
|
-
"OUTPUT | evidenceVerifier",
|
|
67
|
-
"OUTPUT | preFileSearchCheckStep",
|
|
68
|
-
"OUTPUT | selectRelevantSources",
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
// ---------------- Research ----------------
|
|
73
|
-
{
|
|
74
|
-
id: "research_generation_present",
|
|
75
|
-
query: "Is error handling consistent across the codebase and how do I run the test suite?",
|
|
76
|
-
when: {
|
|
77
|
-
mustContainInRunLog: ['"allowResearch": true'],
|
|
78
|
-
},
|
|
79
|
-
checks: {
|
|
80
|
-
mustContain: [
|
|
81
|
-
"OUTPUT | researchPlanGen",
|
|
82
|
-
"research-impact-map",
|
|
83
|
-
"research-symbol-trace",
|
|
84
|
-
"research-risk-check",
|
|
85
|
-
],
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
id: "research_execution_artifacts_present",
|
|
90
|
-
query: "Is error handling consistent across the codebase and how do I run the test suite?",
|
|
91
|
-
when: {
|
|
92
|
-
mustContainInRunLog: ['"allowResearch": true'],
|
|
93
|
-
},
|
|
94
|
-
checks: {
|
|
95
|
-
mustContain: [
|
|
96
|
-
"OUTPUT | runResearch",
|
|
97
|
-
"OUTPUT | runResearchStep",
|
|
98
|
-
"\"collectedData\"",
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: "research_synthesis_present",
|
|
104
|
-
query: "summarize this repo architecture and identify weak coupling points",
|
|
105
|
-
when: {
|
|
106
|
-
mustContainInRunLog: ['"allowResearch": true'],
|
|
107
|
-
},
|
|
108
|
-
checks: {
|
|
109
|
-
mustContain: [
|
|
110
|
-
"research-architecture-synthesis",
|
|
111
|
-
"OUTPUT | runResearchStep",
|
|
112
|
-
"\"problemStatement\"",
|
|
113
|
-
],
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
// ---------------- Workloop / Analysis ----------------
|
|
117
|
-
{
|
|
118
|
-
id: "verify_store_used",
|
|
119
|
-
query: "For repo-wide analysis questions, which method decides verify wave budget and why?",
|
|
120
|
-
checks: {
|
|
121
|
-
mustContain: [
|
|
122
|
-
"OUTPUT | evidenceVerifier",
|
|
123
|
-
"OUTPUT | preFileSearchCheckStep",
|
|
124
|
-
],
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
id: "analysis_plan_and_semantic_pass",
|
|
129
|
-
query: "Where does semanticAnalysis merge prior state, and what fields should remain semantic-only?",
|
|
130
|
-
checks: {
|
|
131
|
-
mustContain: [
|
|
132
|
-
"OUTPUT | analysisPlanGen",
|
|
133
|
-
"OUTPUT | semanticAnalysisStep - per-file",
|
|
134
|
-
"OUTPUT | reasonNextStep",
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
id: "loop_safety_for_pending_steps",
|
|
140
|
-
query: "Show where taskStep status can get stuck pending and propose a bounded completion rule.",
|
|
141
|
-
checks: {
|
|
142
|
-
mustContain: [
|
|
143
|
-
"OUTPUT | reasonNextTaskStep",
|
|
144
|
-
"OUTPUT | reasonNextStep",
|
|
145
|
-
],
|
|
146
|
-
maxOccurrences: {
|
|
147
|
-
"OUTPUT | reasonNextStep": 40,
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
// ---------------- Final Answer ----------------
|
|
152
|
-
{
|
|
153
|
-
id: "final_answer_for_test_entrypoints",
|
|
154
|
-
query: "How does this repo run tests and where are the test entry points configured?",
|
|
155
|
-
checks: {
|
|
156
|
-
mustContain: [
|
|
157
|
-
"OUTPUT | finalAnswerModule",
|
|
158
|
-
],
|
|
159
|
-
mustContainAnswer: [
|
|
160
|
-
"test",
|
|
161
|
-
],
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
id: "final_answer_analyzed_files_reported",
|
|
166
|
-
query: "Audit finalAnswer analyzed-files output for mismatch against actually executed taskSteps.",
|
|
167
|
-
checks: {
|
|
168
|
-
mustContain: [
|
|
169
|
-
"OUTPUT | finalAnswerModule",
|
|
170
|
-
"\"analyzedFiles\"",
|
|
171
|
-
],
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
];
|
|
175
|
-
function pickRandom(items) {
|
|
176
|
-
return items[Math.floor(Math.random() * items.length)];
|
|
177
|
-
}
|
|
178
|
-
function logHighContrastQuery(prefix, query) {
|
|
179
|
-
// Neutral bold so it is readable on both light and dark terminal themes.
|
|
180
|
-
console.log(chalk.bold(`${prefix} ${query}`));
|
|
181
|
-
}
|
|
182
|
-
function countOccurrences(haystack, needle) {
|
|
183
|
-
if (!needle)
|
|
184
|
-
return 0;
|
|
185
|
-
return haystack.split(needle).length - 1;
|
|
186
|
-
}
|
|
187
|
-
function extractFinalAnswerText(runLog) {
|
|
188
|
-
const blockRegex = /š OUTPUT \| finalAnswerModule[\s\S]*?\n={68}\n([\s\S]*?)\n={68}\n/g;
|
|
189
|
-
let lastBody = "";
|
|
190
|
-
let match = null;
|
|
191
|
-
while ((match = blockRegex.exec(runLog)) !== null) {
|
|
192
|
-
lastBody = match[1] ?? "";
|
|
193
|
-
}
|
|
194
|
-
if (!lastBody)
|
|
195
|
-
return "";
|
|
196
|
-
try {
|
|
197
|
-
const parsed = JSON.parse(lastBody.trim());
|
|
198
|
-
if (typeof parsed?.data === "string")
|
|
199
|
-
return parsed.data;
|
|
200
|
-
return JSON.stringify(parsed?.data ?? "");
|
|
201
|
-
}
|
|
202
|
-
catch {
|
|
203
|
-
return lastBody;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
function isEvalApplicable(test, runLog) {
|
|
207
|
-
const mustContain = test.when?.mustContainInRunLog ?? [];
|
|
208
|
-
for (const token of mustContain) {
|
|
209
|
-
if (!runLog.includes(token)) {
|
|
210
|
-
return { ok: false, reason: `condition unmet: missing "${token}"` };
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
const mustNotContain = test.when?.mustNotContainInRunLog ?? [];
|
|
214
|
-
for (const token of mustNotContain) {
|
|
215
|
-
if (runLog.includes(token)) {
|
|
216
|
-
return { ok: false, reason: `condition unmet: found forbidden "${token}"` };
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return { ok: true };
|
|
220
|
-
}
|
|
221
|
-
async function runLocalEvals(runQuery) {
|
|
222
|
-
const startedAt = Date.now();
|
|
223
|
-
let passCount = 0;
|
|
224
|
-
let skipCount = 0;
|
|
225
|
-
for (const test of localEvalCases) {
|
|
226
|
-
fs.mkdirSync(requireRunLogDir(), { recursive: true });
|
|
227
|
-
fs.writeFileSync(RUN_LOG_PATH, "", { flag: "w" });
|
|
228
|
-
console.log(chalk.cyan(`\n[EVAL] ${test.id}`));
|
|
229
|
-
logHighContrastQuery("[EVAL QUERY]", test.query);
|
|
230
|
-
fs.appendFileSync(RUN_LOG_PATH, `\n[EVAL] ${test.id}\n[EVAL QUERY] ${test.query}\n`, "utf-8");
|
|
231
|
-
await runQuery(test.query);
|
|
232
|
-
const runLog = fs.existsSync(RUN_LOG_PATH)
|
|
233
|
-
? fs.readFileSync(RUN_LOG_PATH, "utf-8")
|
|
234
|
-
: "";
|
|
235
|
-
const finalAnswerText = extractFinalAnswerText(runLog);
|
|
236
|
-
const applicability = isEvalApplicable(test, runLog);
|
|
237
|
-
if (!applicability.ok) {
|
|
238
|
-
skipCount++;
|
|
239
|
-
console.log(chalk.blue(`[SKIP] ${test.id} (${applicability.reason})`));
|
|
240
|
-
continue;
|
|
241
|
-
}
|
|
242
|
-
const failures = [];
|
|
243
|
-
for (const token of test.checks.mustContain ?? []) {
|
|
244
|
-
if (!runLog.includes(token)) {
|
|
245
|
-
failures.push(`missing token: ${token}`);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
for (const token of test.checks.mustNotContain ?? []) {
|
|
249
|
-
if (runLog.includes(token)) {
|
|
250
|
-
failures.push(`unexpected token: ${token}`);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
for (const [token, max] of Object.entries(test.checks.maxOccurrences ?? {})) {
|
|
254
|
-
const count = countOccurrences(runLog, token);
|
|
255
|
-
if (count > max) {
|
|
256
|
-
failures.push(`too many occurrences: "${token}" => ${count} (max ${max})`);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
for (const token of test.checks.mustContainAnswer ?? []) {
|
|
260
|
-
if (!finalAnswerText.toLowerCase().includes(token.toLowerCase())) {
|
|
261
|
-
failures.push(`final answer missing token: ${token}`);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
for (const token of test.checks.mustNotContainAnswer ?? []) {
|
|
265
|
-
if (finalAnswerText.toLowerCase().includes(token.toLowerCase())) {
|
|
266
|
-
failures.push(`final answer contains forbidden token: ${token}`);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
if (failures.length === 0) {
|
|
270
|
-
passCount++;
|
|
271
|
-
console.log(chalk.green(`[PASS] ${test.id}`));
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
console.log(chalk.red(`[FAIL] ${test.id}`));
|
|
275
|
-
for (const failure of failures) {
|
|
276
|
-
console.log(chalk.red(` - ${failure}`));
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
const durationSec = ((Date.now() - startedAt) / 1000).toFixed(1);
|
|
281
|
-
const total = localEvalCases.length;
|
|
282
|
-
const failed = total - passCount - skipCount;
|
|
283
|
-
const color = failed === 0 ? chalk.green : chalk.yellow;
|
|
284
|
-
console.log(color(`\n[EVAL SUMMARY] pass=${passCount}/${total}, skip=${skipCount}, fail=${failed}, duration=${durationSec}s`));
|
|
285
|
-
}
|
|
286
|
-
function requireRunLogDir() {
|
|
287
|
-
const idx = RUN_LOG_PATH.lastIndexOf("/");
|
|
288
|
-
if (idx <= 0)
|
|
289
|
-
return ".";
|
|
290
|
-
return RUN_LOG_PATH.slice(0, idx);
|
|
291
|
-
}
|
|
10
|
+
import { runAllTestsCommand, listRegisteredTests, printTestCommand, runRegisteredTestCommand, } from "../commands/TestCmd.js";
|
|
292
11
|
/**
|
|
293
|
-
* Registers
|
|
294
|
-
* Example: /
|
|
12
|
+
* Registers shell test commands.
|
|
13
|
+
* Example: /tests, /test-run <id>.
|
|
14
|
+
*
|
|
15
|
+
* To run tests:
|
|
16
|
+
* - Use `/tests` to run the full test suite.
|
|
17
|
+
* - Use `/test-run <id>` to run a specific test by its ID.
|
|
18
|
+
* - Use `/test-list` to list all available tests.
|
|
19
|
+
* - Use `/test-cmd [id]` to print the command for the full suite or a specific test.
|
|
295
20
|
*/
|
|
296
|
-
export function registerTestingCommands(customCommands,
|
|
297
|
-
customCommands.
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
21
|
+
export function registerTestingCommands(customCommands, _runQuery) {
|
|
22
|
+
customCommands.tests = async () => {
|
|
23
|
+
runAllTestsCommand();
|
|
24
|
+
};
|
|
25
|
+
customCommands["test-run"] = async (...args) => {
|
|
26
|
+
const testId = (args[0] ?? "").trim();
|
|
27
|
+
if (!testId) {
|
|
28
|
+
console.log(chalk.yellow("Usage: /test-run <id>"));
|
|
29
|
+
listRegisteredTests();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
runRegisteredTestCommand(testId);
|
|
301
33
|
};
|
|
302
|
-
customCommands["test-
|
|
303
|
-
|
|
304
|
-
console.log(`\nš² [test-random] Selected query:\nā ${query}\n`);
|
|
305
|
-
await runQuery(query);
|
|
34
|
+
customCommands["test-list"] = async () => {
|
|
35
|
+
listRegisteredTests();
|
|
306
36
|
};
|
|
307
|
-
customCommands["test-
|
|
308
|
-
|
|
37
|
+
customCommands["test-cmd"] = async (...args) => {
|
|
38
|
+
const testId = (args[0] ?? "").trim();
|
|
39
|
+
printTestCommand(testId || undefined);
|
|
309
40
|
};
|
|
310
41
|
}
|
|
42
|
+
//# sourceMappingURL=testCommands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCommands.js","sourceRoot":"","sources":["../../src/testing/testCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAIhC;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAAyC,EACzC,SAGqB;IAErB,cAAc,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;QAChC,kBAAkB,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,GAAG,IAAc,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,mBAAmB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,IAAI,EAAE;QACvC,mBAAmB,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,GAAG,IAAc,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,gBAAgB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Registers dev-only shell test helpers.\n *\n * Why this file exists:\n * - dev shell commands should stay in one place instead of being spread across the shell setup\n * - test commands should stay in one place instead of being spread across shell setup\n * - the shell should only show explicit maintainer helpers when dev mode is enabled\n */\nimport chalk from \"chalk\";\nimport {\n runAllTestsCommand,\n listRegisteredTests,\n printTestCommand,\n runRegisteredTestCommand,\n} from \"../commands/TestCmd.js\";\n\ntype CommandFn = (...args: string[]) => Promise<void>;\n\n/**\n * Registers shell test commands.\n * Example: /tests, /test-run <id>.\n *\n * To run tests:\n * - Use `/tests` to run the full test suite.\n * - Use `/test-run <id>` to run a specific test by its ID.\n * - Use `/test-list` to list all available tests.\n * - Use `/test-cmd [id]` to print the command for the full suite or a specific test.\n */\nexport function registerTestingCommands(\n customCommands: Record<string, CommandFn>,\n _runQuery: (\n query: string,\n options?: { resumeTaskId?: number; continueCurrentTask?: boolean; bindAsCurrentTask?: boolean }\n ) => Promise<unknown>\n): void {\n customCommands.tests = async () => {\n runAllTestsCommand();\n };\n\n customCommands[\"test-run\"] = async (...args: string[]) => {\n const testId = (args[0] ?? \"\").trim();\n if (!testId) {\n console.log(chalk.yellow(\"Usage: /test-run <id>\"));\n listRegisteredTests();\n return;\n }\n runRegisteredTestCommand(testId);\n };\n\n customCommands[\"test-list\"] = async () => {\n listRegisteredTests();\n };\n\n customCommands[\"test-cmd\"] = async (...args: string[]) => {\n const testId = (args[0] ?? \"\").trim();\n printTestCommand(testId || undefined);\n };\n}\n"]}
|