@polka-codes/cli 0.10.23 → 0.10.25

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 (343) hide show
  1. package/dist/bin.cjs +143854 -0
  2. package/dist/bin.d.ts +2 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +9201 -9195
  7. package/dist/program.d.ts +3 -0
  8. package/dist/program.d.ts.map +1 -0
  9. package/package.json +6 -7
  10. package/cli.mjs +0 -2
  11. package/dist/ApiProviderConfig.js +0 -57
  12. package/dist/ApiProviderConfig.js.map +0 -1
  13. package/dist/ApiProviderConfig.test.js +0 -278
  14. package/dist/ApiProviderConfig.test.js.map +0 -1
  15. package/dist/agent/advanced-discovery.js +0 -604
  16. package/dist/agent/advanced-discovery.js.map +0 -1
  17. package/dist/agent/config.js +0 -139
  18. package/dist/agent/config.js.map +0 -1
  19. package/dist/agent/config.test.js +0 -140
  20. package/dist/agent/config.test.js.map +0 -1
  21. package/dist/agent/constants.js +0 -172
  22. package/dist/agent/constants.js.map +0 -1
  23. package/dist/agent/constants.test.js +0 -132
  24. package/dist/agent/constants.test.js.map +0 -1
  25. package/dist/agent/debug-logger.js +0 -281
  26. package/dist/agent/debug-logger.js.map +0 -1
  27. package/dist/agent/debug-logger.test.js +0 -294
  28. package/dist/agent/debug-logger.test.js.map +0 -1
  29. package/dist/agent/error-handling.js +0 -114
  30. package/dist/agent/error-handling.js.map +0 -1
  31. package/dist/agent/error-handling.test.js +0 -191
  32. package/dist/agent/error-handling.test.js.map +0 -1
  33. package/dist/agent/errors.js +0 -301
  34. package/dist/agent/errors.js.map +0 -1
  35. package/dist/agent/executor.js +0 -206
  36. package/dist/agent/executor.js.map +0 -1
  37. package/dist/agent/executor.test.js +0 -228
  38. package/dist/agent/executor.test.js.map +0 -1
  39. package/dist/agent/goal-decomposer.js +0 -281
  40. package/dist/agent/goal-decomposer.js.map +0 -1
  41. package/dist/agent/goal-decomposer.test.js +0 -225
  42. package/dist/agent/goal-decomposer.test.js.map +0 -1
  43. package/dist/agent/health-monitor.js +0 -89
  44. package/dist/agent/health-monitor.js.map +0 -1
  45. package/dist/agent/improvement-loop.js +0 -177
  46. package/dist/agent/improvement-loop.js.map +0 -1
  47. package/dist/agent/index.js +0 -38
  48. package/dist/agent/index.js.map +0 -1
  49. package/dist/agent/metrics.js +0 -158
  50. package/dist/agent/metrics.js.map +0 -1
  51. package/dist/agent/metrics.test.js +0 -311
  52. package/dist/agent/metrics.test.js.map +0 -1
  53. package/dist/agent/orchestrator.js +0 -438
  54. package/dist/agent/orchestrator.js.map +0 -1
  55. package/dist/agent/planner.js +0 -199
  56. package/dist/agent/planner.js.map +0 -1
  57. package/dist/agent/planner.test.js +0 -135
  58. package/dist/agent/planner.test.js.map +0 -1
  59. package/dist/agent/progress.js +0 -298
  60. package/dist/agent/progress.js.map +0 -1
  61. package/dist/agent/progress.test.js +0 -255
  62. package/dist/agent/progress.test.js.map +0 -1
  63. package/dist/agent/resource-monitor.js +0 -114
  64. package/dist/agent/resource-monitor.js.map +0 -1
  65. package/dist/agent/safety/approval.js +0 -178
  66. package/dist/agent/safety/approval.js.map +0 -1
  67. package/dist/agent/safety/approval.test.js +0 -142
  68. package/dist/agent/safety/approval.test.js.map +0 -1
  69. package/dist/agent/safety/checks.js +0 -152
  70. package/dist/agent/safety/checks.js.map +0 -1
  71. package/dist/agent/safety/checks.test.js +0 -89
  72. package/dist/agent/safety/checks.test.js.map +0 -1
  73. package/dist/agent/safety/interrupt.js +0 -92
  74. package/dist/agent/safety/interrupt.js.map +0 -1
  75. package/dist/agent/safety/interrupt.test.js +0 -53
  76. package/dist/agent/safety/interrupt.test.js.map +0 -1
  77. package/dist/agent/session.js +0 -117
  78. package/dist/agent/session.js.map +0 -1
  79. package/dist/agent/session.test.js +0 -213
  80. package/dist/agent/session.test.js.map +0 -1
  81. package/dist/agent/state-manager.js +0 -287
  82. package/dist/agent/state-manager.js.map +0 -1
  83. package/dist/agent/task-discovery.js +0 -433
  84. package/dist/agent/task-discovery.js.map +0 -1
  85. package/dist/agent/task-discovery.test.js +0 -40
  86. package/dist/agent/task-discovery.test.js.map +0 -1
  87. package/dist/agent/task-history.js +0 -128
  88. package/dist/agent/task-history.js.map +0 -1
  89. package/dist/agent/task-prioritizer.js +0 -286
  90. package/dist/agent/task-prioritizer.js.map +0 -1
  91. package/dist/agent/test-fixtures.js +0 -112
  92. package/dist/agent/test-fixtures.js.map +0 -1
  93. package/dist/agent/types.js +0 -15
  94. package/dist/agent/types.js.map +0 -1
  95. package/dist/agent/workflow-adapter.js +0 -219
  96. package/dist/agent/workflow-adapter.js.map +0 -1
  97. package/dist/agent/workflow-adapter.test.js +0 -11
  98. package/dist/agent/workflow-adapter.test.js.map +0 -1
  99. package/dist/agent/working-dir-discovery.js +0 -54
  100. package/dist/agent/working-dir-discovery.js.map +0 -1
  101. package/dist/agent/working-space.js +0 -484
  102. package/dist/agent/working-space.js.map +0 -1
  103. package/dist/agent/working-space.test.js +0 -436
  104. package/dist/agent/working-space.test.js.map +0 -1
  105. package/dist/api.js +0 -279
  106. package/dist/api.js.map +0 -1
  107. package/dist/builtin-commands.js +0 -20
  108. package/dist/builtin-commands.js.map +0 -1
  109. package/dist/commandSummarizer.js +0 -96
  110. package/dist/commandSummarizer.js.map +0 -1
  111. package/dist/commands/__tests__/command-detection.integration.test.js +0 -238
  112. package/dist/commands/__tests__/command-detection.integration.test.js.map +0 -1
  113. package/dist/commands/__tests__/script-generator.integration.test.js +0 -271
  114. package/dist/commands/__tests__/script-generator.integration.test.js.map +0 -1
  115. package/dist/commands/agent.js +0 -218
  116. package/dist/commands/agent.js.map +0 -1
  117. package/dist/commands/code.js +0 -102
  118. package/dist/commands/code.js.map +0 -1
  119. package/dist/commands/command.constants.js +0 -13
  120. package/dist/commands/command.constants.js.map +0 -1
  121. package/dist/commands/commit.js +0 -17
  122. package/dist/commands/commit.js.map +0 -1
  123. package/dist/commands/fix.js +0 -17
  124. package/dist/commands/fix.js.map +0 -1
  125. package/dist/commands/init.js +0 -501
  126. package/dist/commands/init.js.map +0 -1
  127. package/dist/commands/mcp-server.js +0 -122
  128. package/dist/commands/mcp-server.js.map +0 -1
  129. package/dist/commands/memory.js +0 -410
  130. package/dist/commands/memory.js.map +0 -1
  131. package/dist/commands/memory.test.js +0 -453
  132. package/dist/commands/memory.test.js.map +0 -1
  133. package/dist/commands/meta.js +0 -142
  134. package/dist/commands/meta.js.map +0 -1
  135. package/dist/commands/plan.js +0 -39
  136. package/dist/commands/plan.js.map +0 -1
  137. package/dist/commands/pr.js +0 -14
  138. package/dist/commands/pr.js.map +0 -1
  139. package/dist/commands/review-json.test.js +0 -33
  140. package/dist/commands/review-json.test.js.map +0 -1
  141. package/dist/commands/review.js +0 -137
  142. package/dist/commands/review.js.map +0 -1
  143. package/dist/commands/review.usage.test.js +0 -41
  144. package/dist/commands/review.usage.test.js.map +0 -1
  145. package/dist/commands/run.js +0 -107
  146. package/dist/commands/run.js.map +0 -1
  147. package/dist/commands/skills.js +0 -175
  148. package/dist/commands/skills.js.map +0 -1
  149. package/dist/commands/task.js +0 -34
  150. package/dist/commands/task.js.map +0 -1
  151. package/dist/commands/workflow.js +0 -117
  152. package/dist/commands/workflow.js.map +0 -1
  153. package/dist/configPrompt.js +0 -39
  154. package/dist/configPrompt.js.map +0 -1
  155. package/dist/env.js +0 -22
  156. package/dist/env.js.map +0 -1
  157. package/dist/errors.js +0 -132
  158. package/dist/errors.js.map +0 -1
  159. package/dist/errors.test.js +0 -21
  160. package/dist/errors.test.js.map +0 -1
  161. package/dist/file-attachments.js +0 -77
  162. package/dist/file-attachments.js.map +0 -1
  163. package/dist/file-attachments.test.js +0 -214
  164. package/dist/file-attachments.test.js.map +0 -1
  165. package/dist/getModel.js +0 -229
  166. package/dist/getModel.js.map +0 -1
  167. package/dist/getModel.test.js +0 -67
  168. package/dist/getModel.test.js.map +0 -1
  169. package/dist/getProviderOptions.js +0 -58
  170. package/dist/getProviderOptions.js.map +0 -1
  171. package/dist/git-operations.js +0 -363
  172. package/dist/git-operations.js.map +0 -1
  173. package/dist/git-operations.test.js +0 -81
  174. package/dist/git-operations.test.js.map +0 -1
  175. package/dist/index.js.map +0 -1
  176. package/dist/logger.js +0 -41
  177. package/dist/logger.js.map +0 -1
  178. package/dist/mcp/client.js +0 -11
  179. package/dist/mcp/client.js.map +0 -1
  180. package/dist/mcp/error-scenarios.test.js +0 -206
  181. package/dist/mcp/error-scenarios.test.js.map +0 -1
  182. package/dist/mcp/errors.js +0 -63
  183. package/dist/mcp/errors.js.map +0 -1
  184. package/dist/mcp/index.js +0 -9
  185. package/dist/mcp/index.js.map +0 -1
  186. package/dist/mcp/manager.js +0 -231
  187. package/dist/mcp/manager.js.map +0 -1
  188. package/dist/mcp/manager.test.js +0 -40
  189. package/dist/mcp/manager.test.js.map +0 -1
  190. package/dist/mcp/sdk-client.js +0 -166
  191. package/dist/mcp/sdk-client.js.map +0 -1
  192. package/dist/mcp/shared-types.js +0 -3
  193. package/dist/mcp/shared-types.js.map +0 -1
  194. package/dist/mcp/tools-integration.test.js +0 -198
  195. package/dist/mcp/tools-integration.test.js.map +0 -1
  196. package/dist/mcp/tools.js +0 -60
  197. package/dist/mcp/tools.js.map +0 -1
  198. package/dist/mcp/transport.js +0 -257
  199. package/dist/mcp/transport.js.map +0 -1
  200. package/dist/mcp/types.js +0 -3
  201. package/dist/mcp/types.js.map +0 -1
  202. package/dist/mcp-server/index.js +0 -5
  203. package/dist/mcp-server/index.js.map +0 -1
  204. package/dist/mcp-server/plan-formatting.test.js +0 -74
  205. package/dist/mcp-server/plan-formatting.test.js.map +0 -1
  206. package/dist/mcp-server/sdk-server.js +0 -102
  207. package/dist/mcp-server/sdk-server.js.map +0 -1
  208. package/dist/mcp-server/sdk-server.test.js +0 -363
  209. package/dist/mcp-server/sdk-server.test.js.map +0 -1
  210. package/dist/mcp-server/tools.js +0 -785
  211. package/dist/mcp-server/tools.js.map +0 -1
  212. package/dist/mcp-server/types.js +0 -3
  213. package/dist/mcp-server/types.js.map +0 -1
  214. package/dist/options.js +0 -85
  215. package/dist/options.js.map +0 -1
  216. package/dist/options.test.js +0 -177
  217. package/dist/options.test.js.map +0 -1
  218. package/dist/prices.js +0 -61
  219. package/dist/prices.js.map +0 -1
  220. package/dist/prices.test.js +0 -148
  221. package/dist/prices.test.js.map +0 -1
  222. package/dist/runWorkflow.js +0 -313
  223. package/dist/runWorkflow.js.map +0 -1
  224. package/dist/script/__tests__/execution.integration.test.js +0 -274
  225. package/dist/script/__tests__/execution.integration.test.js.map +0 -1
  226. package/dist/script/__tests__/runner.test.js +0 -176
  227. package/dist/script/__tests__/runner.test.js.map +0 -1
  228. package/dist/script/__tests__/validator.test.js +0 -180
  229. package/dist/script/__tests__/validator.test.js.map +0 -1
  230. package/dist/script/executor.js +0 -127
  231. package/dist/script/executor.js.map +0 -1
  232. package/dist/script/index.js +0 -4
  233. package/dist/script/index.js.map +0 -1
  234. package/dist/script/runner.js +0 -258
  235. package/dist/script/runner.js.map +0 -1
  236. package/dist/skillIntegration.js +0 -46
  237. package/dist/skillIntegration.js.map +0 -1
  238. package/dist/skillIntegration.test.js +0 -128
  239. package/dist/skillIntegration.test.js.map +0 -1
  240. package/dist/test/utils.js +0 -200
  241. package/dist/test/utils.js.map +0 -1
  242. package/dist/test/workflow-fixtures.js +0 -120
  243. package/dist/test/workflow-fixtures.js.map +0 -1
  244. package/dist/tool-implementations.js +0 -521
  245. package/dist/tool-implementations.js.map +0 -1
  246. package/dist/tool-implementations.skill-tools.test.js +0 -106
  247. package/dist/tool-implementations.skill-tools.test.js.map +0 -1
  248. package/dist/tools/getTodoItem.js +0 -33
  249. package/dist/tools/getTodoItem.js.map +0 -1
  250. package/dist/tools/gitDiff.js +0 -108
  251. package/dist/tools/gitDiff.js.map +0 -1
  252. package/dist/tools/index.js +0 -8
  253. package/dist/tools/index.js.map +0 -1
  254. package/dist/tools/listMemoryTopics.js +0 -24
  255. package/dist/tools/listMemoryTopics.js.map +0 -1
  256. package/dist/tools/listTodoItems.js +0 -35
  257. package/dist/tools/listTodoItems.js.map +0 -1
  258. package/dist/tools/listTodoItems.test.js +0 -89
  259. package/dist/tools/listTodoItems.test.js.map +0 -1
  260. package/dist/tools/readMemory.js +0 -33
  261. package/dist/tools/readMemory.js.map +0 -1
  262. package/dist/tools/updateMemory.js +0 -62
  263. package/dist/tools/updateMemory.js.map +0 -1
  264. package/dist/tools/updateMemory.test.js +0 -109
  265. package/dist/tools/updateMemory.test.js.map +0 -1
  266. package/dist/tools/updateTodoItem.js +0 -31
  267. package/dist/tools/updateTodoItem.js.map +0 -1
  268. package/dist/tools/utils/diffLineNumbers.js +0 -178
  269. package/dist/tools/utils/diffLineNumbers.js.map +0 -1
  270. package/dist/utils/cacheControl.js +0 -59
  271. package/dist/utils/cacheControl.js.map +0 -1
  272. package/dist/utils/cacheControl.test.js +0 -128
  273. package/dist/utils/cacheControl.test.js.map +0 -1
  274. package/dist/utils/command.js +0 -50
  275. package/dist/utils/command.js.map +0 -1
  276. package/dist/utils/shell.js +0 -56
  277. package/dist/utils/shell.js.map +0 -1
  278. package/dist/utils/userInput.js +0 -47
  279. package/dist/utils/userInput.js.map +0 -1
  280. package/dist/workflow-tools.js +0 -21
  281. package/dist/workflow-tools.js.map +0 -1
  282. package/dist/workflows/agent-builder.js +0 -90
  283. package/dist/workflows/agent-builder.js.map +0 -1
  284. package/dist/workflows/agent-builder.test.js +0 -115
  285. package/dist/workflows/agent-builder.test.js.map +0 -1
  286. package/dist/workflows/code.workflow.js +0 -145
  287. package/dist/workflows/code.workflow.js.map +0 -1
  288. package/dist/workflows/commit.workflow.js +0 -111
  289. package/dist/workflows/commit.workflow.js.map +0 -1
  290. package/dist/workflows/commit.workflow.test.js +0 -141
  291. package/dist/workflows/commit.workflow.test.js.map +0 -1
  292. package/dist/workflows/fix.workflow.js +0 -172
  293. package/dist/workflows/fix.workflow.js.map +0 -1
  294. package/dist/workflows/fix.workflow.test.js +0 -137
  295. package/dist/workflows/fix.workflow.test.js.map +0 -1
  296. package/dist/workflows/git-file-tools.js +0 -408
  297. package/dist/workflows/git-file-tools.js.map +0 -1
  298. package/dist/workflows/index.js +0 -12
  299. package/dist/workflows/index.js.map +0 -1
  300. package/dist/workflows/init-interactive.workflow.js +0 -198
  301. package/dist/workflows/init-interactive.workflow.js.map +0 -1
  302. package/dist/workflows/init.workflow.js +0 -41
  303. package/dist/workflows/init.workflow.js.map +0 -1
  304. package/dist/workflows/meta.workflow.js +0 -107
  305. package/dist/workflows/meta.workflow.js.map +0 -1
  306. package/dist/workflows/plan.workflow.js +0 -275
  307. package/dist/workflows/plan.workflow.js.map +0 -1
  308. package/dist/workflows/plan.workflow.test.js +0 -419
  309. package/dist/workflows/plan.workflow.test.js.map +0 -1
  310. package/dist/workflows/pr.workflow.js +0 -54
  311. package/dist/workflows/pr.workflow.js.map +0 -1
  312. package/dist/workflows/pr.workflow.test.js +0 -98
  313. package/dist/workflows/pr.workflow.test.js.map +0 -1
  314. package/dist/workflows/prompts/coder.js +0 -85
  315. package/dist/workflows/prompts/coder.js.map +0 -1
  316. package/dist/workflows/prompts/commit.js +0 -16
  317. package/dist/workflows/prompts/commit.js.map +0 -1
  318. package/dist/workflows/prompts/fix.js +0 -44
  319. package/dist/workflows/prompts/fix.js.map +0 -1
  320. package/dist/workflows/prompts/index.js +0 -10
  321. package/dist/workflows/prompts/index.js.map +0 -1
  322. package/dist/workflows/prompts/init.js +0 -48
  323. package/dist/workflows/prompts/init.js.map +0 -1
  324. package/dist/workflows/prompts/meta.js +0 -17
  325. package/dist/workflows/prompts/meta.js.map +0 -1
  326. package/dist/workflows/prompts/plan.js +0 -212
  327. package/dist/workflows/prompts/plan.js.map +0 -1
  328. package/dist/workflows/prompts/pr.js +0 -15
  329. package/dist/workflows/prompts/pr.js.map +0 -1
  330. package/dist/workflows/prompts/review.js +0 -145
  331. package/dist/workflows/prompts/review.js.map +0 -1
  332. package/dist/workflows/prompts/shared.js +0 -93
  333. package/dist/workflows/prompts/shared.js.map +0 -1
  334. package/dist/workflows/review.workflow.js +0 -357
  335. package/dist/workflows/review.workflow.js.map +0 -1
  336. package/dist/workflows/task.workflow.js +0 -47
  337. package/dist/workflows/task.workflow.js.map +0 -1
  338. package/dist/workflows/testing/helper.js +0 -41
  339. package/dist/workflows/testing/helper.js.map +0 -1
  340. package/dist/workflows/workflow.utils.js +0 -351
  341. package/dist/workflows/workflow.utils.js.map +0 -1
  342. package/dist/workflows/workflow.utils.test.js +0 -45
  343. package/dist/workflows/workflow.utils.test.js.map +0 -1
@@ -1,56 +0,0 @@
1
- /**
2
- * Shell utility functions for safe command execution
3
- */
4
- /**
5
- * Detect if running on Windows
6
- */
7
- function isWindows() {
8
- return process.platform === 'win32';
9
- }
10
- /**
11
- * Quote a string for safe shell execution (cross-platform)
12
- *
13
- * On Unix/Linux/macOS:
14
- * - Uses single-quote wrapping with proper escaping
15
- * - Handles spaces, special characters, and single quotes
16
- * - Pattern: 'original' becomes 'original'
17
- * - Pattern: it's becomes 'it'\''s'
18
- *
19
- * On Windows (cmd.exe):
20
- * - Uses double-quote wrapping
21
- * - Only escapes double quotes by doubling them ("")
22
- * - Most special characters (&, |, <, >, ^) are safe inside double quotes
23
- * - LIMITATION: %VAR% environment variables are expanded even inside double quotes
24
- * - Note: Quote doubling ("") works with Git/MinGW tools. Standard Windows apps
25
- * sometimes use backslash escaping (\") via CommandLineToArgvW, but Git
26
- * on Windows typically uses MSYS/Cygwin which handles doubled quotes correctly.
27
- *
28
- * This function is primarily used for git commands, which work well with
29
- * this quoting strategy on both platforms.
30
- *
31
- * @param str - The string to quote
32
- * @returns The safely quoted string for the current platform
33
- *
34
- * @example
35
- * ```ts
36
- * quoteForShell('filename.txt') // 'filename.txt' (Unix) or "filename.txt" (Windows)
37
- * quoteForShell('my file.txt') // 'my file.txt' (Unix) or "my file.txt" (Windows)
38
- * quoteForShell("it's great") // 'it'\''s great' (Unix) or "it's great" (Windows)
39
- * quoteForShell('$(rm -rf)') // '$(rm -rf)' (Unix) or "$(rm -rf)" (Windows)
40
- * quoteForShell('file with "quotes"') // 'file with "quotes"' (Unix) or "file with ""quotes""" (Windows)
41
- * ```
42
- */
43
- export function quoteForShell(str) {
44
- if (isWindows()) {
45
- // Windows cmd.exe quoting: wrap in double quotes and double internal quotes
46
- // This pattern works with Git/MinGW tools (MSYS/Cygwin runtime)
47
- // Note: %VAR% expansion still occurs inside double quotes - this is a cmd.exe limitation
48
- const escaped = str.replace(/"/g, '""');
49
- return `"${escaped}"`;
50
- }
51
- else {
52
- // Unix/Linux/macOS use single quotes (most robust)
53
- return `'${str.replace(/'/g, "'\\''")}'`;
54
- }
55
- }
56
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,4EAA4E;QAC5E,gEAAgE;QAChE,yFAAyF;QACzF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,OAAO,IAAI,OAAO,GAAG,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAA;IAC1C,CAAC;AACH,CAAC"}
@@ -1,47 +0,0 @@
1
- // packages/cli/src/utils/userInput.ts
2
- import { confirm, input } from '@inquirer/prompts';
3
- import { readMultiline } from '@polka-codes/cli-shared';
4
- import chalk from 'chalk';
5
- import { UserCancelledError } from '../errors';
6
- export async function getUserInput(message, options = {}) {
7
- const { default: defaultValue, throwOnCancel = false } = options;
8
- try {
9
- let result = await input({
10
- message: `${message}${chalk.gray(' (type .m for multiline)')}`,
11
- default: defaultValue,
12
- });
13
- if (result === '.m') {
14
- result = await readMultiline('Enter multiline text (Ctrl+D to finish):');
15
- }
16
- return result;
17
- }
18
- catch (error) {
19
- if (error instanceof Error && error.name === 'ExitPromptError') {
20
- if (throwOnCancel) {
21
- throw new UserCancelledError();
22
- }
23
- return undefined;
24
- }
25
- throw error;
26
- }
27
- }
28
- export async function getConfirmation(message, options = {}) {
29
- const { default: defaultValue = true, throwOnCancel = false } = options;
30
- try {
31
- const result = await confirm({
32
- message,
33
- default: defaultValue,
34
- });
35
- return result;
36
- }
37
- catch (error) {
38
- if (error instanceof Error && error.name === 'ExitPromptError') {
39
- if (throwOnCancel) {
40
- throw new UserCancelledError();
41
- }
42
- return false;
43
- }
44
- throw error;
45
- }
46
- }
47
- //# sourceMappingURL=userInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userInput.js","sourceRoot":"","sources":["../../src/utils/userInput.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,UAAyD,EAAE;IAE3D,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAChE,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC;YACvB,OAAO,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YAC9D,OAAO,EAAE,YAAY;SACtB,CAAC,CAAA;QACF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,GAAG,MAAM,aAAa,CAAC,0CAA0C,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,kBAAkB,EAAE,CAAA;YAChC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,UAA0D,EAAE;IACjH,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,OAAO;YACP,OAAO,EAAE,YAAY;SACtB,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,IAAI,kBAAkB,EAAE,CAAA;YAChC,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * CLI Tool Registry Type Definitions
3
- *
4
- * This file defines the CliToolRegistry which extends AgentToolRegistry with
5
- * CLI-specific tools. The tools are organized by domain:
6
- *
7
- * - **Git Operations**: createCommit, printChangeFile
8
- * - **User Interaction**: confirm, input, select
9
- * - **File Operations**: readFile, writeToFile
10
- * - **Command Execution**: executeCommand
11
- * - **Memory Management**: getMemoryContext, readMemory, listMemoryTopics, updateMemory
12
- * - **Todo Management**: listTodoItems, getTodoItem, updateTodoItem
13
- * - **Remote Operations**: createPullRequest, runAgent
14
- *
15
- * The AgentToolRegistry (from @polka-codes/core) provides additional tools like:
16
- * - replaceInFile, searchFiles, listFiles
17
- * - generateText, invokeTool
18
- * - And more...
19
- */
20
- export {};
21
- //# sourceMappingURL=workflow-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -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":"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"}
@@ -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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"}