@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,363 +0,0 @@
1
- // Unit tests for SDK-based MCP server
2
- // generated by polka.codes
3
- import { describe, expect, test } from 'bun:test';
4
- import { z } from 'zod';
5
- import { createPolkaCodesMcpServer } from './sdk-server';
6
- import { createPolkaCodesServerTools } from './tools';
7
- // Mock logger
8
- const mockLogger = {
9
- debug: () => { },
10
- info: () => { },
11
- warn: () => { },
12
- error: () => { },
13
- };
14
- describe('SDK-based McpServer', () => {
15
- describe('Server Creation', () => {
16
- test('should create server with SDK', () => {
17
- const tools = [];
18
- const server = createPolkaCodesMcpServer(tools, mockLogger);
19
- expect(server).toBeDefined();
20
- expect(server.isConnected()).toBe(false);
21
- });
22
- test('should have correct server info', () => {
23
- const tools = [];
24
- const server = createPolkaCodesMcpServer(tools, mockLogger);
25
- // Access underlying server to check info
26
- expect(server.server).toBeDefined();
27
- });
28
- test('should register tools successfully', () => {
29
- const tools = [
30
- {
31
- name: 'test_tool',
32
- description: 'A test tool',
33
- inputSchema: z.object({
34
- arg1: z.string(),
35
- }),
36
- handler: async (args, _context) => {
37
- return { result: args };
38
- },
39
- },
40
- ];
41
- const server = createPolkaCodesMcpServer(tools, mockLogger);
42
- expect(server).toBeDefined();
43
- expect(server.isConnected()).toBe(false);
44
- });
45
- test('should register multiple tools', () => {
46
- const tools = [
47
- {
48
- name: 'tool1',
49
- description: 'Tool 1',
50
- inputSchema: z.object({}),
51
- handler: async (_args, _context) => ({ result: 'tool1' }),
52
- },
53
- {
54
- name: 'tool2',
55
- description: 'Tool 2',
56
- inputSchema: z.object({}),
57
- handler: async (_args, _context) => ({ result: 'tool2' }),
58
- },
59
- ];
60
- const server = createPolkaCodesMcpServer(tools, mockLogger);
61
- expect(server).toBeDefined();
62
- });
63
- test('should handle tool with complex input schema', () => {
64
- const tools = [
65
- {
66
- name: 'complex_tool',
67
- description: 'Tool with complex schema',
68
- inputSchema: z.object({
69
- string: z.string(),
70
- number: z.number(),
71
- boolean: z.boolean(),
72
- array: z.array(z.string()),
73
- object: z.object({
74
- nested: z.string(),
75
- }),
76
- }),
77
- handler: async (args, _context) => args,
78
- },
79
- ];
80
- const server = createPolkaCodesMcpServer(tools, mockLogger);
81
- expect(server).toBeDefined();
82
- });
83
- });
84
- describe('Tool Handler Behavior', () => {
85
- test('should create tool handler that returns valid MCP response', async () => {
86
- const tools = [
87
- {
88
- name: 'echo',
89
- description: 'Echo back arguments',
90
- inputSchema: z.object({
91
- message: z.string(),
92
- }),
93
- handler: async (args, _context) => {
94
- return { echoed: args.message };
95
- },
96
- },
97
- ];
98
- const server = createPolkaCodesMcpServer(tools, mockLogger);
99
- expect(server).toBeDefined();
100
- });
101
- test('should create tool handler that stringifies object results', async () => {
102
- const tools = [
103
- {
104
- name: 'object_result',
105
- description: 'Returns object',
106
- inputSchema: z.object({}),
107
- handler: async (_args, _context) => {
108
- return { key: 'value', nested: { prop: 123 } };
109
- },
110
- },
111
- ];
112
- const server = createPolkaCodesMcpServer(tools, mockLogger);
113
- expect(server).toBeDefined();
114
- });
115
- test('should create tool handler that handles string results', async () => {
116
- const tools = [
117
- {
118
- name: 'string_result',
119
- description: 'Returns string',
120
- inputSchema: z.object({}),
121
- handler: async (_args, _context) => {
122
- return 'Plain string result';
123
- },
124
- },
125
- ];
126
- const server = createPolkaCodesMcpServer(tools, mockLogger);
127
- expect(server).toBeDefined();
128
- });
129
- test('should create tool handler that logs errors locally', async () => {
130
- const testLogger = {
131
- ...mockLogger,
132
- error: () => { },
133
- };
134
- const tools = [
135
- {
136
- name: 'failing_tool',
137
- description: 'A tool that fails',
138
- inputSchema: z.object({}),
139
- handler: async (_args, _context) => {
140
- throw new Error('Tool execution failed');
141
- },
142
- },
143
- ];
144
- // Server should be created successfully with logger
145
- const server = createPolkaCodesMcpServer(tools, testLogger);
146
- expect(server).toBeDefined();
147
- });
148
- });
149
- describe('Tool Registration Edge Cases', () => {
150
- test('should handle tool with empty input schema', () => {
151
- const tools = [
152
- {
153
- name: 'no_params',
154
- description: 'Tool with no parameters',
155
- inputSchema: z.object({}),
156
- handler: async (_args, _context) => ({ result: 'ok' }),
157
- },
158
- ];
159
- const server = createPolkaCodesMcpServer(tools, mockLogger);
160
- expect(server).toBeDefined();
161
- });
162
- test('should handle tool with no required parameters', () => {
163
- const tools = [
164
- {
165
- name: 'optional_params',
166
- description: 'Tool with optional parameters',
167
- inputSchema: z.object({
168
- optional1: z.string().optional(),
169
- optional2: z.number().optional(),
170
- }),
171
- handler: async (args, _context) => args,
172
- },
173
- ];
174
- const server = createPolkaCodesMcpServer(tools, mockLogger);
175
- expect(server).toBeDefined();
176
- });
177
- test('should handle tool with nested properties', () => {
178
- const tools = [
179
- {
180
- name: 'nested',
181
- description: 'Tool with nested properties',
182
- inputSchema: z.object({
183
- config: z.object({
184
- enabled: z.boolean(),
185
- name: z.string(),
186
- }),
187
- }),
188
- handler: async (args, _context) => args,
189
- },
190
- ];
191
- const server = createPolkaCodesMcpServer(tools, mockLogger);
192
- expect(server).toBeDefined();
193
- });
194
- test('should handle tool with array properties', () => {
195
- const tools = [
196
- {
197
- name: 'array_tool',
198
- description: 'Tool with array properties',
199
- inputSchema: z.object({
200
- items: z.array(z.object({
201
- id: z.string(),
202
- value: z.number(),
203
- })),
204
- }),
205
- handler: async (args, _context) => args,
206
- },
207
- ];
208
- const server = createPolkaCodesMcpServer(tools, mockLogger);
209
- expect(server).toBeDefined();
210
- });
211
- });
212
- describe('Polka-Codes Tools', () => {
213
- test('should work with polka-codes server tools', () => {
214
- const tools = createPolkaCodesServerTools(mockLogger);
215
- expect(tools.length).toBeGreaterThan(0);
216
- const server = createPolkaCodesMcpServer(tools, mockLogger);
217
- expect(server).toBeDefined();
218
- });
219
- test('should register all polka-codes tools', () => {
220
- const tools = createPolkaCodesServerTools(mockLogger);
221
- const toolNames = tools.map((t) => t.name);
222
- expect(toolNames).toContain('code');
223
- expect(toolNames).toContain('review');
224
- expect(toolNames).toContain('plan');
225
- expect(toolNames).toContain('fix');
226
- expect(toolNames).toContain('commit');
227
- });
228
- });
229
- describe('Error Handling', () => {
230
- test('should warn but not throw for invalid tool name', () => {
231
- // SDK warns but doesn't throw for empty tool names
232
- const invalidTool = {
233
- name: '', // Invalid: empty name
234
- description: 'Invalid tool',
235
- inputSchema: z.object({}),
236
- handler: async (_args, _context) => ({}),
237
- };
238
- expect(() => {
239
- const server = createPolkaCodesMcpServer([invalidTool], mockLogger);
240
- expect(server).toBeDefined();
241
- }).not.toThrow();
242
- });
243
- test('should not throw if handler throws during execution', () => {
244
- const tools = [
245
- {
246
- name: 'throws_error',
247
- description: 'Tool that throws',
248
- inputSchema: z.object({}),
249
- handler: async (_args, _context) => {
250
- throw new Error('Handler error');
251
- },
252
- },
253
- ];
254
- // Server creation should succeed (handler is not called during registration)
255
- expect(() => {
256
- const server = createPolkaCodesMcpServer(tools, mockLogger);
257
- expect(server).toBeDefined();
258
- }).not.toThrow();
259
- });
260
- });
261
- describe('Logger Integration', () => {
262
- test('should work without logger', () => {
263
- const tools = [
264
- {
265
- name: 'test',
266
- description: 'Test tool',
267
- inputSchema: z.object({}),
268
- handler: async (_args, _context) => ({ result: 'ok' }),
269
- },
270
- ];
271
- expect(() => {
272
- const server = createPolkaCodesMcpServer(tools);
273
- expect(server).toBeDefined();
274
- }).not.toThrow();
275
- });
276
- test('should use logger for registration debug messages', () => {
277
- let debugCalled = false;
278
- const testLogger = {
279
- ...mockLogger,
280
- debug: () => {
281
- debugCalled = true;
282
- },
283
- };
284
- const tools = [
285
- {
286
- name: 'test',
287
- description: 'Test tool',
288
- inputSchema: z.object({}),
289
- handler: async (_args, _context) => ({ result: 'ok' }),
290
- },
291
- ];
292
- createPolkaCodesMcpServer(tools, testLogger);
293
- expect(debugCalled).toBe(true);
294
- });
295
- test('should use logger for error messages', () => {
296
- let errorCalled = false;
297
- const testLogger = {
298
- ...mockLogger,
299
- error: () => {
300
- errorCalled = true;
301
- },
302
- };
303
- const tools = [
304
- {
305
- name: 'test',
306
- description: 'Test tool',
307
- inputSchema: z.object({}),
308
- handler: async (_args, _context) => ({ result: 'ok' }),
309
- },
310
- ];
311
- // This should not throw, and error logger should not be called during successful registration
312
- expect(() => {
313
- createPolkaCodesMcpServer(tools, testLogger);
314
- }).not.toThrow();
315
- expect(errorCalled).toBe(false);
316
- });
317
- });
318
- describe('Provider Override Support', () => {
319
- test('should create server with default provider config', () => {
320
- const tools = [
321
- {
322
- name: 'test',
323
- description: 'Test tool',
324
- inputSchema: z.object({}),
325
- handler: async (_args, context) => {
326
- // Context should contain defaultProvider
327
- expect(context).toBeDefined();
328
- expect(context.logger).toBeDefined();
329
- return { result: 'ok' };
330
- },
331
- },
332
- ];
333
- const defaultProvider = {
334
- provider: 'anthropic',
335
- model: 'claude-sonnet-4-5',
336
- };
337
- const server = createPolkaCodesMcpServer(tools, mockLogger, defaultProvider);
338
- expect(server).toBeDefined();
339
- });
340
- test('should pass default provider to tool context', () => {
341
- const tools = [
342
- {
343
- name: 'test',
344
- description: 'Test tool',
345
- inputSchema: z.object({}),
346
- handler: async (_args, context) => {
347
- expect(context.defaultProvider).toBeDefined();
348
- expect(context.defaultProvider?.provider).toBe('deepseek');
349
- expect(context.defaultProvider?.model).toBe('deepseek-chat');
350
- return { result: 'ok' };
351
- },
352
- },
353
- ];
354
- const defaultProvider = {
355
- provider: 'deepseek',
356
- model: 'deepseek-chat',
357
- };
358
- const server = createPolkaCodesMcpServer(tools, mockLogger, defaultProvider);
359
- expect(server).toBeDefined();
360
- });
361
- });
362
- });
363
- //# sourceMappingURL=sdk-server.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-server.test.js","sourceRoot":"","sources":["../../src/mcp-server/sdk-server.test.ts"],"names":[],"mappings":"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"}