@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,17 +0,0 @@
1
- import { Command } from 'commander';
2
- import { commit } from '../api';
3
- import { getBaseWorkflowOptions } from '../utils/command';
4
- export const commitCommand = new Command('commit')
5
- .description('Create a commit with AI-generated message')
6
- .option('-a, --all', 'Stage all files before committing')
7
- .argument('[message]', 'Optional context for the commit message generation')
8
- .action(async (message, localOptions, command) => {
9
- const workflowOpts = getBaseWorkflowOptions(command);
10
- await commit({
11
- all: localOptions.all,
12
- context: message,
13
- files: workflowOpts.file,
14
- ...workflowOpts,
15
- });
16
- });
17
- //# sourceMappingURL=commit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,QAAQ,CAAC,WAAW,EAAE,oDAAoD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAgB,EAAE,EAAE;IACxD,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,MAAM,CAAC;QACX,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,YAAY,CAAC,IAAI;QACxB,GAAG,YAAY;KAChB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,17 +0,0 @@
1
- // generated by polka.codes
2
- import { Command } from 'commander';
3
- import { fix } from '../api';
4
- import { getBaseWorkflowOptions } from '../utils/command';
5
- export const fixCommand = new Command('fix')
6
- .description('Fix issues by running a command and letting an agent fix it.')
7
- .argument('[command]', 'The command to run')
8
- .option('-p, --prompt <prompt>', 'Additional prompt for the agent.')
9
- .action(async (commandArg, options, cmd) => {
10
- const workflowOpts = getBaseWorkflowOptions(cmd);
11
- await fix({
12
- command: commandArg,
13
- prompt: options.prompt,
14
- ...workflowOpts,
15
- });
16
- });
17
- //# sourceMappingURL=fix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8DAA8D,CAAC;KAC3E,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,OAA4B,EAAE,GAAY,EAAE,EAAE;IAC3F,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,GAAG,CAAC;QACR,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,YAAY;KAChB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,501 +0,0 @@
1
- /**
2
- * Initialize polkacodes configuration command.
3
- * Generated by polka.codes
4
- */
5
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
6
- import { join } from 'node:path';
7
- import { confirm, input, select } from '@inquirer/prompts';
8
- import { getGlobalConfigPath, loadConfigAtPath, localConfigFileName, readConfig } from '@polka-codes/cli-shared';
9
- import { Command } from 'commander';
10
- import { set } from 'lodash-es';
11
- import { parseDocument, stringify } from 'yaml';
12
- import { BUILT_IN_COMMANDS } from '../builtin-commands';
13
- import { configPrompt } from '../configPrompt';
14
- import { createLogger } from '../logger';
15
- import { runWorkflow } from '../runWorkflow';
16
- import { getBaseWorkflowOptions } from '../utils/command';
17
- import { initWorkflow } from '../workflows/init.workflow';
18
- import { initInteractiveWorkflow } from '../workflows/init-interactive.workflow';
19
- /**
20
- * Create a new Agent Skill template
21
- */
22
- async function createSkill(name, logger, interactive) {
23
- // Validate skill name (same rules as Agent Skills spec)
24
- const nameRegex = /^[a-z0-9-]+$/;
25
- if (!nameRegex.test(name)) {
26
- throw new Error('Skill name must contain only lowercase letters, numbers, and hyphens. Example: "react-component-generator"');
27
- }
28
- if (name.length > 64) {
29
- throw new Error('Skill name must be at most 64 characters');
30
- }
31
- // Check for conflicts with built-in commands
32
- if (BUILT_IN_COMMANDS.includes(name)) {
33
- throw new Error(`Skill name '${name}' conflicts with a built-in command. ` + `Please choose a different name (e.g., '${name}-skill' or 'my-${name}')`);
34
- }
35
- const skillDir = join('.claude', 'skills', name);
36
- // Check if skill already exists
37
- if (existsSync(skillDir)) {
38
- if (interactive) {
39
- const proceed = await confirm({
40
- message: `Skill '${name}' already exists. Overwrite?`,
41
- default: false,
42
- });
43
- if (!proceed) {
44
- logger.info('Skill creation cancelled');
45
- return;
46
- }
47
- }
48
- else {
49
- throw new Error(`Skill already exists: ${skillDir}`);
50
- }
51
- }
52
- // Create skill directory
53
- mkdirSync(skillDir, { recursive: true });
54
- logger.info(`Created skill directory: ${skillDir}`);
55
- // Generate skill template
56
- const template = generateSkillTemplate(name);
57
- writeFileSync(join(skillDir, 'SKILL.md'), template);
58
- logger.info(`Created SKILL.md`);
59
- logger.info('');
60
- logger.info(`Skill '${name}' created successfully!`);
61
- logger.info('');
62
- logger.info('Next steps:');
63
- logger.info(` 1. Edit ${skillDir}/SKILL.md to add your instructions`);
64
- logger.info(` 2. Add supporting files (reference.md, examples.md, etc.)`);
65
- logger.info(` 3. Validate with: polka skills validate ${name}`);
66
- logger.info(` 4. Test by asking Claude to use the skill`);
67
- }
68
- /**
69
- * Generate skill template content
70
- */
71
- function generateSkillTemplate(name) {
72
- const capitalizedName = name
73
- .split('-')
74
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
75
- .join(' ');
76
- return `---
77
- name: ${name}
78
- description: Brief description of what this skill does and when to use it. Include trigger terms like "when the user mentions..." or "for tasks involving..."
79
- ---
80
-
81
- # ${capitalizedName}
82
-
83
- ## Instructions
84
-
85
- Provide clear, step-by-step guidance for Claude here.
86
-
87
- ### When to Use This Skill
88
-
89
- Use this skill when:
90
- - The user asks about [specific topics]
91
- - Working with [specific technologies/file types]
92
- - [other trigger conditions]
93
-
94
- ### Step-by-Step Process
95
-
96
- 1. First step
97
- 2. Second step
98
- 3. Continue as needed
99
-
100
- ## Examples
101
-
102
- ### Example 1: Simple usage
103
-
104
- \`\`\`
105
- Input: [user input example]
106
- Output: [expected response]
107
- \`\`\`
108
-
109
- ## Best Practices
110
-
111
- - Tip 1
112
- - Tip 2
113
- - Tip 3
114
-
115
- ## Troubleshooting
116
-
117
- ### Common Issues
118
-
119
- **Problem**: Description of problem
120
- **Solution**: How to fix it
121
-
122
- ## Resources
123
-
124
- Add additional files like:
125
- - \`reference.md\` - Detailed documentation
126
- - \`examples.md\` - More usage examples
127
- - \`scripts/\` - Helper scripts
128
- - \`templates/\` - File templates
129
- `;
130
- }
131
- /**
132
- * Create a new TypeScript script template
133
- */
134
- async function createScript(name, logger, interactive, isGlobal = false) {
135
- // Note: Script name validation and built-in command checks are done at the
136
- // higher level in the script type handler to apply to both AI and template paths
137
- const scriptDir = '.polka-scripts';
138
- // Use forward slashes for config (cross-platform), actual path for file operations
139
- const scriptPathConfig = `${scriptDir}/${name}.ts`;
140
- const scriptPathActual = join(scriptDir, `${name}.ts`);
141
- // Check if script already exists
142
- if (existsSync(scriptPathActual)) {
143
- if (interactive) {
144
- const proceed = await confirm({
145
- message: `Script '${scriptPathActual}' already exists. Overwrite?`,
146
- default: false,
147
- });
148
- if (!proceed) {
149
- logger.info('Script generation cancelled');
150
- return;
151
- }
152
- }
153
- else {
154
- throw new Error(`Script already exists: ${scriptPathActual}`);
155
- }
156
- }
157
- // Create .polka-scripts directory if it doesn't exist
158
- if (!existsSync(scriptDir)) {
159
- mkdirSync(scriptDir, { recursive: true });
160
- logger.info(`Created directory: ${scriptDir}`);
161
- }
162
- // Generate script template
163
- const template = `// Generated by polka.codes
164
- import { code, commit } from '@polka-codes/cli'
165
-
166
- export async function main(args: string[]) {
167
- console.log('Running script: ${name}')
168
- console.log('Arguments:', args)
169
-
170
- // Your automation here
171
- // Example workflows:
172
- // await code({ task: 'Add feature', interactive: false })
173
- // await commit({ all: true, context: 'Feature complete' })
174
-
175
- console.log('Script completed successfully')
176
- }
177
-
178
- // Only run main if this is the entry point
179
- if (import.meta.main) {
180
- main(process.argv.slice(2))
181
- }
182
- `;
183
- // Write script file
184
- writeFileSync(scriptPathActual, template);
185
- logger.info(`Created script: ${scriptPathActual}`);
186
- // Add to config if it exists
187
- const configPath = isGlobal ? getGlobalConfigPath() : localConfigFileName;
188
- if (existsSync(configPath)) {
189
- try {
190
- const config = readConfig(configPath);
191
- if (!config.scripts) {
192
- config.scripts = {};
193
- }
194
- config.scripts[name] = {
195
- script: scriptPathConfig,
196
- description: `Custom script: ${name}`,
197
- };
198
- // Append script to config file while preserving existing content
199
- const configContent = readFileSync(configPath, 'utf-8');
200
- let newContent = configContent;
201
- // Check if scripts section exists
202
- if (!configContent.includes('scripts:')) {
203
- // Add scripts section at the end
204
- newContent = `${configContent.trimEnd()}\n\nscripts:\n ${name}:\n script: ${scriptPathConfig}\n description: Custom script: ${name}\n`;
205
- }
206
- else {
207
- // Parse YAML to safely insert into scripts section
208
- try {
209
- // Use parseDocument to preserve comments
210
- const doc = parseDocument(configContent);
211
- if (!doc.has('scripts')) {
212
- doc.set('scripts', {});
213
- }
214
- doc.setIn(['scripts', name], {
215
- script: scriptPathConfig,
216
- description: `Custom script: ${name}`,
217
- });
218
- newContent = doc.toString();
219
- }
220
- catch (parseError) {
221
- // Fallback to string append if YAML parsing fails
222
- logger.warn('Could not parse config file safely. Please add the script manually:');
223
- logger.info(` scripts:`);
224
- logger.info(` ${name}:`);
225
- logger.info(` script: ${scriptPathConfig}`);
226
- logger.info(` description: Custom script: ${name}`);
227
- if (parseError instanceof Error) {
228
- logger.debug(`Error: ${parseError.message}`);
229
- }
230
- return;
231
- }
232
- }
233
- writeFileSync(configPath, newContent);
234
- logger.info(`Added script to config: ${configPath}`);
235
- logger.info(`Run with: polka run ${name}`);
236
- }
237
- catch (error) {
238
- logger.warn('Could not update config file. Add the script manually:');
239
- logger.info(` scripts:`);
240
- logger.info(` ${name}:`);
241
- logger.info(` script: ${scriptPathConfig}`);
242
- logger.info(` description: Custom script: ${name}`);
243
- if (error instanceof Error) {
244
- logger.debug(`Error: ${error.message}`);
245
- }
246
- }
247
- }
248
- else {
249
- logger.info(`Tip: Add this script to your .polkacodes.yml:`);
250
- logger.info(` scripts:`);
251
- logger.info(` ${name}:`);
252
- logger.info(` script: ${scriptPathConfig}`);
253
- logger.info(` description: Custom script: ${name}`);
254
- }
255
- }
256
- export const initCommand = new Command('init')
257
- .description('Initialize polkacodes configuration, generate scripts, or create skills')
258
- .argument('[type]', 'Type of resource to initialize (config, script, skill)')
259
- .argument('[name]', 'Name of the script or skill (only for type=script|skill)')
260
- .option('-g, --global', 'Use global config')
261
- .option('-i, --instructions <string>', 'Script description for AI-assisted generation (only for type=script)')
262
- .action(async (type, name, options, command) => {
263
- const workflowOpts = getBaseWorkflowOptions(command);
264
- const { verbose, yes } = workflowOpts;
265
- const logger = createLogger({
266
- verbose: verbose,
267
- });
268
- const interactive = !yes;
269
- // Handle skill creation
270
- if (type === 'skill') {
271
- if (!name) {
272
- logger.error('Error: Skill name is required when type=skill');
273
- logger.info('Usage: polka init skill <skill-name>');
274
- process.exit(1);
275
- }
276
- try {
277
- await createSkill(name, logger, interactive);
278
- }
279
- catch (error) {
280
- const message = error instanceof Error ? error.message : String(error);
281
- logger.error(`Skill creation failed: ${message}`);
282
- process.exit(1);
283
- }
284
- return;
285
- }
286
- // Handle script generation
287
- if (type === 'script') {
288
- if (!name) {
289
- logger.error('Error: Script name is required when type=script');
290
- logger.info('Usage: polka init script <script-name>');
291
- logger.info('');
292
- logger.info('For AI-assisted script generation:');
293
- logger.info(' polka init script <name> -i "description"');
294
- logger.info('');
295
- logger.info('For basic template generation:');
296
- logger.info(' polka init script <name>');
297
- process.exit(1);
298
- }
299
- // Validate script name (prevent path traversal - must be flat in .polka-scripts)
300
- // This validation applies to both AI and basic template generation
301
- if (name.includes('/') || name.includes('\\')) {
302
- logger.error('Error: Script name cannot contain slashes. Use a simple name (e.g., "deploy" not "utils/deploy")');
303
- process.exit(1);
304
- }
305
- // Check for conflicts with built-in commands
306
- if (BUILT_IN_COMMANDS.includes(name)) {
307
- logger.error(`Error: Script name '${name}' conflicts with a built-in command. ` +
308
- `Please choose a different name (e.g., '${name}-script' or 'my-${name}')`);
309
- process.exit(1);
310
- }
311
- // Check if AI-assisted generation is requested (presence of -i flag)
312
- const useAI = options.instructions !== undefined;
313
- if (useAI) {
314
- // Interactive AI-assisted script generation
315
- try {
316
- let scriptInstructions = options.instructions;
317
- if (!scriptInstructions && interactive) {
318
- scriptInstructions = await input({
319
- message: 'Describe what this script should do:',
320
- validate: (input) => input.length > 0 || 'Please provide a description',
321
- });
322
- }
323
- if (!scriptInstructions) {
324
- logger.error('Error: Script instructions are required for AI generation');
325
- logger.info('Usage: polka init script <name> -i "your instructions"');
326
- process.exit(1);
327
- }
328
- // Check if script already exists before running AI workflow
329
- const scriptDir = '.polka-scripts';
330
- const scriptPath = join(scriptDir, `${name}.ts`);
331
- if (existsSync(scriptPath)) {
332
- if (interactive) {
333
- const proceed = await confirm({
334
- message: `Script '${scriptPath}' already exists. Overwrite?`,
335
- default: false,
336
- });
337
- if (!proceed) {
338
- logger.info('Script generation cancelled');
339
- return;
340
- }
341
- }
342
- else {
343
- throw new Error(`Script already exists: ${scriptPath}`);
344
- }
345
- }
346
- // Get config path
347
- const globalConfigPath = getGlobalConfigPath();
348
- const isGlobal = options.global ?? false;
349
- const configPath = isGlobal ? globalConfigPath : localConfigFileName;
350
- // Run interactive workflow
351
- await runWorkflow(initInteractiveWorkflow, {
352
- configPath,
353
- scriptName: name,
354
- scriptInstructions,
355
- generateScript: true,
356
- skipConfirmation: !interactive,
357
- }, {
358
- commandName: 'init',
359
- context: workflowOpts,
360
- logger,
361
- interactive,
362
- });
363
- }
364
- catch (error) {
365
- const message = error instanceof Error ? error.message : String(error);
366
- logger.error(`AI script generation failed: ${message}`);
367
- process.exit(1);
368
- }
369
- }
370
- else {
371
- // Basic template generation
372
- try {
373
- const isGlobal = Boolean(options.global);
374
- await createScript(name, logger, interactive, isGlobal);
375
- }
376
- catch (error) {
377
- const message = error instanceof Error ? error.message : String(error);
378
- logger.error(`Script generation failed: ${message}`);
379
- process.exit(1);
380
- }
381
- }
382
- return;
383
- }
384
- // Original config initialization logic
385
- if (type && type !== 'config') {
386
- logger.error(`Error: Unknown type '${type}'`);
387
- logger.info('Valid types: config, script, skill');
388
- process.exit(1);
389
- }
390
- const globalConfigPath = getGlobalConfigPath();
391
- let isGlobal = options.global ?? false;
392
- let configPath = isGlobal ? globalConfigPath : localConfigFileName;
393
- const exists = existsSync(configPath);
394
- if (exists) {
395
- if (interactive) {
396
- const proceed = await confirm({
397
- message: `Found existing config at ${configPath}. Do you want to proceed? This will overwrite the existing config.`,
398
- default: false,
399
- });
400
- if (!proceed) {
401
- logger.info('User cancelled');
402
- return;
403
- }
404
- }
405
- }
406
- else if (!options.global) {
407
- if (interactive) {
408
- const location = await select({
409
- message: 'No config file found. Do you want to create one?',
410
- choices: [
411
- { name: `Create a global config at ${globalConfigPath}`, value: 'global' },
412
- { name: `Create a local config at ${configPath}`, value: 'local' },
413
- ],
414
- });
415
- if (location === 'global') {
416
- isGlobal = true;
417
- configPath = globalConfigPath;
418
- }
419
- }
420
- }
421
- logger.info(`Config file path: ${configPath}`);
422
- let existingConfig = {};
423
- try {
424
- existingConfig = readConfig(configPath);
425
- }
426
- catch (error) {
427
- logger.error(`Unable to parse config file: ${configPath}`, error);
428
- throw error;
429
- }
430
- const providerConfig = await configPrompt({});
431
- const { provider, model, apiKey } = providerConfig;
432
- if (apiKey && !isGlobal) {
433
- let option = 'local';
434
- if (interactive) {
435
- option = await select({
436
- message: 'It is not recommended to store API keys in the local config file. How would you like to proceed?',
437
- choices: [
438
- { name: 'Save API key in the local config file', value: 'local' },
439
- { name: 'Save API key in the global config file', value: 'global' },
440
- { name: 'Save API key to .env file', value: 'env' },
441
- ],
442
- });
443
- }
444
- switch (option) {
445
- case 'local':
446
- break;
447
- case 'global': {
448
- const globalConfig = loadConfigAtPath(globalConfigPath) ?? {};
449
- set(globalConfig, ['providers', provider, 'apiKey'], apiKey);
450
- writeFileSync(globalConfigPath, stringify(globalConfig));
451
- logger.info(`API key saved to global config file: ${globalConfigPath}`);
452
- providerConfig.apiKey = undefined;
453
- break;
454
- }
455
- case 'env': {
456
- let envFileContent = '';
457
- const envExists = existsSync('.env');
458
- if (envExists) {
459
- envFileContent = readFileSync('.env', 'utf-8');
460
- if (!envFileContent.endsWith('\n'))
461
- envFileContent += '\n';
462
- }
463
- envFileContent += `${provider.toUpperCase()}_API_KEY=${apiKey}\n`;
464
- writeFileSync('.env', envFileContent);
465
- logger.info('API key saved to .env file');
466
- providerConfig.apiKey = undefined;
467
- break;
468
- }
469
- }
470
- }
471
- const finalConfig = {
472
- ...existingConfig,
473
- defaultProvider: provider,
474
- defaultModel: model,
475
- };
476
- if (!finalConfig.providers) {
477
- finalConfig.providers = {};
478
- }
479
- if (providerConfig.apiKey) {
480
- set(finalConfig, ['providers', provider, 'apiKey'], providerConfig.apiKey);
481
- }
482
- writeFileSync(configPath, stringify(finalConfig));
483
- logger.info(`Configuration saved to ${configPath}`);
484
- let shouldAnalyze = false;
485
- if (!isGlobal && interactive) {
486
- shouldAnalyze = await confirm({
487
- message: 'Would you like to analyze the project to generate recommended configuration?',
488
- default: false,
489
- });
490
- }
491
- if (shouldAnalyze) {
492
- await runWorkflow(initWorkflow, {
493
- configPath,
494
- }, {
495
- commandName: 'init',
496
- context: workflowOpts,
497
- logger,
498
- });
499
- }
500
- });
501
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}