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
@@ -0,0 +1,403 @@
1
+ import { isExecutionGroundedStep } from "../../utils/executionEvidence.js";
2
+ function isResearchStep(step) {
3
+ return (step.action ?? "").startsWith("research-") || (step.filePath ?? "").startsWith("__research__/");
4
+ }
5
+ function isLikelyNonSource(filePath) {
6
+ return /\.(json|md|txt|ya?ml|toml|lock)$/i.test(filePath);
7
+ }
8
+ function getProgressMode(context) {
9
+ if (context.analysis?.continuityDecision?.answerNow)
10
+ return "continuity";
11
+ const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;
12
+ if (lane === "direct-answer")
13
+ return "direct-answer";
14
+ if (lane === "evidence")
15
+ return "evidence";
16
+ if (lane === "resume-continuity")
17
+ return "continuity";
18
+ return "coding";
19
+ }
20
+ function normalizePaths(values) {
21
+ return Array.from(new Set(values.filter((value) => typeof value === "string" && value.length > 0)));
22
+ }
23
+ function buildLastPlanSignature(context) {
24
+ const steps = context.analysis?.planSuggestion?.plan?.steps ?? [];
25
+ if (steps.length === 0)
26
+ return undefined;
27
+ return steps
28
+ .map((step) => `${step.action}:${step.targetFile ?? ""}`)
29
+ .join("|");
30
+ }
31
+ function buildLastFrontierSignature(context) {
32
+ const trail = context.analysis?.trail;
33
+ if (!trail)
34
+ return undefined;
35
+ const frontier = (trail.frontier ?? [])
36
+ .map((candidate) => `${candidate.filePath}:${candidate.confidence.toFixed(2)}`)
37
+ .sort();
38
+ const pendingQueries = [...(trail.pendingQueries ?? [])].sort();
39
+ if (frontier.length === 0 && pendingQueries.length === 0)
40
+ return undefined;
41
+ return JSON.stringify({ frontier, pendingQueries });
42
+ }
43
+ function buildPlannerRetryProgress(context, lastFrontierSignature) {
44
+ const planner = context.analysis?.plannerPromptState;
45
+ if (!planner?.targetFile)
46
+ return undefined;
47
+ const currentTarget = context.task.currentStep?.filePath;
48
+ const sameTarget = !currentTarget || currentTarget === planner.targetFile;
49
+ const sameFrontier = planner.frontierSignature === lastFrontierSignature;
50
+ const rawCount = Math.max(1, planner.repeatCount ?? 1);
51
+ const count = sameTarget && sameFrontier ? rawCount : 1;
52
+ const signature = planner.signature ?? JSON.stringify({
53
+ targetFile: planner.targetFile,
54
+ rationaleText: planner.rationaleText,
55
+ currentQuestionId: planner.currentQuestionId,
56
+ promptMode: planner.promptMode,
57
+ });
58
+ const stalled = count >= 2;
59
+ const reason = stalled
60
+ ? `Planner retried the same target without frontier change (${count} identical attempt(s)).`
61
+ : count > 1
62
+ ? `Planner retried the same target ${count} time(s), but the frontier changed.`
63
+ : "Planner has not repeated the same target enough to count as stalled progress.";
64
+ return {
65
+ targetFile: planner.targetFile,
66
+ signature,
67
+ count,
68
+ stalled,
69
+ frontierSignature: planner.frontierSignature,
70
+ reason,
71
+ };
72
+ }
73
+ function hasExpansionSignal(context) {
74
+ return ((context.analysis?.expansionRequest?.files?.length ?? 0) > 0 ||
75
+ (context.analysis?.expansionRequest?.queries?.length ?? 0) > 0 ||
76
+ (context.analysis?.trail?.frontier?.length ?? 0) > 0 ||
77
+ (context.analysis?.trail?.pendingQueries?.length ?? 0) > 0);
78
+ }
79
+ function isAnalysisOnlyTargetComplete(context, filePath) {
80
+ if (context.executionControl?.constraints?.allowFileWrites !== false) {
81
+ return false;
82
+ }
83
+ const analysis = context.analysis?.fileAnalysis?.[filePath];
84
+ if (analysis?.semanticAnalyzed)
85
+ return true;
86
+ const step = context.task.steps.find((candidate) => candidate.filePath === filePath);
87
+ const attempts = typeof step?.result?.analysisAttempts === "number" ? step.result.analysisAttempts : 0;
88
+ return isLikelyNonSource(filePath) || attempts >= 2;
89
+ }
90
+ function isValidationAccepted(validation) {
91
+ return validation?.status === "valid" && validation.requiresRedo !== true;
92
+ }
93
+ function getCriterionFilePath(criterion) {
94
+ return "filePath" in criterion ? criterion.filePath : undefined;
95
+ }
96
+ function getObjectiveCoveredTargets(context, requiredTargets) {
97
+ const analysis = context.analysis;
98
+ const objectiveStatus = analysis?.objectiveEvaluation?.status ?? analysis?.objective?.completionStatus;
99
+ if (objectiveStatus !== "satisfied") {
100
+ return [];
101
+ }
102
+ const criteria = analysis?.objective?.successCriteria ?? [];
103
+ const coveredFiles = new Set(criteria
104
+ .map(getCriterionFilePath)
105
+ .filter((filePath) => typeof filePath === "string" && filePath.length > 0));
106
+ return requiredTargets.filter((target) => coveredFiles.has(target));
107
+ }
108
+ function hasRepoWideSummarySynthesis(context) {
109
+ const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;
110
+ if (lane !== "evidence")
111
+ return false;
112
+ if (context.executionControl?.constraints?.allowFileWrites !== false)
113
+ return false;
114
+ if (context.analysis?.scopeType !== "repo-wide")
115
+ return false;
116
+ const synthesis = context.analysis?.researchArtifacts?.latestByAction?.["research-architecture-synthesis"];
117
+ if (!synthesis)
118
+ return false;
119
+ const summary = String(synthesis.summary ?? "").trim();
120
+ const data = synthesis.collectedData ?? {};
121
+ const problemStatement = String(data.problemStatement ?? "").trim();
122
+ const priorResearch = Array.isArray(data.priorResearchSummaries) ? data.priorResearchSummaries.length : 0;
123
+ const inputFiles = Array.isArray(data.architectureInputFiles) ? data.architectureInputFiles.length : 0;
124
+ return summary.length > 0 && (problemStatement.length > 0 || priorResearch > 0 || inputFiles > 0);
125
+ }
126
+ function hasDirectoryListingAnswer(context) {
127
+ return (context.analysis?.directoryListingAnswer?.entries?.length ?? 0) >= 0 &&
128
+ typeof context.analysis?.directoryListingAnswer?.summary === "string" &&
129
+ context.analysis.directoryListingAnswer.summary.trim().length > 0;
130
+ }
131
+ function hasExecutedGroundedFileEvidence(context) {
132
+ const completedTaskFiles = (context.task?.steps ?? []).some((step) => isExecutionGroundedStep(step));
133
+ if (completedTaskFiles)
134
+ return true;
135
+ const transformedFiles = (context.execution?.codeTransformArtifacts?.files ?? []).some((file) => !!file.filePath);
136
+ if (transformedFiles)
137
+ return true;
138
+ const validatedFiles = (context.analysis?.executionOutcome?.validations ?? []).some((validation) => validation.status === "valid" && !!validation.filePath);
139
+ return validatedFiles;
140
+ }
141
+ function hasVerifyGroundedFileEvidence(context) {
142
+ const selected = new Set(context.analysis?.focus?.selectedFiles ?? []);
143
+ if (selected.size === 0)
144
+ return false;
145
+ const verifyByFile = context.analysis?.verify?.byFile ?? {};
146
+ return Object.entries(verifyByFile).some(([filePath, verify]) => selected.has(filePath) &&
147
+ verify?.isRelevant === true &&
148
+ (verify.fileConfidence ?? 0) >= 0.45);
149
+ }
150
+ function resolveEvidenceSatisfaction(context, requiredTargets, completedTargets) {
151
+ const continuityAnswerNow = context.analysis?.continuityDecision?.answerNow === true;
152
+ const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;
153
+ if (lane === "direct-answer" || continuityAnswerNow) {
154
+ return {
155
+ satisfied: true,
156
+ level: "synthesized",
157
+ reason: "Direct-answer or continuity-local path is already answerable without more evidence work.",
158
+ };
159
+ }
160
+ if (hasDirectoryListingAnswer(context)) {
161
+ return {
162
+ satisfied: true,
163
+ level: "synthesized",
164
+ reason: "Directory listing answer is already structured and ready to finalize.",
165
+ };
166
+ }
167
+ if (hasRepoWideSummarySynthesis(context)) {
168
+ return {
169
+ satisfied: true,
170
+ level: "synthesized",
171
+ reason: "Completed research synthesis already provides grounded repo-wide evidence.",
172
+ };
173
+ }
174
+ if (hasExecutedGroundedFileEvidence(context)) {
175
+ return {
176
+ satisfied: true,
177
+ level: "executed",
178
+ reason: "Completed task execution or validation already produced grounded file evidence.",
179
+ };
180
+ }
181
+ if (hasVerifyGroundedFileEvidence(context)) {
182
+ return {
183
+ satisfied: true,
184
+ level: "verify",
185
+ reason: "Verify produced grounded file evidence on selected files.",
186
+ };
187
+ }
188
+ if (requiredTargets.length === 0 && completedTargets.length === 0) {
189
+ return {
190
+ satisfied: false,
191
+ level: "none",
192
+ reason: "No required targets are scoped yet and no answer-grade evidence exists.",
193
+ };
194
+ }
195
+ return {
196
+ satisfied: false,
197
+ level: "none",
198
+ reason: "No grounded executed, verified, or synthesized evidence exists yet.",
199
+ };
200
+ }
201
+ function resolveTargetProgress(context) {
202
+ const resumeState = context.analysis?.resumeState;
203
+ const executionRequired = normalizePaths([
204
+ ...(context.analysis?.executionPolicy?.executionRequired ?? []),
205
+ ...(context.analysis?.focus?.executionRequired ?? []),
206
+ ...(context.analysis?.focus?.selectedFiles ?? []),
207
+ ...(resumeState?.relevantFiles ?? []),
208
+ ]);
209
+ const explorationCandidates = normalizePaths([
210
+ ...(context.analysis?.executionPolicy?.explorationCandidates ?? []),
211
+ ...(context.analysis?.focus?.explorationCandidates ?? []),
212
+ ...(context.analysis?.focus?.candidateFiles ?? []),
213
+ ]).filter((filePath) => !executionRequired.includes(filePath));
214
+ const requiredTargets = executionRequired;
215
+ const validations = context.analysis?.executionOutcome?.validations ?? [];
216
+ const validationByFile = new Map(validations.map((validation) => [validation.filePath, validation]));
217
+ const stepByFile = new Map(context.task.steps.map((step) => [step.filePath, step]));
218
+ const objectiveCoveredTargets = getObjectiveCoveredTargets(context, requiredTargets);
219
+ const completedTargets = requiredTargets.filter((filePath) => {
220
+ const step = stepByFile.get(filePath);
221
+ if (step?.status === "completed")
222
+ return true;
223
+ if (isValidationAccepted(validationByFile.get(filePath)))
224
+ return true;
225
+ if (objectiveCoveredTargets.includes(filePath))
226
+ return true;
227
+ return isAnalysisOnlyTargetComplete(context, filePath);
228
+ });
229
+ const redoTargets = requiredTargets.filter((filePath) => validationByFile.get(filePath)?.requiresRedo === true);
230
+ const blockedTargets = requiredTargets.filter((filePath) => {
231
+ const validation = validationByFile.get(filePath);
232
+ return validation?.status === "invalid" && validation.requiresRedo !== true;
233
+ });
234
+ const recovery = context.analysis?.recoveryEvaluation;
235
+ if (recovery?.decision === "rework-scope" &&
236
+ typeof recovery.targetFile === "string" &&
237
+ requiredTargets.includes(recovery.targetFile) &&
238
+ !blockedTargets.includes(recovery.targetFile)) {
239
+ blockedTargets.push(recovery.targetFile);
240
+ }
241
+ return {
242
+ requiredTargets,
243
+ completedTargets,
244
+ redoTargets,
245
+ blockedTargets,
246
+ optionalTargets: explorationCandidates,
247
+ };
248
+ }
249
+ function resolveResearchState(context, targetProgress) {
250
+ const { requiredTargets, completedTargets, redoTargets, blockedTargets } = targetProgress;
251
+ const pendingResearchSteps = context.task.steps
252
+ .filter((step) => isResearchStep(step) && step.status !== "completed")
253
+ .map((step) => step.filePath);
254
+ const noNewInfoCount = context.analysis?.attemptCounters?.noGrowthWaves ?? 0;
255
+ const lastPlanSignature = buildLastPlanSignature(context);
256
+ const lastFrontierSignature = buildLastFrontierSignature(context);
257
+ const plannerRetry = buildPlannerRetryProgress(context, lastFrontierSignature);
258
+ const expansionSignalPresent = hasExpansionSignal(context);
259
+ let status = "not-needed";
260
+ let reason = "No research is currently required.";
261
+ if (pendingResearchSteps.length > 0) {
262
+ const unresolvedRequired = requiredTargets.filter((target) => !completedTargets.includes(target) && !redoTargets.includes(target) && !blockedTargets.includes(target));
263
+ if (requiredTargets.length === 0 || unresolvedRequired.length > 0) {
264
+ status = "required";
265
+ reason = requiredTargets.length === 0
266
+ ? `Research step pending (${pendingResearchSteps.length}) for the current summary lane.`
267
+ : `Pending research supports unresolved required targets (${unresolvedRequired.length}).`;
268
+ }
269
+ else {
270
+ status = "optional";
271
+ reason = "Research remains pending, but required targets are already resolved.";
272
+ }
273
+ }
274
+ else if (expansionSignalPresent) {
275
+ if (noNewInfoCount > 0) {
276
+ status = "exhausted";
277
+ reason = `Expansion produced no new information for ${noNewInfoCount} wave(s).`;
278
+ }
279
+ else {
280
+ status = "optional";
281
+ reason = "Expansion signals exist, but no required research step is pending.";
282
+ }
283
+ }
284
+ else if (noNewInfoCount > 0) {
285
+ status = "exhausted";
286
+ reason = `No new information detected for ${noNewInfoCount} wave(s).`;
287
+ }
288
+ if (plannerRetry?.stalled) {
289
+ reason = `${reason} ${plannerRetry.reason}`.trim();
290
+ }
291
+ return {
292
+ status,
293
+ pendingSteps: pendingResearchSteps,
294
+ lastPlanSignature,
295
+ lastFrontierSignature,
296
+ plannerRetry,
297
+ noNewInfoCount,
298
+ reason,
299
+ };
300
+ }
301
+ function resolveContinuityState(context) {
302
+ const answerNow = context.analysis?.continuityDecision?.answerNow === true;
303
+ const localOnly = answerNow ||
304
+ context.analysis?.continuityDecision?.fallbackRequired === false ||
305
+ context.analysis?.resumeIntent?.kind === "continuity-next-step";
306
+ const reason = context.analysis?.continuityDecision?.rationale ??
307
+ (localOnly
308
+ ? "Continuity should stay local to resumed task state."
309
+ : "Continuity may fall back to the normal flow.");
310
+ return {
311
+ localOnly,
312
+ answerNow,
313
+ reason,
314
+ };
315
+ }
316
+ function resolveCompletionStatus(args) {
317
+ const { requiredTargets, completedTargets, redoTargets, blockedTargets, objectiveSatisfied, validationSatisfied, evidenceSatisfied, research, } = args;
318
+ const unresolved = requiredTargets.filter((target) => !completedTargets.includes(target) && !redoTargets.includes(target) && !blockedTargets.includes(target));
319
+ const eligible = (requiredTargets.length > 0 ? unresolved.length === 0 : evidenceSatisfied) &&
320
+ redoTargets.length === 0 &&
321
+ blockedTargets.length === 0 &&
322
+ research.status !== "required" &&
323
+ validationSatisfied &&
324
+ evidenceSatisfied;
325
+ let reason = "Required targets are still unresolved.";
326
+ let blockedBy = null;
327
+ if (eligible) {
328
+ reason = "Required targets are complete and no blocking redo remains.";
329
+ if (requiredTargets.length === 0 && evidenceSatisfied) {
330
+ reason = "Repo-wide evidence summary is grounded enough to answer without draining more files.";
331
+ }
332
+ }
333
+ else if (redoTargets.length > 0) {
334
+ reason = `Redo required for ${redoTargets.length} target(s).`;
335
+ }
336
+ else if (blockedTargets.length > 0) {
337
+ reason = `Blocked target(s) remain: ${blockedTargets.join(", ")}.`;
338
+ }
339
+ else if (research.status === "required") {
340
+ blockedBy = "pending-research";
341
+ reason = "Required research is still pending.";
342
+ }
343
+ else if (requiredTargets.length === 0) {
344
+ blockedBy = evidenceSatisfied ? null : "missing-scope";
345
+ reason = evidenceSatisfied
346
+ ? "No required targets are currently scoped, but evidence is already sufficient."
347
+ : "No required targets are currently scoped.";
348
+ }
349
+ else if (!evidenceSatisfied) {
350
+ blockedBy = "missing-evidence";
351
+ reason = "Required targets exist, but no grounded executed, verified, or synthesized evidence is ready yet.";
352
+ }
353
+ return {
354
+ objectiveSatisfied,
355
+ validationSatisfied,
356
+ evidenceSatisfied,
357
+ eligible,
358
+ blockedBy,
359
+ reason,
360
+ };
361
+ }
362
+ export function resolveProgressState(context) {
363
+ context.analysis || (context.analysis = {});
364
+ const targetProgress = resolveTargetProgress(context);
365
+ const { requiredTargets, completedTargets, redoTargets, blockedTargets, optionalTargets, } = targetProgress;
366
+ const research = resolveResearchState(context, targetProgress);
367
+ const evidence = resolveEvidenceSatisfaction(context, requiredTargets, completedTargets);
368
+ const objectiveStatus = context.analysis.objectiveEvaluation?.status ?? context.analysis.objective?.completionStatus;
369
+ const repoWideSummarySatisfied = hasRepoWideSummarySynthesis(context) &&
370
+ research.pendingSteps.length === 0 &&
371
+ !hasExpansionSignal(context) &&
372
+ (completedTargets.length > 0 || evidence.satisfied);
373
+ const objectiveSatisfied = repoWideSummarySatisfied ||
374
+ (requiredTargets.length === 0
375
+ ? objectiveStatus === "satisfied"
376
+ : requiredTargets.every((target) => completedTargets.includes(target)));
377
+ const validationSatisfied = redoTargets.length === 0 && blockedTargets.length === 0;
378
+ const continuity = resolveContinuityState(context);
379
+ const progressState = {
380
+ mode: getProgressMode(context),
381
+ requiredTargets,
382
+ completedTargets,
383
+ redoTargets,
384
+ blockedTargets,
385
+ optionalTargets,
386
+ evidenceSatisfied: evidence.satisfied,
387
+ research,
388
+ completion: resolveCompletionStatus({
389
+ requiredTargets: requiredTargets,
390
+ completedTargets,
391
+ redoTargets,
392
+ blockedTargets,
393
+ objectiveSatisfied,
394
+ validationSatisfied,
395
+ evidenceSatisfied: evidence.satisfied,
396
+ research,
397
+ }),
398
+ continuity,
399
+ };
400
+ context.analysis.progressState = progressState;
401
+ return progressState;
402
+ }
403
+ //# sourceMappingURL=resolveProgressState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProgressState.js","sourceRoot":"","sources":["../../../src/agents/guards/resolveProgressState.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Resolves one authoritative progress snapshot from current facts.\n *\n * Why this file exists:\n * - several steps already produce useful facts, but task-level progress was still re-derived in multiple places\n * - the work loop needs one deterministic answer for \"what still remains?\"\n * - this keeps progress ownership parallel to `GuardState` instead of mixing it into selectors\n */\nimport type {\n ChangeValidation,\n PlannerRetryProgress,\n SuccessCriterion,\n ProgressMode,\n ProgressResearchStatus,\n ProgressState,\n StructuredContext,\n} from \"../../types.js\";\nimport { isExecutionGroundedStep } from \"../../utils/executionEvidence.js\";\n\ntype EvidenceSatisfaction = {\n satisfied: boolean;\n level: \"none\" | \"verify\" | \"executed\" | \"synthesized\";\n reason: string;\n};\n\nfunction isResearchStep(step: { filePath?: string; action?: string }): boolean {\n return (step.action ?? \"\").startsWith(\"research-\") || (step.filePath ?? \"\").startsWith(\"__research__/\");\n}\n\nfunction isLikelyNonSource(filePath: string): boolean {\n return /\\.(json|md|txt|ya?ml|toml|lock)$/i.test(filePath);\n}\n\nfunction getProgressMode(context: StructuredContext): ProgressMode {\n if (context.analysis?.continuityDecision?.answerNow) return \"continuity\";\n const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;\n if (lane === \"direct-answer\") return \"direct-answer\";\n if (lane === \"evidence\") return \"evidence\";\n if (lane === \"resume-continuity\") return \"continuity\";\n return \"coding\";\n}\n\nfunction normalizePaths(values: Array<string | undefined>): string[] {\n return Array.from(new Set(values.filter((value): value is string => typeof value === \"string\" && value.length > 0)));\n}\n\nfunction buildLastPlanSignature(context: StructuredContext): string | undefined {\n const steps = context.analysis?.planSuggestion?.plan?.steps ?? [];\n if (steps.length === 0) return undefined;\n return steps\n .map((step) => `${step.action}:${step.targetFile ?? \"\"}`)\n .join(\"|\");\n}\n\nfunction buildLastFrontierSignature(context: StructuredContext): string | undefined {\n const trail = context.analysis?.trail;\n if (!trail) return undefined;\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 return JSON.stringify({ frontier, pendingQueries });\n}\n\nfunction buildPlannerRetryProgress(\n context: StructuredContext,\n lastFrontierSignature: string | undefined\n): PlannerRetryProgress | undefined {\n const planner = context.analysis?.plannerPromptState;\n if (!planner?.targetFile) return undefined;\n\n const currentTarget = context.task.currentStep?.filePath;\n const sameTarget = !currentTarget || currentTarget === planner.targetFile;\n const sameFrontier = planner.frontierSignature === lastFrontierSignature;\n const rawCount = Math.max(1, planner.repeatCount ?? 1);\n const count = sameTarget && sameFrontier ? rawCount : 1;\n const signature = planner.signature ?? JSON.stringify({\n targetFile: planner.targetFile,\n rationaleText: planner.rationaleText,\n currentQuestionId: planner.currentQuestionId,\n promptMode: planner.promptMode,\n });\n const stalled = count >= 2;\n const reason = stalled\n ? `Planner retried the same target without frontier change (${count} identical attempt(s)).`\n : count > 1\n ? `Planner retried the same target ${count} time(s), but the frontier changed.`\n : \"Planner has not repeated the same target enough to count as stalled progress.\";\n\n return {\n targetFile: planner.targetFile,\n signature,\n count,\n stalled,\n frontierSignature: planner.frontierSignature,\n reason,\n };\n}\n\nfunction hasExpansionSignal(context: StructuredContext): boolean {\n return (\n (context.analysis?.expansionRequest?.files?.length ?? 0) > 0 ||\n (context.analysis?.expansionRequest?.queries?.length ?? 0) > 0 ||\n (context.analysis?.trail?.frontier?.length ?? 0) > 0 ||\n (context.analysis?.trail?.pendingQueries?.length ?? 0) > 0\n );\n}\n\nfunction isAnalysisOnlyTargetComplete(context: StructuredContext, filePath: string): boolean {\n if (context.executionControl?.constraints?.allowFileWrites !== false) {\n return false;\n }\n\n const analysis = context.analysis?.fileAnalysis?.[filePath];\n if (analysis?.semanticAnalyzed) return true;\n\n const step = context.task.steps.find((candidate) => candidate.filePath === filePath);\n const attempts = typeof step?.result?.analysisAttempts === \"number\" ? step.result.analysisAttempts : 0;\n return isLikelyNonSource(filePath) || attempts >= 2;\n}\n\nfunction isValidationAccepted(validation: ChangeValidation | undefined): boolean {\n return validation?.status === \"valid\" && validation.requiresRedo !== true;\n}\n\nfunction getCriterionFilePath(criterion: SuccessCriterion): string | undefined {\n return \"filePath\" in criterion ? criterion.filePath : undefined;\n}\n\nfunction getObjectiveCoveredTargets(context: StructuredContext, requiredTargets: string[]): string[] {\n const analysis = context.analysis;\n const objectiveStatus = analysis?.objectiveEvaluation?.status ?? analysis?.objective?.completionStatus;\n if (objectiveStatus !== \"satisfied\") {\n return [];\n }\n\n const criteria = analysis?.objective?.successCriteria ?? [];\n const coveredFiles = new Set(\n criteria\n .map(getCriterionFilePath)\n .filter((filePath): filePath is string => typeof filePath === \"string\" && filePath.length > 0)\n );\n\n return requiredTargets.filter((target) => coveredFiles.has(target));\n}\n\nfunction hasRepoWideSummarySynthesis(context: StructuredContext): boolean {\n const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;\n if (lane !== \"evidence\") return false;\n if (context.executionControl?.constraints?.allowFileWrites !== false) return false;\n if (context.analysis?.scopeType !== \"repo-wide\") return false;\n\n const synthesis = context.analysis?.researchArtifacts?.latestByAction?.[\"research-architecture-synthesis\"];\n if (!synthesis) return false;\n\n const summary = String(synthesis.summary ?? \"\").trim();\n const data = synthesis.collectedData ?? {};\n const problemStatement = String(data.problemStatement ?? \"\").trim();\n const priorResearch = Array.isArray(data.priorResearchSummaries) ? data.priorResearchSummaries.length : 0;\n const inputFiles = Array.isArray(data.architectureInputFiles) ? data.architectureInputFiles.length : 0;\n\n return summary.length > 0 && (problemStatement.length > 0 || priorResearch > 0 || inputFiles > 0);\n}\n\nfunction hasDirectoryListingAnswer(context: StructuredContext): boolean {\n return (context.analysis?.directoryListingAnswer?.entries?.length ?? 0) >= 0 &&\n typeof context.analysis?.directoryListingAnswer?.summary === \"string\" &&\n context.analysis.directoryListingAnswer.summary.trim().length > 0;\n}\n\nfunction hasExecutedGroundedFileEvidence(context: StructuredContext): boolean {\n const completedTaskFiles = (context.task?.steps ?? []).some((step) => isExecutionGroundedStep(step));\n if (completedTaskFiles) return true;\n\n const transformedFiles = (context.execution?.codeTransformArtifacts?.files ?? []).some((file) => !!file.filePath);\n if (transformedFiles) return true;\n\n const validatedFiles = (context.analysis?.executionOutcome?.validations ?? []).some((validation) =>\n validation.status === \"valid\" && !!validation.filePath\n );\n return validatedFiles;\n}\n\nfunction hasVerifyGroundedFileEvidence(context: StructuredContext): boolean {\n const selected = new Set(context.analysis?.focus?.selectedFiles ?? []);\n if (selected.size === 0) return false;\n\n const verifyByFile = context.analysis?.verify?.byFile ?? {};\n return Object.entries(verifyByFile).some(([filePath, verify]) =>\n selected.has(filePath) &&\n verify?.isRelevant === true &&\n (verify.fileConfidence ?? 0) >= 0.45\n );\n}\n\nfunction resolveEvidenceSatisfaction(\n context: StructuredContext,\n requiredTargets: string[],\n completedTargets: string[]\n): EvidenceSatisfaction {\n const continuityAnswerNow = context.analysis?.continuityDecision?.answerNow === true;\n const lane = context.analysis?.guardState?.lane ?? context.analysis?.runtimeState?.lane;\n\n if (lane === \"direct-answer\" || continuityAnswerNow) {\n return {\n satisfied: true,\n level: \"synthesized\",\n reason: \"Direct-answer or continuity-local path is already answerable without more evidence work.\",\n };\n }\n\n if (hasDirectoryListingAnswer(context)) {\n return {\n satisfied: true,\n level: \"synthesized\",\n reason: \"Directory listing answer is already structured and ready to finalize.\",\n };\n }\n\n if (hasRepoWideSummarySynthesis(context)) {\n return {\n satisfied: true,\n level: \"synthesized\",\n reason: \"Completed research synthesis already provides grounded repo-wide evidence.\",\n };\n }\n\n if (hasExecutedGroundedFileEvidence(context)) {\n return {\n satisfied: true,\n level: \"executed\",\n reason: \"Completed task execution or validation already produced grounded file evidence.\",\n };\n }\n\n if (hasVerifyGroundedFileEvidence(context)) {\n return {\n satisfied: true,\n level: \"verify\",\n reason: \"Verify produced grounded file evidence on selected files.\",\n };\n }\n\n if (requiredTargets.length === 0 && completedTargets.length === 0) {\n return {\n satisfied: false,\n level: \"none\",\n reason: \"No required targets are scoped yet and no answer-grade evidence exists.\",\n };\n }\n\n return {\n satisfied: false,\n level: \"none\",\n reason: \"No grounded executed, verified, or synthesized evidence exists yet.\",\n };\n}\n\ntype TargetProgress = Pick<\n ProgressState,\n \"requiredTargets\" | \"completedTargets\" | \"redoTargets\" | \"blockedTargets\" | \"optionalTargets\"\n>;\n\nfunction resolveTargetProgress(context: StructuredContext): TargetProgress {\n const resumeState = context.analysis?.resumeState;\n const executionRequired = normalizePaths([\n ...(context.analysis?.executionPolicy?.executionRequired ?? []),\n ...(context.analysis?.focus?.executionRequired ?? []),\n ...(context.analysis?.focus?.selectedFiles ?? []),\n ...(resumeState?.relevantFiles ?? []),\n ]);\n const explorationCandidates = normalizePaths([\n ...(context.analysis?.executionPolicy?.explorationCandidates ?? []),\n ...(context.analysis?.focus?.explorationCandidates ?? []),\n ...(context.analysis?.focus?.candidateFiles ?? []),\n ]).filter((filePath) => !executionRequired.includes(filePath));\n\n const requiredTargets = executionRequired;\n const validations = context.analysis?.executionOutcome?.validations ?? [];\n const validationByFile = new Map(validations.map((validation) => [validation.filePath, validation]));\n const stepByFile = new Map(context.task.steps.map((step) => [step.filePath, step]));\n const objectiveCoveredTargets = getObjectiveCoveredTargets(context, requiredTargets);\n\n const completedTargets = requiredTargets.filter((filePath) => {\n const step = stepByFile.get(filePath);\n if (step?.status === \"completed\") return true;\n if (isValidationAccepted(validationByFile.get(filePath))) return true;\n if (objectiveCoveredTargets.includes(filePath)) return true;\n return isAnalysisOnlyTargetComplete(context, filePath);\n });\n\n const redoTargets = requiredTargets.filter((filePath) => validationByFile.get(filePath)?.requiresRedo === true);\n const blockedTargets = requiredTargets.filter((filePath) => {\n const validation = validationByFile.get(filePath);\n return validation?.status === \"invalid\" && validation.requiresRedo !== true;\n });\n\n const recovery = context.analysis?.recoveryEvaluation;\n if (\n recovery?.decision === \"rework-scope\" &&\n typeof recovery.targetFile === \"string\" &&\n requiredTargets.includes(recovery.targetFile) &&\n !blockedTargets.includes(recovery.targetFile)\n ) {\n blockedTargets.push(recovery.targetFile);\n }\n\n return {\n requiredTargets,\n completedTargets,\n redoTargets,\n blockedTargets,\n optionalTargets: explorationCandidates,\n };\n}\n\nfunction resolveResearchState(\n context: StructuredContext,\n targetProgress: Pick<ProgressState, \"requiredTargets\" | \"completedTargets\" | \"redoTargets\" | \"blockedTargets\">\n): ProgressState[\"research\"] {\n const { requiredTargets, completedTargets, redoTargets, blockedTargets } = targetProgress;\n const pendingResearchSteps = context.task.steps\n .filter((step) => isResearchStep(step) && step.status !== \"completed\")\n .map((step) => step.filePath);\n\n const noNewInfoCount = context.analysis?.attemptCounters?.noGrowthWaves ?? 0;\n const lastPlanSignature = buildLastPlanSignature(context);\n const lastFrontierSignature = buildLastFrontierSignature(context);\n const plannerRetry = buildPlannerRetryProgress(context, lastFrontierSignature);\n const expansionSignalPresent = hasExpansionSignal(context);\n\n let status: ProgressResearchStatus = \"not-needed\";\n let reason = \"No research is currently required.\";\n if (pendingResearchSteps.length > 0) {\n const unresolvedRequired = requiredTargets.filter((target) => !completedTargets.includes(target) && !redoTargets.includes(target) && !blockedTargets.includes(target));\n if (requiredTargets.length === 0 || unresolvedRequired.length > 0) {\n status = \"required\";\n reason = requiredTargets.length === 0\n ? `Research step pending (${pendingResearchSteps.length}) for the current summary lane.`\n : `Pending research supports unresolved required targets (${unresolvedRequired.length}).`;\n } else {\n status = \"optional\";\n reason = \"Research remains pending, but required targets are already resolved.\";\n }\n } else if (expansionSignalPresent) {\n if (noNewInfoCount > 0) {\n status = \"exhausted\";\n reason = `Expansion produced no new information for ${noNewInfoCount} wave(s).`;\n } else {\n status = \"optional\";\n reason = \"Expansion signals exist, but no required research step is pending.\";\n }\n } else if (noNewInfoCount > 0) {\n status = \"exhausted\";\n reason = `No new information detected for ${noNewInfoCount} wave(s).`;\n }\n\n if (plannerRetry?.stalled) {\n reason = `${reason} ${plannerRetry.reason}`.trim();\n }\n\n return {\n status,\n pendingSteps: pendingResearchSteps,\n lastPlanSignature,\n lastFrontierSignature,\n plannerRetry,\n noNewInfoCount,\n reason,\n };\n}\n\nfunction resolveContinuityState(context: StructuredContext): ProgressState[\"continuity\"] {\n const answerNow = context.analysis?.continuityDecision?.answerNow === true;\n const localOnly =\n answerNow ||\n context.analysis?.continuityDecision?.fallbackRequired === false ||\n context.analysis?.resumeIntent?.kind === \"continuity-next-step\";\n const reason =\n context.analysis?.continuityDecision?.rationale ??\n (localOnly\n ? \"Continuity should stay local to resumed task state.\"\n : \"Continuity may fall back to the normal flow.\");\n\n return {\n localOnly,\n answerNow,\n reason,\n };\n}\n\nfunction resolveCompletionStatus(args: {\n requiredTargets: string[];\n completedTargets: string[];\n redoTargets: string[];\n blockedTargets: string[];\n objectiveSatisfied: boolean;\n validationSatisfied: boolean;\n evidenceSatisfied: boolean;\n research: ProgressState[\"research\"];\n}): ProgressState[\"completion\"] {\n const {\n requiredTargets,\n completedTargets,\n redoTargets,\n blockedTargets,\n objectiveSatisfied,\n validationSatisfied,\n evidenceSatisfied,\n research,\n } = args;\n\n const unresolved = requiredTargets.filter((target) => !completedTargets.includes(target) && !redoTargets.includes(target) && !blockedTargets.includes(target));\n const eligible =\n (requiredTargets.length > 0 ? unresolved.length === 0 : evidenceSatisfied) &&\n redoTargets.length === 0 &&\n blockedTargets.length === 0 &&\n research.status !== \"required\" &&\n validationSatisfied &&\n evidenceSatisfied;\n\n let reason = \"Required targets are still unresolved.\";\n let blockedBy: ProgressState[\"completion\"][\"blockedBy\"] = null;\n if (eligible) {\n reason = \"Required targets are complete and no blocking redo remains.\";\n if (requiredTargets.length === 0 && evidenceSatisfied) {\n reason = \"Repo-wide evidence summary is grounded enough to answer without draining more files.\";\n }\n } else if (redoTargets.length > 0) {\n reason = `Redo required for ${redoTargets.length} target(s).`;\n } else if (blockedTargets.length > 0) {\n reason = `Blocked target(s) remain: ${blockedTargets.join(\", \")}.`;\n } else if (research.status === \"required\") {\n blockedBy = \"pending-research\";\n reason = \"Required research is still pending.\";\n } else if (requiredTargets.length === 0) {\n blockedBy = evidenceSatisfied ? null : \"missing-scope\";\n reason = evidenceSatisfied\n ? \"No required targets are currently scoped, but evidence is already sufficient.\"\n : \"No required targets are currently scoped.\";\n } else if (!evidenceSatisfied) {\n blockedBy = \"missing-evidence\";\n reason = \"Required targets exist, but no grounded executed, verified, or synthesized evidence is ready yet.\";\n }\n\n return {\n objectiveSatisfied,\n validationSatisfied,\n evidenceSatisfied,\n eligible,\n blockedBy,\n reason,\n };\n}\n\nexport function resolveProgressState(context: StructuredContext): ProgressState {\n context.analysis ||= {};\n const targetProgress = resolveTargetProgress(context);\n const {\n requiredTargets,\n completedTargets,\n redoTargets,\n blockedTargets,\n optionalTargets,\n } = targetProgress;\n const research = resolveResearchState(context, targetProgress);\n const evidence = resolveEvidenceSatisfaction(context, requiredTargets, completedTargets);\n\n const objectiveStatus = context.analysis.objectiveEvaluation?.status ?? context.analysis.objective?.completionStatus;\n const repoWideSummarySatisfied =\n hasRepoWideSummarySynthesis(context) &&\n research.pendingSteps.length === 0 &&\n !hasExpansionSignal(context) &&\n (completedTargets.length > 0 || evidence.satisfied);\n const objectiveSatisfied =\n repoWideSummarySatisfied ||\n (requiredTargets.length === 0\n ? objectiveStatus === \"satisfied\"\n : requiredTargets.every((target) => completedTargets.includes(target)));\n const validationSatisfied = redoTargets.length === 0 && blockedTargets.length === 0;\n const continuity = resolveContinuityState(context);\n\n const progressState: ProgressState = {\n mode: getProgressMode(context),\n requiredTargets,\n completedTargets,\n redoTargets,\n blockedTargets,\n optionalTargets,\n evidenceSatisfied: evidence.satisfied,\n research,\n completion: resolveCompletionStatus({\n requiredTargets: requiredTargets,\n completedTargets,\n redoTargets,\n blockedTargets,\n objectiveSatisfied,\n validationSatisfied,\n evidenceSatisfied: evidence.satisfied,\n research,\n }),\n continuity,\n };\n\n context.analysis.progressState = progressState;\n return progressState;\n}\n"]}
@@ -1,8 +1,20 @@
1
- // File: src/agents/infoPlanGenStep.ts
1
+ /**
2
+ * Generates one typed info-gathering action for the current verify wave.
3
+ *
4
+ * Why this file exists:
5
+ * - the loop needs a small, explicit menu for info actions
6
+ * - search is now chosen as a typed action, not a hidden fallback
7
+ * - recent failed search attempts should shape the next search choice
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
+ /**
14
+ * Refactor note:
15
+ * - Planner output now includes actionId/actionArgs for router compatibility.
16
+ * - Why it exists: runtime executes typed actions, not free-form action names.
17
+ */
6
18
  /**
7
19
  * INFO PLAN GENERATOR
8
20
  * Generates a single information-acquisition step.
@@ -23,14 +35,28 @@ export const infoPlanGenStep = {
23
35
  const analysis = context.analysis;
24
36
  const intentText = analysis.intent?.normalizedQuery ?? '';
25
37
  const intentCategory = analysis.intent?.intentCategory ?? '';
38
+ const orderedQuestions = analysis.intent?.questions ?? [];
26
39
  // Only info-type actions
27
- const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes('info'));
40
+ const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes('info') && a.actionId !== "fileSearch");
28
41
  if (!effectiveActions.length) {
29
42
  context.analysis.planSuggestion = { plan: { steps: [] } };
30
43
  logInputOutput('infoPlanGen', 'output', []);
31
44
  return;
32
45
  }
33
46
  const actionsJson = JSON.stringify(effectiveActions, null, 2);
47
+ const buildFallbackStep = () => ({
48
+ id: "info-fallback-search-db",
49
+ action: "search-db",
50
+ actionId: "search-db",
51
+ actionArgs: {},
52
+ description: "Fallback info step: run deterministic DB search when evidence is insufficient.",
53
+ subQuery: [intentText || context.initContext?.userQuery || "search relevant files"],
54
+ metadata: {
55
+ source: "deterministic-fallback",
56
+ },
57
+ groups: ["info"],
58
+ });
59
+ const recentSearchAttempts = analysis.searchAttempts?.slice(-5) ?? [];
34
60
  const prompt = `
35
61
  You are an autonomous coding agent.
36
62
 
@@ -45,10 +71,23 @@ ${intentCategory}
45
71
  Allowed actions (info only):
46
72
  ${actionsJson}
47
73
 
74
+ Recent search attempts:
75
+ ${JSON.stringify(recentSearchAttempts, null, 2)}
76
+
77
+ Ordered question parts:
78
+ ${JSON.stringify(orderedQuestions, null, 2)}
79
+
48
80
  Rules:
49
81
  - Only produce a single info step.
50
- - Step must include: "action", "description", "subQuery" (array), "metadata".
82
+ - Step must include: "action", "actionId", "actionArgs", "description", "subQuery" (array), "metadata".
83
+ - When one ordered question clearly drives this step, include "questionId".
51
84
  - Do NOT invent new actions or files.
85
+ - Prefer "search-db" for normal file, folder, symbol, and semantic lookup.
86
+ - Use "search-list-directory" for direct folder contents questions.
87
+ - Use "search-regex" only when pattern matching is the right tool.
88
+ - For "search-regex", actionArgs must include:
89
+ { "target": "path" | "content" | "both", "pattern": string, "flags"?: string, "scope"?: { "files"?: string[], "folders"?: string[] }, "rationale"?: string }
90
+ - If a recent search attempt failed, do not repeat the same search type with the same query/spec unchanged.
52
91
  - Return strictly valid JSON representing one step.
53
92
 
54
93
  If no further information is required, return:
@@ -56,7 +95,15 @@ If no further information is required, return:
56
95
  `.trim();
57
96
  try {
58
97
  const genInput = { query: intentText, content: prompt };
59
- const genOutput = await generate(genInput);
98
+ const genOutput = await generate(genInput, {
99
+ caller: "infoPlanGenStep",
100
+ inputContext: {
101
+ intentText,
102
+ intentCategory,
103
+ orderedQuestions,
104
+ allowedActions: effectiveActions,
105
+ },
106
+ });
60
107
  const raw = typeof genOutput.data === 'string'
61
108
  ? genOutput.data
62
109
  : JSON.stringify(genOutput.data ?? '{}');
@@ -74,7 +121,14 @@ If no further information is required, return:
74
121
  // Attach groups & routing confidence if available
75
122
  if (step) {
76
123
  const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);
124
+ // Migration bridge: planners can still return "action", runtime uses actionId/actionArgs.
125
+ // Example: { action: "fileSearch" } -> { actionId: "fileSearch", actionArgs: {} }.
126
+ step.actionId = step.actionId ?? step.action;
127
+ step.actionArgs = step.actionArgs ?? {};
77
128
  step.groups = actionDef?.groups ?? ['info'];
129
+ if (typeof step.questionId !== "string" || step.questionId.trim().length === 0) {
130
+ step.questionId = orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined;
131
+ }
78
132
  const confidence = analysis?.routingDecision?.confidence;
79
133
  step.metadata = {
80
134
  ...step.metadata,
@@ -84,13 +138,17 @@ If no further information is required, return:
84
138
  };
85
139
  }
86
140
  // Save as array in planSuggestion
87
- context.analysis.planSuggestion = { plan: { steps: step ? [step] : [] } };
88
- logInputOutput('infoPlanGen', 'output', context.analysis.planSuggestion.plan?.steps ?? []);
141
+ context.analysis.planSuggestion = { plan: { steps: step ? [step] : [buildFallbackStep()] } };
142
+ logInputOutput('infoPlanGen', 'output', {
143
+ callId: genOutput.trace?.callId,
144
+ steps: context.analysis.planSuggestion.plan?.steps ?? [],
145
+ });
89
146
  }
90
147
  catch (err) {
91
148
  console.warn('⚠️ Failed to generate info step:', err);
92
- context.analysis.planSuggestion = { plan: { steps: [] } };
93
- logInputOutput('infoPlanGen', 'output', []);
149
+ context.analysis.planSuggestion = { plan: { steps: [buildFallbackStep()] } };
150
+ logInputOutput('infoPlanGen', 'output', context.analysis.planSuggestion.plan?.steps ?? []);
94
151
  }
95
152
  }
96
153
  };
154
+ //# sourceMappingURL=infoPlanGenStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infoPlanGenStep.js","sourceRoot":"","sources":["../../src/agents/infoPlanGenStep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generates one typed info-gathering action for the current verify wave.\n *\n * Why this file exists:\n * - the loop needs a small, explicit menu for info actions\n * - search is now chosen as a typed action, not a hidden fallback\n * - recent failed search attempts should shape the next search choice\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 } from '../types.js';\n\n/**\n * Refactor note:\n * - Planner output now includes actionId/actionArgs for router compatibility.\n * - Why it exists: runtime executes typed actions, not free-form action names.\n */\n/**\n * INFO PLAN GENERATOR\n * Generates a single information-acquisition step.\n *\n * NOTE:\n * - This step only creates a plan; execution happens in the agent loop.\n * - The agent controls when this step runs.\n */\nexport const infoPlanGenStep = {\n name: 'infoPlanGen',\n description: 'Generates one information-acquisition step.',\n\n requires: ['userQuery', 'analysis.intent'],\n produces: ['analysis.planSuggestion'],\n\n async run(context: StructuredContext): Promise<void> {\n context.analysis ||= {};\n\n // Clear any previous plan\n delete context.analysis.planSuggestion;\n\n const analysis = context.analysis;\n const intentText = analysis.intent?.normalizedQuery ?? '';\n const intentCategory = analysis.intent?.intentCategory ?? '';\n const orderedQuestions = analysis.intent?.questions ?? [];\n\n // Only info-type actions\n const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes('info') && a.actionId !== \"fileSearch\");\n if (!effectiveActions.length) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput('infoPlanGen', 'output', []);\n return;\n }\n\n const actionsJson = JSON.stringify(effectiveActions, null, 2);\n const buildFallbackStep = (): AgentPlanStep => ({\n id: \"info-fallback-search-db\",\n action: \"search-db\",\n actionId: \"search-db\",\n actionArgs: {},\n description: \"Fallback info step: run deterministic DB search when evidence is insufficient.\",\n subQuery: [intentText || context.initContext?.userQuery || \"search relevant files\"],\n metadata: {\n source: \"deterministic-fallback\",\n },\n groups: [\"info\"],\n });\n const recentSearchAttempts = analysis.searchAttempts?.slice(-5) ?? [];\n\n const prompt = `\nYou are an autonomous coding agent.\n\nProduce exactly ONE structured step to gather additional information needed to satisfy the user's intent.\n\nIntent / task description:\n${intentText}\n\nTask category:\n${intentCategory}\n\nAllowed actions (info only):\n${actionsJson}\n\nRecent search attempts:\n${JSON.stringify(recentSearchAttempts, null, 2)}\n\nOrdered question parts:\n${JSON.stringify(orderedQuestions, null, 2)}\n\nRules:\n- Only produce a single info step.\n- Step must include: \"action\", \"actionId\", \"actionArgs\", \"description\", \"subQuery\" (array), \"metadata\".\n- When one ordered question clearly drives this step, include \"questionId\".\n- Do NOT invent new actions or files.\n- Prefer \"search-db\" for normal file, folder, symbol, and semantic lookup.\n- Use \"search-list-directory\" for direct folder contents questions.\n- Use \"search-regex\" only when pattern matching is the right tool.\n- For \"search-regex\", actionArgs must include:\n { \"target\": \"path\" | \"content\" | \"both\", \"pattern\": string, \"flags\"?: string, \"scope\"?: { \"files\"?: string[], \"folders\"?: string[] }, \"rationale\"?: string }\n- If a recent search attempt failed, do not repeat the same search type with the same query/spec unchanged.\n- Return strictly valid JSON representing one step.\n\nIf no further information is required, return:\n{ \"step\": null }\n `.trim();\n\n try {\n const genInput: ModuleIO = { query: intentText, content: prompt };\n const genOutput = await generate(genInput, {\n caller: \"infoPlanGenStep\",\n inputContext: {\n intentText,\n intentCategory,\n orderedQuestions,\n allowedActions: effectiveActions,\n },\n });\n\n const raw = typeof genOutput.data === 'string'\n ? genOutput.data\n : JSON.stringify(genOutput.data ?? '{}');\n\n const cleaned = await cleanupModule.run({ query: intentText, content: raw });\n\n const jsonString = typeof cleaned.content === 'string'\n ? cleaned.content\n : JSON.stringify(cleaned.content ?? '{}');\n\n // Unwrap the step from LLM output\n const parsed = JSON.parse(jsonString);\n let step: AgentPlanStep | null = parsed?.step ?? null;\n\n // Validate minimal structure\n if (!step || typeof step.action !== 'string') {\n step = null;\n }\n\n // Attach groups & routing confidence if available\n if (step) {\n const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);\n // Migration bridge: planners can still return \"action\", runtime uses actionId/actionArgs.\n // Example: { action: \"fileSearch\" } -> { actionId: \"fileSearch\", actionArgs: {} }.\n step.actionId = step.actionId ?? step.action;\n step.actionArgs = step.actionArgs ?? {};\n step.groups = actionDef?.groups ?? ['info'];\n if (typeof step.questionId !== \"string\" || step.questionId.trim().length === 0) {\n step.questionId = orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined;\n }\n\n const confidence = analysis?.routingDecision?.confidence;\n step.metadata = {\n ...step.metadata,\n ...(typeof confidence === 'number' && confidence > 0\n ? { routingConfidence: confidence }\n : {})\n };\n }\n\n // Save as array in planSuggestion\n context.analysis.planSuggestion = { plan: { steps: step ? [step] : [buildFallbackStep()] } };\n logInputOutput('infoPlanGen', 'output', {\n callId: genOutput.trace?.callId,\n steps: context.analysis.planSuggestion.plan?.steps ?? [],\n });\n\n } catch (err) {\n console.warn('⚠️ Failed to generate info step:', err);\n context.analysis.planSuggestion = { plan: { steps: [buildFallbackStep()] } };\n logInputOutput('infoPlanGen', 'output', context.analysis.planSuggestion.plan?.steps ?? []);\n }\n }\n};\n"]}
@@ -64,3 +64,4 @@ export const integrateFeedbackStep = {
64
64
  });
65
65
  }
66
66
  };
67
+ //# sourceMappingURL=integrateFeedbackStep.js.map