scai 0.1.177 → 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 +200 -19
- 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 -1710
- 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,273 @@
|
|
|
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
|
+
Website: [https://scai.dk](https://scai.dk)
|
|
15
|
+
Built in Denmark / EU
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
## What SCAI Is Good At
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
SCAI is strongest when you want help understanding an existing repository.
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
It is good at:
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
- Explaining what a file, function, or module does
|
|
24
|
+
- Finding where logic lives across the repo
|
|
25
|
+
- Tracing auth, config, database, or API flow
|
|
26
|
+
- Summarizing a subsystem before you edit it
|
|
27
|
+
- Reviewing a small local change idea before you do it
|
|
28
|
+
- Writing comments or small docs updates
|
|
29
|
+
- Refactoring existing code in a small or medium-sized area
|
|
30
|
+
- Helping with small light code changes in a limited area
|
|
31
|
+
- Writing commit messages from staged changes
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
## Current Limits
|
|
27
34
|
|
|
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.
|
|
35
|
+
SCAI is not a full replacement for a strong cloud coding agent.
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
Today it works best when:
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
- The task is about understanding code already in the repo
|
|
40
|
+
- The task is about changing code that already exists
|
|
41
|
+
- The change is small and local
|
|
42
|
+
- You want grounded answers tied to real files
|
|
34
43
|
|
|
35
|
-
|
|
44
|
+
Scai is not for:
|
|
36
45
|
|
|
37
|
-
|
|
46
|
+
- Building brand new features from scratch
|
|
47
|
+
- Large refactors across many files
|
|
48
|
+
- Broad automated rewrite requests
|
|
49
|
+
- Tasks that need bash actions, file creation, or other execution steps
|
|
50
|
+
- Tasks that depend on web access or external services
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
scai db reset
|
|
41
|
-
scai index start
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Breaking changes and evolving behavior should be expected.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Why SCAI?
|
|
49
|
-
|
|
50
|
-
### 🔐 Local-Only by Design
|
|
51
|
-
|
|
52
|
-
SCAI agents operate **entirely offline**.
|
|
53
|
-
|
|
54
|
-
They do not:
|
|
55
|
-
|
|
56
|
-
* Browse the web
|
|
57
|
-
* Fetch URLs
|
|
58
|
-
* Ingest external documents
|
|
59
|
-
* Execute remote prompts
|
|
60
|
-
|
|
61
|
-
**Security implications:**
|
|
62
|
-
|
|
63
|
-
* No prompt injection via web content
|
|
64
|
-
* No data exfiltration
|
|
65
|
-
* No hidden network calls
|
|
66
|
-
* Fully auditable execution
|
|
67
|
-
|
|
68
|
-
This makes SCAI suitable for **private repositories, regulated environments, and GDPR-compliant workflows**.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
### 🧠 Codebase-Aware Analysis
|
|
73
|
-
|
|
74
|
-
SCAI builds and maintains a structured internal representation of your repository using:
|
|
75
|
-
|
|
76
|
-
* Language-aware parsing
|
|
77
|
-
* Symbol and dependency indexing
|
|
78
|
-
* Static and heuristic analysis
|
|
79
|
-
* Cross-file context tracking
|
|
80
|
-
|
|
81
|
-
This enables repository-level questions that go beyond single-file inspection.
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
### ✂️ Assisted Code Iteration (Early)
|
|
86
|
-
|
|
87
|
-
SCAI can assist with **lightweight, example-driven code iteration**, primarily focused on understanding and improving existing code rather than large-scale automated refactoring.
|
|
52
|
+
Important current limit:
|
|
88
53
|
|
|
89
|
-
|
|
54
|
+
- SCAI can refactor code that already exists
|
|
55
|
+
- SCAI is not yet a good fit for building new features end to end
|
|
56
|
+
- SCAI does not currently act like a shell agent that runs bash steps to create files, wire systems together, or drive external tools
|
|
57
|
+
- SCAI does not handle large file refactors well. It's capped at 1000 lines.
|
|
90
58
|
|
|
91
|
-
*
|
|
92
|
-
* Identifying patterns and responsibilities across files
|
|
93
|
-
* Generating or improving comments and documentation
|
|
94
|
-
* Highlighting structural or readability issues
|
|
95
|
-
* Suggesting small, localized improvements
|
|
59
|
+
*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.*
|
|
96
60
|
|
|
97
|
-
|
|
61
|
+
## Privacy And Cost
|
|
98
62
|
|
|
99
|
-
|
|
63
|
+
SCAI runs with local models only.
|
|
100
64
|
|
|
101
|
-
|
|
65
|
+
That means:
|
|
102
66
|
|
|
103
|
-
|
|
67
|
+
- No API keys
|
|
68
|
+
- No metered token billing
|
|
69
|
+
- No remote prompt processing
|
|
70
|
+
- No web browsing by the agent
|
|
71
|
+
- No prompt injection from fetched web content
|
|
104
72
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
* Natural-language queries over your codebase
|
|
108
|
-
* Code understanding and exploration
|
|
109
|
-
* Assisted iteration and suggestions
|
|
110
|
-
* Commit message generation
|
|
111
|
-
* Background indexing and analysis
|
|
112
|
-
* Interactive REPL
|
|
113
|
-
|
|
114
|
-
No browser UI. No cloud login. No vendor lock-in.
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
### 🇪🇺 Privacy & Compliance First
|
|
119
|
-
|
|
120
|
-
* Fully local execution
|
|
121
|
-
* No telemetry
|
|
122
|
-
* No cloud services
|
|
123
|
-
* Developed in Denmark / EU
|
|
124
|
-
* GDPR-friendly by default
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Language Support
|
|
129
|
-
|
|
130
|
-
SCAI is currently **tested and supported** for:
|
|
131
|
-
|
|
132
|
-
* **JavaScript**
|
|
133
|
-
* **TypeScript**
|
|
134
|
-
* **Java**
|
|
135
|
-
|
|
136
|
-
Other languages may work partially, but indexing quality, analysis accuracy, and agent behavior are **not guaranteed**.
|
|
137
|
-
|
|
138
|
-
SCAI should currently be considered **JS / TS / Java-first**.
|
|
139
|
-
|
|
140
|
-
---
|
|
73
|
+
This makes it a good fit for private code, internal repos, and teams that want a simple offline workflow.
|
|
141
74
|
|
|
142
75
|
## Getting Started
|
|
143
76
|
|
|
144
|
-
|
|
77
|
+
Install the CLI:
|
|
145
78
|
|
|
146
79
|
```bash
|
|
147
80
|
npm install -g scai
|
|
148
|
-
scai init
|
|
149
|
-
scai index start
|
|
150
81
|
```
|
|
151
82
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
* Initializes local configuration
|
|
155
|
-
* Starts the background daemon
|
|
156
|
-
* Begins indexing the current repository
|
|
157
|
-
|
|
158
|
-
> **Note**
|
|
159
|
-
> Initial indexing can take **minutes to hours**, depending on repository size and enabled analysis.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### Starting SCAI
|
|
164
|
-
|
|
165
|
-
Running the `scai` command with no arguments starts the interactive shell:
|
|
83
|
+
Move into the repository you want to work on:
|
|
166
84
|
|
|
167
85
|
```bash
|
|
168
|
-
|
|
86
|
+
cd /path/to/repo
|
|
169
87
|
```
|
|
170
88
|
|
|
171
|
-
|
|
89
|
+
Set up the repo and local model runtime:
|
|
172
90
|
|
|
173
91
|
```bash
|
|
174
|
-
scai
|
|
92
|
+
scai setup
|
|
175
93
|
```
|
|
176
94
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
### View Available Commands
|
|
95
|
+
This will:
|
|
180
96
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
97
|
+
- Register the current repository
|
|
98
|
+
- Check that Ollama is available
|
|
99
|
+
- Help you pick or install a local model
|
|
100
|
+
- Start local indexing
|
|
184
101
|
|
|
185
|
-
|
|
102
|
+
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.
|
|
186
103
|
|
|
187
|
-
|
|
104
|
+
For best results on a 64 GB machine, use:
|
|
188
105
|
|
|
189
|
-
|
|
106
|
+
- `qwen3-coder:30b`
|
|
107
|
+
- `gemma4:26b-mlx`
|
|
190
108
|
|
|
191
|
-
|
|
109
|
+
For smaller machines, use:
|
|
192
110
|
|
|
193
|
-
|
|
111
|
+
- `gemma4:e4b-mlx`
|
|
194
112
|
|
|
195
|
-
|
|
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
|
|
202
|
-
```
|
|
113
|
+
If you have a higher-memory system, larger parameter models may work better.
|
|
203
114
|
|
|
204
|
-
|
|
115
|
+
Optional manual model install commands:
|
|
205
116
|
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
117
|
+
```bash
|
|
118
|
+
ollama pull qwen3-coder:30b
|
|
119
|
+
ollama pull gemma4:26b-mlx
|
|
120
|
+
ollama pull gemma4:e4b-mlx
|
|
210
121
|
```
|
|
211
122
|
|
|
212
|
-
|
|
123
|
+
To set the active model yourself, use:
|
|
213
124
|
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
!ls -la
|
|
125
|
+
```bash
|
|
126
|
+
scai config set-model qwen3-coder:30b
|
|
217
127
|
```
|
|
218
128
|
|
|
219
|
-
|
|
129
|
+
Replace the model name with the one you want to use.
|
|
220
130
|
|
|
221
|
-
|
|
131
|
+
Then start the interactive shell:
|
|
222
132
|
|
|
223
|
-
|
|
133
|
+
```bash
|
|
134
|
+
scai
|
|
135
|
+
```
|
|
224
136
|
|
|
225
|
-
|
|
137
|
+
You can also ask one question directly:
|
|
226
138
|
|
|
227
139
|
```bash
|
|
228
|
-
scai
|
|
229
|
-
scai index start
|
|
230
|
-
scai index list
|
|
231
|
-
scai index switch
|
|
232
|
-
scai index delete
|
|
140
|
+
scai ask "Where is the auth token checked?"
|
|
233
141
|
```
|
|
234
142
|
|
|
235
|
-
|
|
143
|
+
## Example Questions
|
|
144
|
+
|
|
145
|
+
Good prompts are concrete and repo-focused.
|
|
236
146
|
|
|
237
|
-
|
|
147
|
+
Examples:
|
|
238
148
|
|
|
239
|
-
|
|
149
|
+
```text
|
|
150
|
+
What does withContext do in cli/src/index.ts?
|
|
151
|
+
Where is the auth flow implemented?
|
|
152
|
+
Summarize the indexing pipeline.
|
|
153
|
+
Which files define database queries?
|
|
154
|
+
Show me the config loading path.
|
|
155
|
+
Help me add comments to this file.
|
|
156
|
+
Help me make a small cleanup in this module.
|
|
157
|
+
```
|
|
240
158
|
|
|
241
|
-
|
|
159
|
+
## Tasks And Resume
|
|
242
160
|
|
|
243
|
-
|
|
244
|
-
* AST parsing
|
|
245
|
-
* Dependency graph construction
|
|
246
|
-
* Symbol resolution
|
|
247
|
-
* Heuristic structure analysis
|
|
161
|
+
SCAI can keep task context so you can continue later.
|
|
248
162
|
|
|
249
|
-
|
|
163
|
+
Useful commands:
|
|
250
164
|
|
|
251
165
|
```bash
|
|
252
|
-
scai
|
|
253
|
-
scai
|
|
254
|
-
scai
|
|
255
|
-
scai
|
|
256
|
-
scai
|
|
166
|
+
scai context
|
|
167
|
+
scai new-context
|
|
168
|
+
scai task show <id>
|
|
169
|
+
scai task resume <id>
|
|
170
|
+
scai task path <id>
|
|
257
171
|
```
|
|
258
172
|
|
|
259
|
-
|
|
173
|
+
Use these when you want to inspect what the agent already did or continue an earlier task.
|
|
260
174
|
|
|
261
|
-
|
|
175
|
+
## Commit Messages
|
|
262
176
|
|
|
263
|
-
|
|
177
|
+
SCAI can write commit messages from your **staged** changes.
|
|
264
178
|
|
|
265
|
-
|
|
179
|
+
Stage your changes first:
|
|
266
180
|
|
|
267
181
|
```bash
|
|
268
|
-
|
|
182
|
+
git add <files>
|
|
269
183
|
```
|
|
270
184
|
|
|
271
|
-
|
|
185
|
+
Then ask SCAI for a commit message:
|
|
272
186
|
|
|
273
187
|
```bash
|
|
274
|
-
scai
|
|
188
|
+
scai commit
|
|
275
189
|
```
|
|
276
190
|
|
|
277
|
-
|
|
191
|
+
This is local too. Diff inspection and message generation stay on your machine.
|
|
278
192
|
|
|
279
|
-
##
|
|
193
|
+
## Indexing And Repositories
|
|
280
194
|
|
|
281
|
-
|
|
195
|
+
Most users only need:
|
|
282
196
|
|
|
283
197
|
```bash
|
|
284
|
-
|
|
285
|
-
scai
|
|
198
|
+
scai setup
|
|
199
|
+
scai status
|
|
286
200
|
```
|
|
287
201
|
|
|
288
|
-
|
|
202
|
+
Run that once in each repository you want SCAI to use.
|
|
289
203
|
|
|
290
|
-
|
|
204
|
+
Use `scai status` when you want a read-only check of repo, DB, indexing, daemon, and model readiness.
|
|
291
205
|
|
|
292
|
-
|
|
206
|
+
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.
|
|
293
207
|
|
|
294
|
-
|
|
208
|
+
Advanced multi-repo commands are still available if you need them:
|
|
295
209
|
|
|
296
210
|
```bash
|
|
297
|
-
scai
|
|
298
|
-
scai
|
|
299
|
-
scai
|
|
211
|
+
scai index list
|
|
212
|
+
scai index switch
|
|
213
|
+
scai index start
|
|
214
|
+
scai index status
|
|
300
215
|
```
|
|
301
216
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
## Privacy & Security Summary
|
|
217
|
+
Only repositories that have been set up are available to the agent.
|
|
305
218
|
|
|
306
|
-
|
|
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
|
|
219
|
+
## Model Help
|
|
312
220
|
|
|
313
|
-
|
|
221
|
+
SCAI uses a local Ollama server.
|
|
314
222
|
|
|
315
|
-
|
|
223
|
+
Useful commands:
|
|
316
224
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
© SCAI — All rights reserved.
|
|
325
|
-
|
|
326
|
-
SCAI is **free for non-commercial use only**.
|
|
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**.
|
|
225
|
+
```bash
|
|
226
|
+
scai model status
|
|
227
|
+
scai model restart
|
|
228
|
+
scai config show --raw
|
|
229
|
+
scai config set-model qwen3-coder:30b
|
|
230
|
+
```
|
|
341
231
|
|
|
342
|
-
|
|
232
|
+
If you want to manage models manually, download one with Ollama:
|
|
343
233
|
|
|
344
|
-
|
|
234
|
+
```bash
|
|
235
|
+
ollama pull gemma4:e4b-mlx
|
|
236
|
+
```
|
|
345
237
|
|
|
346
|
-
|
|
238
|
+
Then point SCAI at that model:
|
|
347
239
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
* Internal enterprise tooling
|
|
352
|
-
* Commercial redistribution or resale
|
|
240
|
+
```bash
|
|
241
|
+
scai config set-model gemma4:e4b-mlx
|
|
242
|
+
```
|
|
353
243
|
|
|
354
|
-
|
|
244
|
+
If `scai setup` worked, you usually do not need to touch this often.
|
|
355
245
|
|
|
356
|
-
##
|
|
246
|
+
## Upgrading
|
|
357
247
|
|
|
358
|
-
|
|
248
|
+
If you upgrade SCAI and local state looks wrong, reset the local DB:
|
|
359
249
|
|
|
360
|
-
|
|
250
|
+
```bash
|
|
251
|
+
scai db reset
|
|
252
|
+
```
|
|
361
253
|
|
|
362
|
-
|
|
254
|
+
General note:
|
|
363
255
|
|
|
364
|
-
|
|
256
|
+
- Results can still vary by repository, model, and hardware
|
|
257
|
+
- If behavior changes after an upgrade, re-run setup and check the selected model
|
|
365
258
|
|
|
366
|
-
|
|
259
|
+
## Troubleshooting
|
|
367
260
|
|
|
368
|
-
|
|
261
|
+
If SCAI is not answering well:
|
|
369
262
|
|
|
370
|
-
|
|
263
|
+
1. Make sure the repo was set up with `scai setup`
|
|
264
|
+
2. Check that Ollama is running with `scai model status`
|
|
265
|
+
3. Ask a more concrete question with file names, symbols, or subsystem names
|
|
266
|
+
4. Keep the task small if you want code changes
|
|
371
267
|
|
|
372
|
-
|
|
268
|
+
If you need to inspect the current task state:
|
|
373
269
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
* Commercial use requires a license
|
|
270
|
+
```bash
|
|
271
|
+
scai context
|
|
272
|
+
scai task show <id>
|
|
273
|
+
```
|
|
@@ -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"]}
|