scai 0.1.178 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (770) hide show
  1. package/README.md +171 -260
  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
@@ -3,7 +3,7 @@ import fs from "fs";
3
3
  import { logInputOutput } from "../utils/promptLogHelper.js";
4
4
  /**
5
5
  * Purpose:
6
- * Mirrors previously selected files into workingFiles.
6
+ * Mirrors resolver-selected execution files into workingFiles.
7
7
  * - Does NOT promote files based on evidence.
8
8
  * - Candidate files are left untouched.
9
9
  * - Rationale is preserved from preFileSearchCheckStep.
@@ -18,11 +18,17 @@ export const selectRelevantSourcesStep = {
18
18
  if (!context?.analysis?.focus) {
19
19
  throw new Error("[selectRelevantSources] context.analysis.focus is required.");
20
20
  }
21
- const selectedFiles = context.analysis.focus.selectedFiles ?? [];
21
+ const executionPolicy = context.analysis.executionPolicy;
22
+ const useExecutionLane = Boolean(executionPolicy?.phaseAllowed?.transform) &&
23
+ Boolean(executionPolicy?.routeAllowed?.transform) &&
24
+ (executionPolicy?.executionRequired?.length ?? 0) > 0;
25
+ const selectedFiles = useExecutionLane
26
+ ? executionPolicy?.executionRequired ?? []
27
+ : context.analysis.focus.selectedFiles ?? [];
22
28
  const candidateFiles = context.analysis.focus.candidateFiles ?? [];
23
29
  const discardedFiles = []; // no reasoning done here
24
30
  // ---------------------------
25
- // 1️⃣ Populate workingFiles from selectedFiles only
31
+ // 1️⃣ Populate workingFiles from execution lane first (fallback: selectedFiles)
26
32
  // ---------------------------
27
33
  const workingFiles = [];
28
34
  for (const path of selectedFiles) {
@@ -58,17 +64,19 @@ export const selectRelevantSourcesStep = {
58
64
  candidateFiles,
59
65
  discardedFiles,
60
66
  rationale: (context.analysis.focus.rationale ?? "") +
61
- "\n[selectRelevantSources] Working files mirrored mechanically from previous selections.",
67
+ "\n[selectRelevantSources] Working files mirrored from execution lane snapshot.",
62
68
  };
63
69
  const output = {
64
70
  query,
65
71
  data: {
66
72
  workingFiles: context.workingFiles.map(f => ({ path: f.path })),
67
73
  selectedFiles,
68
- candidateFiles
74
+ candidateFiles,
75
+ executionLock: executionPolicy?.executionLock ?? null,
69
76
  },
70
77
  };
71
78
  logInputOutput("selectRelevantSources", "output", output.data);
72
79
  return output;
73
80
  },
74
81
  };
82
+ //# sourceMappingURL=selectRelevantSourcesStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectRelevantSourcesStep.js","sourceRoot":"","sources":["../../src/agents/selectRelevantSourcesStep.ts"],"names":[],"mappings":"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","sourcesContent":["// File: src/modules/selectRelevantSourcesStep.ts\nimport fs from \"fs\";\nimport { logInputOutput } from \"../utils/promptLogHelper.js\";\nimport type { Module, ModuleIO, StructuredFileCapsule } from \"../types.js\";\n\n/**\n * Purpose:\n * Mirrors resolver-selected execution files into workingFiles.\n * - Does NOT promote files based on evidence.\n * - Candidate files are left untouched.\n * - Rationale is preserved from preFileSearchCheckStep.\n */\nexport const selectRelevantSourcesStep: Module = {\n name: \"selectRelevantSources\",\n description:\n \"Mirrors focus.selectedFiles into workingFiles without reasoning over evidence.\",\n groups: [\"analysis\"],\n\n run: async (input: ModuleIO): Promise<ModuleIO> => {\n const query = input.query ?? \"\";\n const context = input.context;\n\n if (!context?.analysis?.focus) {\n throw new Error(\"[selectRelevantSources] context.analysis.focus is required.\");\n }\n\n const executionPolicy = context.analysis.executionPolicy;\n const useExecutionLane =\n Boolean(executionPolicy?.phaseAllowed?.transform) &&\n Boolean(executionPolicy?.routeAllowed?.transform) &&\n (executionPolicy?.executionRequired?.length ?? 0) > 0;\n const selectedFiles =\n useExecutionLane\n ? executionPolicy?.executionRequired ?? []\n : context.analysis.focus.selectedFiles ?? [];\n const candidateFiles = context.analysis.focus.candidateFiles ?? [];\n const discardedFiles: string[] = []; // no reasoning done here\n\n // ---------------------------\n // 1️⃣ Populate workingFiles from execution lane first (fallback: selectedFiles)\n // ---------------------------\n const workingFiles: StructuredFileCapsule[] = [];\n\n for (const path of selectedFiles) {\n let code: string | undefined;\n try {\n code = fs.readFileSync(path, \"utf-8\");\n } catch {\n code = undefined;\n }\n workingFiles.push({\n path,\n code,\n selectionReason: \"Selected by preFileSearchCheckStep\",\n });\n }\n\n // Deduplicate if anything preexists\n const seen = new Set<string>();\n context.workingFiles = [\n ...(context.workingFiles ?? []),\n ...workingFiles.filter(f => {\n if (!f.path || seen.has(f.path)) return false;\n seen.add(f.path);\n return true;\n }),\n ];\n\n // ---------------------------\n // 2️⃣ Preserve focus but update rationale\n // ---------------------------\n context.analysis.focus = {\n selectedFiles,\n candidateFiles,\n discardedFiles,\n rationale:\n (context.analysis.focus.rationale ?? \"\") +\n \"\\n[selectRelevantSources] Working files mirrored from execution lane snapshot.\",\n };\n\n const output: ModuleIO = {\n query,\n data: {\n workingFiles: context.workingFiles.map(f => ({ path: f.path })),\n selectedFiles,\n candidateFiles,\n executionLock: executionPolicy?.executionLock ?? null,\n },\n };\n\n logInputOutput(\"selectRelevantSources\", \"output\", output.data);\n return output;\n },\n};\n"]}
@@ -4,13 +4,13 @@ import { logInputOutput } from "../utils/promptLogHelper.js";
4
4
  /**
5
5
  * Structural preload:
6
6
  * - Calls buildInDepthContext for candidate files.
7
- * - Extracts structural facts only.
7
+ * - Extracts structural facts only, without requiring KG enrichment.
8
8
  * - Populates analysis.fileAnalysis[path].structural.
9
9
  * - Does NOT reason or assign relevance.
10
10
  */
11
11
  export const structuralPreloadStep = {
12
12
  name: "structuralPreload",
13
- description: "Preloads structural KG and code metadata into fileAnalysis without performing reasoning.",
13
+ description: "Preloads structural file facts into fileAnalysis without performing reasoning.",
14
14
  groups: ["analysis"],
15
15
  run: async (input) => {
16
16
  const query = input.query ?? "";
@@ -39,8 +39,6 @@ export const structuralPreloadStep = {
39
39
  // ---- Get structural data (path → structural object) ----
40
40
  const structuralMap = await buildInDepthContext({
41
41
  filenames: pathsNeedingStructure,
42
- relatedFiles: context.initContext?.relatedFiles ?? [],
43
- query,
44
42
  });
45
43
  // ---- Merge into fileAnalysis ----
46
44
  for (const [path, structural] of Object.entries(structuralMap)) {
@@ -59,3 +57,4 @@ export const structuralPreloadStep = {
59
57
  return { query, data: {} };
60
58
  },
61
59
  };
60
+ //# sourceMappingURL=structuralPreloadStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuralPreloadStep.js","sourceRoot":"","sources":["../../src/agents/structuralPreloadStep.ts"],"names":[],"mappings":"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","sourcesContent":["// File: src/modules/structuralPreloadStep.ts\n\nimport { buildInDepthContext } from \"../utils/buildContextualPrompt.js\";\nimport { logInputOutput } from \"../utils/promptLogHelper.js\";\nimport type { Module, ModuleIO, StructuredContext } from \"../types.js\";\n\n/**\n * Structural preload:\n * - Calls buildInDepthContext for candidate files.\n * - Extracts structural facts only, without requiring KG enrichment.\n * - Populates analysis.fileAnalysis[path].structural.\n * - Does NOT reason or assign relevance.\n */\nexport const structuralPreloadStep: Module = {\n name: \"structuralPreload\",\n description:\n \"Preloads structural file facts into fileAnalysis without performing reasoning.\",\n groups: [\"analysis\"],\n\n run: async (input: ModuleIO): Promise<ModuleIO> => {\n const query = input.query ?? \"\";\n const context = input.context as StructuredContext;\n\n if (!context?.analysis) {\n throw new Error(\"[structuralPreload] context.analysis is required.\");\n }\n\n // ---- Ensure fileAnalysis exists (type-safe) ----\n if (!context.analysis.fileAnalysis) {\n context.analysis.fileAnalysis = {};\n }\n const fileAnalysis = context.analysis.fileAnalysis;\n\n // ---- Candidate files ----\n const candidatePaths: string[] = [\n ...(context.initContext?.relatedFiles ?? []),\n ];\n const uniquePaths = Array.from(new Set(candidatePaths));\n\n if (!uniquePaths.length) {\n console.warn(\"[structuralPreload] No candidate files to preload.\");\n return { query, data: {} };\n }\n\n // ---- Only preload missing structural data ----\n const pathsNeedingStructure = uniquePaths.filter(\n (p) => !fileAnalysis[p]?.structural\n );\n if (!pathsNeedingStructure.length) return { query, data: {} };\n\n // ---- Get structural data (path → structural object) ----\n const structuralMap = await buildInDepthContext({\n filenames: pathsNeedingStructure,\n });\n\n // ---- Merge into fileAnalysis ----\n for (const [path, structural] of Object.entries(structuralMap)) {\n fileAnalysis[path] ??= { semanticAnalyzed: false };\n fileAnalysis[path].structural = structural;\n }\n\n // ---- Minimal structured log ----\n const logSummary = Object.entries(fileAnalysis).map(([path, analysis]) => ({\n file: path,\n hasStructural: !!analysis.structural,\n functions: analysis.structural?.functions?.length ?? 0,\n classes: analysis.structural?.classes?.length ?? 0,\n imports: analysis.structural?.imports?.length ?? 0,\n }));\n\n logInputOutput(\"structuralPreload\", \"output\", logSummary);\n\n return { query, data: {} };\n },\n};\n"]}
@@ -1,12 +1,23 @@
1
- // File: src/agents/transformPlanGenStep.ts
1
+ /**
2
+ * Builds one-file transform plans from user intent and local file evidence.
3
+ *
4
+ * Why this file exists:
5
+ * - the agent needs typed transform steps before it can call the runtime action router
6
+ * - plan generation stays narrow so single-file edits do not spill into unrelated files
7
+ */
2
8
  import { generate } from '../lib/generate.js';
3
9
  import { PLAN_ACTIONS } from '../utils/planActions.js';
4
10
  import { logInputOutput } from '../utils/promptLogHelper.js';
5
11
  import { cleanupModule } from '../pipeline/modules/cleanupModule.js';
12
+ /**
13
+ * Refactor note:
14
+ * - Transform planner emits typed actions and optional doneWhenRegex hints.
15
+ * - Why it exists: deterministic completion checks should be planner-assisted.
16
+ */
6
17
  /**
7
18
  * TRANSFORM PLAN GENERATOR
8
19
  * Generates one or more code transformation steps per iteration,
9
- * strictly scoped to the current TaskStep file.
20
+ * strictly scoped to the current durable Step file.
10
21
  */
11
22
  export const transformPlanGenStep = {
12
23
  name: 'transformPlanGen',
@@ -37,9 +48,11 @@ export const transformPlanGenStep = {
37
48
  const actionsJson = JSON.stringify(effectiveActions, null, 2);
38
49
  const intentText = context.analysis.intent?.normalizedQuery ?? '';
39
50
  const intentCategory = context.analysis.intent?.intentCategory ?? '';
51
+ const orderedQuestions = context.analysis.intent?.questions ?? [];
40
52
  const fileAnalysis = context.analysis.fileAnalysis ?? {};
41
53
  // ✅ Use currentStep file
42
54
  const targetFile = currentStep.filePath;
55
+ const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);
43
56
  // Guard: nothing to transform
44
57
  if (!targetFile || !fileAnalysis[targetFile]) {
45
58
  context.analysis.planSuggestion = { plan: { steps: [] } };
@@ -82,6 +95,8 @@ ${actionsJson}
82
95
  Excerpts (localized hints):
83
96
  ${JSON.stringify(excerpts, null, 2)}
84
97
 
98
+ ${orderedQuestions.length > 0 ? `Ordered question parts:\n${JSON.stringify(orderedQuestions, null, 2)}\n` : ""}
99
+
85
100
  Rules:
86
101
  - Use excerpts ONLY to infer WHERE changes occur
87
102
  - You MAY reference startLine/endLine ONLY if they are present
@@ -90,11 +105,12 @@ Rules:
90
105
  - If the intent implies multiple operations (e.g. move = remove + append),
91
106
  generate multiple steps in logical order
92
107
  - Only include transform steps
93
- - Each step must include: action, targetFile, description, metadata
108
+ - Each step must include: action, actionId, actionArgs, targetFile, description, metadata
109
+ - If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.
94
110
 
95
111
  Return strictly valid JSON:
96
112
 
97
- { "steps": [ { "action": "stepName", "targetFile": "${targetFile}", "description": "what to do and where (using excerpt hints)", "metadata": {} } ] }
113
+ { "steps": [ { "action": "stepName", "actionId": "stepName", "actionArgs": {}, "targetFile": "${targetFile}", "description": "what to do and where (using excerpt hints)", "metadata": { "doneWhenRegex": { "filePath": "${targetFile}", "pattern": "...", "flags": "m" } } } ] }
98
114
  `.trim()
99
115
  : `
100
116
  You are an autonomous coding agent.
@@ -115,40 +131,64 @@ ${intentCategory}
115
131
  Allowed actions (transform only):
116
132
  ${actionsJson}
117
133
 
134
+ ${orderedQuestions.length > 0 ? `Ordered question parts:\n${JSON.stringify(orderedQuestions, null, 2)}\n` : ""}
135
+
118
136
  Rules:
119
137
  - Plan purely from intent
120
138
  - If the intent implies multiple operations (e.g. move = remove + append),
121
139
  generate multiple steps in logical order
122
140
  - Do NOT include any location hints or references
123
141
  - Only include transform steps
124
- - Each step must include: action, targetFile, description, metadata
142
+ - Each step must include: action, actionId, actionArgs, targetFile, description, metadata
143
+ - If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.
125
144
 
126
145
  Return strictly valid JSON:
127
146
 
128
- { "steps": [ { "action": "stepName", "targetFile": "${targetFile}", "description": "what to do (no location hints)", "metadata": {} } ] }
147
+ { "steps": [ { "action": "stepName", "actionId": "stepName", "actionArgs": {}, "targetFile": "${targetFile}", "description": "what to do (no location hints)", "metadata": { "doneWhenRegex": { "filePath": "${targetFile}", "pattern": "...", "flags": "m" } } } ] }
129
148
  `.trim();
130
149
  try {
131
150
  const genInput = { query: intentText, content: prompt };
132
- const genOutput = await generate(genInput);
151
+ const genOutput = await generate(genInput, {
152
+ caller: "transformPlanGenStep",
153
+ inputContext: {
154
+ intentText,
155
+ intentCategory,
156
+ targetFile,
157
+ orderedQuestions,
158
+ currentQuestionId,
159
+ hasExcerpts,
160
+ excerpts,
161
+ allowedActions: effectiveActions,
162
+ },
163
+ });
133
164
  const raw = typeof genOutput.data === 'string'
134
165
  ? genOutput.data
135
166
  : JSON.stringify(genOutput.data ?? '{}');
136
167
  const cleaned = await cleanupModule.run({ query: intentText, content: raw });
137
- const jsonString = typeof cleaned.content === 'string'
138
- ? cleaned.content
139
- : JSON.stringify(cleaned.content ?? '{}');
140
168
  let parsed = null;
141
- try {
142
- parsed = JSON.parse(jsonString);
169
+ if (typeof cleaned.data === 'object' && cleaned.data !== null) {
170
+ parsed = cleaned.data;
143
171
  }
144
- catch {
145
- parsed = null;
172
+ else if (typeof cleaned.content === 'string') {
173
+ try {
174
+ parsed = JSON.parse(cleaned.content);
175
+ }
176
+ catch {
177
+ parsed = null;
178
+ }
146
179
  }
147
- const steps = Array.isArray(parsed?.steps) ? parsed.steps : [];
180
+ const parsedSteps = Array.isArray(parsed?.steps) ? parsed.steps : null;
181
+ const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);
182
+ // Keep an explicit empty planner result as a real no-op.
183
+ const effectiveSteps = parsedSteps ?? (fallbackStep ? [fallbackStep] : []);
148
184
  // Normalize steps: enforce targetFile, groups, metadata
149
- const normalizedSteps = steps.map((step, index) => {
185
+ const normalizedSteps = effectiveSteps.map((step, index) => {
150
186
  step.id = `transform:${targetFile}:${index + 1}`;
151
187
  step.targetFile = targetFile;
188
+ // ActionRouter consumes actionId/actionArgs; action is kept for backward compatibility.
189
+ step.actionId = step.actionId ?? step.action;
190
+ step.actionArgs = step.actionArgs ?? {};
191
+ step.questionId = step.questionId ?? currentQuestionId;
152
192
  const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);
153
193
  step.groups = actionDef?.groups ?? ['transform'];
154
194
  const confidence = context.analysis?.routingDecision?.confidence;
@@ -161,11 +201,58 @@ Return strictly valid JSON:
161
201
  return step;
162
202
  });
163
203
  context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };
164
- logInputOutput('transformPlanGen', 'output', normalizedSteps);
204
+ logInputOutput('transformPlanGen', 'output', {
205
+ callId: genOutput.trace?.callId,
206
+ source: parsedSteps
207
+ ? 'model'
208
+ : (fallbackStep ? 'fallback' : 'empty'),
209
+ steps: normalizedSteps,
210
+ });
165
211
  }
166
212
  catch (err) {
167
213
  console.warn('⚠️ Failed to generate transform plan:', err);
168
- context.analysis.planSuggestion = { plan: { steps: [] } };
214
+ const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);
215
+ const fallbackSteps = fallbackStep ? [fallbackStep] : [];
216
+ context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };
217
+ logInputOutput('transformPlanGen', 'output', {
218
+ source: fallbackStep ? 'fallback-after-error' : 'empty-after-error',
219
+ steps: fallbackSteps,
220
+ });
169
221
  }
170
222
  }
171
223
  };
224
+ /**
225
+ * Builds a safe one-step transform fallback from semantic analysis when plan JSON is missing.
226
+ *
227
+ * Example:
228
+ * - summary "Add a hello world comment near the imports" -> one `codeTransform` step with that description
229
+ * - shouldModify false -> no fallback step
230
+ */
231
+ function buildFallbackTransformStep(targetFile, fileAnalysis, routingConfidence, currentQuestionId) {
232
+ if (!fileAnalysis?.action?.shouldModify) {
233
+ return null;
234
+ }
235
+ const summary = fileAnalysis.proposedChanges?.summary?.trim();
236
+ const rationale = fileAnalysis.proposedChanges?.rationale?.trim();
237
+ const description = [summary, rationale].filter(Boolean).join(" ");
238
+ if (!description) {
239
+ return null;
240
+ }
241
+ return {
242
+ id: `transform:${targetFile}:fallback`,
243
+ action: "codeTransform",
244
+ actionId: "codeTransform",
245
+ actionArgs: {},
246
+ targetFile,
247
+ questionId: currentQuestionId,
248
+ description,
249
+ groups: ["transform"],
250
+ metadata: {
251
+ source: "semantic-fallback",
252
+ ...(typeof routingConfidence === "number" && routingConfidence > 0
253
+ ? { routingConfidence }
254
+ : {}),
255
+ },
256
+ };
257
+ }
258
+ //# sourceMappingURL=transformPlanGenStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformPlanGenStep.js","sourceRoot":"","sources":["../../src/agents/transformPlanGenStep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Builds one-file transform plans from user intent and local file evidence.\n *\n * Why this file exists:\n * - the agent needs typed transform steps before it can call the runtime action router\n * - plan generation stays narrow so single-file edits do not spill into unrelated files\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, FileAnalysis } from '../types.js';\n\n/**\n * Refactor note:\n * - Transform planner emits typed actions and optional doneWhenRegex hints.\n * - Why it exists: deterministic completion checks should be planner-assisted.\n */\n/**\n * TRANSFORM PLAN GENERATOR\n * Generates one or more code transformation steps per iteration,\n * strictly scoped to the current durable Step file.\n */\nexport const transformPlanGenStep = {\n name: 'transformPlanGen',\n description: 'Generates code transformation steps for a single target file.',\n\n requires: ['analysis.intent', 'analysis.focus', 'analysis.fileAnalysis', 'task.currentStep'],\n produces: ['analysis.planSuggestion'],\n\n async run(context: StructuredContext): Promise<void> {\n // ✅ Fail early if no task\n if (!context.task) {\n throw new Error(\"transformPlanGen: missing context.task\");\n }\n\n // ✅ Fail early if no current step\n const currentStep = context.task.currentStep;\n if (!currentStep) {\n throw new Error(\"transformPlanGen: missing context.task.currentStep\");\n }\n\n context.analysis ||= {};\n context.execution ||= {};\n\n // Always clear previous transform plan\n delete context.analysis.planSuggestion;\n\n // Restrict actions to TRANSFORM only\n const effectiveActions = PLAN_ACTIONS.filter(a => a.groups?.includes('transform'));\n if (!effectiveActions.length) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput('transformPlanGen', 'output', { steps: [] });\n return;\n }\n\n const actionsJson = JSON.stringify(effectiveActions, null, 2);\n const intentText = context.analysis.intent?.normalizedQuery ?? '';\n const intentCategory = context.analysis.intent?.intentCategory ?? '';\n const orderedQuestions = context.analysis.intent?.questions ?? [];\n\n const fileAnalysis: Record<string, FileAnalysis> = context.analysis.fileAnalysis ?? {};\n\n // ✅ Use currentStep file\n const targetFile = currentStep.filePath;\n const currentQuestionId = currentStep.questionId ?? (orderedQuestions.length === 1 ? orderedQuestions[0].id : undefined);\n\n // Guard: nothing to transform\n if (!targetFile || !fileAnalysis[targetFile]) {\n context.analysis.planSuggestion = { plan: { steps: [] } };\n logInputOutput('transformPlanGen', 'output', { steps: [] });\n return;\n }\n\n const fa = fileAnalysis[targetFile];\n\n const excerpts = fa.excerpts?.map(e => ({\n description: e.description,\n startLine: e.startLine,\n endLine: e.endLine,\n symbols: e.symbols,\n code: e.code\n })) ?? [];\n\n const hasExcerpts = excerpts.length > 0;\n\n // Build prompt\n const prompt = hasExcerpts\n ? `\nYou are an autonomous coding agent.\n\nYour task is to generate a transform plan using ONLY:\n- the user intent\n- the provided excerpts as localized hints\n\nIMPORTANT CONSTRAINTS:\n- All steps MUST target the same file: ${targetFile}\n- Do NOT reference or modify any other file\n- Do NOT invent file structure beyond what excerpts explicitly show\n- Do NOT infer missing excerpt fields\n\nIntent:\n${intentText}\n\nTask category:\n${intentCategory}\n\nAllowed actions (transform only):\n${actionsJson}\n\nExcerpts (localized hints):\n${JSON.stringify(excerpts, null, 2)}\n\n${orderedQuestions.length > 0 ? `Ordered question parts:\\n${JSON.stringify(orderedQuestions, null, 2)}\\n` : \"\"}\n\nRules:\n- Use excerpts ONLY to infer WHERE changes occur\n- You MAY reference startLine/endLine ONLY if they are present\n- You MAY reference description or symbols if useful\n- Treat code snippets as context, not as the full file\n- If the intent implies multiple operations (e.g. move = remove + append),\n generate multiple steps in logical order\n- Only include transform steps\n- Each step must include: action, actionId, actionArgs, targetFile, description, metadata\n- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.\n\nReturn strictly valid JSON:\n\n{ \"steps\": [ { \"action\": \"stepName\", \"actionId\": \"stepName\", \"actionArgs\": {}, \"targetFile\": \"${targetFile}\", \"description\": \"what to do and where (using excerpt hints)\", \"metadata\": { \"doneWhenRegex\": { \"filePath\": \"${targetFile}\", \"pattern\": \"...\", \"flags\": \"m\" } } } ] }\n`.trim()\n : `\nYou are an autonomous coding agent.\n\nYour task is to generate a transform plan using ONLY the user intent.\n\nIMPORTANT CONSTRAINTS:\n- All steps MUST target the same file: ${targetFile}\n- Do NOT reference or modify any other file\n- Do NOT invent line numbers, sections, symbols, or file structure\n\nIntent:\n${intentText}\n\nTask category:\n${intentCategory}\n\nAllowed actions (transform only):\n${actionsJson}\n\n${orderedQuestions.length > 0 ? `Ordered question parts:\\n${JSON.stringify(orderedQuestions, null, 2)}\\n` : \"\"}\n\nRules:\n- Plan purely from intent\n- If the intent implies multiple operations (e.g. move = remove + append),\n generate multiple steps in logical order\n- Do NOT include any location hints or references\n- Only include transform steps\n- Each step must include: action, actionId, actionArgs, targetFile, description, metadata\n- If possible include metadata.doneWhenRegex = { filePath, pattern, flags } for deterministic completion checks.\n\nReturn strictly valid JSON:\n\n{ \"steps\": [ { \"action\": \"stepName\", \"actionId\": \"stepName\", \"actionArgs\": {}, \"targetFile\": \"${targetFile}\", \"description\": \"what to do (no location hints)\", \"metadata\": { \"doneWhenRegex\": { \"filePath\": \"${targetFile}\", \"pattern\": \"...\", \"flags\": \"m\" } } } ] }\n`.trim();\n\n try {\n const genInput: ModuleIO = { query: intentText, content: prompt };\n const genOutput = await generate(genInput, {\n caller: \"transformPlanGenStep\",\n inputContext: {\n intentText,\n intentCategory,\n targetFile,\n orderedQuestions,\n currentQuestionId,\n hasExcerpts,\n excerpts,\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 let parsed: { steps?: AgentPlanStep[] } | null = null;\n if (typeof cleaned.data === 'object' && cleaned.data !== null) {\n parsed = cleaned.data as { steps?: AgentPlanStep[] };\n } else if (typeof cleaned.content === 'string') {\n try {\n parsed = JSON.parse(cleaned.content);\n } catch {\n parsed = null;\n }\n }\n\n const parsedSteps = Array.isArray(parsed?.steps) ? parsed.steps : null;\n const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);\n // Keep an explicit empty planner result as a real no-op.\n const effectiveSteps = parsedSteps ?? (fallbackStep ? [fallbackStep] : []);\n\n // Normalize steps: enforce targetFile, groups, metadata\n const normalizedSteps: AgentPlanStep[] = effectiveSteps.map((step, index) => {\n step.id = `transform:${targetFile}:${index + 1}`;\n step.targetFile = targetFile;\n // ActionRouter consumes actionId/actionArgs; action is kept for backward compatibility.\n step.actionId = step.actionId ?? step.action;\n step.actionArgs = step.actionArgs ?? {};\n step.questionId = step.questionId ?? currentQuestionId;\n\n const actionDef = PLAN_ACTIONS.find(a => a.action === step.action);\n step.groups = actionDef?.groups ?? ['transform'];\n\n const confidence = context.analysis?.routingDecision?.confidence;\n step.metadata = {\n ...step.metadata,\n ...(typeof confidence === 'number' && confidence > 0\n ? { routingConfidence: confidence }\n : {})\n };\n\n return step;\n });\n\n context.analysis.planSuggestion = { plan: { steps: normalizedSteps } };\n logInputOutput('transformPlanGen', 'output', {\n callId: genOutput.trace?.callId,\n source: parsedSteps\n ? 'model'\n : (fallbackStep ? 'fallback' : 'empty'),\n steps: normalizedSteps,\n });\n\n } catch (err) {\n console.warn('⚠️ Failed to generate transform plan:', err);\n const fallbackStep = buildFallbackTransformStep(targetFile, fa, context.analysis?.routingDecision?.confidence, currentQuestionId);\n const fallbackSteps = fallbackStep ? [fallbackStep] : [];\n context.analysis.planSuggestion = { plan: { steps: fallbackSteps } };\n logInputOutput('transformPlanGen', 'output', {\n source: fallbackStep ? 'fallback-after-error' : 'empty-after-error',\n steps: fallbackSteps,\n });\n }\n }\n};\n\n/**\n * Builds a safe one-step transform fallback from semantic analysis when plan JSON is missing.\n *\n * Example:\n * - summary \"Add a hello world comment near the imports\" -> one `codeTransform` step with that description\n * - shouldModify false -> no fallback step\n */\nfunction buildFallbackTransformStep(\n targetFile: string,\n fileAnalysis: FileAnalysis | undefined,\n routingConfidence: number | undefined,\n currentQuestionId?: string,\n): AgentPlanStep | null {\n if (!fileAnalysis?.action?.shouldModify) {\n return null;\n }\n\n const summary = fileAnalysis.proposedChanges?.summary?.trim();\n const rationale = fileAnalysis.proposedChanges?.rationale?.trim();\n const description = [summary, rationale].filter(Boolean).join(\" \");\n if (!description) {\n return null;\n }\n\n return {\n id: `transform:${targetFile}:fallback`,\n action: \"codeTransform\",\n actionId: \"codeTransform\",\n actionArgs: {},\n targetFile,\n questionId: currentQuestionId,\n description,\n groups: [\"transform\"],\n metadata: {\n source: \"semantic-fallback\",\n ...(typeof routingConfidence === \"number\" && routingConfidence > 0\n ? { routingConfidence }\n : {}),\n },\n };\n}\n"]}