scai 0.1.178 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -260
- package/dist/__tests__/CommitSuggesterCmd.test.js +112 -0
- package/dist/__tests__/CommitSuggesterCmd.test.js.map +1 -0
- package/dist/__tests__/EvalReportCmd.test.js +645 -0
- package/dist/__tests__/EvalReportCmd.test.js.map +1 -0
- package/dist/__tests__/ModelCmd.test.js +64 -0
- package/dist/__tests__/ModelCmd.test.js.map +1 -0
- package/dist/__tests__/agents/agentActions.test.js +345 -0
- package/dist/__tests__/agents/agentActions.test.js.map +1 -0
- package/dist/__tests__/agents/agentFeedback.test.js +118 -0
- package/dist/__tests__/agents/agentFeedback.test.js.map +1 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js +74 -0
- package/dist/__tests__/agents/agentGeneralScope.test.js.map +1 -0
- package/dist/__tests__/agents/agentLoop.test.js +1723 -0
- package/dist/__tests__/agents/agentLoop.test.js.map +1 -0
- package/dist/__tests__/agents/agentPolicyState.test.js +948 -0
- package/dist/__tests__/agents/agentPolicyState.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js +170 -0
- package/dist/__tests__/agents/agentReadEvidence.test.js.map +1 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js +129 -0
- package/dist/__tests__/agents/agentReadPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js +90 -0
- package/dist/__tests__/agents/agentResumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js +289 -0
- package/dist/__tests__/agents/agentSearchBatchPlanner.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js +166 -0
- package/dist/__tests__/agents/agentSearchOwnership.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js +139 -0
- package/dist/__tests__/agents/agentSearchRanking.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js +584 -0
- package/dist/__tests__/agents/agentSearchRouting.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js +23 -0
- package/dist/__tests__/agents/agentSearchScoring.test.js.map +1 -0
- package/dist/__tests__/agents/agentSearchShared.test.js +78 -0
- package/dist/__tests__/agents/agentSearchShared.test.js.map +1 -0
- package/dist/__tests__/agents/agentStateMachine.test.js +58 -0
- package/dist/__tests__/agents/agentStateMachine.test.js.map +1 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js +156 -0
- package/dist/__tests__/agents/agentTaskPersistence.test.js.map +1 -0
- package/dist/__tests__/agents/agentTools.test.js +69 -0
- package/dist/__tests__/agents/agentTools.test.js.map +1 -0
- package/dist/__tests__/agents/agentTransform.test.js +779 -0
- package/dist/__tests__/agents/agentTransform.test.js.map +1 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js +157 -0
- package/dist/__tests__/agents/analysisPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js +75 -0
- package/dist/__tests__/agents/answerOnlyCompletion.test.js.map +1 -0
- package/dist/__tests__/agents/decideNextAction.test.js +1662 -0
- package/dist/__tests__/agents/decideNextAction.test.js.map +1 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js +258 -0
- package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js.map +1 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js +113 -0
- package/dist/__tests__/agents/evidenceVerifierStep.test.js.map +1 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js +208 -0
- package/dist/__tests__/agents/executionPolicyResolver.test.js.map +1 -0
- package/dist/__tests__/agents/fileCheckStep.test.js +299 -0
- package/dist/__tests__/agents/fileCheckStep.test.js.map +1 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js +35 -0
- package/dist/__tests__/agents/giveUpEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/guardState.test.js +297 -0
- package/dist/__tests__/agents/guardState.test.js.map +1 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js +72 -0
- package/dist/__tests__/agents/mainAgentHeuristics.test.js.map +1 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js +60 -0
- package/dist/__tests__/agents/objectiveEvaluatorStep.test.js.map +1 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js +207 -0
- package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js.map +1 -0
- package/dist/__tests__/agents/prompting.test.js +363 -0
- package/dist/__tests__/agents/prompting.test.js.map +1 -0
- package/dist/__tests__/agents/readinessGateStep.test.js +180 -0
- package/dist/__tests__/agents/readinessGateStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextStep.test.js +56 -0
- package/dist/__tests__/agents/reasonNextStep.test.js.map +1 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js +284 -0
- package/dist/__tests__/agents/reasonNextTaskStep.test.js.map +1 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js +170 -0
- package/dist/__tests__/agents/resolveAgentTargetClassification.test.js.map +1 -0
- package/dist/__tests__/agents/resolveProgressState.test.js +526 -0
- package/dist/__tests__/agents/resolveProgressState.test.js.map +1 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js +50 -0
- package/dist/__tests__/agents/resumeCheckpoint.test.js.map +1 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js +134 -0
- package/dist/__tests__/agents/routingDecisionStep.test.js.map +1 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js +118 -0
- package/dist/__tests__/agents/scopeClassificationStep.test.js.map +1 -0
- package/dist/__tests__/agents/searchContext.test.js +97 -0
- package/dist/__tests__/agents/searchContext.test.js.map +1 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js +73 -0
- package/dist/__tests__/agents/selectRelevantSourcesStep.test.js.map +1 -0
- package/dist/__tests__/agents/structuredOutput.test.js +45 -0
- package/dist/__tests__/agents/structuredOutput.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js +59 -0
- package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js.map +1 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js +92 -0
- package/dist/__tests__/agents/transformPlanGenStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandIntentStep.test.js +237 -0
- package/dist/__tests__/agents/understandIntentStep.test.js.map +1 -0
- package/dist/__tests__/agents/understandResumeContext.test.js +65 -0
- package/dist/__tests__/agents/understandResumeContext.test.js.map +1 -0
- package/dist/__tests__/agents/understandScope.test.js +227 -0
- package/dist/__tests__/agents/understandScope.test.js.map +1 -0
- package/dist/__tests__/agents/validateChangesStep.test.js +52 -0
- package/dist/__tests__/agents/validateChangesStep.test.js.map +1 -0
- package/dist/__tests__/askCommandTaskBinding.test.js +176 -0
- package/dist/__tests__/askCommandTaskBinding.test.js.map +1 -0
- package/dist/__tests__/commandVisibility.test.js +25 -0
- package/dist/__tests__/commandVisibility.test.js.map +1 -0
- package/dist/__tests__/config.devOutput.test.js +82 -0
- package/dist/__tests__/config.devOutput.test.js.map +1 -0
- package/dist/__tests__/currentContext.test.js +43 -0
- package/dist/__tests__/currentContext.test.js.map +1 -0
- package/dist/__tests__/daemonWorker.test.js +51 -0
- package/dist/__tests__/daemonWorker.test.js.map +1 -0
- package/dist/__tests__/dialogState.test.js +113 -0
- package/dist/__tests__/dialogState.test.js.map +1 -0
- package/dist/__tests__/evalCommands.test.js +506 -0
- package/dist/__tests__/evalCommands.test.js.map +1 -0
- package/dist/__tests__/evalCommandsSummary.test.js +68 -0
- package/dist/__tests__/evalCommandsSummary.test.js.map +1 -0
- package/dist/__tests__/example.test.js +1 -0
- package/dist/__tests__/example.test.js.map +1 -0
- package/dist/__tests__/factory.commitCommand.test.js +45 -0
- package/dist/__tests__/factory.commitCommand.test.js.map +1 -0
- package/dist/__tests__/factory.devOutputCommand.test.js +122 -0
- package/dist/__tests__/factory.devOutputCommand.test.js.map +1 -0
- package/dist/__tests__/factory.evalCommands.test.js +38 -0
- package/dist/__tests__/factory.evalCommands.test.js.map +1 -0
- package/dist/__tests__/factory.planCommand.test.js +35 -0
- package/dist/__tests__/factory.planCommand.test.js.map +1 -0
- package/dist/__tests__/factory.setupCommand.test.js +34 -0
- package/dist/__tests__/factory.setupCommand.test.js.map +1 -0
- package/dist/__tests__/factory.statusCommand.test.js +54 -0
- package/dist/__tests__/factory.statusCommand.test.js.map +1 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js +35 -0
- package/dist/__tests__/fileRules/queryTokenRules.test.js.map +1 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js +57 -0
- package/dist/__tests__/fileRules/searchPathClassification.test.js.map +1 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js +344 -0
- package/dist/__tests__/generate.ollamaRecovery.test.js.map +1 -0
- package/dist/__tests__/index.modelStartup.test.js +24 -0
- package/dist/__tests__/index.modelStartup.test.js.map +1 -0
- package/dist/__tests__/indexCmd.test.js +85 -0
- package/dist/__tests__/indexCmd.test.js.map +1 -0
- package/dist/__tests__/indexSlashCommand.test.js +50 -0
- package/dist/__tests__/indexSlashCommand.test.js.map +1 -0
- package/dist/__tests__/ollamaService.test.js +103 -0
- package/dist/__tests__/ollamaService.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js +68 -0
- package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js +68 -0
- package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js +284 -0
- package/dist/__tests__/pipeline/modules/fileSearchModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js +1139 -0
- package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js +146 -0
- package/dist/__tests__/pipeline/modules/readFileModule.test.js.map +1 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js +192 -0
- package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js.map +1 -0
- package/dist/__tests__/repoIdentity.test.js +31 -0
- package/dist/__tests__/repoIdentity.test.js.map +1 -0
- package/dist/__tests__/resumeContext.test.js +87 -0
- package/dist/__tests__/resumeContext.test.js.map +1 -0
- package/dist/__tests__/resumeState.test.js +239 -0
- package/dist/__tests__/resumeState.test.js.map +1 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js +836 -0
- package/dist/__tests__/search/SearchOrchestrator.test.js.map +1 -0
- package/dist/__tests__/shellDialogUi.test.js +52 -0
- package/dist/__tests__/shellDialogUi.test.js.map +1 -0
- package/dist/__tests__/shellSession.test.js +102 -0
- package/dist/__tests__/shellSession.test.js.map +1 -0
- package/dist/__tests__/statusOwner.test.js +215 -0
- package/dist/__tests__/statusOwner.test.js.map +1 -0
- package/dist/__tests__/testing/contextEval.test.js +244 -0
- package/dist/__tests__/testing/contextEval.test.js.map +1 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js +124 -0
- package/dist/__tests__/testing/harnessArtifacts.test.js.map +1 -0
- package/dist/__tests__/testing/llmTraceSession.test.js +67 -0
- package/dist/__tests__/testing/llmTraceSession.test.js.map +1 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js +35 -0
- package/dist/__tests__/testing/registerDevCliCommands.test.js.map +1 -0
- package/dist/__tests__/testing/runDiagnosis.test.js +159 -0
- package/dist/__tests__/testing/runDiagnosis.test.js.map +1 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js +66 -0
- package/dist/__tests__/testing/runtimeLogReader.test.js.map +1 -0
- package/dist/__tests__/testing/testCommands.test.js +53 -0
- package/dist/__tests__/testing/testCommands.test.js.map +1 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js +38 -0
- package/dist/__tests__/utils/compileSearchQuery.test.js.map +1 -0
- package/dist/__tests__/utils/consolePresentation.test.js +105 -0
- package/dist/__tests__/utils/consolePresentation.test.js.map +1 -0
- package/dist/__tests__/utils/extractFileReferences.test.js +41 -0
- package/dist/__tests__/utils/extractFileReferences.test.js.map +1 -0
- package/dist/__tests__/utils/log.test.js +34 -0
- package/dist/__tests__/utils/log.test.js.map +1 -0
- package/dist/__tests__/utils/runtimeLogger.test.js +200 -0
- package/dist/__tests__/utils/runtimeLogger.test.js.map +1 -0
- package/dist/__tests__/utils/spinner.test.js +31 -0
- package/dist/__tests__/utils/spinner.test.js.map +1 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js +41 -0
- package/dist/__tests__/utils/verifyFocusPreference.test.js.map +1 -0
- package/dist/agent/actions/index.js +301 -0
- package/dist/agent/actions/index.js.map +1 -0
- package/dist/agent/actions/normalize.js +360 -0
- package/dist/agent/actions/normalize.js.map +1 -0
- package/dist/agent/actions/schemas.js +129 -0
- package/dist/agent/actions/schemas.js.map +1 -0
- package/dist/agent/evidence/index.js +320 -0
- package/dist/agent/evidence/index.js.map +1 -0
- package/dist/agent/feedback/index.js +187 -0
- package/dist/agent/feedback/index.js.map +1 -0
- package/dist/agent/finalization/index.js +35 -0
- package/dist/agent/finalization/index.js.map +1 -0
- package/dist/agent/index.js +126 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/logging/index.js +350 -0
- package/dist/agent/logging/index.js.map +1 -0
- package/dist/agent/persistence/boot.js +58 -0
- package/dist/agent/persistence/boot.js.map +1 -0
- package/dist/agent/persistence/currentTask.js +36 -0
- package/dist/agent/persistence/currentTask.js.map +1 -0
- package/dist/agent/persistence/hydrate.js +42 -0
- package/dist/agent/persistence/hydrate.js.map +1 -0
- package/dist/agent/persistence/index.js +15 -0
- package/dist/agent/persistence/index.js.map +1 -0
- package/dist/agent/persistence/snapshots.js +97 -0
- package/dist/agent/persistence/snapshots.js.map +1 -0
- package/dist/agent/persistence/steps.js +95 -0
- package/dist/agent/persistence/steps.js.map +1 -0
- package/dist/agent/persistence/tasks.js +195 -0
- package/dist/agent/persistence/tasks.js.map +1 -0
- package/dist/agent/persistence/turns.js +92 -0
- package/dist/agent/persistence/turns.js.map +1 -0
- package/dist/agent/policy/ambiguityResolution.js +226 -0
- package/dist/agent/policy/ambiguityResolution.js.map +1 -0
- package/dist/agent/policy/contracts.js +2 -0
- package/dist/agent/policy/contracts.js.map +1 -0
- package/dist/agent/policy/coveragePolicy.js +309 -0
- package/dist/agent/policy/coveragePolicy.js.map +1 -0
- package/dist/agent/policy/endDecisionPolicy.js +31 -0
- package/dist/agent/policy/endDecisionPolicy.js.map +1 -0
- package/dist/agent/policy/index.js +344 -0
- package/dist/agent/policy/index.js.map +1 -0
- package/dist/agent/policy/loopReview.js +778 -0
- package/dist/agent/policy/loopReview.js.map +1 -0
- package/dist/agent/policy/readinessPolicy.js +108 -0
- package/dist/agent/policy/readinessPolicy.js.map +1 -0
- package/dist/agent/policy/resolutionPipeline.js +356 -0
- package/dist/agent/policy/resolutionPipeline.js.map +1 -0
- package/dist/agent/policy/targetClassification.js +33 -0
- package/dist/agent/policy/targetClassification.js.map +1 -0
- package/dist/agent/prompting/actionChoice.js +90 -0
- package/dist/agent/prompting/actionChoice.js.map +1 -0
- package/dist/agent/prompting/finalAnswer.js +38 -0
- package/dist/agent/prompting/finalAnswer.js.map +1 -0
- package/dist/agent/prompting/index.js +14 -0
- package/dist/agent/prompting/index.js.map +1 -0
- package/dist/agent/prompting/plan.js +59 -0
- package/dist/agent/prompting/plan.js.map +1 -0
- package/dist/agent/prompting/transform.js +175 -0
- package/dist/agent/prompting/transform.js.map +1 -0
- package/dist/agent/prompting/understand.js +70 -0
- package/dist/agent/prompting/understand.js.map +1 -0
- package/dist/agent/read/freshness.js +29 -0
- package/dist/agent/read/freshness.js.map +1 -0
- package/dist/agent/read/fullReadPrompt.js +43 -0
- package/dist/agent/read/fullReadPrompt.js.map +1 -0
- package/dist/agent/read/index.js +140 -0
- package/dist/agent/read/index.js.map +1 -0
- package/dist/agent/read/persistence.js +88 -0
- package/dist/agent/read/persistence.js.map +1 -0
- package/dist/agent/read/summarizeReadEvidence.js +733 -0
- package/dist/agent/read/summarizeReadEvidence.js.map +1 -0
- package/dist/agent/read/targetResolution.js +126 -0
- package/dist/agent/read/targetResolution.js.map +1 -0
- package/dist/agent/resume/checkpoint.js +41 -0
- package/dist/agent/resume/checkpoint.js.map +1 -0
- package/dist/agent/runtime/lifecycle.js +67 -0
- package/dist/agent/runtime/lifecycle.js.map +1 -0
- package/dist/agent/runtime/progress.js +178 -0
- package/dist/agent/runtime/progress.js.map +1 -0
- package/dist/agent/runtime/runAgentLoop.js +402 -0
- package/dist/agent/runtime/runAgentLoop.js.map +1 -0
- package/dist/agent/runtime/runAgentPlanOnly.js +127 -0
- package/dist/agent/runtime/runAgentPlanOnly.js.map +1 -0
- package/dist/agent/runtime/understand.js +336 -0
- package/dist/agent/runtime/understand.js.map +1 -0
- package/dist/agent/search/batchPlanner.js +274 -0
- package/dist/agent/search/batchPlanner.js.map +1 -0
- package/dist/agent/search/candidateRetentionPolicy.js +184 -0
- package/dist/agent/search/candidateRetentionPolicy.js.map +1 -0
- package/dist/agent/search/directory.js +51 -0
- package/dist/agent/search/directory.js.map +1 -0
- package/dist/agent/search/exactTarget.js +151 -0
- package/dist/agent/search/exactTarget.js.map +1 -0
- package/dist/agent/search/fragment.js +110 -0
- package/dist/agent/search/fragment.js.map +1 -0
- package/dist/agent/search/index.js +166 -0
- package/dist/agent/search/index.js.map +1 -0
- package/dist/agent/search/laneClassifier.js +119 -0
- package/dist/agent/search/laneClassifier.js.map +1 -0
- package/dist/agent/search/limits.js +10 -0
- package/dist/agent/search/limits.js.map +1 -0
- package/dist/agent/search/ranking.js +22 -0
- package/dist/agent/search/ranking.js.map +1 -0
- package/dist/agent/search/regex.js +83 -0
- package/dist/agent/search/regex.js.map +1 -0
- package/dist/agent/search/routePolicy.js +11 -0
- package/dist/agent/search/routePolicy.js.map +1 -0
- package/dist/agent/search/searchContext.js +128 -0
- package/dist/agent/search/searchContext.js.map +1 -0
- package/dist/agent/search/semantic.js +113 -0
- package/dist/agent/search/semantic.js.map +1 -0
- package/dist/agent/search/semanticIndexSearch.js +202 -0
- package/dist/agent/search/semanticIndexSearch.js.map +1 -0
- package/dist/agent/search/shared.js +283 -0
- package/dist/agent/search/shared.js.map +1 -0
- package/dist/agent/search/shell.js +202 -0
- package/dist/agent/search/shell.js.map +1 -0
- package/dist/agent/search/snippetEvidence.js +57 -0
- package/dist/agent/search/snippetEvidence.js.map +1 -0
- package/dist/agent/search/types.js +2 -0
- package/dist/agent/search/types.js.map +1 -0
- package/dist/agent/state/index.js +99 -0
- package/dist/agent/state/index.js.map +1 -0
- package/dist/agent/state/memory.js +56 -0
- package/dist/agent/state/memory.js.map +1 -0
- package/dist/agent/structuredOutput/index.js +28 -0
- package/dist/agent/structuredOutput/index.js.map +1 -0
- package/dist/agent/tools/index.js +199 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/transform/index.js +519 -0
- package/dist/agent/transform/index.js.map +1 -0
- package/dist/agent/transform/syntax.js +49 -0
- package/dist/agent/transform/syntax.js.map +1 -0
- package/dist/agent/types.js +20 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agents/actionRegistry.js +114 -0
- package/dist/agents/actionRegistry.js.map +1 -0
- package/dist/agents/agent.js +5 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/agentActions.js +5 -0
- package/dist/agents/agentActions.js.map +1 -0
- package/dist/agents/agentEvidence.js +5 -0
- package/dist/agents/agentEvidence.js.map +1 -0
- package/dist/agents/agentFeedback.js +5 -0
- package/dist/agents/agentFeedback.js.map +1 -0
- package/dist/agents/agentLogging.js +5 -0
- package/dist/agents/agentLogging.js.map +1 -0
- package/dist/agents/agentLoop.js +5 -0
- package/dist/agents/agentLoop.js.map +1 -0
- package/dist/agents/agentMemory.js +5 -0
- package/dist/agents/agentMemory.js.map +1 -0
- package/dist/agents/agentPlanMode.js +5 -0
- package/dist/agents/agentPlanMode.js.map +1 -0
- package/dist/agents/agentPolicyState.js +5 -0
- package/dist/agents/agentPolicyState.js.map +1 -0
- package/dist/agents/agentProgress.js +93 -0
- package/dist/agents/agentProgress.js.map +1 -0
- package/dist/agents/agentSchemas.js +5 -0
- package/dist/agents/agentSchemas.js.map +1 -0
- package/dist/agents/agentSearchScoring.js +5 -0
- package/dist/agents/agentSearchScoring.js.map +1 -0
- package/dist/agents/agentStateMachine.js +5 -0
- package/dist/agents/agentStateMachine.js.map +1 -0
- package/dist/agents/agentTools.js +5 -0
- package/dist/agents/agentTools.js.map +1 -0
- package/dist/agents/agentTypes.js +5 -0
- package/dist/agents/agentTypes.js.map +1 -0
- package/dist/agents/agentUnderstand.js +5 -0
- package/dist/agents/agentUnderstand.js.map +1 -0
- package/dist/agents/analysisPlanGenStep.js +194 -17
- package/dist/agents/analysisPlanGenStep.js.map +1 -0
- package/dist/agents/answerOnlyCompletion.js +32 -0
- package/dist/agents/answerOnlyCompletion.js.map +1 -0
- package/dist/agents/collaboratorStep.js +1 -0
- package/dist/agents/collaboratorStep.js.map +1 -0
- package/dist/agents/decideNextAction.js +444 -0
- package/dist/agents/decideNextAction.js.map +1 -0
- package/dist/agents/deriveFocusFromSearchStep.js +83 -0
- package/dist/agents/deriveFocusFromSearchStep.js.map +1 -0
- package/dist/agents/evidenceVerifierStep.js +104 -13
- package/dist/agents/evidenceVerifierStep.js.map +1 -0
- package/dist/agents/fileCheckStep.js +381 -12
- package/dist/agents/fileCheckStep.js.map +1 -0
- package/dist/agents/giveUpEvaluatorStep.js +63 -0
- package/dist/agents/giveUpEvaluatorStep.js.map +1 -0
- package/dist/agents/guardPolicy.js +20 -0
- package/dist/agents/guardPolicy.js.map +1 -0
- package/dist/agents/guards/executionPolicyResolver.js +165 -0
- package/dist/agents/guards/executionPolicyResolver.js.map +1 -0
- package/dist/agents/guards/guardState.js +195 -0
- package/dist/agents/guards/guardState.js.map +1 -0
- package/dist/agents/guards/resolveProgressState.js +403 -0
- package/dist/agents/guards/resolveProgressState.js.map +1 -0
- package/dist/agents/infoPlanGenStep.js +66 -8
- package/dist/agents/infoPlanGenStep.js.map +1 -0
- package/dist/agents/integrateFeedbackStep.js +1 -0
- package/dist/agents/integrateFeedbackStep.js.map +1 -0
- package/dist/agents/iterationFileSelector.js +8 -7
- package/dist/agents/iterationFileSelector.js.map +1 -0
- package/dist/agents/mainAgentActivityLog.js +85 -0
- package/dist/agents/mainAgentActivityLog.js.map +1 -0
- package/dist/agents/mainAgentHeuristics.js +173 -0
- package/dist/agents/mainAgentHeuristics.js.map +1 -0
- package/dist/agents/mainAgentVerify.js +159 -0
- package/dist/agents/mainAgentVerify.js.map +1 -0
- package/dist/agents/objectiveEvaluatorStep.js +103 -0
- package/dist/agents/objectiveEvaluatorStep.js.map +1 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js +108 -0
- package/dist/agents/outerLoopRecoveryEvaluator.js.map +1 -0
- package/dist/agents/readinessGateStep.js +95 -9
- package/dist/agents/readinessGateStep.js.map +1 -0
- package/dist/agents/reasonNextStep.js +9 -8
- package/dist/agents/reasonNextStep.js.map +1 -0
- package/dist/agents/reasonNextTaskStep.js +267 -144
- package/dist/agents/reasonNextTaskStep.js.map +1 -0
- package/dist/agents/researchPlanGenStep.js +61 -25
- package/dist/agents/researchPlanGenStep.js.map +1 -0
- package/dist/agents/resolveAgentTargetClassification.js +5 -0
- package/dist/agents/resolveAgentTargetClassification.js.map +1 -0
- package/dist/agents/resolveExecutionModeStep.js +1 -0
- package/dist/agents/resolveExecutionModeStep.js.map +1 -0
- package/dist/agents/resolveExplicitTargetsStep.js +74 -0
- package/dist/agents/resolveExplicitTargetsStep.js.map +1 -0
- package/dist/agents/routingDecisionStep.js +58 -11
- package/dist/agents/routingDecisionStep.js.map +1 -0
- package/dist/agents/scopeClassificationStep.js +66 -3
- package/dist/agents/scopeClassificationStep.js.map +1 -0
- package/dist/agents/selectRelevantSourcesStep.js +13 -5
- package/dist/agents/selectRelevantSourcesStep.js.map +1 -0
- package/dist/agents/structuralPreloadStep.js +3 -4
- package/dist/agents/structuralPreloadStep.js.map +1 -0
- package/dist/agents/transformPlanGenStep.js +105 -18
- package/dist/agents/transformPlanGenStep.js.map +1 -0
- package/dist/agents/understandIntentStep.js +237 -17
- package/dist/agents/understandIntentStep.js.map +1 -0
- package/dist/agents/validateChangesStep.js +16 -2
- package/dist/agents/validateChangesStep.js.map +1 -0
- package/dist/agents/writeFileStep.js +1 -0
- package/dist/agents/writeFileStep.js.map +1 -0
- package/dist/commands/AskCmd.js +139 -44
- package/dist/commands/AskCmd.js.map +1 -0
- package/dist/commands/BackupCmd.js +1 -0
- package/dist/commands/BackupCmd.js.map +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js +1 -0
- package/dist/commands/ChangeLogUpdateCmd.js.map +1 -0
- package/dist/commands/CommitSuggesterCmd.js +55 -13
- package/dist/commands/CommitSuggesterCmd.js.map +1 -0
- package/dist/commands/DaemonCmd.js +52 -14
- package/dist/commands/DaemonCmd.js.map +1 -0
- package/dist/commands/DeleteIndex.js +1 -0
- package/dist/commands/DeleteIndex.js.map +1 -0
- package/dist/commands/EvalReportCmd.js +374 -0
- package/dist/commands/EvalReportCmd.js.map +1 -0
- package/dist/commands/FindCmd.js +1 -0
- package/dist/commands/FindCmd.js.map +1 -0
- package/dist/commands/GitCmd.js +1 -0
- package/dist/commands/GitCmd.js.map +1 -0
- package/dist/commands/IndexCmd.js +11 -79
- package/dist/commands/IndexCmd.js.map +1 -0
- package/dist/commands/InspectCmd.js +1 -0
- package/dist/commands/InspectCmd.js.map +1 -0
- package/dist/commands/ModelCmd.js +24 -0
- package/dist/commands/ModelCmd.js.map +1 -0
- package/dist/commands/ReadlineSingleton.js +1 -0
- package/dist/commands/ReadlineSingleton.js.map +1 -0
- package/dist/commands/ResetDbCmd.js +18 -1
- package/dist/commands/ResetDbCmd.js.map +1 -0
- package/dist/commands/ReviewCmd.js +1 -0
- package/dist/commands/ReviewCmd.js.map +1 -0
- package/dist/commands/StatusCmd.js +22 -0
- package/dist/commands/StatusCmd.js.map +1 -0
- package/dist/commands/StopDaemonCmd.js +1 -0
- package/dist/commands/StopDaemonCmd.js.map +1 -0
- package/dist/commands/SummaryCmd.js +1 -0
- package/dist/commands/SummaryCmd.js.map +1 -0
- package/dist/commands/SwitchCmd.js +9 -15
- package/dist/commands/SwitchCmd.js.map +1 -0
- package/dist/commands/TasksCmd.js +142 -57
- package/dist/commands/TasksCmd.js.map +1 -0
- package/dist/commands/TestCmd.js +66 -0
- package/dist/commands/TestCmd.js.map +1 -0
- package/dist/commands/WorkflowCmd.js +1 -0
- package/dist/commands/WorkflowCmd.js.map +1 -0
- package/dist/commands/commandVisibility.js +27 -0
- package/dist/commands/commandVisibility.js.map +1 -0
- package/dist/commands/evalCommands.js +1337 -0
- package/dist/commands/evalCommands.js.map +1 -0
- package/dist/commands/factory.js +206 -38
- package/dist/commands/factory.js.map +1 -0
- package/dist/config.js +62 -11
- package/dist/config.js.map +1 -0
- package/dist/constants.js +21 -3
- package/dist/constants.js.map +1 -0
- package/dist/context.js +33 -32
- package/dist/context.js.map +1 -0
- package/dist/daemon/daemonQueues.js +1 -20
- package/dist/daemon/daemonQueues.js.map +1 -0
- package/dist/daemon/daemonWorker.js +26 -37
- package/dist/daemon/daemonWorker.js.map +1 -0
- package/dist/daemon/generateSummaries.js +1 -0
- package/dist/daemon/generateSummaries.js.map +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js +1 -0
- package/dist/daemon/runFolderCapsuleBatch.js.map +1 -0
- package/dist/daemon/runIndexingBatch.js +1 -0
- package/dist/daemon/runIndexingBatch.js.map +1 -0
- package/dist/daemon/runKgBatch.js +9 -1
- package/dist/daemon/runKgBatch.js.map +1 -0
- package/dist/db/backup.js +1 -0
- package/dist/db/backup.js.map +1 -0
- package/dist/db/client.js +18 -3
- package/dist/db/client.js.map +1 -0
- package/dist/db/fileIndex.js +110 -152
- package/dist/db/fileIndex.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJava.js +1 -0
- package/dist/db/functionExtractors/extractFromJava.js.map +1 -0
- package/dist/db/functionExtractors/extractFromJs.js +1 -0
- package/dist/db/functionExtractors/extractFromJs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromTs.js +1 -0
- package/dist/db/functionExtractors/extractFromTs.js.map +1 -0
- package/dist/db/functionExtractors/extractFromXML.js +1 -0
- package/dist/db/functionExtractors/extractFromXML.js.map +1 -0
- package/dist/db/functionExtractors/index.js +1 -0
- package/dist/db/functionExtractors/index.js.map +1 -0
- package/dist/db/functionIndex.js +9 -0
- package/dist/db/functionIndex.js.map +1 -0
- package/dist/db/schema.js +314 -99
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sqlTemplates.js +1 -0
- package/dist/db/sqlTemplates.js.map +1 -0
- package/dist/fileRules/builtins.js +1 -0
- package/dist/fileRules/builtins.js.map +1 -0
- package/dist/fileRules/classifyFile.js +1 -0
- package/dist/fileRules/classifyFile.js.map +1 -0
- package/dist/fileRules/codeAllowedExtensions.js +1 -0
- package/dist/fileRules/codeAllowedExtensions.js.map +1 -0
- package/dist/fileRules/detectFileType.js +1 -0
- package/dist/fileRules/detectFileType.js.map +1 -0
- package/dist/fileRules/fileClassifier.js +1 -0
- package/dist/fileRules/fileClassifier.js.map +1 -0
- package/dist/fileRules/fileExceptions.js +1 -0
- package/dist/fileRules/fileExceptions.js.map +1 -0
- package/dist/fileRules/ignoredExtensions.js +1 -0
- package/dist/fileRules/ignoredExtensions.js.map +1 -0
- package/dist/fileRules/ignoredPaths.js +48 -5
- package/dist/fileRules/ignoredPaths.js.map +1 -0
- package/dist/fileRules/queryTokenRules.js +176 -0
- package/dist/fileRules/queryTokenRules.js.map +1 -0
- package/dist/fileRules/searchPathClassification.js +58 -0
- package/dist/fileRules/searchPathClassification.js.map +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js +1 -0
- package/dist/fileRules/shouldIgnoreFiles.js.map +1 -0
- package/dist/fileRules/stopWords.js +9 -0
- package/dist/fileRules/stopWords.js.map +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js +1 -0
- package/dist/fileRules/wellKnownRepoFiles.js.map +1 -0
- package/dist/git/commitSummary.js +227 -0
- package/dist/git/commitSummary.js.map +1 -0
- package/dist/github/api.js +1 -0
- package/dist/github/api.js.map +1 -0
- package/dist/github/auth.js +1 -0
- package/dist/github/auth.js.map +1 -0
- package/dist/github/github.js +1 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/githubAuthCheck.js +1 -0
- package/dist/github/githubAuthCheck.js.map +1 -0
- package/dist/github/postComments.js +1 -0
- package/dist/github/postComments.js.map +1 -0
- package/dist/github/repo.js +15 -24
- package/dist/github/repo.js.map +1 -0
- package/dist/github/token.js +1 -0
- package/dist/github/token.js.map +1 -0
- package/dist/github/types.js +1 -0
- package/dist/github/types.js.map +1 -0
- package/dist/index.js +318 -37
- package/dist/index.js.map +1 -0
- package/dist/lib/generate.js +264 -20
- package/dist/lib/generate.js.map +1 -0
- package/dist/lib/generateFolderCapsules.js +1 -0
- package/dist/lib/generateFolderCapsules.js.map +1 -0
- package/dist/lib/ollamaModelPolicy.js +59 -0
- package/dist/lib/ollamaModelPolicy.js.map +1 -0
- package/dist/lib/spinner.js +29 -9
- package/dist/lib/spinner.js.map +1 -0
- package/dist/modelSetup.js +25 -78
- package/dist/modelSetup.js.map +1 -0
- package/dist/pipeline/modules/changeLogModule.js +10 -1
- package/dist/pipeline/modules/changeLogModule.js.map +1 -0
- package/dist/pipeline/modules/cleanupModule.js +1 -0
- package/dist/pipeline/modules/cleanupModule.js.map +1 -0
- package/dist/pipeline/modules/codeTransformModule.js +10 -16
- package/dist/pipeline/modules/codeTransformModule.js.map +1 -0
- package/dist/pipeline/modules/commentModule.js +12 -0
- package/dist/pipeline/modules/commentModule.js.map +1 -0
- package/dist/pipeline/modules/commitSuggesterModule.js +82 -12
- package/dist/pipeline/modules/commitSuggesterModule.js.map +1 -0
- package/dist/pipeline/modules/contextReviewModule.js +12 -1
- package/dist/pipeline/modules/contextReviewModule.js.map +1 -0
- package/dist/pipeline/modules/dialogAnswerModule.js +58 -0
- package/dist/pipeline/modules/dialogAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/fileSearchModule.js +5 -143
- package/dist/pipeline/modules/fileSearchModule.js.map +1 -0
- package/dist/pipeline/modules/finalAnswerModule.js +1176 -151
- package/dist/pipeline/modules/finalAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/kgModule.js +18 -1
- package/dist/pipeline/modules/kgModule.js.map +1 -0
- package/dist/pipeline/modules/planAnswerModule.js +99 -0
- package/dist/pipeline/modules/planAnswerModule.js.map +1 -0
- package/dist/pipeline/modules/readFileModule.js +300 -0
- package/dist/pipeline/modules/readFileModule.js.map +1 -0
- package/dist/pipeline/modules/reviewModule.js +10 -1
- package/dist/pipeline/modules/reviewModule.js.map +1 -0
- package/dist/pipeline/modules/searchDbModule.js +159 -0
- package/dist/pipeline/modules/searchDbModule.js.map +1 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js +62 -0
- package/dist/pipeline/modules/searchListDirectoryModule.js.map +1 -0
- package/dist/pipeline/modules/searchModuleShared.js +71 -0
- package/dist/pipeline/modules/searchModuleShared.js.map +1 -0
- package/dist/pipeline/modules/searchRegexModule.js +59 -0
- package/dist/pipeline/modules/searchRegexModule.js.map +1 -0
- package/dist/pipeline/modules/semanticAnalysisModule.js +185 -28
- package/dist/pipeline/modules/semanticAnalysisModule.js.map +1 -0
- package/dist/pipeline/modules/summaryModule.js +11 -1
- package/dist/pipeline/modules/summaryModule.js.map +1 -0
- package/dist/pipeline/registry/moduleRegistry.js +9 -0
- package/dist/pipeline/registry/moduleRegistry.js.map +1 -0
- package/dist/pipeline/runModulePipeline.js +1 -0
- package/dist/pipeline/runModulePipeline.js.map +1 -0
- package/dist/scripts/dbScriptSupport.js +172 -0
- package/dist/scripts/dbScriptSupport.js.map +1 -0
- package/dist/scripts/dbcheck.js +173 -267
- package/dist/scripts/dbcheck.js.map +1 -0
- package/dist/scripts/dboverview.js +161 -0
- package/dist/scripts/dboverview.js.map +1 -0
- package/dist/scripts/migrateDb.js +1 -0
- package/dist/scripts/migrateDb.js.map +1 -0
- package/dist/search/SearchOrchestrator.js +928 -0
- package/dist/search/SearchOrchestrator.js.map +1 -0
- package/dist/search/sharedRankingPolicy.js +283 -0
- package/dist/search/sharedRankingPolicy.js.map +1 -0
- package/dist/setup/reindexOwner.js +97 -0
- package/dist/setup/reindexOwner.js.map +1 -0
- package/dist/setup/setupOwner.js +100 -0
- package/dist/setup/setupOwner.js.map +1 -0
- package/dist/shell/dialogUi.js +81 -0
- package/dist/shell/dialogUi.js.map +1 -0
- package/dist/shellSession.js +126 -0
- package/dist/shellSession.js.map +1 -0
- package/dist/status/statusOwner.js +239 -0
- package/dist/status/statusOwner.js.map +1 -0
- package/dist/testing/contextEval.js +514 -0
- package/dist/testing/contextEval.js.map +1 -0
- package/dist/testing/fixtures/transform/small-file.input.js +5 -0
- package/dist/testing/fixtures/transform/small-file.input.js.map +1 -0
- package/dist/testing/harnessArtifacts.js +112 -0
- package/dist/testing/harnessArtifacts.js.map +1 -0
- package/dist/testing/llmTraceSession.js +67 -0
- package/dist/testing/llmTraceSession.js.map +1 -0
- package/dist/testing/registerDevCliCommands.js +43 -0
- package/dist/testing/registerDevCliCommands.js.map +1 -0
- package/dist/testing/runDiagnosis.js +248 -0
- package/dist/testing/runDiagnosis.js.map +1 -0
- package/dist/testing/runtimeLogReader.js +144 -0
- package/dist/testing/runtimeLogReader.js.map +1 -0
- package/dist/testing/testCommands.js +35 -303
- package/dist/testing/testCommands.js.map +1 -0
- package/dist/testing/testRegistry.js +233 -0
- package/dist/testing/testRegistry.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/buildContextualPrompt.js +26 -75
- package/dist/utils/buildContextualPrompt.js.map +1 -0
- package/dist/utils/changeLogPrompt.js +1 -0
- package/dist/utils/changeLogPrompt.js.map +1 -0
- package/dist/utils/checkModel.js +17 -92
- package/dist/utils/checkModel.js.map +1 -0
- package/dist/utils/commentMap.js +1 -0
- package/dist/utils/commentMap.js.map +1 -0
- package/dist/utils/compileSearchQuery.js +23 -9
- package/dist/utils/compileSearchQuery.js.map +1 -0
- package/dist/utils/consolePresentation.js +208 -0
- package/dist/utils/consolePresentation.js.map +1 -0
- package/dist/utils/contentUtils.js +17 -2
- package/dist/utils/contentUtils.js.map +1 -0
- package/dist/utils/debugContext.js +1 -0
- package/dist/utils/debugContext.js.map +1 -0
- package/dist/utils/dialogState.js +201 -0
- package/dist/utils/dialogState.js.map +1 -0
- package/dist/utils/editor.js +1 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/executionEvidence.js +50 -0
- package/dist/utils/executionEvidence.js.map +1 -0
- package/dist/utils/extractFileReferences.js +140 -6
- package/dist/utils/extractFileReferences.js.map +1 -0
- package/dist/utils/fileEvidenceCache.js +50 -0
- package/dist/utils/fileEvidenceCache.js.map +1 -0
- package/dist/utils/fileTree.js +1 -0
- package/dist/utils/fileTree.js.map +1 -0
- package/dist/utils/loadRelevantFolderCapsules.js +35 -5
- package/dist/utils/loadRelevantFolderCapsules.js.map +1 -0
- package/dist/utils/log.js +10 -1
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/normalizeData.js +1 -0
- package/dist/utils/normalizeData.js.map +1 -0
- package/dist/utils/ollamaModelStatus.js +28 -0
- package/dist/utils/ollamaModelStatus.js.map +1 -0
- package/dist/utils/ollamaService.js +294 -0
- package/dist/utils/ollamaService.js.map +1 -0
- package/dist/utils/outputFormatter.js +1 -0
- package/dist/utils/outputFormatter.js.map +1 -0
- package/dist/utils/parseTaggedContent.js +1 -0
- package/dist/utils/parseTaggedContent.js.map +1 -0
- package/dist/utils/planActions.js +27 -46
- package/dist/utils/planActions.js.map +1 -0
- package/dist/utils/promptBuilderHelper.js +1 -0
- package/dist/utils/promptBuilderHelper.js.map +1 -0
- package/dist/utils/promptLogHelper.js +29 -13
- package/dist/utils/promptLogHelper.js.map +1 -0
- package/dist/utils/queryAnchors.js +71 -0
- package/dist/utils/queryAnchors.js.map +1 -0
- package/dist/utils/repoIdentity.js +82 -0
- package/dist/utils/repoIdentity.js.map +1 -0
- package/dist/utils/repoKey.js +1 -0
- package/dist/utils/repoKey.js.map +1 -0
- package/dist/utils/resolveTargetsToFiles.js +1 -0
- package/dist/utils/resolveTargetsToFiles.js.map +1 -0
- package/dist/utils/resumeContext.js +219 -0
- package/dist/utils/resumeContext.js.map +1 -0
- package/dist/utils/resumeState.js +310 -0
- package/dist/utils/resumeState.js.map +1 -0
- package/dist/utils/rollingPlan.js +118 -0
- package/dist/utils/rollingPlan.js.map +1 -0
- package/dist/utils/runQueryWithDaemonControl.js +11 -3
- package/dist/utils/runQueryWithDaemonControl.js.map +1 -0
- package/dist/utils/runtimeLogger.js +252 -0
- package/dist/utils/runtimeLogger.js.map +1 -0
- package/dist/utils/sanitizeQuery.js +1 -0
- package/dist/utils/sanitizeQuery.js.map +1 -0
- package/dist/utils/sharedUtils.js +1 -0
- package/dist/utils/sharedUtils.js.map +1 -0
- package/dist/utils/sleep.js +1 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/splitCodeIntoChunk.js +1 -0
- package/dist/utils/splitCodeIntoChunk.js.map +1 -0
- package/dist/utils/time.js +66 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/verifyFocusPreference.js +107 -0
- package/dist/utils/verifyFocusPreference.js.map +1 -0
- package/dist/utils/vscode.js +1 -0
- package/dist/utils/vscode.js.map +1 -0
- package/dist/workflow/workflowResolver.js +1 -0
- package/dist/workflow/workflowResolver.js.map +1 -0
- package/dist/workflow/workflowRunner.js +1 -0
- package/dist/workflow/workflowRunner.js.map +1 -0
- package/package.json +3 -3
- package/dist/agents/MainAgent.js +0 -1886
- package/dist/agents/contextReviewStep.js +0 -101
- package/dist/agents/finalPlanGenStep.js +0 -107
- package/dist/agents/structuralAnalysisStep.js +0 -46
- package/dist/agents/validationAnalysisStep.js +0 -87
- package/dist/pipeline/modules/chunkManagerModule.js +0 -24
- package/dist/pipeline/modules/cleanGeneratedTestsModule.js +0 -33
- package/dist/pipeline/modules/fileReaderModule.js +0 -72
- package/dist/pipeline/modules/gatherInfoModule.js +0 -181
- package/dist/pipeline/modules/generateTestsModule.js +0 -68
- package/dist/pipeline/modules/preserveCodeModule.js +0 -195
- package/dist/pipeline/modules/refactorModule.js +0 -40
- package/dist/pipeline/modules/repairTestsModule.js +0 -48
- package/dist/pipeline/modules/runTestsModule.js +0 -37
package/README.md
CHANGED
|
@@ -1,378 +1,289 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SCAI
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
3
|
+
> A local-first AI CLI for understanding code in your repo.
|
|
4
|
+
> Private by default. No token costs. No cloud.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
🇪🇺 Built in Denmark / EU
|
|
6
|
+
**SCAI** helps you ask questions about a codebase, trace behavior across files, and make small focused improvements without sending your code to external AI services.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
- **100% local**
|
|
9
|
+
- **No token costs**
|
|
10
|
+
- **No cloud**
|
|
11
|
+
- **No telemetry**
|
|
12
|
+
- **Your code stays on your machine**
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
Built in Denmark and the EU with ❤️
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
## Feedback And Support
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
Reach out with feedback or questions:
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
- Threads: [@scai.dk](https://threads.net/@scai.dk)
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
* **No internet access for agents**
|
|
21
|
-
* **No prompt injection from web content**
|
|
22
|
-
* No external AI APIs
|
|
23
|
-
* No telemetry or tracking
|
|
24
|
-
* No API keys
|
|
22
|
+
## What SCAI Is Good At
|
|
25
23
|
|
|
26
|
-
|
|
24
|
+
SCAI is strongest when you want help understanding an existing repository.
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
> SCAI uses local LLMs. Output quality depends on your hardware and selected model. Cloud-hosted systems may perform better on general reasoning tasks, but SCAI prioritizes privacy, predictability, and control.
|
|
26
|
+
It is good at:
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
- Explaining what a file, function, or module does
|
|
29
|
+
- Finding where logic lives across the repo
|
|
30
|
+
- Tracing auth, config, database, or API flow
|
|
31
|
+
- Summarizing a subsystem before you edit it
|
|
32
|
+
- Reviewing a small local change idea before you do it
|
|
33
|
+
- Writing comments or small docs updates
|
|
34
|
+
- Refactoring existing code in a small or medium-sized area
|
|
35
|
+
- Helping with small light code changes in a limited area
|
|
36
|
+
- Writing commit messages from staged changes
|
|
32
37
|
|
|
33
|
-
##
|
|
34
|
-
|
|
35
|
-
SCAI is currently in **alpha**.
|
|
38
|
+
## Getting Started
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
Install the CLI:
|
|
38
41
|
|
|
39
42
|
```bash
|
|
40
|
-
|
|
41
|
-
scai index start
|
|
43
|
+
npm install -g scai
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
---
|
|
46
|
+
Move into the repository you want to work on:
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
SCAI agents operate **entirely offline**.
|
|
48
|
+
```bash
|
|
49
|
+
cd /path/to/repo
|
|
50
|
+
```
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
Set up the repo and local model runtime:
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* Execute remote prompts
|
|
54
|
+
```bash
|
|
55
|
+
scai setup
|
|
56
|
+
```
|
|
60
57
|
|
|
61
|
-
|
|
58
|
+
This will:
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
- Register the current repository
|
|
61
|
+
- Check that Ollama is available
|
|
62
|
+
- Help you pick or install a local model
|
|
63
|
+
- Start local indexing
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
For most users, this is enough. Start with `scai setup` and only use the manual model commands below if you want to pick a specific model yourself. Run:
|
|
69
66
|
|
|
70
|
-
|
|
67
|
+
```bash
|
|
68
|
+
scai status
|
|
69
|
+
```
|
|
70
|
+
...to check that setup worked.
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
For best results on a 64 GB machine, use:
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
- `qwen3-coder:30b`
|
|
75
|
+
- `gemma4:26b-mlx`
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
* Symbol and dependency indexing
|
|
78
|
-
* Static and heuristic analysis
|
|
79
|
-
* Cross-file context tracking
|
|
77
|
+
For smaller machines, use:
|
|
80
78
|
|
|
81
|
-
|
|
79
|
+
- `gemma4:e4b-mlx`
|
|
82
80
|
|
|
83
|
-
|
|
81
|
+
If you have a higher-memory system, larger parameter models may work better.
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
Optional manual model install commands:
|
|
86
84
|
|
|
87
|
-
|
|
85
|
+
```bash
|
|
86
|
+
ollama pull qwen3-coder:30b
|
|
87
|
+
ollama pull gemma4:26b-mlx
|
|
88
|
+
ollama pull gemma4:e4b-mlx
|
|
89
|
+
```
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
To set the active model yourself, use:
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
* Highlighting structural or readability issues
|
|
95
|
-
* Suggesting small, localized improvements
|
|
93
|
+
```bash
|
|
94
|
+
scai config set-model qwen3-coder:30b
|
|
95
|
+
```
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
Replace the model name with the one you want to use.
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
Then start the interactive shell:
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
```bash
|
|
102
|
+
scai
|
|
103
|
+
```
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
You can also ask one question directly:
|
|
104
106
|
|
|
105
|
-
|
|
107
|
+
```bash
|
|
108
|
+
scai ask "Where is the auth token checked?"
|
|
109
|
+
```
|
|
106
110
|
|
|
107
|
-
|
|
108
|
-
* Code understanding and exploration
|
|
109
|
-
* Assisted iteration and suggestions
|
|
110
|
-
* Commit message generation
|
|
111
|
-
* Background indexing and analysis
|
|
112
|
-
* Interactive REPL
|
|
111
|
+
## Example Questions
|
|
113
112
|
|
|
114
|
-
|
|
113
|
+
Good prompts are concrete and repo-focused.
|
|
115
114
|
|
|
116
|
-
|
|
115
|
+
Examples:
|
|
117
116
|
|
|
118
|
-
|
|
117
|
+
```text
|
|
118
|
+
What does withContext do in cli/src/index.ts?
|
|
119
|
+
Where is the auth flow implemented?
|
|
120
|
+
Summarize the indexing pipeline.
|
|
121
|
+
Which files define database queries?
|
|
122
|
+
Show me the config loading path.
|
|
123
|
+
Help me add comments to this file.
|
|
124
|
+
Help me make a small cleanup in this module.
|
|
125
|
+
```
|
|
119
126
|
|
|
120
|
-
|
|
121
|
-
* No telemetry
|
|
122
|
-
* No cloud services
|
|
123
|
-
* Developed in Denmark / EU
|
|
124
|
-
* GDPR-friendly by default
|
|
127
|
+
## Current Limits
|
|
125
128
|
|
|
126
|
-
|
|
129
|
+
SCAI is not a full replacement for a strong cloud coding agent.
|
|
127
130
|
|
|
128
|
-
|
|
131
|
+
Today it works best when:
|
|
129
132
|
|
|
130
|
-
|
|
133
|
+
- The task is about understanding code already in the repo
|
|
134
|
+
- The task is about changing code that already exists
|
|
135
|
+
- The change is small and local
|
|
136
|
+
- You want grounded answers tied to real files
|
|
131
137
|
|
|
132
|
-
|
|
133
|
-
* **TypeScript**
|
|
134
|
-
* **Java**
|
|
138
|
+
SCAI is not for:
|
|
135
139
|
|
|
136
|
-
|
|
140
|
+
- Building brand new features from scratch
|
|
141
|
+
- Large refactors across many files
|
|
142
|
+
- Broad automated rewrite requests
|
|
143
|
+
- Tasks that need bash actions, file creation, or other execution steps
|
|
144
|
+
- Tasks that depend on web access or external services
|
|
137
145
|
|
|
138
|
-
|
|
146
|
+
Important current limit:
|
|
139
147
|
|
|
140
|
-
|
|
148
|
+
- SCAI can refactor code that already exists
|
|
149
|
+
- SCAI is not yet a good fit for building new features end to end
|
|
150
|
+
- SCAI does not currently act like a shell agent that runs bash steps to create files, wire systems together, or drive external tools
|
|
151
|
+
- SCAI does not handle large file refactors well. It's capped at 1000 lines.
|
|
141
152
|
|
|
142
|
-
|
|
153
|
+
*SCAI was tested on an MacBook Pro M1 max (64GB). If you have a faster machine you may experience better performance and be able to use above 30b parameter models.*
|
|
143
154
|
|
|
144
|
-
|
|
155
|
+
## Privacy And Cost
|
|
145
156
|
|
|
146
|
-
|
|
147
|
-
npm install -g scai
|
|
148
|
-
scai init
|
|
149
|
-
scai index start
|
|
150
|
-
```
|
|
157
|
+
SCAI runs with local models only.
|
|
151
158
|
|
|
152
|
-
|
|
159
|
+
That means:
|
|
153
160
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
161
|
+
- No API keys
|
|
162
|
+
- No metered token billing
|
|
163
|
+
- No remote prompt processing
|
|
164
|
+
- No web browsing by the agent
|
|
165
|
+
- No prompt injection from fetched web content
|
|
157
166
|
|
|
158
|
-
|
|
159
|
-
> Initial indexing can take **minutes to hours**, depending on repository size and enabled analysis.
|
|
167
|
+
This makes it a good fit for private code, internal repos, and teams that want a simple offline workflow.
|
|
160
168
|
|
|
161
|
-
|
|
169
|
+
## Tasks And Resume
|
|
162
170
|
|
|
163
|
-
|
|
171
|
+
SCAI can keep task context so you can continue later.
|
|
164
172
|
|
|
165
|
-
|
|
173
|
+
Useful commands:
|
|
166
174
|
|
|
167
175
|
```bash
|
|
168
|
-
scai
|
|
176
|
+
scai context
|
|
177
|
+
scai new-context
|
|
178
|
+
scai task show <id>
|
|
179
|
+
scai task resume <id>
|
|
180
|
+
scai task path <id>
|
|
169
181
|
```
|
|
170
182
|
|
|
171
|
-
|
|
183
|
+
Use these when you want to inspect what the agent already did or continue an earlier task.
|
|
172
184
|
|
|
173
|
-
|
|
174
|
-
scai shell
|
|
175
|
-
```
|
|
185
|
+
## Commit Messages
|
|
176
186
|
|
|
177
|
-
|
|
187
|
+
SCAI can write commit messages from your **staged** changes.
|
|
178
188
|
|
|
179
|
-
|
|
189
|
+
Stage your changes first:
|
|
180
190
|
|
|
181
191
|
```bash
|
|
182
|
-
|
|
192
|
+
git add <files>
|
|
183
193
|
```
|
|
184
194
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
## Interactive REPL
|
|
188
|
-
|
|
189
|
-
The REPL is the primary interface for working with SCAI.
|
|
190
|
-
|
|
191
|
-
### Ask questions about your codebase
|
|
195
|
+
Then ask SCAI for a commit message:
|
|
192
196
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
```text
|
|
196
|
-
scai> what does withContext function do in index.ts file?
|
|
197
|
-
scai> How many functions in config.js are missing tests?
|
|
198
|
-
scai> Write me comprehensive comments for componentMap.js and typescript.ts files
|
|
199
|
-
scai> Summarize utils/helpers.ts
|
|
200
|
-
scai> Where are all the database queries defined?
|
|
201
|
-
scai> List files involved in authentication
|
|
197
|
+
```bash
|
|
198
|
+
scai commit
|
|
202
199
|
```
|
|
203
200
|
|
|
204
|
-
|
|
201
|
+
This is local too. Diff inspection and message generation stay on your machine.
|
|
205
202
|
|
|
206
|
-
|
|
207
|
-
/index list
|
|
208
|
-
/index switch
|
|
209
|
-
/git commit
|
|
210
|
-
```
|
|
203
|
+
## Indexing And Repositories
|
|
211
204
|
|
|
212
|
-
|
|
205
|
+
Most users only need:
|
|
213
206
|
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
|
|
207
|
+
```bash
|
|
208
|
+
scai setup
|
|
209
|
+
scai status
|
|
217
210
|
```
|
|
218
211
|
|
|
219
|
-
|
|
212
|
+
Run that once in each repository you want SCAI to use.
|
|
220
213
|
|
|
221
|
-
|
|
214
|
+
Use `scai status` when you want a read-only check of repo, DB, indexing, daemon, and model readiness.
|
|
222
215
|
|
|
223
|
-
|
|
216
|
+
After a repository has been set up with `scai setup`, SCAI will normally detect the current repository from your working directory and switch context automatically.
|
|
224
217
|
|
|
225
|
-
|
|
218
|
+
Advanced multi-repo commands are still available if you need them:
|
|
226
219
|
|
|
227
220
|
```bash
|
|
228
|
-
scai index set /path/to/repo
|
|
229
|
-
scai index start
|
|
230
221
|
scai index list
|
|
231
222
|
scai index switch
|
|
232
|
-
scai index
|
|
223
|
+
scai index start
|
|
224
|
+
scai index status
|
|
233
225
|
```
|
|
234
226
|
|
|
235
|
-
Only
|
|
236
|
-
|
|
237
|
-
---
|
|
227
|
+
Only repositories that have been set up are available to the agent.
|
|
238
228
|
|
|
239
|
-
##
|
|
229
|
+
## Model Help
|
|
240
230
|
|
|
241
|
-
SCAI
|
|
231
|
+
SCAI uses a local Ollama server.
|
|
242
232
|
|
|
243
|
-
|
|
244
|
-
* AST parsing
|
|
245
|
-
* Dependency graph construction
|
|
246
|
-
* Symbol resolution
|
|
247
|
-
* Heuristic structure analysis
|
|
233
|
+
Download Ollama here: [https://ollama.com/download](https://ollama.com/download)
|
|
248
234
|
|
|
249
|
-
|
|
235
|
+
To download a model with Ollama, run:
|
|
250
236
|
|
|
251
237
|
```bash
|
|
252
|
-
|
|
253
|
-
scai daemon stop
|
|
254
|
-
scai daemon restart
|
|
255
|
-
scai daemon status
|
|
256
|
-
scai daemon logs
|
|
238
|
+
ollama pull qwen3-coder:30b
|
|
257
239
|
```
|
|
258
240
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
## Configuration
|
|
264
|
-
|
|
265
|
-
Set a local model (recommended):
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
scai config set-model qwen3-coder:30b
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
View configuration:
|
|
241
|
+
Useful commands:
|
|
272
242
|
|
|
273
243
|
```bash
|
|
244
|
+
scai model status
|
|
245
|
+
scai model restart
|
|
274
246
|
scai config show --raw
|
|
247
|
+
scai config set-model qwen3-coder:30b
|
|
275
248
|
```
|
|
276
249
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
## Git Commit Assistant
|
|
280
|
-
|
|
281
|
-
Generate commit messages from staged changes:
|
|
250
|
+
Then point SCAI at the downloaded model:
|
|
282
251
|
|
|
283
252
|
```bash
|
|
284
|
-
|
|
285
|
-
scai git commit
|
|
253
|
+
scai config set-model qwen3-coder:30b
|
|
286
254
|
```
|
|
287
255
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
---
|
|
256
|
+
If `scai setup` worked, you usually do not need to touch this often.
|
|
291
257
|
|
|
292
|
-
##
|
|
258
|
+
## Upgrading
|
|
293
259
|
|
|
294
|
-
|
|
260
|
+
If you upgrade SCAI and local state looks wrong, reset the local DB:
|
|
295
261
|
|
|
296
262
|
```bash
|
|
297
|
-
scai
|
|
298
|
-
scai auth check
|
|
299
|
-
scai auth reset
|
|
263
|
+
scai db reset
|
|
300
264
|
```
|
|
301
265
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
## Privacy & Security Summary
|
|
305
|
-
|
|
306
|
-
* 100% local execution
|
|
307
|
-
* No internet access for agents
|
|
308
|
-
* No prompt injection from web content
|
|
309
|
-
* No API keys
|
|
310
|
-
* No token costs
|
|
311
|
-
* GDPR-friendly by default
|
|
266
|
+
General note:
|
|
312
267
|
|
|
313
|
-
|
|
268
|
+
- Results can still vary by repository, model, and hardware
|
|
269
|
+
- If behavior changes after an upgrade, re-run setup and check the selected model
|
|
314
270
|
|
|
315
|
-
##
|
|
271
|
+
## Troubleshooting
|
|
316
272
|
|
|
317
|
-
|
|
318
|
-
* 🧵 [https://threads.net/@scai.dk](https://threads.net/@scai.dk)
|
|
273
|
+
If SCAI is not answering well:
|
|
319
274
|
|
|
320
|
-
|
|
275
|
+
1. Make sure the repo was set up with `scai setup`
|
|
276
|
+
2. Check that Ollama is running with `scai model status`
|
|
277
|
+
3. Ask a more concrete question with file names, symbols, or subsystem names
|
|
278
|
+
4. Keep the task small if you want code changes
|
|
321
279
|
|
|
322
|
-
|
|
280
|
+
If you need to inspect the current task state:
|
|
323
281
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## Permitted Use
|
|
331
|
-
|
|
332
|
-
You may use SCAI free of charge for:
|
|
333
|
-
|
|
334
|
-
* Personal projects
|
|
335
|
-
* Educational use
|
|
336
|
-
* Research and experimentation
|
|
337
|
-
* Non-commercial open-source work
|
|
338
|
-
* Internal evaluation or proof-of-concepts
|
|
339
|
-
|
|
340
|
-
You may fork and modify the source code **for non-commercial purposes only**.
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## Restricted Use
|
|
345
|
-
|
|
346
|
-
The following require a **commercial license**:
|
|
347
|
-
|
|
348
|
-
* Any commercial or enterprise use
|
|
349
|
-
* Consultancy or client work
|
|
350
|
-
* Paid products or services
|
|
351
|
-
* Internal enterprise tooling
|
|
352
|
-
* Commercial redistribution or resale
|
|
353
|
-
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
## Commercial Licensing
|
|
357
|
-
|
|
358
|
-
Commercial and enterprise use requires a **paid license** and explicit permission from the author.
|
|
359
|
-
|
|
360
|
-
Please contact the author to discuss licensing terms.
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
## Disclaimer
|
|
365
|
-
|
|
366
|
-
This software is provided **“as is”**, without warranty of any kind.
|
|
367
|
-
|
|
368
|
-
The author is not liable for any damages arising from its use.
|
|
369
|
-
|
|
370
|
-
---
|
|
282
|
+
```bash
|
|
283
|
+
scai context
|
|
284
|
+
scai task show <id>
|
|
285
|
+
```
|
|
371
286
|
|
|
372
|
-
|
|
287
|
+
## Maintainer Release Flow
|
|
373
288
|
|
|
374
|
-
|
|
375
|
-
* Fully local, offline AI
|
|
376
|
-
* No token costs
|
|
377
|
-
* No prompt injection surface
|
|
378
|
-
* Commercial use requires a license
|
|
289
|
+
The CLI release workflow is documented in [release-procedure.md](/Users/rzs/dev/repos/scai/release-procedure.md).
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verifies file-only trace logging for the standalone commit command flow.
|
|
3
|
+
*/
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
const buildStagedCommitSummary = vi.fn();
|
|
6
|
+
const moduleRun = vi.fn();
|
|
7
|
+
const logInputOutput = vi.fn();
|
|
8
|
+
const execSync = vi.fn();
|
|
9
|
+
const spawnSync = vi.fn();
|
|
10
|
+
const close = vi.fn();
|
|
11
|
+
const rl = {
|
|
12
|
+
question: vi.fn(),
|
|
13
|
+
close,
|
|
14
|
+
};
|
|
15
|
+
vi.mock('child_process', () => ({
|
|
16
|
+
execSync,
|
|
17
|
+
spawnSync,
|
|
18
|
+
}));
|
|
19
|
+
vi.mock('../git/commitSummary.js', () => ({
|
|
20
|
+
buildStagedCommitSummary,
|
|
21
|
+
}));
|
|
22
|
+
vi.mock('../pipeline/modules/commitSuggesterModule.js', () => ({
|
|
23
|
+
commitSuggesterModule: {
|
|
24
|
+
run: moduleRun,
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
vi.mock('../utils/promptLogHelper.js', () => ({
|
|
28
|
+
logInputOutput,
|
|
29
|
+
}));
|
|
30
|
+
vi.mock('../commands/ReadlineSingleton.js', () => ({
|
|
31
|
+
getRl: () => ({
|
|
32
|
+
rl,
|
|
33
|
+
isTemporary: true,
|
|
34
|
+
}),
|
|
35
|
+
}));
|
|
36
|
+
describe('suggestCommitMessage logging', () => {
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
vi.resetModules();
|
|
39
|
+
buildStagedCommitSummary.mockReset();
|
|
40
|
+
moduleRun.mockReset();
|
|
41
|
+
logInputOutput.mockReset();
|
|
42
|
+
execSync.mockReset();
|
|
43
|
+
spawnSync.mockReset();
|
|
44
|
+
rl.question.mockReset();
|
|
45
|
+
close.mockReset();
|
|
46
|
+
});
|
|
47
|
+
it('logs an early exit when there are no staged changes', async () => {
|
|
48
|
+
buildStagedCommitSummary.mockReturnValue(undefined);
|
|
49
|
+
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
50
|
+
const { suggestCommitMessage } = await import('../commands/CommitSuggesterCmd.js');
|
|
51
|
+
await suggestCommitMessage();
|
|
52
|
+
expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {
|
|
53
|
+
status: 'no-staged-changes',
|
|
54
|
+
});
|
|
55
|
+
expect(moduleRun).not.toHaveBeenCalled();
|
|
56
|
+
expect(close).toHaveBeenCalledTimes(1);
|
|
57
|
+
logSpy.mockRestore();
|
|
58
|
+
});
|
|
59
|
+
it('logs the staged summary and final selected message on the happy path', async () => {
|
|
60
|
+
buildStagedCommitSummary.mockReturnValue({
|
|
61
|
+
mode: 'staged-summary',
|
|
62
|
+
stagedOnly: true,
|
|
63
|
+
totalFiles: 1,
|
|
64
|
+
totalAdded: 5,
|
|
65
|
+
totalDeleted: 1,
|
|
66
|
+
categoryCounts: { source: 1, tests: 0, docs: 0, config: 0, other: 0 },
|
|
67
|
+
dominantCategories: ['source'],
|
|
68
|
+
topFiles: [],
|
|
69
|
+
omittedFileCount: 0,
|
|
70
|
+
});
|
|
71
|
+
moduleRun.mockResolvedValue({
|
|
72
|
+
suggestions: ['feat: add commit tracing'],
|
|
73
|
+
});
|
|
74
|
+
rl.question.mockImplementation((_prompt, cb) => cb('1'));
|
|
75
|
+
execSync.mockImplementation((command) => {
|
|
76
|
+
if (command === 'git diff --cached') {
|
|
77
|
+
return 'diff --git a/file b/file';
|
|
78
|
+
}
|
|
79
|
+
return '';
|
|
80
|
+
});
|
|
81
|
+
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
82
|
+
const { suggestCommitMessage } = await import('../commands/CommitSuggesterCmd.js');
|
|
83
|
+
await suggestCommitMessage();
|
|
84
|
+
expect(logInputOutput).toHaveBeenNthCalledWith(1, 'commitSuggesterCmd', 'input', {
|
|
85
|
+
summary: {
|
|
86
|
+
mode: 'staged-summary',
|
|
87
|
+
stagedOnly: true,
|
|
88
|
+
totalFiles: 1,
|
|
89
|
+
totalAdded: 5,
|
|
90
|
+
totalDeleted: 1,
|
|
91
|
+
categoryCounts: { source: 1, tests: 0, docs: 0, config: 0, other: 0 },
|
|
92
|
+
dominantCategories: ['source'],
|
|
93
|
+
topFiles: [],
|
|
94
|
+
omittedFileCount: 0,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {
|
|
98
|
+
status: 'selected-message',
|
|
99
|
+
source: 'selected-suggestion',
|
|
100
|
+
regenerateCount: 0,
|
|
101
|
+
message: 'feat: add commit tracing',
|
|
102
|
+
});
|
|
103
|
+
expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {
|
|
104
|
+
status: 'committed',
|
|
105
|
+
message: 'feat: add commit tracing',
|
|
106
|
+
});
|
|
107
|
+
expect(execSync).toHaveBeenCalledWith('git commit -m "feat: add commit tracing"', { stdio: 'inherit' });
|
|
108
|
+
expect(close).toHaveBeenCalledTimes(1);
|
|
109
|
+
logSpy.mockRestore();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=CommitSuggesterCmd.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommitSuggesterCmd.test.js","sourceRoot":"","sources":["../../src/__tests__/CommitSuggesterCmd.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Verifies file-only trace logging for the standalone commit command flow.\n */\nimport { beforeEach, describe, expect, it, vi } from 'vitest';\n\nconst buildStagedCommitSummary = vi.fn();\nconst moduleRun = vi.fn();\nconst logInputOutput = vi.fn();\nconst execSync = vi.fn();\nconst spawnSync = vi.fn();\nconst close = vi.fn();\n\nconst rl = {\n question: vi.fn(),\n close,\n};\n\nvi.mock('child_process', () => ({\n execSync,\n spawnSync,\n}));\n\nvi.mock('../git/commitSummary.js', () => ({\n buildStagedCommitSummary,\n}));\n\nvi.mock('../pipeline/modules/commitSuggesterModule.js', () => ({\n commitSuggesterModule: {\n run: moduleRun,\n },\n}));\n\nvi.mock('../utils/promptLogHelper.js', () => ({\n logInputOutput,\n}));\n\nvi.mock('../commands/ReadlineSingleton.js', () => ({\n getRl: () => ({\n rl,\n isTemporary: true,\n }),\n}));\n\ndescribe('suggestCommitMessage logging', () => {\n beforeEach(() => {\n vi.resetModules();\n buildStagedCommitSummary.mockReset();\n moduleRun.mockReset();\n logInputOutput.mockReset();\n execSync.mockReset();\n spawnSync.mockReset();\n rl.question.mockReset();\n close.mockReset();\n });\n\n it('logs an early exit when there are no staged changes', async () => {\n buildStagedCommitSummary.mockReturnValue(undefined);\n const logSpy = vi.spyOn(console, 'log').mockImplementation(() => {});\n\n const { suggestCommitMessage } = await import('../commands/CommitSuggesterCmd.js');\n await suggestCommitMessage();\n\n expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {\n status: 'no-staged-changes',\n });\n expect(moduleRun).not.toHaveBeenCalled();\n expect(close).toHaveBeenCalledTimes(1);\n logSpy.mockRestore();\n });\n\n it('logs the staged summary and final selected message on the happy path', async () => {\n buildStagedCommitSummary.mockReturnValue({\n mode: 'staged-summary',\n stagedOnly: true,\n totalFiles: 1,\n totalAdded: 5,\n totalDeleted: 1,\n categoryCounts: { source: 1, tests: 0, docs: 0, config: 0, other: 0 },\n dominantCategories: ['source'],\n topFiles: [],\n omittedFileCount: 0,\n });\n moduleRun.mockResolvedValue({\n suggestions: ['feat: add commit tracing'],\n });\n rl.question.mockImplementation((_prompt: string, cb: (answer: string) => void) => cb('1'));\n execSync.mockImplementation((command: string) => {\n if (command === 'git diff --cached') {\n return 'diff --git a/file b/file';\n }\n return '';\n });\n const logSpy = vi.spyOn(console, 'log').mockImplementation(() => {});\n\n const { suggestCommitMessage } = await import('../commands/CommitSuggesterCmd.js');\n await suggestCommitMessage();\n\n expect(logInputOutput).toHaveBeenNthCalledWith(1, 'commitSuggesterCmd', 'input', {\n summary: {\n mode: 'staged-summary',\n stagedOnly: true,\n totalFiles: 1,\n totalAdded: 5,\n totalDeleted: 1,\n categoryCounts: { source: 1, tests: 0, docs: 0, config: 0, other: 0 },\n dominantCategories: ['source'],\n topFiles: [],\n omittedFileCount: 0,\n },\n });\n expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {\n status: 'selected-message',\n source: 'selected-suggestion',\n regenerateCount: 0,\n message: 'feat: add commit tracing',\n });\n expect(logInputOutput).toHaveBeenCalledWith('commitSuggesterCmd', 'output', {\n status: 'committed',\n message: 'feat: add commit tracing',\n });\n expect(execSync).toHaveBeenCalledWith('git commit -m \"feat: add commit tracing\"', { stdio: 'inherit' });\n expect(close).toHaveBeenCalledTimes(1);\n logSpy.mockRestore();\n });\n});\n"]}
|