@polka-codes/cli 0.10.22 → 0.10.24

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 (350) hide show
  1. package/dist/index.js +3990 -353
  2. package/package.json +4 -4
  3. package/dist/ApiProviderConfig.js +0 -57
  4. package/dist/ApiProviderConfig.js.map +0 -1
  5. package/dist/ApiProviderConfig.test.js +0 -278
  6. package/dist/ApiProviderConfig.test.js.map +0 -1
  7. package/dist/agent/advanced-discovery.js +0 -604
  8. package/dist/agent/advanced-discovery.js.map +0 -1
  9. package/dist/agent/config.js +0 -139
  10. package/dist/agent/config.js.map +0 -1
  11. package/dist/agent/config.test.js +0 -140
  12. package/dist/agent/config.test.js.map +0 -1
  13. package/dist/agent/constants.js +0 -172
  14. package/dist/agent/constants.js.map +0 -1
  15. package/dist/agent/constants.test.js +0 -132
  16. package/dist/agent/constants.test.js.map +0 -1
  17. package/dist/agent/debug-logger.js +0 -281
  18. package/dist/agent/debug-logger.js.map +0 -1
  19. package/dist/agent/debug-logger.test.js +0 -294
  20. package/dist/agent/debug-logger.test.js.map +0 -1
  21. package/dist/agent/error-handling.js +0 -114
  22. package/dist/agent/error-handling.js.map +0 -1
  23. package/dist/agent/error-handling.test.js +0 -191
  24. package/dist/agent/error-handling.test.js.map +0 -1
  25. package/dist/agent/errors.js +0 -301
  26. package/dist/agent/errors.js.map +0 -1
  27. package/dist/agent/executor.js +0 -206
  28. package/dist/agent/executor.js.map +0 -1
  29. package/dist/agent/executor.test.js +0 -228
  30. package/dist/agent/executor.test.js.map +0 -1
  31. package/dist/agent/goal-decomposer.js +0 -281
  32. package/dist/agent/goal-decomposer.js.map +0 -1
  33. package/dist/agent/goal-decomposer.test.js +0 -225
  34. package/dist/agent/goal-decomposer.test.js.map +0 -1
  35. package/dist/agent/health-monitor.js +0 -89
  36. package/dist/agent/health-monitor.js.map +0 -1
  37. package/dist/agent/improvement-loop.js +0 -177
  38. package/dist/agent/improvement-loop.js.map +0 -1
  39. package/dist/agent/index.js +0 -38
  40. package/dist/agent/index.js.map +0 -1
  41. package/dist/agent/metrics.js +0 -158
  42. package/dist/agent/metrics.js.map +0 -1
  43. package/dist/agent/metrics.test.js +0 -311
  44. package/dist/agent/metrics.test.js.map +0 -1
  45. package/dist/agent/orchestrator.js +0 -438
  46. package/dist/agent/orchestrator.js.map +0 -1
  47. package/dist/agent/planner.js +0 -199
  48. package/dist/agent/planner.js.map +0 -1
  49. package/dist/agent/planner.test.js +0 -135
  50. package/dist/agent/planner.test.js.map +0 -1
  51. package/dist/agent/progress.js +0 -298
  52. package/dist/agent/progress.js.map +0 -1
  53. package/dist/agent/progress.test.js +0 -255
  54. package/dist/agent/progress.test.js.map +0 -1
  55. package/dist/agent/resource-monitor.js +0 -114
  56. package/dist/agent/resource-monitor.js.map +0 -1
  57. package/dist/agent/safety/approval.js +0 -178
  58. package/dist/agent/safety/approval.js.map +0 -1
  59. package/dist/agent/safety/approval.test.js +0 -142
  60. package/dist/agent/safety/approval.test.js.map +0 -1
  61. package/dist/agent/safety/checks.js +0 -152
  62. package/dist/agent/safety/checks.js.map +0 -1
  63. package/dist/agent/safety/checks.test.js +0 -89
  64. package/dist/agent/safety/checks.test.js.map +0 -1
  65. package/dist/agent/safety/interrupt.js +0 -92
  66. package/dist/agent/safety/interrupt.js.map +0 -1
  67. package/dist/agent/safety/interrupt.test.js +0 -53
  68. package/dist/agent/safety/interrupt.test.js.map +0 -1
  69. package/dist/agent/session.js +0 -117
  70. package/dist/agent/session.js.map +0 -1
  71. package/dist/agent/session.test.js +0 -213
  72. package/dist/agent/session.test.js.map +0 -1
  73. package/dist/agent/state-manager.js +0 -287
  74. package/dist/agent/state-manager.js.map +0 -1
  75. package/dist/agent/task-discovery.js +0 -433
  76. package/dist/agent/task-discovery.js.map +0 -1
  77. package/dist/agent/task-discovery.test.js +0 -40
  78. package/dist/agent/task-discovery.test.js.map +0 -1
  79. package/dist/agent/task-history.js +0 -128
  80. package/dist/agent/task-history.js.map +0 -1
  81. package/dist/agent/task-prioritizer.js +0 -286
  82. package/dist/agent/task-prioritizer.js.map +0 -1
  83. package/dist/agent/test-fixtures.js +0 -112
  84. package/dist/agent/test-fixtures.js.map +0 -1
  85. package/dist/agent/types.js +0 -15
  86. package/dist/agent/types.js.map +0 -1
  87. package/dist/agent/workflow-adapter.js +0 -219
  88. package/dist/agent/workflow-adapter.js.map +0 -1
  89. package/dist/agent/workflow-adapter.test.js +0 -11
  90. package/dist/agent/workflow-adapter.test.js.map +0 -1
  91. package/dist/agent/working-dir-discovery.js +0 -54
  92. package/dist/agent/working-dir-discovery.js.map +0 -1
  93. package/dist/agent/working-space.js +0 -484
  94. package/dist/agent/working-space.js.map +0 -1
  95. package/dist/agent/working-space.test.js +0 -436
  96. package/dist/agent/working-space.test.js.map +0 -1
  97. package/dist/api.js +0 -279
  98. package/dist/api.js.map +0 -1
  99. package/dist/builtin-commands.js +0 -20
  100. package/dist/builtin-commands.js.map +0 -1
  101. package/dist/chunk-2LRQ2QH6.js +0 -1353
  102. package/dist/chunk-FSNPWI3C.js +0 -128
  103. package/dist/chunk-HB7PTE3H.js +0 -176
  104. package/dist/chunk-LLMPMGV3.js +0 -140
  105. package/dist/chunk-NRDSZGMF.js +0 -675
  106. package/dist/chunk-UEEU3SCC.js +0 -390
  107. package/dist/chunk-YPUL66UK.js +0 -277
  108. package/dist/chunk-ZS4K5RFU.js +0 -176
  109. package/dist/chunk-ZU4UU65A.js +0 -40
  110. package/dist/code.workflow-5TAWK2DE.js +0 -10
  111. package/dist/commandSummarizer.js +0 -96
  112. package/dist/commandSummarizer.js.map +0 -1
  113. package/dist/commands/__tests__/command-detection.integration.test.js +0 -238
  114. package/dist/commands/__tests__/command-detection.integration.test.js.map +0 -1
  115. package/dist/commands/__tests__/script-generator.integration.test.js +0 -271
  116. package/dist/commands/__tests__/script-generator.integration.test.js.map +0 -1
  117. package/dist/commands/agent.js +0 -218
  118. package/dist/commands/agent.js.map +0 -1
  119. package/dist/commands/code.js +0 -102
  120. package/dist/commands/code.js.map +0 -1
  121. package/dist/commands/command.constants.js +0 -13
  122. package/dist/commands/command.constants.js.map +0 -1
  123. package/dist/commands/commit.js +0 -17
  124. package/dist/commands/commit.js.map +0 -1
  125. package/dist/commands/fix.js +0 -17
  126. package/dist/commands/fix.js.map +0 -1
  127. package/dist/commands/init.js +0 -501
  128. package/dist/commands/init.js.map +0 -1
  129. package/dist/commands/mcp-server.js +0 -122
  130. package/dist/commands/mcp-server.js.map +0 -1
  131. package/dist/commands/memory.js +0 -410
  132. package/dist/commands/memory.js.map +0 -1
  133. package/dist/commands/memory.test.js +0 -453
  134. package/dist/commands/memory.test.js.map +0 -1
  135. package/dist/commands/meta.js +0 -142
  136. package/dist/commands/meta.js.map +0 -1
  137. package/dist/commands/plan.js +0 -39
  138. package/dist/commands/plan.js.map +0 -1
  139. package/dist/commands/pr.js +0 -14
  140. package/dist/commands/pr.js.map +0 -1
  141. package/dist/commands/review-json.test.js +0 -33
  142. package/dist/commands/review-json.test.js.map +0 -1
  143. package/dist/commands/review.js +0 -137
  144. package/dist/commands/review.js.map +0 -1
  145. package/dist/commands/review.usage.test.js +0 -41
  146. package/dist/commands/review.usage.test.js.map +0 -1
  147. package/dist/commands/run.js +0 -107
  148. package/dist/commands/run.js.map +0 -1
  149. package/dist/commands/skills.js +0 -175
  150. package/dist/commands/skills.js.map +0 -1
  151. package/dist/commands/task.js +0 -34
  152. package/dist/commands/task.js.map +0 -1
  153. package/dist/commands/workflow.js +0 -117
  154. package/dist/commands/workflow.js.map +0 -1
  155. package/dist/commit.workflow-Z64PNSTS.js +0 -9
  156. package/dist/configPrompt.js +0 -39
  157. package/dist/configPrompt.js.map +0 -1
  158. package/dist/env.js +0 -22
  159. package/dist/env.js.map +0 -1
  160. package/dist/errors.js +0 -132
  161. package/dist/errors.js.map +0 -1
  162. package/dist/errors.test.js +0 -21
  163. package/dist/errors.test.js.map +0 -1
  164. package/dist/file-attachments.js +0 -77
  165. package/dist/file-attachments.js.map +0 -1
  166. package/dist/file-attachments.test.js +0 -214
  167. package/dist/file-attachments.test.js.map +0 -1
  168. package/dist/fix.workflow-KLHJU5Z6.js +0 -7
  169. package/dist/getModel.js +0 -229
  170. package/dist/getModel.js.map +0 -1
  171. package/dist/getModel.test.js +0 -67
  172. package/dist/getModel.test.js.map +0 -1
  173. package/dist/getProviderOptions.js +0 -58
  174. package/dist/getProviderOptions.js.map +0 -1
  175. package/dist/git-operations.js +0 -363
  176. package/dist/git-operations.js.map +0 -1
  177. package/dist/git-operations.test.js +0 -81
  178. package/dist/git-operations.test.js.map +0 -1
  179. package/dist/index.js.map +0 -1
  180. package/dist/logger.js +0 -41
  181. package/dist/logger.js.map +0 -1
  182. package/dist/mcp/client.js +0 -11
  183. package/dist/mcp/client.js.map +0 -1
  184. package/dist/mcp/error-scenarios.test.js +0 -206
  185. package/dist/mcp/error-scenarios.test.js.map +0 -1
  186. package/dist/mcp/errors.js +0 -63
  187. package/dist/mcp/errors.js.map +0 -1
  188. package/dist/mcp/index.js +0 -9
  189. package/dist/mcp/index.js.map +0 -1
  190. package/dist/mcp/manager.js +0 -231
  191. package/dist/mcp/manager.js.map +0 -1
  192. package/dist/mcp/manager.test.js +0 -40
  193. package/dist/mcp/manager.test.js.map +0 -1
  194. package/dist/mcp/sdk-client.js +0 -166
  195. package/dist/mcp/sdk-client.js.map +0 -1
  196. package/dist/mcp/shared-types.js +0 -3
  197. package/dist/mcp/shared-types.js.map +0 -1
  198. package/dist/mcp/tools-integration.test.js +0 -198
  199. package/dist/mcp/tools-integration.test.js.map +0 -1
  200. package/dist/mcp/tools.js +0 -60
  201. package/dist/mcp/tools.js.map +0 -1
  202. package/dist/mcp/transport.js +0 -257
  203. package/dist/mcp/transport.js.map +0 -1
  204. package/dist/mcp/types.js +0 -3
  205. package/dist/mcp/types.js.map +0 -1
  206. package/dist/mcp-server/index.js +0 -5
  207. package/dist/mcp-server/index.js.map +0 -1
  208. package/dist/mcp-server/plan-formatting.test.js +0 -74
  209. package/dist/mcp-server/plan-formatting.test.js.map +0 -1
  210. package/dist/mcp-server/sdk-server.js +0 -102
  211. package/dist/mcp-server/sdk-server.js.map +0 -1
  212. package/dist/mcp-server/sdk-server.test.js +0 -363
  213. package/dist/mcp-server/sdk-server.test.js.map +0 -1
  214. package/dist/mcp-server/tools.js +0 -785
  215. package/dist/mcp-server/tools.js.map +0 -1
  216. package/dist/mcp-server/types.js +0 -3
  217. package/dist/mcp-server/types.js.map +0 -1
  218. package/dist/options.js +0 -85
  219. package/dist/options.js.map +0 -1
  220. package/dist/options.test.js +0 -177
  221. package/dist/options.test.js.map +0 -1
  222. package/dist/plan.workflow-P2Y6W4FA.js +0 -8
  223. package/dist/prices.js +0 -61
  224. package/dist/prices.js.map +0 -1
  225. package/dist/prices.test.js +0 -148
  226. package/dist/prices.test.js.map +0 -1
  227. package/dist/review.workflow-I7RHWKU7.js +0 -8
  228. package/dist/runWorkflow.js +0 -313
  229. package/dist/runWorkflow.js.map +0 -1
  230. package/dist/script/__tests__/execution.integration.test.js +0 -274
  231. package/dist/script/__tests__/execution.integration.test.js.map +0 -1
  232. package/dist/script/__tests__/runner.test.js +0 -176
  233. package/dist/script/__tests__/runner.test.js.map +0 -1
  234. package/dist/script/__tests__/validator.test.js +0 -180
  235. package/dist/script/__tests__/validator.test.js.map +0 -1
  236. package/dist/script/executor.js +0 -127
  237. package/dist/script/executor.js.map +0 -1
  238. package/dist/script/index.js +0 -4
  239. package/dist/script/index.js.map +0 -1
  240. package/dist/script/runner.js +0 -258
  241. package/dist/script/runner.js.map +0 -1
  242. package/dist/sdk-client-KBYJRPEG.js +0 -155
  243. package/dist/skillIntegration.js +0 -46
  244. package/dist/skillIntegration.js.map +0 -1
  245. package/dist/skillIntegration.test.js +0 -128
  246. package/dist/skillIntegration.test.js.map +0 -1
  247. package/dist/test/utils.js +0 -200
  248. package/dist/test/utils.js.map +0 -1
  249. package/dist/test/workflow-fixtures.js +0 -120
  250. package/dist/test/workflow-fixtures.js.map +0 -1
  251. package/dist/tool-implementations.js +0 -521
  252. package/dist/tool-implementations.js.map +0 -1
  253. package/dist/tool-implementations.skill-tools.test.js +0 -106
  254. package/dist/tool-implementations.skill-tools.test.js.map +0 -1
  255. package/dist/tools/getTodoItem.js +0 -33
  256. package/dist/tools/getTodoItem.js.map +0 -1
  257. package/dist/tools/gitDiff.js +0 -108
  258. package/dist/tools/gitDiff.js.map +0 -1
  259. package/dist/tools/index.js +0 -8
  260. package/dist/tools/index.js.map +0 -1
  261. package/dist/tools/listMemoryTopics.js +0 -24
  262. package/dist/tools/listMemoryTopics.js.map +0 -1
  263. package/dist/tools/listTodoItems.js +0 -35
  264. package/dist/tools/listTodoItems.js.map +0 -1
  265. package/dist/tools/listTodoItems.test.js +0 -89
  266. package/dist/tools/listTodoItems.test.js.map +0 -1
  267. package/dist/tools/readMemory.js +0 -33
  268. package/dist/tools/readMemory.js.map +0 -1
  269. package/dist/tools/updateMemory.js +0 -62
  270. package/dist/tools/updateMemory.js.map +0 -1
  271. package/dist/tools/updateMemory.test.js +0 -109
  272. package/dist/tools/updateMemory.test.js.map +0 -1
  273. package/dist/tools/updateTodoItem.js +0 -31
  274. package/dist/tools/updateTodoItem.js.map +0 -1
  275. package/dist/tools/utils/diffLineNumbers.js +0 -178
  276. package/dist/tools/utils/diffLineNumbers.js.map +0 -1
  277. package/dist/utils/cacheControl.js +0 -59
  278. package/dist/utils/cacheControl.js.map +0 -1
  279. package/dist/utils/cacheControl.test.js +0 -128
  280. package/dist/utils/cacheControl.test.js.map +0 -1
  281. package/dist/utils/command.js +0 -50
  282. package/dist/utils/command.js.map +0 -1
  283. package/dist/utils/shell.js +0 -56
  284. package/dist/utils/shell.js.map +0 -1
  285. package/dist/utils/userInput.js +0 -47
  286. package/dist/utils/userInput.js.map +0 -1
  287. package/dist/workflow-tools.js +0 -21
  288. package/dist/workflow-tools.js.map +0 -1
  289. package/dist/workflows/agent-builder.js +0 -90
  290. package/dist/workflows/agent-builder.js.map +0 -1
  291. package/dist/workflows/agent-builder.test.js +0 -115
  292. package/dist/workflows/agent-builder.test.js.map +0 -1
  293. package/dist/workflows/code.workflow.js +0 -145
  294. package/dist/workflows/code.workflow.js.map +0 -1
  295. package/dist/workflows/commit.workflow.js +0 -111
  296. package/dist/workflows/commit.workflow.js.map +0 -1
  297. package/dist/workflows/commit.workflow.test.js +0 -141
  298. package/dist/workflows/commit.workflow.test.js.map +0 -1
  299. package/dist/workflows/fix.workflow.js +0 -172
  300. package/dist/workflows/fix.workflow.js.map +0 -1
  301. package/dist/workflows/fix.workflow.test.js +0 -137
  302. package/dist/workflows/fix.workflow.test.js.map +0 -1
  303. package/dist/workflows/git-file-tools.js +0 -408
  304. package/dist/workflows/git-file-tools.js.map +0 -1
  305. package/dist/workflows/index.js +0 -12
  306. package/dist/workflows/index.js.map +0 -1
  307. package/dist/workflows/init-interactive.workflow.js +0 -198
  308. package/dist/workflows/init-interactive.workflow.js.map +0 -1
  309. package/dist/workflows/init.workflow.js +0 -41
  310. package/dist/workflows/init.workflow.js.map +0 -1
  311. package/dist/workflows/meta.workflow.js +0 -107
  312. package/dist/workflows/meta.workflow.js.map +0 -1
  313. package/dist/workflows/plan.workflow.js +0 -275
  314. package/dist/workflows/plan.workflow.js.map +0 -1
  315. package/dist/workflows/plan.workflow.test.js +0 -419
  316. package/dist/workflows/plan.workflow.test.js.map +0 -1
  317. package/dist/workflows/pr.workflow.js +0 -54
  318. package/dist/workflows/pr.workflow.js.map +0 -1
  319. package/dist/workflows/pr.workflow.test.js +0 -98
  320. package/dist/workflows/pr.workflow.test.js.map +0 -1
  321. package/dist/workflows/prompts/coder.js +0 -85
  322. package/dist/workflows/prompts/coder.js.map +0 -1
  323. package/dist/workflows/prompts/commit.js +0 -16
  324. package/dist/workflows/prompts/commit.js.map +0 -1
  325. package/dist/workflows/prompts/fix.js +0 -44
  326. package/dist/workflows/prompts/fix.js.map +0 -1
  327. package/dist/workflows/prompts/index.js +0 -10
  328. package/dist/workflows/prompts/index.js.map +0 -1
  329. package/dist/workflows/prompts/init.js +0 -48
  330. package/dist/workflows/prompts/init.js.map +0 -1
  331. package/dist/workflows/prompts/meta.js +0 -17
  332. package/dist/workflows/prompts/meta.js.map +0 -1
  333. package/dist/workflows/prompts/plan.js +0 -212
  334. package/dist/workflows/prompts/plan.js.map +0 -1
  335. package/dist/workflows/prompts/pr.js +0 -15
  336. package/dist/workflows/prompts/pr.js.map +0 -1
  337. package/dist/workflows/prompts/review.js +0 -145
  338. package/dist/workflows/prompts/review.js.map +0 -1
  339. package/dist/workflows/prompts/shared.js +0 -93
  340. package/dist/workflows/prompts/shared.js.map +0 -1
  341. package/dist/workflows/review.workflow.js +0 -357
  342. package/dist/workflows/review.workflow.js.map +0 -1
  343. package/dist/workflows/task.workflow.js +0 -47
  344. package/dist/workflows/task.workflow.js.map +0 -1
  345. package/dist/workflows/testing/helper.js +0 -41
  346. package/dist/workflows/testing/helper.js.map +0 -1
  347. package/dist/workflows/workflow.utils.js +0 -351
  348. package/dist/workflows/workflow.utils.js.map +0 -1
  349. package/dist/workflows/workflow.utils.test.js +0 -45
  350. package/dist/workflows/workflow.utils.test.js.map +0 -1
@@ -1,90 +0,0 @@
1
- import { agentWorkflow, askFollowupQuestion, fetchUrl, listFiles, readBinaryFile, readFile, removeFile, renameFile, replaceInFile, searchFiles, writeToFile, } from '@polka-codes/core';
2
- export function buildAgentToolList(config = {}) {
3
- const tools = [
4
- readFile,
5
- writeToFile,
6
- replaceInFile,
7
- searchFiles,
8
- listFiles,
9
- fetchUrl,
10
- readBinaryFile,
11
- removeFile,
12
- renameFile,
13
- ];
14
- if (config.includeInteractive) {
15
- tools.push(askFollowupQuestion);
16
- }
17
- if (config.additionalTools?.search) {
18
- tools.push(config.additionalTools.search);
19
- }
20
- if (config.additionalTools?.mcpTools) {
21
- tools.push(...config.additionalTools.mcpTools);
22
- }
23
- return tools;
24
- }
25
- /**
26
- * Typed wrapper for agent workflow that ensures schema validation
27
- * and provides consistent error handling.
28
- */
29
- export async function runAgentWithSchema(context, options) {
30
- const tools = options.tools || buildAgentToolList(options.toolConfig);
31
- const result = await agentWorkflow({
32
- systemPrompt: options.systemPrompt,
33
- userMessage: [{ role: 'user', content: options.userMessage }],
34
- tools,
35
- outputSchema: options.schema,
36
- maxToolRoundTrips: options.maxToolRoundTrips,
37
- model: options.model,
38
- }, context);
39
- if (result.type !== 'Exit' || !result.object) {
40
- const errorMessage = result.type === 'Error'
41
- ? result.error?.message || 'Unknown error'
42
- : result.type === 'UsageExceeded'
43
- ? 'Usage exceeded (tokens or rounds)'
44
- : `Unexpected result type: ${result.type}`;
45
- throw new Error(`Agent workflow failed: ${errorMessage}`);
46
- }
47
- return result.object;
48
- }
49
- export async function runAgent(context, options) {
50
- const tools = options.tools || buildAgentToolList(options.toolConfig);
51
- const result = await agentWorkflow({
52
- systemPrompt: options.systemPrompt,
53
- userMessage: [{ role: 'user', content: options.userMessage }],
54
- tools,
55
- maxToolRoundTrips: options.maxToolRoundTrips,
56
- model: options.model,
57
- }, context);
58
- if (result.type !== 'Exit') {
59
- const errorMessage = result.type === 'Error'
60
- ? result.error?.message || 'Unknown error'
61
- : result.type === 'UsageExceeded'
62
- ? 'Usage exceeded (tokens or rounds)'
63
- : `Unexpected result type: ${result.type}`;
64
- throw new Error(`Agent workflow failed: ${errorMessage}`);
65
- }
66
- return result.message;
67
- }
68
- export async function continueAgent(context, options) {
69
- const tools = options.tools || buildAgentToolList(options.toolConfig);
70
- const result = await agentWorkflow({
71
- messages: options.messages,
72
- userMessage: [{ role: 'user', content: '' }], // Dummy message, will use messages instead
73
- tools,
74
- maxToolRoundTrips: options.maxToolRoundTrips,
75
- model: options.model,
76
- }, context);
77
- if (result.type !== 'Exit') {
78
- const errorMessage = result.type === 'Error'
79
- ? result.error?.message || 'Unknown error'
80
- : result.type === 'UsageExceeded'
81
- ? 'Usage exceeded (tokens or rounds)'
82
- : `Unexpected result type: ${result.type}`;
83
- throw new Error(`Agent workflow failed: ${errorMessage}`);
84
- }
85
- return {
86
- message: result.message,
87
- messages: result.messages,
88
- };
89
- }
90
- //# sourceMappingURL=agent-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../src/workflows/agent-builder.ts"],"names":[],"mappings":"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"}
@@ -1,115 +0,0 @@
1
- import { describe, expect, it } from 'bun:test';
2
- import { z } from 'zod';
3
- import { buildAgentToolList } from './agent-builder';
4
- describe('agent-builder', () => {
5
- describe('buildAgentToolList', () => {
6
- it('should build default tool list', () => {
7
- const tools = buildAgentToolList();
8
- expect(tools).toBeArray();
9
- expect(tools.length).toBeGreaterThan(0);
10
- expect(tools.some((t) => t.name === 'readFile')).toBe(true);
11
- expect(tools.some((t) => t.name === 'writeToFile')).toBe(true);
12
- expect(tools.some((t) => t.name === 'replaceInFile')).toBe(true);
13
- expect(tools.some((t) => t.name === 'searchFiles')).toBe(true);
14
- expect(tools.some((t) => t.name === 'listFiles')).toBe(true);
15
- expect(tools.some((t) => t.name === 'fetchUrl')).toBe(true);
16
- expect(tools.some((t) => t.name === 'readBinaryFile')).toBe(true);
17
- expect(tools.some((t) => t.name === 'removeFile')).toBe(true);
18
- expect(tools.some((t) => t.name === 'renameFile')).toBe(true);
19
- });
20
- it('should not include interactive tool by default', () => {
21
- const tools = buildAgentToolList();
22
- expect(tools.some((t) => t.name === 'askFollowupQuestion')).toBe(false);
23
- });
24
- it('should include interactive tool when requested', () => {
25
- const tools = buildAgentToolList({ includeInteractive: true });
26
- expect(tools.some((t) => t.name === 'askFollowupQuestion')).toBe(true);
27
- });
28
- it('should include additional search tool', () => {
29
- const searchTool = {
30
- name: 'customSearch',
31
- description: 'Custom search',
32
- parameters: z.object({ query: z.string() }),
33
- handler: async () => ({ success: true, message: { type: 'text', value: 'Results' } }),
34
- };
35
- const tools = buildAgentToolList({
36
- additionalTools: { search: searchTool },
37
- });
38
- expect(tools.some((t) => t.name === 'customSearch')).toBe(true);
39
- });
40
- it('should include additional MCP tools', () => {
41
- const mcpTools = [
42
- {
43
- name: 'mcpTool1',
44
- description: 'MCP tool 1',
45
- parameters: z.object({ input: z.string() }),
46
- handler: async () => ({ success: true, message: { type: 'text', value: 'Result' } }),
47
- },
48
- {
49
- name: 'mcpTool2',
50
- description: 'MCP tool 2',
51
- parameters: z.object({ input: z.string() }),
52
- handler: async () => ({ success: true, message: { type: 'text', value: 'Result' } }),
53
- },
54
- ];
55
- const tools = buildAgentToolList({
56
- additionalTools: { mcpTools },
57
- });
58
- expect(tools.some((t) => t.name === 'mcpTool1')).toBe(true);
59
- expect(tools.some((t) => t.name === 'mcpTool2')).toBe(true);
60
- });
61
- it('should include all additional tools together', () => {
62
- const searchTool = {
63
- name: 'customSearch',
64
- description: 'Custom search',
65
- parameters: z.object({ query: z.string() }),
66
- handler: async () => ({ success: true, message: { type: 'text', value: 'Results' } }),
67
- };
68
- const mcpTools = [
69
- {
70
- name: 'mcpTool',
71
- description: 'MCP tool',
72
- parameters: z.object({ input: z.string() }),
73
- handler: async () => ({ success: true, message: { type: 'text', value: 'Result' } }),
74
- },
75
- ];
76
- const tools = buildAgentToolList({
77
- includeInteractive: true,
78
- additionalTools: { search: searchTool, mcpTools },
79
- });
80
- expect(tools.some((t) => t.name === 'askFollowupQuestion')).toBe(true);
81
- expect(tools.some((t) => t.name === 'customSearch')).toBe(true);
82
- expect(tools.some((t) => t.name === 'mcpTool')).toBe(true);
83
- });
84
- it('should preserve all default tools when adding additional tools', () => {
85
- const defaultTools = buildAgentToolList();
86
- const extraTool = {
87
- name: 'extra',
88
- description: 'Extra tool',
89
- parameters: z.object({}),
90
- handler: async () => ({ success: true, message: { type: 'text', value: 'Extra' } }),
91
- };
92
- const toolsWithExtra = buildAgentToolList({
93
- additionalTools: { mcpTools: [extraTool] },
94
- });
95
- // All default tools should still be present
96
- expect(toolsWithExtra.length).toBeGreaterThan(defaultTools.length);
97
- for (const tool of defaultTools) {
98
- expect(toolsWithExtra.some((t) => t.name === tool.name)).toBe(true);
99
- }
100
- });
101
- it('should return tool list with valid structure', () => {
102
- const tools = buildAgentToolList();
103
- tools.forEach((tool) => {
104
- expect(tool).toHaveProperty('name');
105
- expect(tool).toHaveProperty('description');
106
- expect(tool).toHaveProperty('parameters');
107
- expect(tool).toHaveProperty('handler');
108
- expect(typeof tool.name).toBe('string');
109
- expect(typeof tool.description).toBe('string');
110
- expect(typeof tool.handler).toBe('function');
111
- });
112
- });
113
- });
114
- });
115
- //# sourceMappingURL=agent-builder.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-builder.test.js","sourceRoot":"","sources":["../../src/workflows/agent-builder.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;YAElC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;YAElC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAA;YAE9D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,UAAU,GAAiB;gBAC/B,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;aACtF,CAAA;YAED,MAAM,KAAK,GAAG,kBAAkB,CAAC;gBAC/B,eAAe,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aACxC,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAAmB;gBAC/B;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,YAAY;oBACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;iBACrF;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,YAAY;oBACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;iBACrF;aACF,CAAA;YAED,MAAM,KAAK,GAAG,kBAAkB,CAAC;gBAC/B,eAAe,EAAE,EAAE,QAAQ,EAAE;aAC9B,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,UAAU,GAAiB;gBAC/B,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,eAAe;gBAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;aACtF,CAAA;YAED,MAAM,QAAQ,GAAmB;gBAC/B;oBACE,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,UAAU;oBACvB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;iBACrF;aACF,CAAA;YAED,MAAM,KAAK,GAAG,kBAAkB,CAAC;gBAC/B,kBAAkB,EAAE,IAAI;gBACxB,eAAe,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;aAClD,CAAC,CAAA;YAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;YACzC,MAAM,SAAS,GAAiB;gBAC9B,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,YAAY;gBACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;aACpF,CAAA;YAED,MAAM,cAAc,GAAG,kBAAkB,CAAC;gBACxC,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;aAC3C,CAAC,CAAA;YAEF,4CAA4C;YAC5C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAClE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrE,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;YAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;gBACnC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;gBAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;gBACzC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;gBACtC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACvC,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,145 +0,0 @@
1
- // generated by polka.codes
2
- import { agentWorkflow, askFollowupQuestion, executeCommand, fetchUrl, listFiles, readBinaryFile, readFile, removeFile, renameFile, replaceInFile, searchFiles, writeToFile, } from '@polka-codes/core';
3
- import { z } from 'zod';
4
- import { fixWorkflow } from './fix.workflow';
5
- import { planWorkflow } from './plan.workflow';
6
- import { getCoderSystemPrompt, getImplementPrompt } from './prompts';
7
- import { getDefaultContext } from './workflow.utils';
8
- const ImplementOutputSchema = z
9
- .object({
10
- summary: z.string().nullish().describe('Short summary of the changes made'),
11
- bailReason: z.string().nullish().describe('Reason for bailing out of the implementation loop'),
12
- })
13
- .refine((data) => (data.summary != null) !== (data.bailReason != null), {
14
- message: 'Either summary or bailReason must be provided, but not both',
15
- });
16
- export const codeWorkflow = async (input, context) => {
17
- const { logger, step, tools } = context;
18
- const { task, files, mode: inputMode, customTools, additionalInstructions, interactive, additionalTools } = input;
19
- const mode = interactive === false ? 'noninteractive' : (inputMode ?? 'interactive');
20
- const summaries = [];
21
- // Planning phase
22
- logger.info('\nPhase 1: Creating implementation plan...\n');
23
- const planResult = await step('plan', async () => {
24
- return await planWorkflow({ task, files, mode: mode === 'interactive' ? 'confirm' : 'noninteractive', interactive, additionalTools }, context);
25
- });
26
- if (!planResult) {
27
- logger.info('Plan not approved. Exiting.');
28
- return { success: false, reason: 'Plan not approved', summaries };
29
- }
30
- const { plan, files: planFiles } = planResult;
31
- // Implementation phase
32
- logger.info('\nPhase 2: Implementing the plan...\n');
33
- let implementPrompt = getImplementPrompt(plan);
34
- if (planFiles && planFiles.length > 0) {
35
- const fileContentString = planFiles.map((f) => `<file path="${f.path}">${f.content}</file>`).join('\n');
36
- implementPrompt += `\n\nHere are the files related to the plan:\n${fileContentString}`;
37
- }
38
- const userContent = [{ type: 'text', text: implementPrompt }];
39
- if (files) {
40
- for (const file of files) {
41
- if (file.type === 'file') {
42
- userContent.push({
43
- type: 'file',
44
- mediaType: file.mediaType,
45
- filename: file.filename,
46
- data: { type: 'base64', value: file.data },
47
- });
48
- }
49
- else if (file.type === 'image') {
50
- userContent.push({
51
- type: 'image',
52
- mediaType: file.mediaType,
53
- image: { type: 'base64', value: file.image },
54
- });
55
- }
56
- }
57
- }
58
- const agentTools = [
59
- readFile,
60
- writeToFile,
61
- replaceInFile,
62
- searchFiles,
63
- listFiles,
64
- executeCommand,
65
- fetchUrl,
66
- readBinaryFile,
67
- removeFile,
68
- renameFile,
69
- ];
70
- if (mode === 'interactive') {
71
- agentTools.push(askFollowupQuestion);
72
- }
73
- if (customTools) {
74
- agentTools.push(...customTools);
75
- }
76
- if (additionalTools?.search) {
77
- agentTools.push(additionalTools.search);
78
- }
79
- if (additionalTools?.mcpTools) {
80
- agentTools.push(...additionalTools.mcpTools);
81
- }
82
- const res = await step('implement', async () => {
83
- const { context: defaultContext, loadRules } = await getDefaultContext(input.config, 'code');
84
- const memoryContext = await tools.getMemoryContext();
85
- const textContent = userContent.find((c) => c.type === 'text');
86
- if (textContent && textContent.type === 'text') {
87
- textContent.text = `${textContent.text}\n\n${defaultContext}\n${memoryContext}`;
88
- }
89
- else {
90
- userContent.push({
91
- type: 'text',
92
- text: `${defaultContext}\n${memoryContext}`,
93
- });
94
- }
95
- const baseSystemPrompt = getCoderSystemPrompt(loadRules);
96
- const systemPrompt = additionalInstructions ? `${baseSystemPrompt}\n\n${additionalInstructions}` : baseSystemPrompt;
97
- return await agentWorkflow({
98
- systemPrompt,
99
- userMessage: [{ role: 'user', content: userContent }],
100
- tools: agentTools,
101
- outputSchema: ImplementOutputSchema,
102
- }, context);
103
- });
104
- if (res.type === 'Exit' && res.object) {
105
- const { summary, bailReason } = res.object;
106
- if (bailReason) {
107
- logger.error(`\nImplementation failed: ${bailReason}\n`);
108
- return { success: false, reason: bailReason, summaries };
109
- }
110
- if (summary) {
111
- logger.info('\nImplementation complete!\n');
112
- summaries.push(summary);
113
- logger.info(`Summary: ${summary}`);
114
- await step('summarize-implementation', async () => {
115
- await tools.updateMemory({
116
- operation: 'append',
117
- topic: 'implementation-summary',
118
- content: summary,
119
- });
120
- });
121
- }
122
- else {
123
- logger.info('\nImplementation complete!\n');
124
- }
125
- }
126
- else if (res.type === 'Exit') {
127
- logger.info('\nImplementation complete!\n');
128
- }
129
- else {
130
- logger.warn('\nWarning: Implementation failed. Please check the output for errors.\n', res);
131
- }
132
- // Fixing phase
133
- logger.info('\nPhase 3: Checking for errors...\n');
134
- const fixResult = await step('fix', async () => {
135
- return await fixWorkflow({ interactive: false, task: input.task, additionalTools: input.additionalTools }, context);
136
- });
137
- if (fixResult.summaries) {
138
- summaries.push(...fixResult.summaries);
139
- }
140
- if (!fixResult.success) {
141
- return { success: false, reason: fixResult.reason, summaries };
142
- }
143
- return { success: true, summaries };
144
- };
145
- //# sourceMappingURL=code.workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code.workflow.js","sourceRoot":"","sources":["../../src/workflows/code.workflow.ts"],"names":[],"mappings":"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"}
@@ -1,111 +0,0 @@
1
- // generated by polka.codes
2
- import { agentWorkflow, listFiles, readBinaryFile, readFile, searchFiles } from '@polka-codes/core';
3
- import { z } from 'zod';
4
- import { UserCancelledError } from '../errors';
5
- import { gitDiff } from '../tools';
6
- import { COMMIT_MESSAGE_SYSTEM_PROMPT } from './prompts';
7
- import { parseGitDiffNameStatus } from './workflow.utils';
8
- export const commitWorkflow = async (input, context) => {
9
- const { step, tools, logger } = context;
10
- const { stagedFiles, unstagedFiles } = await tools.printChangeFile();
11
- let hasStaged = stagedFiles.length > 0;
12
- const hasUnstaged = unstagedFiles.length > 0;
13
- // Handle explicit file staging (even if files are already staged)
14
- if (input.files && input.files.length > 0) {
15
- await step('stage-files', async () => {
16
- const result = await tools.executeCommand({
17
- command: 'git',
18
- args: ['add', ...(input.files ?? [])],
19
- });
20
- if (result.exitCode !== 0) {
21
- throw new Error(`Failed to stage files: ${result.stderr}`);
22
- }
23
- });
24
- hasStaged = true;
25
- }
26
- else if (!hasStaged) {
27
- if (input.all) {
28
- await step('stage-all', async () => {
29
- const result = await tools.executeCommand({ command: 'git', args: ['add', '.'] });
30
- if (result.exitCode !== 0) {
31
- throw new Error(`Failed to stage files: ${result.stderr}`);
32
- }
33
- });
34
- hasStaged = true;
35
- }
36
- else if (hasUnstaged) {
37
- let confirmed = false;
38
- if (input.interactive !== false) {
39
- confirmed = await tools.confirm({
40
- message: 'No staged files found. Stage all files?',
41
- default: false,
42
- });
43
- }
44
- if (confirmed) {
45
- await step('stage-all', async () => {
46
- const result = await tools.executeCommand({
47
- command: 'git',
48
- args: ['add', '.'],
49
- });
50
- if (result.exitCode !== 0) {
51
- throw new Error(`Failed to stage files: ${result.stderr}`);
52
- }
53
- });
54
- hasStaged = true;
55
- }
56
- else if (input.interactive !== false) {
57
- throw new UserCancelledError();
58
- }
59
- }
60
- }
61
- if (!hasStaged) {
62
- throw new Error('No files to commit. Aborting.');
63
- }
64
- const { changedFiles, diff } = await step('get-diff', async () => {
65
- // List staged changes for visibility
66
- let changedFiles = [];
67
- const diffNameStatusResult = await tools.executeCommand({
68
- command: 'git',
69
- args: ['diff', '--name-status', '--no-color', '--staged'],
70
- });
71
- if (diffNameStatusResult.exitCode === 0) {
72
- changedFiles = parseGitDiffNameStatus(diffNameStatusResult.stdout);
73
- }
74
- const diffResult = await tools.executeCommand({
75
- command: 'git',
76
- args: ['diff', '--staged'],
77
- });
78
- const diff = diffResult.stdout;
79
- return { changedFiles, diff };
80
- });
81
- const fileList = changedFiles.map((file) => `${file.status}: ${file.path}`).join('\n');
82
- const fileListPrompt = `<file_status>\n${fileList}\n</file_status>`;
83
- const diffPrompt = `<diff>\n${diff}\n</diff>`;
84
- const contextPrompt = input.context ? `\n<tool_input_context>\n${input.context}\n</tool_input_context>` : '';
85
- const commitMessageSchema = z.object({
86
- commitMessage: z.string(),
87
- });
88
- const result = await step('generate-commit-message', async () => {
89
- return await agentWorkflow({
90
- systemPrompt: COMMIT_MESSAGE_SYSTEM_PROMPT,
91
- userMessage: [
92
- {
93
- role: 'user',
94
- content: `${fileListPrompt}${diffPrompt}${contextPrompt}`,
95
- },
96
- ],
97
- tools: [readFile, readBinaryFile, searchFiles, listFiles, gitDiff],
98
- outputSchema: commitMessageSchema,
99
- }, context);
100
- });
101
- if (result.type === 'Exit' && result.object) {
102
- const { commitMessage } = commitMessageSchema.parse(result.object);
103
- if (commitMessage) {
104
- logger.info(`\nCommit message:\n${commitMessage}`);
105
- await tools.createCommit({ message: commitMessage });
106
- return commitMessage;
107
- }
108
- }
109
- context.logger.warn('Failed to generate commit message.', result);
110
- };
111
- //# sourceMappingURL=commit.workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commit.workflow.js","sourceRoot":"","sources":["../../src/workflows/commit.workflow.ts"],"names":[],"mappings":"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"}
@@ -1,141 +0,0 @@
1
- // generated by polka.codes
2
- import { afterEach, describe, expect, mock, test } from 'bun:test';
3
- import { execSync } from 'node:child_process';
4
- import { UserCancelledError } from '../errors';
5
- import { createWorkflowTestContext } from '../test/workflow-fixtures';
6
- import { commitWorkflow } from './commit.workflow';
7
- // Check if git is available synchronously
8
- let gitAvailable = false;
9
- try {
10
- execSync('git --version', { stdio: 'ignore' });
11
- gitAvailable = true;
12
- }
13
- catch {
14
- // Git not available
15
- }
16
- describe.skipIf(!gitAvailable)('commitWorkflow', () => {
17
- const defaultInput = {
18
- interactive: false,
19
- additionalTools: {},
20
- };
21
- afterEach(() => {
22
- mock.restore();
23
- });
24
- test('should generate commit message with staged files', async () => {
25
- const { context, tools, logger } = createWorkflowTestContext();
26
- // Add commit-specific tools
27
- tools.printChangeFile = mock();
28
- tools.createCommit = mock();
29
- tools.printChangeFile.mockResolvedValue({
30
- stagedFiles: [{ path: 'src/file.ts', status: 'M' }],
31
- unstagedFiles: [],
32
- });
33
- tools.executeCommand.mockResolvedValueOnce({ exitCode: 0, stdout: 'M\tsrc/file.ts' }).mockResolvedValueOnce({
34
- exitCode: 0,
35
- stdout: '--- a/src/file.ts\n+++ b/src/file.ts\n@@ -1,3 +1,4 @@\n+export const newFunc = () => {}\n',
36
- });
37
- tools.createCommit.mockResolvedValue({});
38
- tools.generateText.mockResolvedValue([
39
- {
40
- role: 'assistant',
41
- content: JSON.stringify({ commitMessage: 'feat: add newFunc' }),
42
- },
43
- ]);
44
- const result = await commitWorkflow({ ...defaultInput }, context);
45
- expect(result).toBe('feat: add newFunc');
46
- expect(tools.printChangeFile).toHaveBeenCalled();
47
- expect(tools.executeCommand).toHaveBeenCalledWith({
48
- command: 'git',
49
- args: ['diff', '--name-status', '--no-color', '--staged'],
50
- });
51
- expect(tools.executeCommand).toHaveBeenCalledWith({
52
- command: 'git',
53
- args: ['diff', '--staged'],
54
- });
55
- expect(tools.generateText).toHaveBeenCalled();
56
- expect(logger.info).toHaveBeenCalledWith('\nCommit message:\nfeat: add newFunc');
57
- expect(tools.createCommit).toHaveBeenCalledWith({
58
- message: 'feat: add newFunc',
59
- });
60
- });
61
- test('should auto-stage all files when all=true', async () => {
62
- const { context, tools } = createWorkflowTestContext();
63
- // Add commit-specific tools
64
- tools.printChangeFile = mock();
65
- tools.createCommit = mock();
66
- tools.printChangeFile.mockResolvedValue({
67
- stagedFiles: [],
68
- unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
69
- });
70
- tools.executeCommand.mockResolvedValue({ exitCode: 0, stdout: 'M\tsrc/file.ts' });
71
- tools.generateText.mockResolvedValue([
72
- {
73
- role: 'assistant',
74
- content: JSON.stringify({ commitMessage: 'feat: stage file' }),
75
- },
76
- ]);
77
- const result = await commitWorkflow({ ...defaultInput, all: true }, context);
78
- expect(result).toBe('feat: stage file');
79
- expect(tools.executeCommand).toHaveBeenCalledWith({
80
- command: 'git',
81
- args: ['add', '.'],
82
- });
83
- expect(tools.generateText).toHaveBeenCalled();
84
- expect(tools.createCommit).toHaveBeenCalledWith({
85
- message: 'feat: stage file',
86
- });
87
- });
88
- test('should prompt user and stage when confirmed', async () => {
89
- const { context, tools } = createWorkflowTestContext();
90
- // Add commit-specific tools
91
- tools.printChangeFile = mock();
92
- tools.confirm = mock();
93
- tools.createCommit = mock();
94
- tools.printChangeFile.mockResolvedValue({
95
- stagedFiles: [],
96
- unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
97
- });
98
- tools.confirm.mockResolvedValue(true);
99
- tools.executeCommand.mockResolvedValue({ exitCode: 0, stdout: 'M\tsrc/file.ts' });
100
- tools.generateText.mockResolvedValue([
101
- {
102
- role: 'assistant',
103
- content: JSON.stringify({ commitMessage: 'feat: stage file' }),
104
- },
105
- ]);
106
- const result = await commitWorkflow({ ...defaultInput, interactive: true }, context);
107
- expect(result).toBe('feat: stage file');
108
- expect(tools.confirm).toHaveBeenCalledWith({
109
- message: 'No staged files found. Stage all files?',
110
- default: false,
111
- });
112
- expect(tools.executeCommand).toHaveBeenCalledWith({
113
- command: 'git',
114
- args: ['add', '.'],
115
- });
116
- expect(tools.generateText).toHaveBeenCalled();
117
- expect(tools.createCommit).toHaveBeenCalledWith({
118
- message: 'feat: stage file',
119
- });
120
- });
121
- test('should throw UserCancelledError when user declines staging', async () => {
122
- const { context, tools } = createWorkflowTestContext();
123
- // Add commit-specific tools
124
- tools.printChangeFile = mock();
125
- tools.confirm = mock();
126
- tools.printChangeFile.mockResolvedValue({
127
- stagedFiles: [],
128
- unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
129
- });
130
- tools.confirm.mockResolvedValue(false);
131
- await expect(commitWorkflow({ ...defaultInput, interactive: true }, context)).rejects.toThrow(UserCancelledError);
132
- });
133
- test('should throw error when no files to commit', async () => {
134
- const { context, tools } = createWorkflowTestContext();
135
- // Add commit-specific tools
136
- tools.printChangeFile = mock();
137
- tools.printChangeFile.mockResolvedValue({ stagedFiles: [], unstagedFiles: [] });
138
- await expect(commitWorkflow({ ...defaultInput }, context)).rejects.toThrow('No files to commit. Aborting.');
139
- });
140
- });
141
- //# sourceMappingURL=commit.workflow.test.js.map