scai 0.1.178 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (770) hide show
  1. package/README.md +162 -267
  2. package/dist/__tests__/CommitSuggesterCmd.test.js +112 -0
  3. package/dist/__tests__/CommitSuggesterCmd.test.js.map +1 -0
  4. package/dist/__tests__/EvalReportCmd.test.js +645 -0
  5. package/dist/__tests__/EvalReportCmd.test.js.map +1 -0
  6. package/dist/__tests__/ModelCmd.test.js +64 -0
  7. package/dist/__tests__/ModelCmd.test.js.map +1 -0
  8. package/dist/__tests__/agents/agentActions.test.js +345 -0
  9. package/dist/__tests__/agents/agentActions.test.js.map +1 -0
  10. package/dist/__tests__/agents/agentFeedback.test.js +118 -0
  11. package/dist/__tests__/agents/agentFeedback.test.js.map +1 -0
  12. package/dist/__tests__/agents/agentGeneralScope.test.js +74 -0
  13. package/dist/__tests__/agents/agentGeneralScope.test.js.map +1 -0
  14. package/dist/__tests__/agents/agentLoop.test.js +1723 -0
  15. package/dist/__tests__/agents/agentLoop.test.js.map +1 -0
  16. package/dist/__tests__/agents/agentPolicyState.test.js +948 -0
  17. package/dist/__tests__/agents/agentPolicyState.test.js.map +1 -0
  18. package/dist/__tests__/agents/agentReadEvidence.test.js +170 -0
  19. package/dist/__tests__/agents/agentReadEvidence.test.js.map +1 -0
  20. package/dist/__tests__/agents/agentReadPersistence.test.js +129 -0
  21. package/dist/__tests__/agents/agentReadPersistence.test.js.map +1 -0
  22. package/dist/__tests__/agents/agentResumeCheckpoint.test.js +90 -0
  23. package/dist/__tests__/agents/agentResumeCheckpoint.test.js.map +1 -0
  24. package/dist/__tests__/agents/agentSearchBatchPlanner.test.js +289 -0
  25. package/dist/__tests__/agents/agentSearchBatchPlanner.test.js.map +1 -0
  26. package/dist/__tests__/agents/agentSearchOwnership.test.js +166 -0
  27. package/dist/__tests__/agents/agentSearchOwnership.test.js.map +1 -0
  28. package/dist/__tests__/agents/agentSearchRanking.test.js +139 -0
  29. package/dist/__tests__/agents/agentSearchRanking.test.js.map +1 -0
  30. package/dist/__tests__/agents/agentSearchRouting.test.js +584 -0
  31. package/dist/__tests__/agents/agentSearchRouting.test.js.map +1 -0
  32. package/dist/__tests__/agents/agentSearchScoring.test.js +23 -0
  33. package/dist/__tests__/agents/agentSearchScoring.test.js.map +1 -0
  34. package/dist/__tests__/agents/agentSearchShared.test.js +78 -0
  35. package/dist/__tests__/agents/agentSearchShared.test.js.map +1 -0
  36. package/dist/__tests__/agents/agentStateMachine.test.js +58 -0
  37. package/dist/__tests__/agents/agentStateMachine.test.js.map +1 -0
  38. package/dist/__tests__/agents/agentTaskPersistence.test.js +156 -0
  39. package/dist/__tests__/agents/agentTaskPersistence.test.js.map +1 -0
  40. package/dist/__tests__/agents/agentTools.test.js +69 -0
  41. package/dist/__tests__/agents/agentTools.test.js.map +1 -0
  42. package/dist/__tests__/agents/agentTransform.test.js +779 -0
  43. package/dist/__tests__/agents/agentTransform.test.js.map +1 -0
  44. package/dist/__tests__/agents/analysisPlanGenStep.test.js +157 -0
  45. package/dist/__tests__/agents/analysisPlanGenStep.test.js.map +1 -0
  46. package/dist/__tests__/agents/answerOnlyCompletion.test.js +75 -0
  47. package/dist/__tests__/agents/answerOnlyCompletion.test.js.map +1 -0
  48. package/dist/__tests__/agents/decideNextAction.test.js +1662 -0
  49. package/dist/__tests__/agents/decideNextAction.test.js.map +1 -0
  50. package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js +258 -0
  51. package/dist/__tests__/agents/deriveFocusFromSearchStep.test.js.map +1 -0
  52. package/dist/__tests__/agents/evidenceVerifierStep.test.js +113 -0
  53. package/dist/__tests__/agents/evidenceVerifierStep.test.js.map +1 -0
  54. package/dist/__tests__/agents/executionPolicyResolver.test.js +208 -0
  55. package/dist/__tests__/agents/executionPolicyResolver.test.js.map +1 -0
  56. package/dist/__tests__/agents/fileCheckStep.test.js +299 -0
  57. package/dist/__tests__/agents/fileCheckStep.test.js.map +1 -0
  58. package/dist/__tests__/agents/giveUpEvaluatorStep.test.js +35 -0
  59. package/dist/__tests__/agents/giveUpEvaluatorStep.test.js.map +1 -0
  60. package/dist/__tests__/agents/guardState.test.js +297 -0
  61. package/dist/__tests__/agents/guardState.test.js.map +1 -0
  62. package/dist/__tests__/agents/mainAgentHeuristics.test.js +72 -0
  63. package/dist/__tests__/agents/mainAgentHeuristics.test.js.map +1 -0
  64. package/dist/__tests__/agents/objectiveEvaluatorStep.test.js +60 -0
  65. package/dist/__tests__/agents/objectiveEvaluatorStep.test.js.map +1 -0
  66. package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js +207 -0
  67. package/dist/__tests__/agents/outerLoopRecoveryEvaluator.test.js.map +1 -0
  68. package/dist/__tests__/agents/prompting.test.js +363 -0
  69. package/dist/__tests__/agents/prompting.test.js.map +1 -0
  70. package/dist/__tests__/agents/readinessGateStep.test.js +180 -0
  71. package/dist/__tests__/agents/readinessGateStep.test.js.map +1 -0
  72. package/dist/__tests__/agents/reasonNextStep.test.js +56 -0
  73. package/dist/__tests__/agents/reasonNextStep.test.js.map +1 -0
  74. package/dist/__tests__/agents/reasonNextTaskStep.test.js +284 -0
  75. package/dist/__tests__/agents/reasonNextTaskStep.test.js.map +1 -0
  76. package/dist/__tests__/agents/resolveAgentTargetClassification.test.js +170 -0
  77. package/dist/__tests__/agents/resolveAgentTargetClassification.test.js.map +1 -0
  78. package/dist/__tests__/agents/resolveProgressState.test.js +526 -0
  79. package/dist/__tests__/agents/resolveProgressState.test.js.map +1 -0
  80. package/dist/__tests__/agents/resumeCheckpoint.test.js +50 -0
  81. package/dist/__tests__/agents/resumeCheckpoint.test.js.map +1 -0
  82. package/dist/__tests__/agents/routingDecisionStep.test.js +134 -0
  83. package/dist/__tests__/agents/routingDecisionStep.test.js.map +1 -0
  84. package/dist/__tests__/agents/scopeClassificationStep.test.js +118 -0
  85. package/dist/__tests__/agents/scopeClassificationStep.test.js.map +1 -0
  86. package/dist/__tests__/agents/searchContext.test.js +97 -0
  87. package/dist/__tests__/agents/searchContext.test.js.map +1 -0
  88. package/dist/__tests__/agents/selectRelevantSourcesStep.test.js +73 -0
  89. package/dist/__tests__/agents/selectRelevantSourcesStep.test.js.map +1 -0
  90. package/dist/__tests__/agents/structuredOutput.test.js +45 -0
  91. package/dist/__tests__/agents/structuredOutput.test.js.map +1 -0
  92. package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js +59 -0
  93. package/dist/__tests__/agents/transformPlanGenStep.fallback.test.js.map +1 -0
  94. package/dist/__tests__/agents/transformPlanGenStep.test.js +92 -0
  95. package/dist/__tests__/agents/transformPlanGenStep.test.js.map +1 -0
  96. package/dist/__tests__/agents/understandIntentStep.test.js +237 -0
  97. package/dist/__tests__/agents/understandIntentStep.test.js.map +1 -0
  98. package/dist/__tests__/agents/understandResumeContext.test.js +65 -0
  99. package/dist/__tests__/agents/understandResumeContext.test.js.map +1 -0
  100. package/dist/__tests__/agents/understandScope.test.js +227 -0
  101. package/dist/__tests__/agents/understandScope.test.js.map +1 -0
  102. package/dist/__tests__/agents/validateChangesStep.test.js +52 -0
  103. package/dist/__tests__/agents/validateChangesStep.test.js.map +1 -0
  104. package/dist/__tests__/askCommandTaskBinding.test.js +176 -0
  105. package/dist/__tests__/askCommandTaskBinding.test.js.map +1 -0
  106. package/dist/__tests__/commandVisibility.test.js +25 -0
  107. package/dist/__tests__/commandVisibility.test.js.map +1 -0
  108. package/dist/__tests__/config.devOutput.test.js +82 -0
  109. package/dist/__tests__/config.devOutput.test.js.map +1 -0
  110. package/dist/__tests__/currentContext.test.js +43 -0
  111. package/dist/__tests__/currentContext.test.js.map +1 -0
  112. package/dist/__tests__/daemonWorker.test.js +51 -0
  113. package/dist/__tests__/daemonWorker.test.js.map +1 -0
  114. package/dist/__tests__/dialogState.test.js +113 -0
  115. package/dist/__tests__/dialogState.test.js.map +1 -0
  116. package/dist/__tests__/evalCommands.test.js +506 -0
  117. package/dist/__tests__/evalCommands.test.js.map +1 -0
  118. package/dist/__tests__/evalCommandsSummary.test.js +68 -0
  119. package/dist/__tests__/evalCommandsSummary.test.js.map +1 -0
  120. package/dist/__tests__/example.test.js +1 -0
  121. package/dist/__tests__/example.test.js.map +1 -0
  122. package/dist/__tests__/factory.commitCommand.test.js +45 -0
  123. package/dist/__tests__/factory.commitCommand.test.js.map +1 -0
  124. package/dist/__tests__/factory.devOutputCommand.test.js +122 -0
  125. package/dist/__tests__/factory.devOutputCommand.test.js.map +1 -0
  126. package/dist/__tests__/factory.evalCommands.test.js +38 -0
  127. package/dist/__tests__/factory.evalCommands.test.js.map +1 -0
  128. package/dist/__tests__/factory.planCommand.test.js +35 -0
  129. package/dist/__tests__/factory.planCommand.test.js.map +1 -0
  130. package/dist/__tests__/factory.setupCommand.test.js +34 -0
  131. package/dist/__tests__/factory.setupCommand.test.js.map +1 -0
  132. package/dist/__tests__/factory.statusCommand.test.js +54 -0
  133. package/dist/__tests__/factory.statusCommand.test.js.map +1 -0
  134. package/dist/__tests__/fileRules/queryTokenRules.test.js +35 -0
  135. package/dist/__tests__/fileRules/queryTokenRules.test.js.map +1 -0
  136. package/dist/__tests__/fileRules/searchPathClassification.test.js +57 -0
  137. package/dist/__tests__/fileRules/searchPathClassification.test.js.map +1 -0
  138. package/dist/__tests__/generate.ollamaRecovery.test.js +344 -0
  139. package/dist/__tests__/generate.ollamaRecovery.test.js.map +1 -0
  140. package/dist/__tests__/index.modelStartup.test.js +24 -0
  141. package/dist/__tests__/index.modelStartup.test.js.map +1 -0
  142. package/dist/__tests__/indexCmd.test.js +85 -0
  143. package/dist/__tests__/indexCmd.test.js.map +1 -0
  144. package/dist/__tests__/indexSlashCommand.test.js +50 -0
  145. package/dist/__tests__/indexSlashCommand.test.js.map +1 -0
  146. package/dist/__tests__/ollamaService.test.js +103 -0
  147. package/dist/__tests__/ollamaService.test.js.map +1 -0
  148. package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js +68 -0
  149. package/dist/__tests__/pipeline/modules/codeTransformModule.small-file.test.js.map +1 -0
  150. package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js +68 -0
  151. package/dist/__tests__/pipeline/modules/commitSuggesterModule.test.js.map +1 -0
  152. package/dist/__tests__/pipeline/modules/fileSearchModule.test.js +284 -0
  153. package/dist/__tests__/pipeline/modules/fileSearchModule.test.js.map +1 -0
  154. package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js +1139 -0
  155. package/dist/__tests__/pipeline/modules/finalAnswerModule.test.js.map +1 -0
  156. package/dist/__tests__/pipeline/modules/readFileModule.test.js +146 -0
  157. package/dist/__tests__/pipeline/modules/readFileModule.test.js.map +1 -0
  158. package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js +192 -0
  159. package/dist/__tests__/pipeline/modules/semanticAnalysisModule.test.js.map +1 -0
  160. package/dist/__tests__/repoIdentity.test.js +31 -0
  161. package/dist/__tests__/repoIdentity.test.js.map +1 -0
  162. package/dist/__tests__/resumeContext.test.js +87 -0
  163. package/dist/__tests__/resumeContext.test.js.map +1 -0
  164. package/dist/__tests__/resumeState.test.js +239 -0
  165. package/dist/__tests__/resumeState.test.js.map +1 -0
  166. package/dist/__tests__/search/SearchOrchestrator.test.js +836 -0
  167. package/dist/__tests__/search/SearchOrchestrator.test.js.map +1 -0
  168. package/dist/__tests__/shellDialogUi.test.js +52 -0
  169. package/dist/__tests__/shellDialogUi.test.js.map +1 -0
  170. package/dist/__tests__/shellSession.test.js +102 -0
  171. package/dist/__tests__/shellSession.test.js.map +1 -0
  172. package/dist/__tests__/statusOwner.test.js +215 -0
  173. package/dist/__tests__/statusOwner.test.js.map +1 -0
  174. package/dist/__tests__/testing/contextEval.test.js +244 -0
  175. package/dist/__tests__/testing/contextEval.test.js.map +1 -0
  176. package/dist/__tests__/testing/harnessArtifacts.test.js +124 -0
  177. package/dist/__tests__/testing/harnessArtifacts.test.js.map +1 -0
  178. package/dist/__tests__/testing/llmTraceSession.test.js +67 -0
  179. package/dist/__tests__/testing/llmTraceSession.test.js.map +1 -0
  180. package/dist/__tests__/testing/registerDevCliCommands.test.js +35 -0
  181. package/dist/__tests__/testing/registerDevCliCommands.test.js.map +1 -0
  182. package/dist/__tests__/testing/runDiagnosis.test.js +159 -0
  183. package/dist/__tests__/testing/runDiagnosis.test.js.map +1 -0
  184. package/dist/__tests__/testing/runtimeLogReader.test.js +66 -0
  185. package/dist/__tests__/testing/runtimeLogReader.test.js.map +1 -0
  186. package/dist/__tests__/testing/testCommands.test.js +53 -0
  187. package/dist/__tests__/testing/testCommands.test.js.map +1 -0
  188. package/dist/__tests__/utils/compileSearchQuery.test.js +38 -0
  189. package/dist/__tests__/utils/compileSearchQuery.test.js.map +1 -0
  190. package/dist/__tests__/utils/consolePresentation.test.js +105 -0
  191. package/dist/__tests__/utils/consolePresentation.test.js.map +1 -0
  192. package/dist/__tests__/utils/extractFileReferences.test.js +41 -0
  193. package/dist/__tests__/utils/extractFileReferences.test.js.map +1 -0
  194. package/dist/__tests__/utils/log.test.js +34 -0
  195. package/dist/__tests__/utils/log.test.js.map +1 -0
  196. package/dist/__tests__/utils/runtimeLogger.test.js +200 -0
  197. package/dist/__tests__/utils/runtimeLogger.test.js.map +1 -0
  198. package/dist/__tests__/utils/spinner.test.js +31 -0
  199. package/dist/__tests__/utils/spinner.test.js.map +1 -0
  200. package/dist/__tests__/utils/verifyFocusPreference.test.js +41 -0
  201. package/dist/__tests__/utils/verifyFocusPreference.test.js.map +1 -0
  202. package/dist/agent/actions/index.js +301 -0
  203. package/dist/agent/actions/index.js.map +1 -0
  204. package/dist/agent/actions/normalize.js +360 -0
  205. package/dist/agent/actions/normalize.js.map +1 -0
  206. package/dist/agent/actions/schemas.js +129 -0
  207. package/dist/agent/actions/schemas.js.map +1 -0
  208. package/dist/agent/evidence/index.js +320 -0
  209. package/dist/agent/evidence/index.js.map +1 -0
  210. package/dist/agent/feedback/index.js +187 -0
  211. package/dist/agent/feedback/index.js.map +1 -0
  212. package/dist/agent/finalization/index.js +35 -0
  213. package/dist/agent/finalization/index.js.map +1 -0
  214. package/dist/agent/index.js +126 -0
  215. package/dist/agent/index.js.map +1 -0
  216. package/dist/agent/logging/index.js +350 -0
  217. package/dist/agent/logging/index.js.map +1 -0
  218. package/dist/agent/persistence/boot.js +58 -0
  219. package/dist/agent/persistence/boot.js.map +1 -0
  220. package/dist/agent/persistence/currentTask.js +36 -0
  221. package/dist/agent/persistence/currentTask.js.map +1 -0
  222. package/dist/agent/persistence/hydrate.js +42 -0
  223. package/dist/agent/persistence/hydrate.js.map +1 -0
  224. package/dist/agent/persistence/index.js +15 -0
  225. package/dist/agent/persistence/index.js.map +1 -0
  226. package/dist/agent/persistence/snapshots.js +97 -0
  227. package/dist/agent/persistence/snapshots.js.map +1 -0
  228. package/dist/agent/persistence/steps.js +95 -0
  229. package/dist/agent/persistence/steps.js.map +1 -0
  230. package/dist/agent/persistence/tasks.js +195 -0
  231. package/dist/agent/persistence/tasks.js.map +1 -0
  232. package/dist/agent/persistence/turns.js +92 -0
  233. package/dist/agent/persistence/turns.js.map +1 -0
  234. package/dist/agent/policy/ambiguityResolution.js +226 -0
  235. package/dist/agent/policy/ambiguityResolution.js.map +1 -0
  236. package/dist/agent/policy/contracts.js +2 -0
  237. package/dist/agent/policy/contracts.js.map +1 -0
  238. package/dist/agent/policy/coveragePolicy.js +309 -0
  239. package/dist/agent/policy/coveragePolicy.js.map +1 -0
  240. package/dist/agent/policy/endDecisionPolicy.js +31 -0
  241. package/dist/agent/policy/endDecisionPolicy.js.map +1 -0
  242. package/dist/agent/policy/index.js +344 -0
  243. package/dist/agent/policy/index.js.map +1 -0
  244. package/dist/agent/policy/loopReview.js +778 -0
  245. package/dist/agent/policy/loopReview.js.map +1 -0
  246. package/dist/agent/policy/readinessPolicy.js +108 -0
  247. package/dist/agent/policy/readinessPolicy.js.map +1 -0
  248. package/dist/agent/policy/resolutionPipeline.js +356 -0
  249. package/dist/agent/policy/resolutionPipeline.js.map +1 -0
  250. package/dist/agent/policy/targetClassification.js +33 -0
  251. package/dist/agent/policy/targetClassification.js.map +1 -0
  252. package/dist/agent/prompting/actionChoice.js +90 -0
  253. package/dist/agent/prompting/actionChoice.js.map +1 -0
  254. package/dist/agent/prompting/finalAnswer.js +38 -0
  255. package/dist/agent/prompting/finalAnswer.js.map +1 -0
  256. package/dist/agent/prompting/index.js +14 -0
  257. package/dist/agent/prompting/index.js.map +1 -0
  258. package/dist/agent/prompting/plan.js +59 -0
  259. package/dist/agent/prompting/plan.js.map +1 -0
  260. package/dist/agent/prompting/transform.js +175 -0
  261. package/dist/agent/prompting/transform.js.map +1 -0
  262. package/dist/agent/prompting/understand.js +70 -0
  263. package/dist/agent/prompting/understand.js.map +1 -0
  264. package/dist/agent/read/freshness.js +29 -0
  265. package/dist/agent/read/freshness.js.map +1 -0
  266. package/dist/agent/read/fullReadPrompt.js +43 -0
  267. package/dist/agent/read/fullReadPrompt.js.map +1 -0
  268. package/dist/agent/read/index.js +140 -0
  269. package/dist/agent/read/index.js.map +1 -0
  270. package/dist/agent/read/persistence.js +88 -0
  271. package/dist/agent/read/persistence.js.map +1 -0
  272. package/dist/agent/read/summarizeReadEvidence.js +733 -0
  273. package/dist/agent/read/summarizeReadEvidence.js.map +1 -0
  274. package/dist/agent/read/targetResolution.js +126 -0
  275. package/dist/agent/read/targetResolution.js.map +1 -0
  276. package/dist/agent/resume/checkpoint.js +41 -0
  277. package/dist/agent/resume/checkpoint.js.map +1 -0
  278. package/dist/agent/runtime/lifecycle.js +67 -0
  279. package/dist/agent/runtime/lifecycle.js.map +1 -0
  280. package/dist/agent/runtime/progress.js +178 -0
  281. package/dist/agent/runtime/progress.js.map +1 -0
  282. package/dist/agent/runtime/runAgentLoop.js +402 -0
  283. package/dist/agent/runtime/runAgentLoop.js.map +1 -0
  284. package/dist/agent/runtime/runAgentPlanOnly.js +127 -0
  285. package/dist/agent/runtime/runAgentPlanOnly.js.map +1 -0
  286. package/dist/agent/runtime/understand.js +336 -0
  287. package/dist/agent/runtime/understand.js.map +1 -0
  288. package/dist/agent/search/batchPlanner.js +274 -0
  289. package/dist/agent/search/batchPlanner.js.map +1 -0
  290. package/dist/agent/search/candidateRetentionPolicy.js +184 -0
  291. package/dist/agent/search/candidateRetentionPolicy.js.map +1 -0
  292. package/dist/agent/search/directory.js +51 -0
  293. package/dist/agent/search/directory.js.map +1 -0
  294. package/dist/agent/search/exactTarget.js +151 -0
  295. package/dist/agent/search/exactTarget.js.map +1 -0
  296. package/dist/agent/search/fragment.js +110 -0
  297. package/dist/agent/search/fragment.js.map +1 -0
  298. package/dist/agent/search/index.js +166 -0
  299. package/dist/agent/search/index.js.map +1 -0
  300. package/dist/agent/search/laneClassifier.js +119 -0
  301. package/dist/agent/search/laneClassifier.js.map +1 -0
  302. package/dist/agent/search/limits.js +10 -0
  303. package/dist/agent/search/limits.js.map +1 -0
  304. package/dist/agent/search/ranking.js +22 -0
  305. package/dist/agent/search/ranking.js.map +1 -0
  306. package/dist/agent/search/regex.js +83 -0
  307. package/dist/agent/search/regex.js.map +1 -0
  308. package/dist/agent/search/routePolicy.js +11 -0
  309. package/dist/agent/search/routePolicy.js.map +1 -0
  310. package/dist/agent/search/searchContext.js +128 -0
  311. package/dist/agent/search/searchContext.js.map +1 -0
  312. package/dist/agent/search/semantic.js +113 -0
  313. package/dist/agent/search/semantic.js.map +1 -0
  314. package/dist/agent/search/semanticIndexSearch.js +202 -0
  315. package/dist/agent/search/semanticIndexSearch.js.map +1 -0
  316. package/dist/agent/search/shared.js +283 -0
  317. package/dist/agent/search/shared.js.map +1 -0
  318. package/dist/agent/search/shell.js +202 -0
  319. package/dist/agent/search/shell.js.map +1 -0
  320. package/dist/agent/search/snippetEvidence.js +57 -0
  321. package/dist/agent/search/snippetEvidence.js.map +1 -0
  322. package/dist/agent/search/types.js +2 -0
  323. package/dist/agent/search/types.js.map +1 -0
  324. package/dist/agent/state/index.js +99 -0
  325. package/dist/agent/state/index.js.map +1 -0
  326. package/dist/agent/state/memory.js +56 -0
  327. package/dist/agent/state/memory.js.map +1 -0
  328. package/dist/agent/structuredOutput/index.js +28 -0
  329. package/dist/agent/structuredOutput/index.js.map +1 -0
  330. package/dist/agent/tools/index.js +199 -0
  331. package/dist/agent/tools/index.js.map +1 -0
  332. package/dist/agent/transform/index.js +519 -0
  333. package/dist/agent/transform/index.js.map +1 -0
  334. package/dist/agent/transform/syntax.js +49 -0
  335. package/dist/agent/transform/syntax.js.map +1 -0
  336. package/dist/agent/types.js +20 -0
  337. package/dist/agent/types.js.map +1 -0
  338. package/dist/agents/actionRegistry.js +114 -0
  339. package/dist/agents/actionRegistry.js.map +1 -0
  340. package/dist/agents/agent.js +5 -0
  341. package/dist/agents/agent.js.map +1 -0
  342. package/dist/agents/agentActions.js +5 -0
  343. package/dist/agents/agentActions.js.map +1 -0
  344. package/dist/agents/agentEvidence.js +5 -0
  345. package/dist/agents/agentEvidence.js.map +1 -0
  346. package/dist/agents/agentFeedback.js +5 -0
  347. package/dist/agents/agentFeedback.js.map +1 -0
  348. package/dist/agents/agentLogging.js +5 -0
  349. package/dist/agents/agentLogging.js.map +1 -0
  350. package/dist/agents/agentLoop.js +5 -0
  351. package/dist/agents/agentLoop.js.map +1 -0
  352. package/dist/agents/agentMemory.js +5 -0
  353. package/dist/agents/agentMemory.js.map +1 -0
  354. package/dist/agents/agentPlanMode.js +5 -0
  355. package/dist/agents/agentPlanMode.js.map +1 -0
  356. package/dist/agents/agentPolicyState.js +5 -0
  357. package/dist/agents/agentPolicyState.js.map +1 -0
  358. package/dist/agents/agentProgress.js +93 -0
  359. package/dist/agents/agentProgress.js.map +1 -0
  360. package/dist/agents/agentSchemas.js +5 -0
  361. package/dist/agents/agentSchemas.js.map +1 -0
  362. package/dist/agents/agentSearchScoring.js +5 -0
  363. package/dist/agents/agentSearchScoring.js.map +1 -0
  364. package/dist/agents/agentStateMachine.js +5 -0
  365. package/dist/agents/agentStateMachine.js.map +1 -0
  366. package/dist/agents/agentTools.js +5 -0
  367. package/dist/agents/agentTools.js.map +1 -0
  368. package/dist/agents/agentTypes.js +5 -0
  369. package/dist/agents/agentTypes.js.map +1 -0
  370. package/dist/agents/agentUnderstand.js +5 -0
  371. package/dist/agents/agentUnderstand.js.map +1 -0
  372. package/dist/agents/analysisPlanGenStep.js +194 -17
  373. package/dist/agents/analysisPlanGenStep.js.map +1 -0
  374. package/dist/agents/answerOnlyCompletion.js +32 -0
  375. package/dist/agents/answerOnlyCompletion.js.map +1 -0
  376. package/dist/agents/collaboratorStep.js +1 -0
  377. package/dist/agents/collaboratorStep.js.map +1 -0
  378. package/dist/agents/decideNextAction.js +444 -0
  379. package/dist/agents/decideNextAction.js.map +1 -0
  380. package/dist/agents/deriveFocusFromSearchStep.js +83 -0
  381. package/dist/agents/deriveFocusFromSearchStep.js.map +1 -0
  382. package/dist/agents/evidenceVerifierStep.js +104 -13
  383. package/dist/agents/evidenceVerifierStep.js.map +1 -0
  384. package/dist/agents/fileCheckStep.js +381 -12
  385. package/dist/agents/fileCheckStep.js.map +1 -0
  386. package/dist/agents/giveUpEvaluatorStep.js +63 -0
  387. package/dist/agents/giveUpEvaluatorStep.js.map +1 -0
  388. package/dist/agents/guardPolicy.js +20 -0
  389. package/dist/agents/guardPolicy.js.map +1 -0
  390. package/dist/agents/guards/executionPolicyResolver.js +165 -0
  391. package/dist/agents/guards/executionPolicyResolver.js.map +1 -0
  392. package/dist/agents/guards/guardState.js +195 -0
  393. package/dist/agents/guards/guardState.js.map +1 -0
  394. package/dist/agents/guards/resolveProgressState.js +403 -0
  395. package/dist/agents/guards/resolveProgressState.js.map +1 -0
  396. package/dist/agents/infoPlanGenStep.js +66 -8
  397. package/dist/agents/infoPlanGenStep.js.map +1 -0
  398. package/dist/agents/integrateFeedbackStep.js +1 -0
  399. package/dist/agents/integrateFeedbackStep.js.map +1 -0
  400. package/dist/agents/iterationFileSelector.js +8 -7
  401. package/dist/agents/iterationFileSelector.js.map +1 -0
  402. package/dist/agents/mainAgentActivityLog.js +85 -0
  403. package/dist/agents/mainAgentActivityLog.js.map +1 -0
  404. package/dist/agents/mainAgentHeuristics.js +173 -0
  405. package/dist/agents/mainAgentHeuristics.js.map +1 -0
  406. package/dist/agents/mainAgentVerify.js +159 -0
  407. package/dist/agents/mainAgentVerify.js.map +1 -0
  408. package/dist/agents/objectiveEvaluatorStep.js +103 -0
  409. package/dist/agents/objectiveEvaluatorStep.js.map +1 -0
  410. package/dist/agents/outerLoopRecoveryEvaluator.js +108 -0
  411. package/dist/agents/outerLoopRecoveryEvaluator.js.map +1 -0
  412. package/dist/agents/readinessGateStep.js +95 -9
  413. package/dist/agents/readinessGateStep.js.map +1 -0
  414. package/dist/agents/reasonNextStep.js +9 -8
  415. package/dist/agents/reasonNextStep.js.map +1 -0
  416. package/dist/agents/reasonNextTaskStep.js +267 -144
  417. package/dist/agents/reasonNextTaskStep.js.map +1 -0
  418. package/dist/agents/researchPlanGenStep.js +61 -25
  419. package/dist/agents/researchPlanGenStep.js.map +1 -0
  420. package/dist/agents/resolveAgentTargetClassification.js +5 -0
  421. package/dist/agents/resolveAgentTargetClassification.js.map +1 -0
  422. package/dist/agents/resolveExecutionModeStep.js +1 -0
  423. package/dist/agents/resolveExecutionModeStep.js.map +1 -0
  424. package/dist/agents/resolveExplicitTargetsStep.js +74 -0
  425. package/dist/agents/resolveExplicitTargetsStep.js.map +1 -0
  426. package/dist/agents/routingDecisionStep.js +58 -11
  427. package/dist/agents/routingDecisionStep.js.map +1 -0
  428. package/dist/agents/scopeClassificationStep.js +66 -3
  429. package/dist/agents/scopeClassificationStep.js.map +1 -0
  430. package/dist/agents/selectRelevantSourcesStep.js +13 -5
  431. package/dist/agents/selectRelevantSourcesStep.js.map +1 -0
  432. package/dist/agents/structuralPreloadStep.js +3 -4
  433. package/dist/agents/structuralPreloadStep.js.map +1 -0
  434. package/dist/agents/transformPlanGenStep.js +105 -18
  435. package/dist/agents/transformPlanGenStep.js.map +1 -0
  436. package/dist/agents/understandIntentStep.js +237 -17
  437. package/dist/agents/understandIntentStep.js.map +1 -0
  438. package/dist/agents/validateChangesStep.js +16 -2
  439. package/dist/agents/validateChangesStep.js.map +1 -0
  440. package/dist/agents/writeFileStep.js +1 -0
  441. package/dist/agents/writeFileStep.js.map +1 -0
  442. package/dist/commands/AskCmd.js +139 -44
  443. package/dist/commands/AskCmd.js.map +1 -0
  444. package/dist/commands/BackupCmd.js +1 -0
  445. package/dist/commands/BackupCmd.js.map +1 -0
  446. package/dist/commands/ChangeLogUpdateCmd.js +1 -0
  447. package/dist/commands/ChangeLogUpdateCmd.js.map +1 -0
  448. package/dist/commands/CommitSuggesterCmd.js +55 -13
  449. package/dist/commands/CommitSuggesterCmd.js.map +1 -0
  450. package/dist/commands/DaemonCmd.js +52 -14
  451. package/dist/commands/DaemonCmd.js.map +1 -0
  452. package/dist/commands/DeleteIndex.js +1 -0
  453. package/dist/commands/DeleteIndex.js.map +1 -0
  454. package/dist/commands/EvalReportCmd.js +374 -0
  455. package/dist/commands/EvalReportCmd.js.map +1 -0
  456. package/dist/commands/FindCmd.js +1 -0
  457. package/dist/commands/FindCmd.js.map +1 -0
  458. package/dist/commands/GitCmd.js +1 -0
  459. package/dist/commands/GitCmd.js.map +1 -0
  460. package/dist/commands/IndexCmd.js +11 -79
  461. package/dist/commands/IndexCmd.js.map +1 -0
  462. package/dist/commands/InspectCmd.js +1 -0
  463. package/dist/commands/InspectCmd.js.map +1 -0
  464. package/dist/commands/ModelCmd.js +24 -0
  465. package/dist/commands/ModelCmd.js.map +1 -0
  466. package/dist/commands/ReadlineSingleton.js +1 -0
  467. package/dist/commands/ReadlineSingleton.js.map +1 -0
  468. package/dist/commands/ResetDbCmd.js +18 -1
  469. package/dist/commands/ResetDbCmd.js.map +1 -0
  470. package/dist/commands/ReviewCmd.js +1 -0
  471. package/dist/commands/ReviewCmd.js.map +1 -0
  472. package/dist/commands/StatusCmd.js +22 -0
  473. package/dist/commands/StatusCmd.js.map +1 -0
  474. package/dist/commands/StopDaemonCmd.js +1 -0
  475. package/dist/commands/StopDaemonCmd.js.map +1 -0
  476. package/dist/commands/SummaryCmd.js +1 -0
  477. package/dist/commands/SummaryCmd.js.map +1 -0
  478. package/dist/commands/SwitchCmd.js +9 -15
  479. package/dist/commands/SwitchCmd.js.map +1 -0
  480. package/dist/commands/TasksCmd.js +142 -57
  481. package/dist/commands/TasksCmd.js.map +1 -0
  482. package/dist/commands/TestCmd.js +66 -0
  483. package/dist/commands/TestCmd.js.map +1 -0
  484. package/dist/commands/WorkflowCmd.js +1 -0
  485. package/dist/commands/WorkflowCmd.js.map +1 -0
  486. package/dist/commands/commandVisibility.js +27 -0
  487. package/dist/commands/commandVisibility.js.map +1 -0
  488. package/dist/commands/evalCommands.js +1337 -0
  489. package/dist/commands/evalCommands.js.map +1 -0
  490. package/dist/commands/factory.js +206 -38
  491. package/dist/commands/factory.js.map +1 -0
  492. package/dist/config.js +62 -11
  493. package/dist/config.js.map +1 -0
  494. package/dist/constants.js +21 -3
  495. package/dist/constants.js.map +1 -0
  496. package/dist/context.js +33 -32
  497. package/dist/context.js.map +1 -0
  498. package/dist/daemon/daemonQueues.js +1 -20
  499. package/dist/daemon/daemonQueues.js.map +1 -0
  500. package/dist/daemon/daemonWorker.js +26 -37
  501. package/dist/daemon/daemonWorker.js.map +1 -0
  502. package/dist/daemon/generateSummaries.js +1 -0
  503. package/dist/daemon/generateSummaries.js.map +1 -0
  504. package/dist/daemon/runFolderCapsuleBatch.js +1 -0
  505. package/dist/daemon/runFolderCapsuleBatch.js.map +1 -0
  506. package/dist/daemon/runIndexingBatch.js +1 -0
  507. package/dist/daemon/runIndexingBatch.js.map +1 -0
  508. package/dist/daemon/runKgBatch.js +9 -1
  509. package/dist/daemon/runKgBatch.js.map +1 -0
  510. package/dist/db/backup.js +1 -0
  511. package/dist/db/backup.js.map +1 -0
  512. package/dist/db/client.js +18 -3
  513. package/dist/db/client.js.map +1 -0
  514. package/dist/db/fileIndex.js +110 -152
  515. package/dist/db/fileIndex.js.map +1 -0
  516. package/dist/db/functionExtractors/extractFromJava.js +1 -0
  517. package/dist/db/functionExtractors/extractFromJava.js.map +1 -0
  518. package/dist/db/functionExtractors/extractFromJs.js +1 -0
  519. package/dist/db/functionExtractors/extractFromJs.js.map +1 -0
  520. package/dist/db/functionExtractors/extractFromTs.js +1 -0
  521. package/dist/db/functionExtractors/extractFromTs.js.map +1 -0
  522. package/dist/db/functionExtractors/extractFromXML.js +1 -0
  523. package/dist/db/functionExtractors/extractFromXML.js.map +1 -0
  524. package/dist/db/functionExtractors/index.js +1 -0
  525. package/dist/db/functionExtractors/index.js.map +1 -0
  526. package/dist/db/functionIndex.js +9 -0
  527. package/dist/db/functionIndex.js.map +1 -0
  528. package/dist/db/schema.js +314 -99
  529. package/dist/db/schema.js.map +1 -0
  530. package/dist/db/sqlTemplates.js +1 -0
  531. package/dist/db/sqlTemplates.js.map +1 -0
  532. package/dist/fileRules/builtins.js +1 -0
  533. package/dist/fileRules/builtins.js.map +1 -0
  534. package/dist/fileRules/classifyFile.js +1 -0
  535. package/dist/fileRules/classifyFile.js.map +1 -0
  536. package/dist/fileRules/codeAllowedExtensions.js +1 -0
  537. package/dist/fileRules/codeAllowedExtensions.js.map +1 -0
  538. package/dist/fileRules/detectFileType.js +1 -0
  539. package/dist/fileRules/detectFileType.js.map +1 -0
  540. package/dist/fileRules/fileClassifier.js +1 -0
  541. package/dist/fileRules/fileClassifier.js.map +1 -0
  542. package/dist/fileRules/fileExceptions.js +1 -0
  543. package/dist/fileRules/fileExceptions.js.map +1 -0
  544. package/dist/fileRules/ignoredExtensions.js +1 -0
  545. package/dist/fileRules/ignoredExtensions.js.map +1 -0
  546. package/dist/fileRules/ignoredPaths.js +48 -5
  547. package/dist/fileRules/ignoredPaths.js.map +1 -0
  548. package/dist/fileRules/queryTokenRules.js +176 -0
  549. package/dist/fileRules/queryTokenRules.js.map +1 -0
  550. package/dist/fileRules/searchPathClassification.js +58 -0
  551. package/dist/fileRules/searchPathClassification.js.map +1 -0
  552. package/dist/fileRules/shouldIgnoreFiles.js +1 -0
  553. package/dist/fileRules/shouldIgnoreFiles.js.map +1 -0
  554. package/dist/fileRules/stopWords.js +9 -0
  555. package/dist/fileRules/stopWords.js.map +1 -0
  556. package/dist/fileRules/wellKnownRepoFiles.js +1 -0
  557. package/dist/fileRules/wellKnownRepoFiles.js.map +1 -0
  558. package/dist/git/commitSummary.js +227 -0
  559. package/dist/git/commitSummary.js.map +1 -0
  560. package/dist/github/api.js +1 -0
  561. package/dist/github/api.js.map +1 -0
  562. package/dist/github/auth.js +1 -0
  563. package/dist/github/auth.js.map +1 -0
  564. package/dist/github/github.js +1 -0
  565. package/dist/github/github.js.map +1 -0
  566. package/dist/github/githubAuthCheck.js +1 -0
  567. package/dist/github/githubAuthCheck.js.map +1 -0
  568. package/dist/github/postComments.js +1 -0
  569. package/dist/github/postComments.js.map +1 -0
  570. package/dist/github/repo.js +15 -24
  571. package/dist/github/repo.js.map +1 -0
  572. package/dist/github/token.js +1 -0
  573. package/dist/github/token.js.map +1 -0
  574. package/dist/github/types.js +1 -0
  575. package/dist/github/types.js.map +1 -0
  576. package/dist/index.js +318 -37
  577. package/dist/index.js.map +1 -0
  578. package/dist/lib/generate.js +264 -20
  579. package/dist/lib/generate.js.map +1 -0
  580. package/dist/lib/generateFolderCapsules.js +1 -0
  581. package/dist/lib/generateFolderCapsules.js.map +1 -0
  582. package/dist/lib/ollamaModelPolicy.js +59 -0
  583. package/dist/lib/ollamaModelPolicy.js.map +1 -0
  584. package/dist/lib/spinner.js +29 -9
  585. package/dist/lib/spinner.js.map +1 -0
  586. package/dist/modelSetup.js +25 -78
  587. package/dist/modelSetup.js.map +1 -0
  588. package/dist/pipeline/modules/changeLogModule.js +10 -1
  589. package/dist/pipeline/modules/changeLogModule.js.map +1 -0
  590. package/dist/pipeline/modules/cleanupModule.js +1 -0
  591. package/dist/pipeline/modules/cleanupModule.js.map +1 -0
  592. package/dist/pipeline/modules/codeTransformModule.js +10 -16
  593. package/dist/pipeline/modules/codeTransformModule.js.map +1 -0
  594. package/dist/pipeline/modules/commentModule.js +12 -0
  595. package/dist/pipeline/modules/commentModule.js.map +1 -0
  596. package/dist/pipeline/modules/commitSuggesterModule.js +82 -12
  597. package/dist/pipeline/modules/commitSuggesterModule.js.map +1 -0
  598. package/dist/pipeline/modules/contextReviewModule.js +12 -1
  599. package/dist/pipeline/modules/contextReviewModule.js.map +1 -0
  600. package/dist/pipeline/modules/dialogAnswerModule.js +58 -0
  601. package/dist/pipeline/modules/dialogAnswerModule.js.map +1 -0
  602. package/dist/pipeline/modules/fileSearchModule.js +5 -143
  603. package/dist/pipeline/modules/fileSearchModule.js.map +1 -0
  604. package/dist/pipeline/modules/finalAnswerModule.js +1176 -151
  605. package/dist/pipeline/modules/finalAnswerModule.js.map +1 -0
  606. package/dist/pipeline/modules/kgModule.js +18 -1
  607. package/dist/pipeline/modules/kgModule.js.map +1 -0
  608. package/dist/pipeline/modules/planAnswerModule.js +99 -0
  609. package/dist/pipeline/modules/planAnswerModule.js.map +1 -0
  610. package/dist/pipeline/modules/readFileModule.js +300 -0
  611. package/dist/pipeline/modules/readFileModule.js.map +1 -0
  612. package/dist/pipeline/modules/reviewModule.js +10 -1
  613. package/dist/pipeline/modules/reviewModule.js.map +1 -0
  614. package/dist/pipeline/modules/searchDbModule.js +159 -0
  615. package/dist/pipeline/modules/searchDbModule.js.map +1 -0
  616. package/dist/pipeline/modules/searchListDirectoryModule.js +62 -0
  617. package/dist/pipeline/modules/searchListDirectoryModule.js.map +1 -0
  618. package/dist/pipeline/modules/searchModuleShared.js +71 -0
  619. package/dist/pipeline/modules/searchModuleShared.js.map +1 -0
  620. package/dist/pipeline/modules/searchRegexModule.js +59 -0
  621. package/dist/pipeline/modules/searchRegexModule.js.map +1 -0
  622. package/dist/pipeline/modules/semanticAnalysisModule.js +185 -28
  623. package/dist/pipeline/modules/semanticAnalysisModule.js.map +1 -0
  624. package/dist/pipeline/modules/summaryModule.js +11 -1
  625. package/dist/pipeline/modules/summaryModule.js.map +1 -0
  626. package/dist/pipeline/registry/moduleRegistry.js +9 -0
  627. package/dist/pipeline/registry/moduleRegistry.js.map +1 -0
  628. package/dist/pipeline/runModulePipeline.js +1 -0
  629. package/dist/pipeline/runModulePipeline.js.map +1 -0
  630. package/dist/scripts/dbScriptSupport.js +172 -0
  631. package/dist/scripts/dbScriptSupport.js.map +1 -0
  632. package/dist/scripts/dbcheck.js +173 -267
  633. package/dist/scripts/dbcheck.js.map +1 -0
  634. package/dist/scripts/dboverview.js +161 -0
  635. package/dist/scripts/dboverview.js.map +1 -0
  636. package/dist/scripts/migrateDb.js +1 -0
  637. package/dist/scripts/migrateDb.js.map +1 -0
  638. package/dist/search/SearchOrchestrator.js +928 -0
  639. package/dist/search/SearchOrchestrator.js.map +1 -0
  640. package/dist/search/sharedRankingPolicy.js +283 -0
  641. package/dist/search/sharedRankingPolicy.js.map +1 -0
  642. package/dist/setup/reindexOwner.js +97 -0
  643. package/dist/setup/reindexOwner.js.map +1 -0
  644. package/dist/setup/setupOwner.js +100 -0
  645. package/dist/setup/setupOwner.js.map +1 -0
  646. package/dist/shell/dialogUi.js +81 -0
  647. package/dist/shell/dialogUi.js.map +1 -0
  648. package/dist/shellSession.js +126 -0
  649. package/dist/shellSession.js.map +1 -0
  650. package/dist/status/statusOwner.js +239 -0
  651. package/dist/status/statusOwner.js.map +1 -0
  652. package/dist/testing/contextEval.js +514 -0
  653. package/dist/testing/contextEval.js.map +1 -0
  654. package/dist/testing/fixtures/transform/small-file.input.js +5 -0
  655. package/dist/testing/fixtures/transform/small-file.input.js.map +1 -0
  656. package/dist/testing/harnessArtifacts.js +112 -0
  657. package/dist/testing/harnessArtifacts.js.map +1 -0
  658. package/dist/testing/llmTraceSession.js +67 -0
  659. package/dist/testing/llmTraceSession.js.map +1 -0
  660. package/dist/testing/registerDevCliCommands.js +43 -0
  661. package/dist/testing/registerDevCliCommands.js.map +1 -0
  662. package/dist/testing/runDiagnosis.js +248 -0
  663. package/dist/testing/runDiagnosis.js.map +1 -0
  664. package/dist/testing/runtimeLogReader.js +144 -0
  665. package/dist/testing/runtimeLogReader.js.map +1 -0
  666. package/dist/testing/testCommands.js +35 -303
  667. package/dist/testing/testCommands.js.map +1 -0
  668. package/dist/testing/testRegistry.js +233 -0
  669. package/dist/testing/testRegistry.js.map +1 -0
  670. package/dist/types.js +1 -0
  671. package/dist/types.js.map +1 -0
  672. package/dist/utils/buildContextualPrompt.js +26 -75
  673. package/dist/utils/buildContextualPrompt.js.map +1 -0
  674. package/dist/utils/changeLogPrompt.js +1 -0
  675. package/dist/utils/changeLogPrompt.js.map +1 -0
  676. package/dist/utils/checkModel.js +17 -92
  677. package/dist/utils/checkModel.js.map +1 -0
  678. package/dist/utils/commentMap.js +1 -0
  679. package/dist/utils/commentMap.js.map +1 -0
  680. package/dist/utils/compileSearchQuery.js +23 -9
  681. package/dist/utils/compileSearchQuery.js.map +1 -0
  682. package/dist/utils/consolePresentation.js +208 -0
  683. package/dist/utils/consolePresentation.js.map +1 -0
  684. package/dist/utils/contentUtils.js +17 -2
  685. package/dist/utils/contentUtils.js.map +1 -0
  686. package/dist/utils/debugContext.js +1 -0
  687. package/dist/utils/debugContext.js.map +1 -0
  688. package/dist/utils/dialogState.js +201 -0
  689. package/dist/utils/dialogState.js.map +1 -0
  690. package/dist/utils/editor.js +1 -0
  691. package/dist/utils/editor.js.map +1 -0
  692. package/dist/utils/executionEvidence.js +50 -0
  693. package/dist/utils/executionEvidence.js.map +1 -0
  694. package/dist/utils/extractFileReferences.js +140 -6
  695. package/dist/utils/extractFileReferences.js.map +1 -0
  696. package/dist/utils/fileEvidenceCache.js +50 -0
  697. package/dist/utils/fileEvidenceCache.js.map +1 -0
  698. package/dist/utils/fileTree.js +1 -0
  699. package/dist/utils/fileTree.js.map +1 -0
  700. package/dist/utils/loadRelevantFolderCapsules.js +35 -5
  701. package/dist/utils/loadRelevantFolderCapsules.js.map +1 -0
  702. package/dist/utils/log.js +10 -1
  703. package/dist/utils/log.js.map +1 -0
  704. package/dist/utils/normalizeData.js +1 -0
  705. package/dist/utils/normalizeData.js.map +1 -0
  706. package/dist/utils/ollamaModelStatus.js +28 -0
  707. package/dist/utils/ollamaModelStatus.js.map +1 -0
  708. package/dist/utils/ollamaService.js +294 -0
  709. package/dist/utils/ollamaService.js.map +1 -0
  710. package/dist/utils/outputFormatter.js +1 -0
  711. package/dist/utils/outputFormatter.js.map +1 -0
  712. package/dist/utils/parseTaggedContent.js +1 -0
  713. package/dist/utils/parseTaggedContent.js.map +1 -0
  714. package/dist/utils/planActions.js +27 -46
  715. package/dist/utils/planActions.js.map +1 -0
  716. package/dist/utils/promptBuilderHelper.js +1 -0
  717. package/dist/utils/promptBuilderHelper.js.map +1 -0
  718. package/dist/utils/promptLogHelper.js +29 -13
  719. package/dist/utils/promptLogHelper.js.map +1 -0
  720. package/dist/utils/queryAnchors.js +71 -0
  721. package/dist/utils/queryAnchors.js.map +1 -0
  722. package/dist/utils/repoIdentity.js +82 -0
  723. package/dist/utils/repoIdentity.js.map +1 -0
  724. package/dist/utils/repoKey.js +1 -0
  725. package/dist/utils/repoKey.js.map +1 -0
  726. package/dist/utils/resolveTargetsToFiles.js +1 -0
  727. package/dist/utils/resolveTargetsToFiles.js.map +1 -0
  728. package/dist/utils/resumeContext.js +219 -0
  729. package/dist/utils/resumeContext.js.map +1 -0
  730. package/dist/utils/resumeState.js +310 -0
  731. package/dist/utils/resumeState.js.map +1 -0
  732. package/dist/utils/rollingPlan.js +118 -0
  733. package/dist/utils/rollingPlan.js.map +1 -0
  734. package/dist/utils/runQueryWithDaemonControl.js +11 -3
  735. package/dist/utils/runQueryWithDaemonControl.js.map +1 -0
  736. package/dist/utils/runtimeLogger.js +252 -0
  737. package/dist/utils/runtimeLogger.js.map +1 -0
  738. package/dist/utils/sanitizeQuery.js +1 -0
  739. package/dist/utils/sanitizeQuery.js.map +1 -0
  740. package/dist/utils/sharedUtils.js +1 -0
  741. package/dist/utils/sharedUtils.js.map +1 -0
  742. package/dist/utils/sleep.js +1 -0
  743. package/dist/utils/sleep.js.map +1 -0
  744. package/dist/utils/splitCodeIntoChunk.js +1 -0
  745. package/dist/utils/splitCodeIntoChunk.js.map +1 -0
  746. package/dist/utils/time.js +66 -0
  747. package/dist/utils/time.js.map +1 -0
  748. package/dist/utils/verifyFocusPreference.js +107 -0
  749. package/dist/utils/verifyFocusPreference.js.map +1 -0
  750. package/dist/utils/vscode.js +1 -0
  751. package/dist/utils/vscode.js.map +1 -0
  752. package/dist/workflow/workflowResolver.js +1 -0
  753. package/dist/workflow/workflowResolver.js.map +1 -0
  754. package/dist/workflow/workflowRunner.js +1 -0
  755. package/dist/workflow/workflowRunner.js.map +1 -0
  756. package/package.json +3 -3
  757. package/dist/agents/MainAgent.js +0 -1886
  758. package/dist/agents/contextReviewStep.js +0 -101
  759. package/dist/agents/finalPlanGenStep.js +0 -107
  760. package/dist/agents/structuralAnalysisStep.js +0 -46
  761. package/dist/agents/validationAnalysisStep.js +0 -87
  762. package/dist/pipeline/modules/chunkManagerModule.js +0 -24
  763. package/dist/pipeline/modules/cleanGeneratedTestsModule.js +0 -33
  764. package/dist/pipeline/modules/fileReaderModule.js +0 -72
  765. package/dist/pipeline/modules/gatherInfoModule.js +0 -181
  766. package/dist/pipeline/modules/generateTestsModule.js +0 -68
  767. package/dist/pipeline/modules/preserveCodeModule.js +0 -195
  768. package/dist/pipeline/modules/refactorModule.js +0 -40
  769. package/dist/pipeline/modules/repairTestsModule.js +0 -48
  770. package/dist/pipeline/modules/runTestsModule.js +0 -37
@@ -1,12 +1,92 @@
1
- // src/agents/analysisPlanGenStep.ts
1
+ /**
2
+ * Generates one analysis step from the current focus without re-explaining the whole task.
3
+ *
4
+ * Why this file exists:
5
+ * - planner retries should change only when evidence changes
6
+ * - generic assumptions and stale resume text make repeated planner prompts look identical
7
+ * - the chosen target file should stay aligned with the focus rationale and downstream answer grounding
8
+ */
2
9
  import { generate } from "../lib/generate.js";
3
10
  import { PLAN_ACTIONS } from "../utils/planActions.js";
4
11
  import { logInputOutput } from "../utils/promptLogHelper.js";
5
12
  import { cleanupModule } from "../pipeline/modules/cleanupModule.js";
13
+ import { buildResumePacket, renderResumePacket } from "../utils/resumeState.js";
6
14
  /**
7
- * ANALYSIS PLAN GENERATOR (single-step)
8
- * Generates exactly one analysis reasoning step per iteration.
15
+ * Builds one safe semantic fallback when the planner returns no usable step.
16
+ *
17
+ * Why this exists:
18
+ * - empty planner output leaves the current task step pending
19
+ * - repeated empty retries burn the give-up budget without new evidence
20
+ * - semanticAnalysis is a stable read-only fallback for the current file
9
21
  */
22
+ function buildFallbackAnalysisStep(targetFile, currentQuestionId) {
23
+ return {
24
+ id: `analysis:fallback:${targetFile}`,
25
+ action: "semanticAnalysis",
26
+ actionId: "semanticAnalysis",
27
+ actionArgs: {},
28
+ targetFile,
29
+ questionId: currentQuestionId,
30
+ description: "Run one deterministic semantic pass on the current target file.",
31
+ metadata: {
32
+ fallbackAnalysisPlan: true,
33
+ },
34
+ groups: ["analysis"],
35
+ };
36
+ }
37
+ function reduceUnderstanding(value) {
38
+ if (!value)
39
+ return "";
40
+ const compact = {};
41
+ const genericLine = /(repository|codebase|module|system|task|current selected files|partial and based)/i;
42
+ for (const [key, rawItems] of Object.entries(value)) {
43
+ if (!Array.isArray(rawItems))
44
+ continue;
45
+ const filtered = rawItems
46
+ .map(item => String(item).trim())
47
+ .filter(Boolean)
48
+ .filter(item => !genericLine.test(item))
49
+ .slice(0, 2);
50
+ if (filtered.length > 0) {
51
+ compact[key] = filtered;
52
+ }
53
+ }
54
+ return Object.keys(compact).length > 0 ? JSON.stringify(compact, null, 2) : "";
55
+ }
56
+ function buildPlannerFrontierSignature(context) {
57
+ const trail = context.analysis?.trail;
58
+ if (!trail)
59
+ return undefined;
60
+ const frontier = (trail.frontier ?? [])
61
+ .map(candidate => `${candidate.filePath}:${candidate.confidence.toFixed(2)}`)
62
+ .sort();
63
+ const pendingQueries = [...(trail.pendingQueries ?? [])].sort();
64
+ if (frontier.length === 0 && pendingQueries.length === 0)
65
+ return undefined;
66
+ return JSON.stringify({ frontier, pendingQueries });
67
+ }
68
+ function buildPlannerPromptSignature(args) {
69
+ return JSON.stringify(args);
70
+ }
71
+ function buildPlannerPromptState(args) {
72
+ const signature = buildPlannerPromptSignature({
73
+ targetFile: args.targetFile,
74
+ rationaleText: args.rationaleText,
75
+ currentQuestionId: args.currentQuestionId,
76
+ promptMode: args.promptMode,
77
+ });
78
+ const repeated = args.prior?.signature === signature &&
79
+ args.prior?.frontierSignature === args.frontierSignature;
80
+ return {
81
+ targetFile: args.targetFile,
82
+ rationaleText: args.rationaleText,
83
+ currentQuestionId: args.currentQuestionId,
84
+ promptMode: args.promptMode,
85
+ signature,
86
+ frontierSignature: args.frontierSignature,
87
+ repeatCount: repeated ? (args.prior?.repeatCount ?? 1) + 1 : 1,
88
+ };
89
+ }
10
90
  export const analysisPlanGenStep = {
11
91
  name: "analysisPlanGen",
12
92
  description: "Generates a single analysis reasoning step.",
@@ -15,6 +95,7 @@ export const analysisPlanGenStep = {
15
95
  async run(context) {
16
96
  context.analysis || (context.analysis = {});
17
97
  context.execution || (context.execution = {});
98
+ const priorPlannerState = context.analysis.plannerPromptState;
18
99
  // Ensure task exists (required for currentStep)
19
100
  if (!context.task) {
20
101
  throw new Error("analysisPlanGenStep: context.task must exist — ensure runBoot has been called");
@@ -41,9 +122,40 @@ export const analysisPlanGenStep = {
41
122
  const intentCategory = context.analysis.intent?.intentCategory ?? "";
42
123
  const relevantFiles = JSON.stringify([targetFile], null, 2);
43
124
  const rationaleText = context.analysis.focus?.rationale ?? "";
44
- const understandingText = context.analysis.understanding
45
- ? JSON.stringify(context.analysis.understanding, null, 2)
46
- : "";
125
+ const understandingText = reduceUnderstanding(context.analysis.understanding);
126
+ const orderedQuestions = context.analysis.intent?.questions ?? [];
127
+ const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);
128
+ const resumedContextCapsule = renderResumePacket(buildResumePacket(context.analysis?.resumeState)) ||
129
+ context.initContext?.resumedContextCapsule ||
130
+ "";
131
+ const compactRetry = shouldUseCompactRetryPrompt({
132
+ prior: priorPlannerState,
133
+ targetFile,
134
+ rationaleText,
135
+ currentQuestionId,
136
+ });
137
+ const promptMode = compactRetry ? "delta" : "full";
138
+ const frontierSignature = buildPlannerFrontierSignature(context);
139
+ const nextPlannerState = buildPlannerPromptState({
140
+ prior: priorPlannerState,
141
+ targetFile,
142
+ rationaleText,
143
+ currentQuestionId,
144
+ promptMode,
145
+ frontierSignature,
146
+ });
147
+ const promptRationaleText = compactRetry
148
+ ? buildCompactRetryRationale(targetFile, rationaleText)
149
+ : rationaleText;
150
+ const promptAllowedActions = compactRetry
151
+ ? renderCompactActionIds(effectiveActions)
152
+ : JSON.stringify(effectiveActions, null, 2);
153
+ const promptOrderedQuestions = compactRetry
154
+ ? renderCompactQuestionState(orderedQuestions, currentQuestionId)
155
+ : orderedQuestions.length > 0
156
+ ? JSON.stringify(orderedQuestions, null, 2)
157
+ : "";
158
+ const promptResumedContext = compactRetry ? "" : resumedContextCapsule;
47
159
  const prompt = `
48
160
  You are an autonomous coding agent.
49
161
  Produce **exactly one structured analysis step** that will advance understanding
@@ -55,17 +167,23 @@ ${intentText}
55
167
  Task category:
56
168
  ${intentCategory}
57
169
 
58
- Allowed actions (analysis only):
59
- ${actionsJson}
170
+ ${compactRetry ? "Allowed action ids (analysis only, unchanged from prior planner step):" : "Allowed actions (analysis only):"}
171
+ ${promptAllowedActions}
60
172
 
61
173
  Relevant files:
62
174
  ${relevantFiles}
63
175
 
64
- Rationale / notes from pre-file check:
65
- ${rationaleText}
176
+ Primary target file:
177
+ ${targetFile}
178
+
179
+ Focus rationale:
180
+ ${promptRationaleText}
181
+
182
+ ${understandingText ? `Grounded understanding:\n${understandingText}\n` : ""}
66
183
 
67
- Existing understanding of the codebase:
68
- ${understandingText}
184
+ ${promptOrderedQuestions ? `Ordered question parts:\n${promptOrderedQuestions}\n` : ""}
185
+
186
+ ${promptResumedContext ? `Resumed context capsule:\n${promptResumedContext}\n` : ""}
69
187
 
70
188
  If this is NOT a coding, refactoring, or inline commenting task,
71
189
  return: { "step": null }
@@ -75,6 +193,8 @@ Return a valid JSON object in this format:
75
193
  {
76
194
  "step": {
77
195
  "action": "analysisAction",
196
+ "actionId": "analysisAction",
197
+ "actionArgs": {},
78
198
  "targetFile": "optional/path.ts",
79
199
  "description": "what this analysis step achieves",
80
200
  "metadata": {}
@@ -83,7 +203,23 @@ Return a valid JSON object in this format:
83
203
  `.trim();
84
204
  try {
85
205
  const genInput = { query: intentText, content: prompt };
86
- const genOutput = await generate(genInput);
206
+ const genOutput = await generate(genInput, {
207
+ caller: "analysisPlanGenStep",
208
+ inputContext: {
209
+ intentText,
210
+ intentCategory,
211
+ targetFile,
212
+ rationaleText: promptRationaleText,
213
+ understandingText,
214
+ orderedQuestions,
215
+ currentQuestionId,
216
+ resumedContextCapsule: promptResumedContext,
217
+ plannerRetryMode: promptMode,
218
+ ...(compactRetry
219
+ ? { allowedActionIds: effectiveActions.map(action => action.actionId ?? action.action) }
220
+ : { allowedActions: effectiveActions }),
221
+ },
222
+ });
87
223
  const raw = typeof genOutput.data === "string"
88
224
  ? genOutput.data
89
225
  : JSON.stringify(genOutput.data ?? "{}");
@@ -97,12 +233,23 @@ Return a valid JSON object in this format:
97
233
  const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);
98
234
  return {
99
235
  ...step,
236
+ // Example: planner returns action="semanticAnalysis".
237
+ actionId: step.actionId ?? step.action,
238
+ actionArgs: step.actionArgs ?? {},
239
+ questionId: step.questionId ?? currentQuestionId,
100
240
  groups: actionDef?.groups ?? ["analysis"],
101
241
  metadata: step.metadata ?? {},
102
242
  };
103
243
  });
104
- context.analysis.planSuggestion = { plan: { steps: finalSteps } };
105
- logInputOutput("analysisPlanGen", "output", finalSteps);
244
+ const normalizedSteps = finalSteps.length > 0
245
+ ? finalSteps
246
+ : [buildFallbackAnalysisStep(targetFile, currentQuestionId)];
247
+ context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };
248
+ context.analysis.plannerPromptState = nextPlannerState;
249
+ logInputOutput("analysisPlanGen", "output", {
250
+ callId: genOutput.trace?.callId,
251
+ steps: normalizedSteps,
252
+ });
106
253
  if (process.env.SCAI_VERBOSE_AGENT_LOGS === "1") {
107
254
  console.log("🧠 [analysisPlanGenStep] EXIT (success)");
108
255
  }
@@ -111,8 +258,38 @@ Return a valid JSON object in this format:
111
258
  if (process.env.SCAI_VERBOSE_AGENT_LOGS === "1") {
112
259
  console.warn("⚠️ [analysisPlanGenStep] FAILED to generate analysis plan:", err);
113
260
  }
114
- context.analysis.planSuggestion = { plan: { steps: [] } };
115
- logInputOutput("analysisPlanGen", "output", { steps: [] });
261
+ const fallbackSteps = [buildFallbackAnalysisStep(targetFile, currentQuestionId)];
262
+ context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };
263
+ context.analysis.plannerPromptState = nextPlannerState;
264
+ logInputOutput("analysisPlanGen", "output", { steps: fallbackSteps });
116
265
  }
117
266
  }
118
267
  };
268
+ function shouldUseCompactRetryPrompt(args) {
269
+ return Boolean(args.prior &&
270
+ args.prior.targetFile === args.targetFile &&
271
+ args.prior.rationaleText === args.rationaleText &&
272
+ args.prior.currentQuestionId === args.currentQuestionId);
273
+ }
274
+ function buildCompactRetryRationale(targetFile, rationaleText) {
275
+ const lines = rationaleText
276
+ .split("\n")
277
+ .map(line => line.trim())
278
+ .filter(Boolean)
279
+ .filter(line => /^Pre-check:/i.test(line) || /^\[Post-check\]/i.test(line));
280
+ const summary = lines.slice(0, 2).join("\n").trim();
281
+ return summary || `Focus unchanged for ${targetFile}; reuse the same target and only add materially new analysis evidence.`;
282
+ }
283
+ function renderCompactActionIds(actions) {
284
+ return actions.map(action => action.actionId ?? action.action).join(", ");
285
+ }
286
+ function renderCompactQuestionState(orderedQuestions, currentQuestionId) {
287
+ if (orderedQuestions.length === 0)
288
+ return "";
289
+ const current = orderedQuestions.find(question => question.id === currentQuestionId);
290
+ if (current?.text) {
291
+ return `Current question: ${current.text}`;
292
+ }
293
+ return `Question count unchanged: ${orderedQuestions.length}`;
294
+ }
295
+ //# sourceMappingURL=analysisPlanGenStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisPlanGenStep.js","sourceRoot":"","sources":["../../src/agents/analysisPlanGenStep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generates one analysis step from the current focus without re-explaining the whole task.\n *\n * Why this file exists:\n * - planner retries should change only when evidence changes\n * - generic assumptions and stale resume text make repeated planner prompts look identical\n * - the chosen target file should stay aligned with the focus rationale and downstream answer grounding\n */\nimport { generate } from \"../lib/generate.js\";\nimport { PLAN_ACTIONS } from \"../utils/planActions.js\";\nimport { logInputOutput } from \"../utils/promptLogHelper.js\";\nimport { cleanupModule } from \"../pipeline/modules/cleanupModule.js\";\nimport type { ModuleIO, StructuredContext, AgentPlanStep, PlannerPromptState } from \"../types.js\";\nimport { buildResumePacket, renderResumePacket } from \"../utils/resumeState.js\";\n\n/**\n * Builds one safe semantic fallback when the planner returns no usable step.\n *\n * Why this exists:\n * - empty planner output leaves the current task step pending\n * - repeated empty retries burn the give-up budget without new evidence\n * - semanticAnalysis is a stable read-only fallback for the current file\n */\nfunction buildFallbackAnalysisStep(targetFile: string, currentQuestionId?: string): AgentPlanStep {\n return {\n id: `analysis:fallback:${targetFile}`,\n action: \"semanticAnalysis\",\n actionId: \"semanticAnalysis\",\n actionArgs: {},\n targetFile,\n questionId: currentQuestionId,\n description: \"Run one deterministic semantic pass on the current target file.\",\n metadata: {\n fallbackAnalysisPlan: true,\n },\n groups: [\"analysis\"],\n };\n}\n\nfunction reduceUnderstanding(value: {\n problemStatement?: string;\n constraints?: string[];\n assumptions?: string[];\n risks?: string[];\n sharedPatterns?: string[];\n hotspots?: string[];\n couplingPoints?: string[];\n} | undefined): string {\n if (!value) return \"\";\n const compact: Record<string, unknown> = {};\n const genericLine = /(repository|codebase|module|system|task|current selected files|partial and based)/i;\n\n for (const [key, rawItems] of Object.entries(value)) {\n if (!Array.isArray(rawItems)) continue;\n const filtered = rawItems\n .map(item => String(item).trim())\n .filter(Boolean)\n .filter(item => !genericLine.test(item))\n .slice(0, 2);\n if (filtered.length > 0) {\n compact[key] = filtered;\n }\n }\n\n return Object.keys(compact).length > 0 ? JSON.stringify(compact, null, 2) : \"\";\n}\n\nfunction buildPlannerFrontierSignature(context: StructuredContext): string | undefined {\n const trail = context.analysis?.trail;\n if (!trail) return undefined;\n\n const frontier = (trail.frontier ?? [])\n .map(candidate => `${candidate.filePath}:${candidate.confidence.toFixed(2)}`)\n .sort();\n const pendingQueries = [...(trail.pendingQueries ?? [])].sort();\n if (frontier.length === 0 && pendingQueries.length === 0) return undefined;\n\n return JSON.stringify({ frontier, pendingQueries });\n}\n\nfunction buildPlannerPromptSignature(args: {\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n promptMode: \"full\" | \"delta\";\n}): string {\n return JSON.stringify(args);\n}\n\nfunction buildPlannerPromptState(args: {\n prior: PlannerPromptState | undefined;\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n promptMode: \"full\" | \"delta\";\n frontierSignature?: string;\n}): PlannerPromptState {\n const signature = buildPlannerPromptSignature({\n targetFile: args.targetFile,\n rationaleText: args.rationaleText,\n currentQuestionId: args.currentQuestionId,\n promptMode: args.promptMode,\n });\n const repeated =\n args.prior?.signature === signature &&\n args.prior?.frontierSignature === args.frontierSignature;\n\n return {\n targetFile: args.targetFile,\n rationaleText: args.rationaleText,\n currentQuestionId: args.currentQuestionId,\n promptMode: args.promptMode,\n signature,\n frontierSignature: args.frontierSignature,\n repeatCount: repeated ? (args.prior?.repeatCount ?? 1) + 1 : 1,\n };\n}\n\nexport const analysisPlanGenStep = {\n name: \"analysisPlanGen\",\n description: \"Generates a single analysis reasoning step.\",\n\n requires: [\"analysis.intent\", \"analysis.focus\", \"analysis.routingDecision\"],\n produces: [\"analysis.planSuggestion\"],\n\n async run(context: StructuredContext): Promise<void> {\n context.analysis ||= {};\n context.execution ||= {};\n const priorPlannerState = context.analysis.plannerPromptState;\n\n // Ensure task exists (required for currentStep)\n if (!context.task) {\n throw new Error(\n \"analysisPlanGenStep: context.task must exist — ensure runBoot has been called\"\n );\n }\n\n // 🔁 Always overwrite previous planSuggestion\n delete context.analysis.planSuggestion;\n\n // Use the DB-backed currentStep\n const currentStep = context.task.currentStep;\n if (!currentStep?.filePath) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: [] });\n return;\n }\n const targetFile = currentStep.filePath;\n\n // Restrict actions to ANALYSIS only\n const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes(\"analysis\"));\n if (!effectiveActions.length) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: [] });\n return;\n }\n\n const actionsJson = JSON.stringify(effectiveActions, null, 2);\n const intentText = context.analysis.intent?.normalizedQuery ?? context.initContext?.userQuery ?? \"\";\n const intentCategory = context.analysis.intent?.intentCategory ?? \"\";\n const relevantFiles = JSON.stringify([targetFile], null, 2);\n const rationaleText = context.analysis.focus?.rationale ?? \"\";\n const understandingText = reduceUnderstanding(context.analysis.understanding);\n const orderedQuestions = context.analysis.intent?.questions ?? [];\n const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);\n const resumedContextCapsule =\n renderResumePacket(buildResumePacket(context.analysis?.resumeState)) ||\n context.initContext?.resumedContextCapsule ||\n \"\";\n const compactRetry = shouldUseCompactRetryPrompt({\n prior: priorPlannerState,\n targetFile,\n rationaleText,\n currentQuestionId,\n });\n const promptMode = compactRetry ? \"delta\" : \"full\";\n const frontierSignature = buildPlannerFrontierSignature(context);\n const nextPlannerState = buildPlannerPromptState({\n prior: priorPlannerState,\n targetFile,\n rationaleText,\n currentQuestionId,\n promptMode,\n frontierSignature,\n });\n const promptRationaleText = compactRetry\n ? buildCompactRetryRationale(targetFile, rationaleText)\n : rationaleText;\n const promptAllowedActions = compactRetry\n ? renderCompactActionIds(effectiveActions)\n : JSON.stringify(effectiveActions, null, 2);\n const promptOrderedQuestions = compactRetry\n ? renderCompactQuestionState(orderedQuestions, currentQuestionId)\n : orderedQuestions.length > 0\n ? JSON.stringify(orderedQuestions, null, 2)\n : \"\";\n const promptResumedContext = compactRetry ? \"\" : resumedContextCapsule;\n\n const prompt = `\nYou are an autonomous coding agent.\nProduce **exactly one structured analysis step** that will advance understanding\nof the codebase, suitable for safe planning of transformations.\n\nIntent / task description:\n${intentText}\n\nTask category:\n${intentCategory}\n\n${compactRetry ? \"Allowed action ids (analysis only, unchanged from prior planner step):\" : \"Allowed actions (analysis only):\"}\n${promptAllowedActions}\n\nRelevant files:\n${relevantFiles}\n\nPrimary target file:\n${targetFile}\n\nFocus rationale:\n${promptRationaleText}\n\n${understandingText ? `Grounded understanding:\\n${understandingText}\\n` : \"\"}\n\n${promptOrderedQuestions ? `Ordered question parts:\\n${promptOrderedQuestions}\\n` : \"\"}\n\n${promptResumedContext ? `Resumed context capsule:\\n${promptResumedContext}\\n` : \"\"}\n\nIf this is NOT a coding, refactoring, or inline commenting task,\nreturn: { \"step\": null }\n\nReturn a valid JSON object in this format:\n\n{\n \"step\": {\n \"action\": \"analysisAction\",\n \"actionId\": \"analysisAction\",\n \"actionArgs\": {},\n \"targetFile\": \"optional/path.ts\",\n \"description\": \"what this analysis step achieves\",\n \"metadata\": {}\n }\n}\n `.trim();\n\n try {\n const genInput: ModuleIO = { query: intentText, content: prompt };\n const genOutput = await generate(genInput, {\n caller: \"analysisPlanGenStep\",\n inputContext: {\n intentText,\n intentCategory,\n targetFile,\n rationaleText: promptRationaleText,\n understandingText,\n orderedQuestions,\n currentQuestionId,\n resumedContextCapsule: promptResumedContext,\n plannerRetryMode: promptMode,\n ...(compactRetry\n ? { allowedActionIds: effectiveActions.map(action => action.actionId ?? action.action) }\n : { allowedActions: effectiveActions }),\n },\n });\n\n const raw =\n typeof genOutput.data === \"string\"\n ? genOutput.data\n : JSON.stringify(genOutput.data ?? \"{}\");\n\n const cleaned = await cleanupModule.run({ query: intentText, content: raw });\n const jsonString =\n typeof cleaned.content === \"string\"\n ? cleaned.content\n : JSON.stringify(cleaned.content ?? \"{}\");\n\n const planObj: { step?: AgentPlanStep | null } = JSON.parse(jsonString);\n const steps: AgentPlanStep[] = planObj.step ? [planObj.step] : [];\n\n const finalSteps = steps.map((step: AgentPlanStep) => {\n const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);\n return {\n ...step,\n // Example: planner returns action=\"semanticAnalysis\".\n actionId: step.actionId ?? step.action,\n actionArgs: step.actionArgs ?? {},\n questionId: step.questionId ?? currentQuestionId,\n groups: actionDef?.groups ?? [\"analysis\"],\n metadata: step.metadata ?? {},\n };\n });\n\n const normalizedSteps = finalSteps.length > 0\n ? finalSteps\n : [buildFallbackAnalysisStep(targetFile, currentQuestionId)];\n\n context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };\n context.analysis.plannerPromptState = nextPlannerState;\n logInputOutput(\"analysisPlanGen\", \"output\", {\n callId: genOutput.trace?.callId,\n steps: normalizedSteps,\n });\n if (process.env.SCAI_VERBOSE_AGENT_LOGS === \"1\") {\n console.log(\"🧠 [analysisPlanGenStep] EXIT (success)\");\n }\n\n } catch (err) {\n if (process.env.SCAI_VERBOSE_AGENT_LOGS === \"1\") {\n console.warn(\"⚠️ [analysisPlanGenStep] FAILED to generate analysis plan:\", err);\n }\n const fallbackSteps = [buildFallbackAnalysisStep(targetFile, currentQuestionId)];\n context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };\n context.analysis.plannerPromptState = nextPlannerState;\n logInputOutput(\"analysisPlanGen\", \"output\", { steps: fallbackSteps });\n }\n }\n};\n\nfunction shouldUseCompactRetryPrompt(args: {\n prior: PlannerPromptState | undefined;\n targetFile: string;\n rationaleText: string;\n currentQuestionId?: string;\n}): boolean {\n return Boolean(\n args.prior &&\n args.prior.targetFile === args.targetFile &&\n args.prior.rationaleText === args.rationaleText &&\n args.prior.currentQuestionId === args.currentQuestionId\n );\n}\n\nfunction buildCompactRetryRationale(targetFile: string, rationaleText: string): string {\n const lines = rationaleText\n .split(\"\\n\")\n .map(line => line.trim())\n .filter(Boolean)\n .filter(line => /^Pre-check:/i.test(line) || /^\\[Post-check\\]/i.test(line));\n const summary = lines.slice(0, 2).join(\"\\n\").trim();\n return summary || `Focus unchanged for ${targetFile}; reuse the same target and only add materially new analysis evidence.`;\n}\n\nfunction renderCompactActionIds(actions: Array<{ actionId?: string; action: string }>): string {\n return actions.map(action => action.actionId ?? action.action).join(\", \");\n}\n\nfunction renderCompactQuestionState(\n orderedQuestions: Array<{ id?: string; text?: string; order?: number }> ,\n currentQuestionId?: string\n): string {\n if (orderedQuestions.length === 0) return \"\";\n const current = orderedQuestions.find(question => question.id === currentQuestionId);\n if (current?.text) {\n return `Current question: ${current.text}`;\n }\n return `Question count unchanged: ${orderedQuestions.length}`;\n}\n"]}
@@ -0,0 +1,32 @@
1
+ function keepStartedOrCompletedSteps(steps) {
2
+ return (steps ?? []).filter((step) => {
3
+ return step.status === "completed" || step.startTime != null || step.endTime != null;
4
+ });
5
+ }
6
+ /**
7
+ * Converts direct-answer and analysis-only answer paths into completed tasks.
8
+ * Example: finalAnswer exists, transform route disabled, and only pending seeded steps exist.
9
+ */
10
+ export function normalizeAnswerOnlyCompletion(context, answerPath) {
11
+ const finalAnswer = context.analysis?.finalAnswer?.trim();
12
+ if (!finalAnswer)
13
+ return false;
14
+ const startedOrCompletedSteps = keepStartedOrCompletedSteps(context.task.steps);
15
+ const hasStartedOrCompletedSteps = startedOrCompletedSteps.length > 0;
16
+ const allowTransform = Boolean(context.analysis?.routingDecision?.allowTransform ??
17
+ context.analysis?.executionPolicy?.routeAllowed?.transform);
18
+ const isDirectContinuityAnswer = answerPath === "continuity";
19
+ const isAnalysisOnlyFinalAnswer = answerPath === "final" &&
20
+ !allowTransform &&
21
+ !hasStartedOrCompletedSteps;
22
+ if (!isDirectContinuityAnswer && !isAnalysisOnlyFinalAnswer) {
23
+ return false;
24
+ }
25
+ context.task.status = "completed";
26
+ delete context.task.reason;
27
+ context.task.currentStep = undefined;
28
+ context.task.steps = startedOrCompletedSteps;
29
+ context.currentStep = undefined;
30
+ return true;
31
+ }
32
+ //# sourceMappingURL=answerOnlyCompletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerOnlyCompletion.js","sourceRoot":"","sources":["../../src/agents/answerOnlyCompletion.ts"],"names":[],"mappings":"AAiBA,SAAS,2BAA2B,CAAC,KAAyB;IAC5D,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAA0B,EAC1B,UAA0B;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,OAAO,CAC5B,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc;QACjD,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,CAC3D,CAAC;IACF,MAAM,wBAAwB,GAAG,UAAU,KAAK,YAAY,CAAC;IAC7D,MAAM,yBAAyB,GAC7B,UAAU,KAAK,OAAO;QACtB,CAAC,cAAc;QACf,CAAC,0BAA0B,CAAC;IAE9B,IAAI,CAAC,wBAAwB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IAClC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC;IAC7C,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/**\n * Normalizes answer-only runs into a clean completed terminal state.\n *\n * Why this exists:\n * - some runs can produce a valid final answer without entering real execution work\n * - those runs should not stay `deferred` or carry stale pending plan seeds\n * - the rule must live in one place before the future Session/Task/Step rebuild\n *\n * Examples:\n * - continuity direct answer -> completed with zero steps\n * - explicit-target explanation with no execution work -> completed with zero steps\n * - transform route with real execution expectation -> do not normalize here\n */\nimport type { StructuredContext, Step } from \"../types.js\";\n\ntype AnswerPathKind = \"continuity\" | \"final\";\n\nfunction keepStartedOrCompletedSteps(steps: Step[] | undefined): Step[] {\n return (steps ?? []).filter((step) => {\n return step.status === \"completed\" || step.startTime != null || step.endTime != null;\n });\n}\n\n/**\n * Converts direct-answer and analysis-only answer paths into completed tasks.\n * Example: finalAnswer exists, transform route disabled, and only pending seeded steps exist.\n */\nexport function normalizeAnswerOnlyCompletion(\n context: StructuredContext,\n answerPath: AnswerPathKind\n): boolean {\n const finalAnswer = context.analysis?.finalAnswer?.trim();\n if (!finalAnswer) return false;\n\n const startedOrCompletedSteps = keepStartedOrCompletedSteps(context.task.steps);\n const hasStartedOrCompletedSteps = startedOrCompletedSteps.length > 0;\n const allowTransform = Boolean(\n context.analysis?.routingDecision?.allowTransform ??\n context.analysis?.executionPolicy?.routeAllowed?.transform\n );\n const isDirectContinuityAnswer = answerPath === \"continuity\";\n const isAnalysisOnlyFinalAnswer =\n answerPath === \"final\" &&\n !allowTransform &&\n !hasStartedOrCompletedSteps;\n\n if (!isDirectContinuityAnswer && !isAnalysisOnlyFinalAnswer) {\n return false;\n }\n\n context.task.status = \"completed\";\n delete context.task.reason;\n context.task.currentStep = undefined;\n context.task.steps = startedOrCompletedSteps;\n context.currentStep = undefined;\n return true;\n}\n"]}
@@ -43,3 +43,4 @@ export const collaboratorStep = {
43
43
  });
44
44
  }
45
45
  };
46
+ //# sourceMappingURL=collaboratorStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboratorStep.js","sourceRoot":"","sources":["../../src/agents/collaboratorStep.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,2DAA2D;IAExE,QAAQ,EAAE,CAAC,6BAA6B,CAAC;IACzC,QAAQ,EAAE,CAAC,+BAA+B,EAAE,6BAA6B,CAAC;IAE1E,KAAK,CAAC,GAAG,CAAC,OAA0B;QAChC,OAAO,CAAC,QAAQ,KAAhB,OAAO,CAAC,QAAQ,GAAK,EAAE,EAAC;QAExB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,wDAAwD;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACvD,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO;QAE3C,qDAAqD;QACrD,IAAI,SAAS,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO;QAExD,sDAAsD;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAyB;gBACnC,cAAc,EACV,iGAAiG;gBACrG,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,IAAI;aACvB,CAAC;YAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrD,CAAC;QAED,mEAAmE;QACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG;YAClC,GAAG,SAAS;YACZ,OAAO,EAAE,gCAAgC;YACzC,SAAS,EACL,wEAAwE;YAC5E,UAAU,EAAE,GAAG;SAClB,CAAC;QAEF,cAAc,CACV,kBAAkB,EAClB,QAAQ,EACR;YACI,oBAAoB,EAAE,OAAO,CAAC,QAAQ,EAAE,oBAAoB;YAC5D,kBAAkB,EAAE,OAAO,CAAC,QAAQ,EAAE,kBAAkB;SAC3D,CACJ,CAAC;IAEN,CAAC;CACJ,CAAC","sourcesContent":["// File: src/agents/collaboratorStep.ts\nimport type {\n StructuredContext,\n CollaboratorFeedback,\n IterationReasoning\n} from '../types.js';\nimport { logInputOutput } from '../utils/promptLogHelper.js';\n\n/**\n * COLLABORATOR STEP\n * Prepares or collects collaborator / human feedback when required.\n * Does NOT advance execution unless feedback is resolved.\n */\nexport const collaboratorStep = {\n name: 'collaboratorStep',\n description: 'Requests or integrates collaborator feedback when needed.',\n\n requires: ['analysis.iterationReasoning'],\n produces: ['analysis.collaboratorFeedback', 'analysis.iterationReasoning'],\n\n async run(context: StructuredContext): Promise<void> {\n context.analysis ||= {};\n\n const reasoning = context.analysis.iterationReasoning;\n if (!reasoning) return;\n\n // If feedback already exists and is applied, do nothing\n const existing = context.analysis.collaboratorFeedback;\n if (existing?.status === 'applied') return;\n\n // Only act if iteration explicitly requests feedback\n if (reasoning.nextAction !== 'request-feedback') return;\n\n // Initialize collaborator feedback request if missing\n if (!existing) {\n const feedback: CollaboratorFeedback = {\n summaryForUser:\n 'Additional review is requested before continuing. Please confirm or correct the recent changes.',\n status: 'pending',\n requiresAction: true\n };\n\n context.analysis.collaboratorFeedback = feedback;\n }\n\n // Update iteration reasoning to reflect wait state (no new fields)\n context.analysis.iterationReasoning = {\n ...reasoning,\n summary: 'Awaiting collaborator feedback',\n rationale:\n 'Iteration paused until external confirmation or correction is received',\n confidence: 0.5\n };\n\n logInputOutput(\n \"collaboratorStep\",\n \"output\",\n {\n collaboratorFeedback: context.analysis?.collaboratorFeedback,\n iterationReasoning: context.analysis?.iterationReasoning\n }\n );\n\n }\n};\n"]}