@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
package/dist/api.js DELETED
@@ -1,279 +0,0 @@
1
- /**
2
- * Polka Codes Scripting API
3
- *
4
- * This module provides a high-level TypeScript API for programmatic access to
5
- * polka-codes workflows. All functions support both interactive and non-interactive modes.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { commit, code, review } from '@polka-codes/cli'
10
- *
11
- * // Non-interactive scripting
12
- * await commit({ all: true, context: 'Fix login bug', interactive: false })
13
- *
14
- * // Interactive use (default)
15
- * await code({ task: 'Add user authentication' })
16
- * ```
17
- */
18
- import { createLogger } from './logger';
19
- import { runWorkflow } from './runWorkflow';
20
- import { codeWorkflow, commitWorkflow, fixWorkflow, planWorkflow, prWorkflow, reviewWorkflow, taskWorkflow, } from './workflows';
21
- /**
22
- * Creates a commit with an AI-generated message
23
- *
24
- * @param options - Commit options
25
- * @returns The generated commit message, or undefined if cancelled
26
- *
27
- * @example
28
- * ```typescript
29
- * // Commit all changes with context
30
- * const message = await commit({
31
- * all: true,
32
- * context: 'Fix authentication bug'
33
- * })
34
- *
35
- * // Non-interactive commit
36
- * await commit({ all: true, interactive: false })
37
- * ```
38
- */
39
- export async function commit(options = {}) {
40
- const { all, files, context: messageContext, interactive, onUsage, ...context } = options;
41
- // Create logger from options
42
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
43
- const logger = createLogger({ verbose });
44
- // Build workflow input
45
- const workflowInput = {
46
- ...(all && { all: true }),
47
- ...(files && { files }),
48
- ...(messageContext && { context: messageContext }),
49
- interactive: interactive !== false,
50
- };
51
- // Execute workflow
52
- const result = await runWorkflow(commitWorkflow, workflowInput, {
53
- commandName: 'commit',
54
- context,
55
- logger,
56
- interactive: interactive !== false,
57
- onUsageMeterCreated: onUsage,
58
- });
59
- // Handle both string and void returns
60
- return result ?? undefined;
61
- }
62
- /**
63
- * Creates a GitHub pull request with AI-generated title and description
64
- *
65
- * @param options - PR creation options
66
- * @returns The PR URL and details, or undefined if cancelled
67
- *
68
- * @example
69
- * ```typescript
70
- * // Create PR with context
71
- * const pr = await createPr({
72
- * context: 'Implements user authentication flow'
73
- * })
74
- *
75
- * // Non-interactive PR creation
76
- * await createPr({ interactive: false })
77
- * ```
78
- */
79
- export async function createPr(options = {}) {
80
- const { context: prContext, interactive, onUsage, ...context } = options;
81
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
82
- const logger = createLogger({ verbose });
83
- const workflowInput = {
84
- ...(prContext && { context: prContext }),
85
- };
86
- return runWorkflow(prWorkflow, workflowInput, {
87
- commandName: 'pr',
88
- context,
89
- logger,
90
- interactive: interactive !== false,
91
- onUsageMeterCreated: onUsage,
92
- });
93
- }
94
- /**
95
- * Plans and implements a feature or task using AI agents
96
- *
97
- * @param options - Code generation options
98
- * @returns Implementation result with summaries
99
- *
100
- * @example
101
- * ```typescript
102
- * // Implement a feature
103
- * const result = await code({
104
- * task: 'Add OAuth2 login with Google'
105
- * })
106
- *
107
- * // With custom files
108
- * await code({
109
- * task: 'Implement this design',
110
- * files: [{ type: 'image', mediaType: 'image/png', image: 'base64...' }]
111
- * })
112
- * ```
113
- */
114
- export async function code(options) {
115
- const { task, files, mode, additionalInstructions, interactive, onUsage, ...context } = options;
116
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
117
- const logger = createLogger({ verbose });
118
- const workflowInput = {
119
- task,
120
- files,
121
- mode,
122
- additionalInstructions,
123
- };
124
- return runWorkflow(codeWorkflow, workflowInput, {
125
- commandName: 'code',
126
- context,
127
- logger,
128
- interactive: interactive !== false,
129
- onUsageMeterCreated: onUsage,
130
- });
131
- }
132
- /**
133
- * Reviews code changes (PR or local)
134
- *
135
- * @param options - Review options
136
- * @returns Review result with overview and specific feedback
137
- *
138
- * @example
139
- * ```typescript
140
- * // Review local changes
141
- * const review = await reviewCode({})
142
- *
143
- * // Review specific PR
144
- * const review = await reviewCode({ pr: 123 })
145
- * ```
146
- */
147
- export async function reviewCode(options = {}) {
148
- const { pr, range, files, context: reviewContext, interactive, onUsage, ...context } = options;
149
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
150
- const logger = createLogger({ verbose });
151
- const workflowInput = {
152
- pr,
153
- range,
154
- files,
155
- context: reviewContext,
156
- };
157
- return runWorkflow(reviewWorkflow, workflowInput, {
158
- commandName: 'review',
159
- context,
160
- logger,
161
- interactive: interactive !== false,
162
- onUsageMeterCreated: onUsage,
163
- });
164
- }
165
- /**
166
- * Fixes issues by running a command and letting AI fix errors
167
- *
168
- * @param options - Fix options
169
- * @returns Fix result with summaries
170
- *
171
- * @example
172
- * ```typescript
173
- * // Fix test failures
174
- * const result = await fix({
175
- * command: 'npm test',
176
- * task: 'Fix failing unit tests'
177
- * })
178
- *
179
- * // Use default check/test scripts from config
180
- * await fix({})
181
- * ```
182
- */
183
- export async function fix(options = {}) {
184
- const { command, task, prompt, interactive, onUsage, ...context } = options;
185
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
186
- const logger = createLogger({ verbose });
187
- const workflowInput = {
188
- command,
189
- task,
190
- prompt,
191
- };
192
- return runWorkflow(fixWorkflow, workflowInput, {
193
- commandName: 'fix',
194
- context,
195
- logger,
196
- interactive: interactive !== false,
197
- onUsageMeterCreated: onUsage,
198
- });
199
- }
200
- /**
201
- * Performs a generic task using an AI agent
202
- *
203
- * @param options - Task options
204
- * @returns Task completion result (ExitReason with agent output)
205
- *
206
- * @example
207
- * ```typescript
208
- * // Run a simple task
209
- * const result = await task({
210
- * task: 'Refactor the auth module'
211
- * })
212
- *
213
- * // Non-interactive mode with JSON output
214
- * const result = await task({
215
- * task: 'Update dependencies',
216
- * jsonMode: true,
217
- * interactive: false
218
- * })
219
- * ```
220
- */
221
- export async function task(options) {
222
- const { task: taskInput, jsonMode, readonly, systemPrompt, interactive, onUsage, ...context } = options;
223
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
224
- const logger = createLogger({ verbose });
225
- const workflowInput = {
226
- task: taskInput,
227
- jsonMode,
228
- readonly,
229
- systemPrompt,
230
- };
231
- return runWorkflow(taskWorkflow, workflowInput, {
232
- commandName: 'task',
233
- context,
234
- logger,
235
- interactive: interactive !== false,
236
- onUsageMeterCreated: onUsage,
237
- });
238
- }
239
- /**
240
- * Creates or updates an implementation plan
241
- *
242
- * @param options - Planning options
243
- * @returns The generated plan and related files
244
- *
245
- * @example
246
- * ```typescript
247
- * // Create a new plan
248
- * const plan = await plan({
249
- * task: 'Design and implement user dashboard'
250
- * })
251
- *
252
- * // Update existing plan
253
- * await plan({
254
- * task: 'Add dark mode',
255
- * fileContent: existingPlan,
256
- * planFile: '.plans/dashboard.md'
257
- * })
258
- * ```
259
- */
260
- export async function plan(options = {}) {
261
- const { task, fileContent, planFile, files, mode, interactive, onUsage, ...context } = options;
262
- const verbose = context.silent ? -1 : (context.verbose ?? 0);
263
- const logger = createLogger({ verbose });
264
- const workflowInput = {
265
- task,
266
- fileContent,
267
- filePath: planFile,
268
- files,
269
- mode,
270
- };
271
- return runWorkflow(planWorkflow, workflowInput, {
272
- commandName: 'plan',
273
- context,
274
- logger,
275
- interactive: interactive !== false,
276
- onUsageMeterCreated: onUsage,
277
- });
278
- }
279
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- // generated by polka.codes
2
- /**
3
- * List of built-in command names that cannot be used for custom scripts or skills.
4
- * This list is centralized to prevent drift across the codebase.
5
- */
6
- export const BUILT_IN_COMMANDS = [
7
- 'code',
8
- 'commit',
9
- 'pr',
10
- 'review',
11
- 'fix',
12
- 'plan',
13
- 'task',
14
- 'workflow',
15
- 'run',
16
- 'init',
17
- 'meta',
18
- 'skills',
19
- ];
20
- //# sourceMappingURL=builtin-commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtin-commands.js","sourceRoot":"","sources":["../src/builtin-commands.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,UAAU;IACV,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;CACA,CAAA"}
@@ -1,96 +0,0 @@
1
- // generated by polka.codes
2
- import { parseJsonFromMarkdown } from '@polka-codes/core';
3
- import { generateText } from 'ai';
4
- import { z } from 'zod';
5
- const prompt = `
6
- You are a command output summarizer. Analyze the provided command output, which is prefixed with line numbers and the stream name (stdout/stderr). Your task is to identify the most important lines, such as errors, failures, or key results.
7
-
8
- The input is structured as follows:
9
- [line_number]: [stream]: [content]
10
-
11
- Your output must be a JSON object containing the line number ranges of the most important lines for each stream. The JSON object should be enclosed in a markdown code block.
12
-
13
- The JSON schema is as follows:
14
- {
15
- "stdout": [[start_line, end_line], ...],
16
- "stderr": [[start_line, end_line], ...]
17
- }
18
-
19
- - Only include lines that are important for understanding the outcome of the command.
20
- - Group consecutive lines into a single range.
21
-
22
- Example Output:
23
- \`\`\`json
24
- {
25
- "stdout": [[1, 3], [5, 7], [9, 11]],
26
- "stderr": [[1, 2], [4, 5]]
27
- }
28
- `;
29
- const schema = z.object({
30
- stdout: z.array(z.array(z.number()).length(2)).default([]),
31
- stderr: z.array(z.array(z.number()).length(2)).default([]),
32
- });
33
- export const summarizeOutput = async (model, stdout, stderr) => {
34
- const lines = [];
35
- let input = '';
36
- let lineNumber = 1;
37
- for (const line of stdout.split('\n')) {
38
- lines.push(line);
39
- input += `[${lineNumber}]: stdout: ${line}\n`;
40
- lineNumber++;
41
- }
42
- for (const line of stderr.split('\n')) {
43
- lines.push(line);
44
- input += `[${lineNumber}]: stderr: ${line}\n`;
45
- lineNumber++;
46
- }
47
- let lastError;
48
- let respText = '';
49
- let currentPrompt = input;
50
- for (let i = 0; i < 3; i++) {
51
- const resp = await generateText({
52
- model,
53
- system: prompt,
54
- prompt: currentPrompt,
55
- });
56
- respText = resp.text;
57
- try {
58
- const parsed = parseJsonFromMarkdown(respText);
59
- const { stdout: stdoutRanges, stderr: stderrRanges } = schema.parse(parsed || {});
60
- let summarizedStdout = '';
61
- for (const range of stdoutRanges) {
62
- const [start, end] = range;
63
- for (let i = start; i <= end; i++) {
64
- summarizedStdout += `${lines[i - 1]}\n`;
65
- }
66
- }
67
- let summarizedStderr = '';
68
- for (const range of stderrRanges) {
69
- const [start, end] = range;
70
- for (let i = start; i <= end; i++) {
71
- summarizedStderr += `${lines[i - 1]}\n`;
72
- }
73
- }
74
- if (!summarizedStdout && !summarizedStderr) {
75
- throw new Error('You must output at least one line of stdout or stderr');
76
- }
77
- let result = '';
78
- if (summarizedStdout) {
79
- result += `STDOUT:\n${summarizedStdout}`;
80
- }
81
- if (summarizedStderr) {
82
- if (result) {
83
- result += '\n\n';
84
- }
85
- result += `STDERR:\n${summarizedStderr}`;
86
- }
87
- return result;
88
- }
89
- catch (error) {
90
- lastError = error instanceof Error ? error : new Error(String(error));
91
- currentPrompt = `${input}\n\nYour previous output was invalid: ${lastError.message}. You MUST output a valid JSON object inside a markdown code block. Please correct it.`;
92
- }
93
- }
94
- throw new Error('Unable to summarize output');
95
- };
96
- //# sourceMappingURL=commandSummarizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commandSummarizer.js","sourceRoot":"","sources":["../src/commandSummarizer.ts"],"names":[],"mappings":"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"}
@@ -1,238 +0,0 @@
1
- // generated by polka.codes
2
- import { afterEach, beforeEach, describe, expect, it } from 'bun:test';
3
- import { mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { loadConfig } from '@polka-codes/cli-shared';
6
- describe('Command Detection Integration Tests', () => {
7
- const testProjectDir = join(process.cwd(), 'test-command-detection');
8
- const configPath = join(testProjectDir, '.polkacodes.yml');
9
- const scriptsDir = join(testProjectDir, '.polka-scripts');
10
- beforeEach(() => {
11
- // Create test project directory
12
- mkdirSync(testProjectDir, { recursive: true });
13
- mkdirSync(scriptsDir, { recursive: true });
14
- });
15
- afterEach(() => {
16
- // Cleanup test project directory
17
- try {
18
- rmSync(testProjectDir, { recursive: true, force: true });
19
- }
20
- catch {
21
- // Directory doesn't exist
22
- }
23
- });
24
- describe('Config loading with scripts', () => {
25
- it('should load config with string script', async () => {
26
- const configContent = `
27
- scripts:
28
- test: "bun test"
29
- build: "bun run build"
30
- `;
31
- writeFileSync(configPath, configContent);
32
- const config = await loadConfig([], testProjectDir);
33
- expect(config).toBeDefined();
34
- expect(config?.scripts).toBeDefined();
35
- expect(config?.scripts?.test).toBe('bun test');
36
- expect(config?.scripts?.build).toBe('bun run build');
37
- });
38
- it('should load config with command object script', async () => {
39
- const configContent = `
40
- scripts:
41
- deploy:
42
- command: "bun run deploy"
43
- description: Deploy to production
44
- `;
45
- writeFileSync(configPath, configContent);
46
- const config = await loadConfig([], testProjectDir);
47
- expect(config).toBeDefined();
48
- expect(config?.scripts).toBeDefined();
49
- const deployScript = config?.scripts?.deploy;
50
- expect(deployScript).toBeDefined();
51
- if (typeof deployScript === 'object' && 'command' in deployScript) {
52
- expect(deployScript.command).toBe('bun run deploy');
53
- expect(deployScript.description).toBe('Deploy to production');
54
- }
55
- else {
56
- expect(true).toBe(false); // Should be a command object
57
- }
58
- });
59
- it('should load config with TypeScript script', async () => {
60
- writeFileSync(join(scriptsDir, 'deploy.ts'), `
61
- export async function main(args: string[]) {
62
- return { deployed: true }
63
- }
64
- `);
65
- const configContent = `
66
- scripts:
67
- deploy:
68
- script: .polka-scripts/deploy.ts
69
- description: Deploy to production
70
- permissions:
71
- network: true
72
- `;
73
- writeFileSync(configPath, configContent);
74
- const config = await loadConfig([], testProjectDir);
75
- expect(config).toBeDefined();
76
- expect(config?.scripts).toBeDefined();
77
- const deployScript = config?.scripts?.deploy;
78
- expect(deployScript).toBeDefined();
79
- if (typeof deployScript === 'object' && 'script' in deployScript) {
80
- expect(deployScript.script).toBe('.polka-scripts/deploy.ts');
81
- expect(deployScript.permissions?.network).toBe(true);
82
- }
83
- else {
84
- expect(true).toBe(false); // Should be a script object
85
- }
86
- });
87
- it('should load config with workflow script', async () => {
88
- const configContent = `
89
- scripts:
90
- workflow-test:
91
- workflow: .polka-scripts/test.yml
92
- description: Test workflow
93
- `;
94
- writeFileSync(configPath, configContent);
95
- const config = await loadConfig([], testProjectDir);
96
- expect(config).toBeDefined();
97
- expect(config?.scripts).toBeDefined();
98
- const workflowScript = config?.scripts?.['workflow-test'];
99
- expect(workflowScript).toBeDefined();
100
- if (typeof workflowScript === 'object' && 'workflow' in workflowScript) {
101
- expect(workflowScript.workflow).toBe('.polka-scripts/test.yml');
102
- }
103
- else {
104
- expect(true).toBe(false); // Should be a workflow object
105
- }
106
- });
107
- });
108
- describe('Script validation', () => {
109
- it('should validate all script types in config', async () => {
110
- writeFileSync(join(scriptsDir, 'deploy.ts'), `
111
- export async function main(args: string[]) {
112
- return { deployed: true }
113
- }
114
- `);
115
- const configContent = `
116
- scripts:
117
- test: "bun test"
118
- build:
119
- command: "bun run build"
120
- description: Build project
121
- deploy:
122
- script: .polka-scripts/deploy.ts
123
- permissions:
124
- fs: write
125
- workflow-test:
126
- workflow: .polka-scripts/test.yml
127
- `;
128
- writeFileSync(configPath, configContent);
129
- const config = await loadConfig([], testProjectDir);
130
- expect(config).toBeDefined();
131
- expect(config?.scripts).toBeDefined();
132
- // Verify all scripts are present
133
- expect(config?.scripts?.test).toBeDefined();
134
- expect(config?.scripts?.build).toBeDefined();
135
- expect(config?.scripts?.deploy).toBeDefined();
136
- expect(config?.scripts?.['workflow-test']).toBeDefined();
137
- });
138
- it('should preserve script metadata', async () => {
139
- const configContent = `
140
- scripts:
141
- complex-script:
142
- script: .polka-scripts/complex.ts
143
- description: A complex script with many options
144
- permissions:
145
- fs: write
146
- network: true
147
- subprocess: true
148
- timeout: 60000
149
- memory: 512
150
- `;
151
- writeFileSync(configPath, configContent);
152
- const config = await loadConfig([], testProjectDir);
153
- expect(config).toBeDefined();
154
- const script = config?.scripts?.['complex-script'];
155
- expect(script).toBeDefined();
156
- if (typeof script === 'object' && 'script' in script) {
157
- expect(script.description).toBe('A complex script with many options');
158
- expect(script.permissions?.fs).toBe('write');
159
- expect(script.permissions?.network).toBe(true);
160
- expect(script.permissions?.subprocess).toBe(true);
161
- expect(script.timeout).toBe(60000);
162
- expect(script.memory).toBe(512);
163
- }
164
- else {
165
- expect(true).toBe(false); // Should be a script object
166
- }
167
- });
168
- });
169
- describe('Script listing', () => {
170
- it('should list all available scripts from config', async () => {
171
- const configContent = `
172
- scripts:
173
- test: "bun test"
174
- lint: "bun run lint"
175
- format: "bun run format"
176
- deploy:
177
- script: .polka-scripts/deploy.ts
178
- description: Deploy to production
179
- `;
180
- writeFileSync(configPath, configContent);
181
- const config = await loadConfig([], testProjectDir);
182
- expect(config).toBeDefined();
183
- expect(config?.scripts).toBeDefined();
184
- const scriptNames = Object.keys(config?.scripts || {});
185
- expect(scriptNames).toContain('test');
186
- expect(scriptNames).toContain('lint');
187
- expect(scriptNames).toContain('format');
188
- expect(scriptNames).toContain('deploy');
189
- });
190
- it('should handle empty scripts section', async () => {
191
- const configContent = `
192
- scripts: {}
193
- `;
194
- writeFileSync(configPath, configContent);
195
- const config = await loadConfig([], testProjectDir);
196
- expect(config).toBeDefined();
197
- expect(config?.scripts).toBeDefined();
198
- expect(Object.keys(config?.scripts || {})).toHaveLength(0);
199
- });
200
- it('should handle missing scripts section', async () => {
201
- const configContent = `
202
- defaultProvider: openai
203
- defaultModel: gpt-4
204
- `;
205
- writeFileSync(configPath, configContent);
206
- const config = await loadConfig([], testProjectDir);
207
- expect(config).toBeDefined();
208
- // scripts may be undefined
209
- expect(config?.scripts).toBeUndefined();
210
- });
211
- });
212
- describe('Config updates', () => {
213
- it('should preserve existing config when adding scripts', () => {
214
- const initialConfig = `# Project configuration
215
- defaultProvider: openai
216
- defaultModel: gpt-4
217
-
218
- maxMessageCount: 50
219
- `;
220
- writeFileSync(configPath, initialConfig);
221
- // Read current config
222
- const currentContent = readFileSync(configPath, 'utf-8');
223
- // Append scripts section
224
- const updatedContent = `${currentContent}
225
- scripts:
226
- new-script: "echo new"
227
- `;
228
- writeFileSync(configPath, updatedContent);
229
- const newContent = readFileSync(configPath, 'utf-8');
230
- expect(newContent).toContain('defaultProvider: openai');
231
- expect(newContent).toContain('defaultModel: gpt-4');
232
- expect(newContent).toContain('maxMessageCount:');
233
- expect(newContent).toContain('scripts:');
234
- expect(newContent).toContain('new-script');
235
- });
236
- });
237
- });
238
- //# sourceMappingURL=command-detection.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-detection.integration.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/command-detection.integration.test.ts"],"names":[],"mappings":"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"}