@polka-codes/cli 0.10.23 → 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 (335) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +3 -3
  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/commandSummarizer.js +0 -96
  102. package/dist/commandSummarizer.js.map +0 -1
  103. package/dist/commands/__tests__/command-detection.integration.test.js +0 -238
  104. package/dist/commands/__tests__/command-detection.integration.test.js.map +0 -1
  105. package/dist/commands/__tests__/script-generator.integration.test.js +0 -271
  106. package/dist/commands/__tests__/script-generator.integration.test.js.map +0 -1
  107. package/dist/commands/agent.js +0 -218
  108. package/dist/commands/agent.js.map +0 -1
  109. package/dist/commands/code.js +0 -102
  110. package/dist/commands/code.js.map +0 -1
  111. package/dist/commands/command.constants.js +0 -13
  112. package/dist/commands/command.constants.js.map +0 -1
  113. package/dist/commands/commit.js +0 -17
  114. package/dist/commands/commit.js.map +0 -1
  115. package/dist/commands/fix.js +0 -17
  116. package/dist/commands/fix.js.map +0 -1
  117. package/dist/commands/init.js +0 -501
  118. package/dist/commands/init.js.map +0 -1
  119. package/dist/commands/mcp-server.js +0 -122
  120. package/dist/commands/mcp-server.js.map +0 -1
  121. package/dist/commands/memory.js +0 -410
  122. package/dist/commands/memory.js.map +0 -1
  123. package/dist/commands/memory.test.js +0 -453
  124. package/dist/commands/memory.test.js.map +0 -1
  125. package/dist/commands/meta.js +0 -142
  126. package/dist/commands/meta.js.map +0 -1
  127. package/dist/commands/plan.js +0 -39
  128. package/dist/commands/plan.js.map +0 -1
  129. package/dist/commands/pr.js +0 -14
  130. package/dist/commands/pr.js.map +0 -1
  131. package/dist/commands/review-json.test.js +0 -33
  132. package/dist/commands/review-json.test.js.map +0 -1
  133. package/dist/commands/review.js +0 -137
  134. package/dist/commands/review.js.map +0 -1
  135. package/dist/commands/review.usage.test.js +0 -41
  136. package/dist/commands/review.usage.test.js.map +0 -1
  137. package/dist/commands/run.js +0 -107
  138. package/dist/commands/run.js.map +0 -1
  139. package/dist/commands/skills.js +0 -175
  140. package/dist/commands/skills.js.map +0 -1
  141. package/dist/commands/task.js +0 -34
  142. package/dist/commands/task.js.map +0 -1
  143. package/dist/commands/workflow.js +0 -117
  144. package/dist/commands/workflow.js.map +0 -1
  145. package/dist/configPrompt.js +0 -39
  146. package/dist/configPrompt.js.map +0 -1
  147. package/dist/env.js +0 -22
  148. package/dist/env.js.map +0 -1
  149. package/dist/errors.js +0 -132
  150. package/dist/errors.js.map +0 -1
  151. package/dist/errors.test.js +0 -21
  152. package/dist/errors.test.js.map +0 -1
  153. package/dist/file-attachments.js +0 -77
  154. package/dist/file-attachments.js.map +0 -1
  155. package/dist/file-attachments.test.js +0 -214
  156. package/dist/file-attachments.test.js.map +0 -1
  157. package/dist/getModel.js +0 -229
  158. package/dist/getModel.js.map +0 -1
  159. package/dist/getModel.test.js +0 -67
  160. package/dist/getModel.test.js.map +0 -1
  161. package/dist/getProviderOptions.js +0 -58
  162. package/dist/getProviderOptions.js.map +0 -1
  163. package/dist/git-operations.js +0 -363
  164. package/dist/git-operations.js.map +0 -1
  165. package/dist/git-operations.test.js +0 -81
  166. package/dist/git-operations.test.js.map +0 -1
  167. package/dist/index.js.map +0 -1
  168. package/dist/logger.js +0 -41
  169. package/dist/logger.js.map +0 -1
  170. package/dist/mcp/client.js +0 -11
  171. package/dist/mcp/client.js.map +0 -1
  172. package/dist/mcp/error-scenarios.test.js +0 -206
  173. package/dist/mcp/error-scenarios.test.js.map +0 -1
  174. package/dist/mcp/errors.js +0 -63
  175. package/dist/mcp/errors.js.map +0 -1
  176. package/dist/mcp/index.js +0 -9
  177. package/dist/mcp/index.js.map +0 -1
  178. package/dist/mcp/manager.js +0 -231
  179. package/dist/mcp/manager.js.map +0 -1
  180. package/dist/mcp/manager.test.js +0 -40
  181. package/dist/mcp/manager.test.js.map +0 -1
  182. package/dist/mcp/sdk-client.js +0 -166
  183. package/dist/mcp/sdk-client.js.map +0 -1
  184. package/dist/mcp/shared-types.js +0 -3
  185. package/dist/mcp/shared-types.js.map +0 -1
  186. package/dist/mcp/tools-integration.test.js +0 -198
  187. package/dist/mcp/tools-integration.test.js.map +0 -1
  188. package/dist/mcp/tools.js +0 -60
  189. package/dist/mcp/tools.js.map +0 -1
  190. package/dist/mcp/transport.js +0 -257
  191. package/dist/mcp/transport.js.map +0 -1
  192. package/dist/mcp/types.js +0 -3
  193. package/dist/mcp/types.js.map +0 -1
  194. package/dist/mcp-server/index.js +0 -5
  195. package/dist/mcp-server/index.js.map +0 -1
  196. package/dist/mcp-server/plan-formatting.test.js +0 -74
  197. package/dist/mcp-server/plan-formatting.test.js.map +0 -1
  198. package/dist/mcp-server/sdk-server.js +0 -102
  199. package/dist/mcp-server/sdk-server.js.map +0 -1
  200. package/dist/mcp-server/sdk-server.test.js +0 -363
  201. package/dist/mcp-server/sdk-server.test.js.map +0 -1
  202. package/dist/mcp-server/tools.js +0 -785
  203. package/dist/mcp-server/tools.js.map +0 -1
  204. package/dist/mcp-server/types.js +0 -3
  205. package/dist/mcp-server/types.js.map +0 -1
  206. package/dist/options.js +0 -85
  207. package/dist/options.js.map +0 -1
  208. package/dist/options.test.js +0 -177
  209. package/dist/options.test.js.map +0 -1
  210. package/dist/prices.js +0 -61
  211. package/dist/prices.js.map +0 -1
  212. package/dist/prices.test.js +0 -148
  213. package/dist/prices.test.js.map +0 -1
  214. package/dist/runWorkflow.js +0 -313
  215. package/dist/runWorkflow.js.map +0 -1
  216. package/dist/script/__tests__/execution.integration.test.js +0 -274
  217. package/dist/script/__tests__/execution.integration.test.js.map +0 -1
  218. package/dist/script/__tests__/runner.test.js +0 -176
  219. package/dist/script/__tests__/runner.test.js.map +0 -1
  220. package/dist/script/__tests__/validator.test.js +0 -180
  221. package/dist/script/__tests__/validator.test.js.map +0 -1
  222. package/dist/script/executor.js +0 -127
  223. package/dist/script/executor.js.map +0 -1
  224. package/dist/script/index.js +0 -4
  225. package/dist/script/index.js.map +0 -1
  226. package/dist/script/runner.js +0 -258
  227. package/dist/script/runner.js.map +0 -1
  228. package/dist/skillIntegration.js +0 -46
  229. package/dist/skillIntegration.js.map +0 -1
  230. package/dist/skillIntegration.test.js +0 -128
  231. package/dist/skillIntegration.test.js.map +0 -1
  232. package/dist/test/utils.js +0 -200
  233. package/dist/test/utils.js.map +0 -1
  234. package/dist/test/workflow-fixtures.js +0 -120
  235. package/dist/test/workflow-fixtures.js.map +0 -1
  236. package/dist/tool-implementations.js +0 -521
  237. package/dist/tool-implementations.js.map +0 -1
  238. package/dist/tool-implementations.skill-tools.test.js +0 -106
  239. package/dist/tool-implementations.skill-tools.test.js.map +0 -1
  240. package/dist/tools/getTodoItem.js +0 -33
  241. package/dist/tools/getTodoItem.js.map +0 -1
  242. package/dist/tools/gitDiff.js +0 -108
  243. package/dist/tools/gitDiff.js.map +0 -1
  244. package/dist/tools/index.js +0 -8
  245. package/dist/tools/index.js.map +0 -1
  246. package/dist/tools/listMemoryTopics.js +0 -24
  247. package/dist/tools/listMemoryTopics.js.map +0 -1
  248. package/dist/tools/listTodoItems.js +0 -35
  249. package/dist/tools/listTodoItems.js.map +0 -1
  250. package/dist/tools/listTodoItems.test.js +0 -89
  251. package/dist/tools/listTodoItems.test.js.map +0 -1
  252. package/dist/tools/readMemory.js +0 -33
  253. package/dist/tools/readMemory.js.map +0 -1
  254. package/dist/tools/updateMemory.js +0 -62
  255. package/dist/tools/updateMemory.js.map +0 -1
  256. package/dist/tools/updateMemory.test.js +0 -109
  257. package/dist/tools/updateMemory.test.js.map +0 -1
  258. package/dist/tools/updateTodoItem.js +0 -31
  259. package/dist/tools/updateTodoItem.js.map +0 -1
  260. package/dist/tools/utils/diffLineNumbers.js +0 -178
  261. package/dist/tools/utils/diffLineNumbers.js.map +0 -1
  262. package/dist/utils/cacheControl.js +0 -59
  263. package/dist/utils/cacheControl.js.map +0 -1
  264. package/dist/utils/cacheControl.test.js +0 -128
  265. package/dist/utils/cacheControl.test.js.map +0 -1
  266. package/dist/utils/command.js +0 -50
  267. package/dist/utils/command.js.map +0 -1
  268. package/dist/utils/shell.js +0 -56
  269. package/dist/utils/shell.js.map +0 -1
  270. package/dist/utils/userInput.js +0 -47
  271. package/dist/utils/userInput.js.map +0 -1
  272. package/dist/workflow-tools.js +0 -21
  273. package/dist/workflow-tools.js.map +0 -1
  274. package/dist/workflows/agent-builder.js +0 -90
  275. package/dist/workflows/agent-builder.js.map +0 -1
  276. package/dist/workflows/agent-builder.test.js +0 -115
  277. package/dist/workflows/agent-builder.test.js.map +0 -1
  278. package/dist/workflows/code.workflow.js +0 -145
  279. package/dist/workflows/code.workflow.js.map +0 -1
  280. package/dist/workflows/commit.workflow.js +0 -111
  281. package/dist/workflows/commit.workflow.js.map +0 -1
  282. package/dist/workflows/commit.workflow.test.js +0 -141
  283. package/dist/workflows/commit.workflow.test.js.map +0 -1
  284. package/dist/workflows/fix.workflow.js +0 -172
  285. package/dist/workflows/fix.workflow.js.map +0 -1
  286. package/dist/workflows/fix.workflow.test.js +0 -137
  287. package/dist/workflows/fix.workflow.test.js.map +0 -1
  288. package/dist/workflows/git-file-tools.js +0 -408
  289. package/dist/workflows/git-file-tools.js.map +0 -1
  290. package/dist/workflows/index.js +0 -12
  291. package/dist/workflows/index.js.map +0 -1
  292. package/dist/workflows/init-interactive.workflow.js +0 -198
  293. package/dist/workflows/init-interactive.workflow.js.map +0 -1
  294. package/dist/workflows/init.workflow.js +0 -41
  295. package/dist/workflows/init.workflow.js.map +0 -1
  296. package/dist/workflows/meta.workflow.js +0 -107
  297. package/dist/workflows/meta.workflow.js.map +0 -1
  298. package/dist/workflows/plan.workflow.js +0 -275
  299. package/dist/workflows/plan.workflow.js.map +0 -1
  300. package/dist/workflows/plan.workflow.test.js +0 -419
  301. package/dist/workflows/plan.workflow.test.js.map +0 -1
  302. package/dist/workflows/pr.workflow.js +0 -54
  303. package/dist/workflows/pr.workflow.js.map +0 -1
  304. package/dist/workflows/pr.workflow.test.js +0 -98
  305. package/dist/workflows/pr.workflow.test.js.map +0 -1
  306. package/dist/workflows/prompts/coder.js +0 -85
  307. package/dist/workflows/prompts/coder.js.map +0 -1
  308. package/dist/workflows/prompts/commit.js +0 -16
  309. package/dist/workflows/prompts/commit.js.map +0 -1
  310. package/dist/workflows/prompts/fix.js +0 -44
  311. package/dist/workflows/prompts/fix.js.map +0 -1
  312. package/dist/workflows/prompts/index.js +0 -10
  313. package/dist/workflows/prompts/index.js.map +0 -1
  314. package/dist/workflows/prompts/init.js +0 -48
  315. package/dist/workflows/prompts/init.js.map +0 -1
  316. package/dist/workflows/prompts/meta.js +0 -17
  317. package/dist/workflows/prompts/meta.js.map +0 -1
  318. package/dist/workflows/prompts/plan.js +0 -212
  319. package/dist/workflows/prompts/plan.js.map +0 -1
  320. package/dist/workflows/prompts/pr.js +0 -15
  321. package/dist/workflows/prompts/pr.js.map +0 -1
  322. package/dist/workflows/prompts/review.js +0 -145
  323. package/dist/workflows/prompts/review.js.map +0 -1
  324. package/dist/workflows/prompts/shared.js +0 -93
  325. package/dist/workflows/prompts/shared.js.map +0 -1
  326. package/dist/workflows/review.workflow.js +0 -357
  327. package/dist/workflows/review.workflow.js.map +0 -1
  328. package/dist/workflows/task.workflow.js +0 -47
  329. package/dist/workflows/task.workflow.js.map +0 -1
  330. package/dist/workflows/testing/helper.js +0 -41
  331. package/dist/workflows/testing/helper.js.map +0 -1
  332. package/dist/workflows/workflow.utils.js +0 -351
  333. package/dist/workflows/workflow.utils.js.map +0 -1
  334. package/dist/workflows/workflow.utils.test.js +0 -45
  335. 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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"}