@gguf/coder 0.3.1 → 0.3.3

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 (413) hide show
  1. package/package.json +5 -2
  2. package/.editorconfig +0 -16
  3. package/.env.example +0 -63
  4. package/.gitattributes +0 -1
  5. package/.semgrepignore +0 -19
  6. package/coder-dummy-file.ts +0 -52
  7. package/coder.config.example.json +0 -59
  8. package/coder.config.json +0 -13
  9. package/color_picker.html +0 -36
  10. package/scripts/extract-changelog.js +0 -73
  11. package/scripts/fetch-models.js +0 -143
  12. package/scripts/test.sh +0 -40
  13. package/scripts/update-homebrew-formula.sh +0 -125
  14. package/scripts/update-nix-version.sh +0 -157
  15. package/source/ai-sdk-client/AISDKClient.spec.ts +0 -117
  16. package/source/ai-sdk-client/AISDKClient.ts +0 -155
  17. package/source/ai-sdk-client/chat/chat-handler.spec.ts +0 -121
  18. package/source/ai-sdk-client/chat/chat-handler.ts +0 -276
  19. package/source/ai-sdk-client/chat/streaming-handler.spec.ts +0 -173
  20. package/source/ai-sdk-client/chat/streaming-handler.ts +0 -110
  21. package/source/ai-sdk-client/chat/tool-processor.spec.ts +0 -92
  22. package/source/ai-sdk-client/chat/tool-processor.ts +0 -70
  23. package/source/ai-sdk-client/converters/message-converter.spec.ts +0 -220
  24. package/source/ai-sdk-client/converters/message-converter.ts +0 -113
  25. package/source/ai-sdk-client/converters/tool-converter.spec.ts +0 -90
  26. package/source/ai-sdk-client/converters/tool-converter.ts +0 -46
  27. package/source/ai-sdk-client/error-handling/error-extractor.spec.ts +0 -55
  28. package/source/ai-sdk-client/error-handling/error-extractor.ts +0 -15
  29. package/source/ai-sdk-client/error-handling/error-parser.spec.ts +0 -169
  30. package/source/ai-sdk-client/error-handling/error-parser.ts +0 -161
  31. package/source/ai-sdk-client/index.ts +0 -7
  32. package/source/ai-sdk-client/providers/provider-factory.spec.ts +0 -71
  33. package/source/ai-sdk-client/providers/provider-factory.ts +0 -41
  34. package/source/ai-sdk-client/types.ts +0 -9
  35. package/source/ai-sdk-client-empty-message.spec.ts +0 -141
  36. package/source/ai-sdk-client-error-handling.spec.ts +0 -186
  37. package/source/ai-sdk-client-maxretries.spec.ts +0 -114
  38. package/source/ai-sdk-client-preparestep.spec.ts +0 -279
  39. package/source/app/App.spec.tsx +0 -32
  40. package/source/app/App.tsx +0 -480
  41. package/source/app/components/AppContainer.spec.tsx +0 -96
  42. package/source/app/components/AppContainer.tsx +0 -56
  43. package/source/app/components/ChatInterface.spec.tsx +0 -163
  44. package/source/app/components/ChatInterface.tsx +0 -144
  45. package/source/app/components/ModalSelectors.spec.tsx +0 -141
  46. package/source/app/components/ModalSelectors.tsx +0 -135
  47. package/source/app/helpers.spec.ts +0 -97
  48. package/source/app/helpers.ts +0 -63
  49. package/source/app/index.ts +0 -4
  50. package/source/app/types.ts +0 -39
  51. package/source/app/utils/appUtils.ts +0 -294
  52. package/source/app/utils/conversationState.ts +0 -310
  53. package/source/app.spec.tsx +0 -244
  54. package/source/cli.spec.ts +0 -73
  55. package/source/cli.tsx +0 -51
  56. package/source/client-factory.spec.ts +0 -48
  57. package/source/client-factory.ts +0 -178
  58. package/source/command-parser.spec.ts +0 -127
  59. package/source/command-parser.ts +0 -36
  60. package/source/commands/checkpoint.spec.tsx +0 -277
  61. package/source/commands/checkpoint.tsx +0 -366
  62. package/source/commands/clear.tsx +0 -22
  63. package/source/commands/custom-commands.tsx +0 -121
  64. package/source/commands/exit.ts +0 -21
  65. package/source/commands/export.spec.tsx +0 -131
  66. package/source/commands/export.tsx +0 -79
  67. package/source/commands/help.tsx +0 -120
  68. package/source/commands/index.ts +0 -17
  69. package/source/commands/init.tsx +0 -339
  70. package/source/commands/lsp-command.spec.tsx +0 -281
  71. package/source/commands/lsp.tsx +0 -120
  72. package/source/commands/mcp-command.spec.tsx +0 -313
  73. package/source/commands/mcp.tsx +0 -162
  74. package/source/commands/model-database.spec.tsx +0 -758
  75. package/source/commands/model-database.tsx +0 -418
  76. package/source/commands/model.ts +0 -12
  77. package/source/commands/provider.ts +0 -12
  78. package/source/commands/setup-config.tsx +0 -16
  79. package/source/commands/simple-commands.spec.tsx +0 -175
  80. package/source/commands/status.ts +0 -12
  81. package/source/commands/theme.ts +0 -12
  82. package/source/commands/update.spec.tsx +0 -261
  83. package/source/commands/update.tsx +0 -201
  84. package/source/commands/usage.spec.tsx +0 -495
  85. package/source/commands/usage.tsx +0 -100
  86. package/source/commands.spec.ts +0 -436
  87. package/source/commands.ts +0 -83
  88. package/source/components/assistant-message.spec.tsx +0 -796
  89. package/source/components/assistant-message.tsx +0 -34
  90. package/source/components/bash-execution-indicator.tsx +0 -21
  91. package/source/components/cancelling-indicator.tsx +0 -16
  92. package/source/components/chat-queue.spec.tsx +0 -83
  93. package/source/components/chat-queue.tsx +0 -36
  94. package/source/components/checkpoint-display.spec.tsx +0 -219
  95. package/source/components/checkpoint-display.tsx +0 -126
  96. package/source/components/checkpoint-selector.spec.tsx +0 -173
  97. package/source/components/checkpoint-selector.tsx +0 -173
  98. package/source/components/development-mode-indicator.spec.tsx +0 -268
  99. package/source/components/development-mode-indicator.tsx +0 -38
  100. package/source/components/message-box.spec.tsx +0 -427
  101. package/source/components/message-box.tsx +0 -87
  102. package/source/components/model-selector.tsx +0 -132
  103. package/source/components/provider-selector.tsx +0 -75
  104. package/source/components/random-spinner.tsx +0 -19
  105. package/source/components/security-disclaimer.tsx +0 -73
  106. package/source/components/status-connection-display.spec.tsx +0 -133
  107. package/source/components/status.tsx +0 -267
  108. package/source/components/theme-selector.tsx +0 -126
  109. package/source/components/tool-confirmation.tsx +0 -190
  110. package/source/components/tool-execution-indicator.tsx +0 -33
  111. package/source/components/tool-message.tsx +0 -85
  112. package/source/components/ui/titled-box.spec.tsx +0 -207
  113. package/source/components/ui/titled-box.tsx +0 -57
  114. package/source/components/usage/progress-bar.spec.tsx +0 -398
  115. package/source/components/usage/progress-bar.tsx +0 -30
  116. package/source/components/usage/usage-display.spec.tsx +0 -780
  117. package/source/components/usage/usage-display.tsx +0 -291
  118. package/source/components/user-input.spec.tsx +0 -327
  119. package/source/components/user-input.tsx +0 -533
  120. package/source/components/user-message.spec.tsx +0 -230
  121. package/source/components/user-message.tsx +0 -84
  122. package/source/components/welcome-message.tsx +0 -76
  123. package/source/config/env-substitution.ts +0 -65
  124. package/source/config/index.spec.ts +0 -171
  125. package/source/config/index.ts +0 -154
  126. package/source/config/paths.spec.ts +0 -241
  127. package/source/config/paths.ts +0 -55
  128. package/source/config/preferences.ts +0 -51
  129. package/source/config/themes.ts +0 -315
  130. package/source/constants.ts +0 -130
  131. package/source/context/mode-context.spec.ts +0 -79
  132. package/source/context/mode-context.ts +0 -24
  133. package/source/custom-commands/executor.spec.ts +0 -142
  134. package/source/custom-commands/executor.ts +0 -64
  135. package/source/custom-commands/loader.spec.ts +0 -314
  136. package/source/custom-commands/loader.ts +0 -153
  137. package/source/custom-commands/parser.ts +0 -196
  138. package/source/hooks/chat-handler/conversation/conversation-loop.spec.ts +0 -39
  139. package/source/hooks/chat-handler/conversation/conversation-loop.tsx +0 -511
  140. package/source/hooks/chat-handler/conversation/tool-executor.spec.ts +0 -50
  141. package/source/hooks/chat-handler/conversation/tool-executor.tsx +0 -109
  142. package/source/hooks/chat-handler/index.ts +0 -12
  143. package/source/hooks/chat-handler/state/streaming-state.spec.ts +0 -26
  144. package/source/hooks/chat-handler/state/streaming-state.ts +0 -19
  145. package/source/hooks/chat-handler/types.ts +0 -38
  146. package/source/hooks/chat-handler/useChatHandler.spec.tsx +0 -321
  147. package/source/hooks/chat-handler/useChatHandler.tsx +0 -194
  148. package/source/hooks/chat-handler/utils/context-checker.spec.ts +0 -60
  149. package/source/hooks/chat-handler/utils/context-checker.tsx +0 -73
  150. package/source/hooks/chat-handler/utils/message-helpers.spec.ts +0 -42
  151. package/source/hooks/chat-handler/utils/message-helpers.tsx +0 -36
  152. package/source/hooks/chat-handler/utils/tool-filters.spec.ts +0 -109
  153. package/source/hooks/chat-handler/utils/tool-filters.ts +0 -64
  154. package/source/hooks/useAppHandlers.tsx +0 -291
  155. package/source/hooks/useAppInitialization.tsx +0 -422
  156. package/source/hooks/useAppState.tsx +0 -311
  157. package/source/hooks/useDirectoryTrust.tsx +0 -98
  158. package/source/hooks/useInputState.ts +0 -414
  159. package/source/hooks/useModeHandlers.tsx +0 -302
  160. package/source/hooks/useNonInteractiveMode.ts +0 -140
  161. package/source/hooks/useTerminalWidth.tsx +0 -81
  162. package/source/hooks/useTheme.ts +0 -18
  163. package/source/hooks/useToolHandler.tsx +0 -349
  164. package/source/hooks/useUIState.ts +0 -61
  165. package/source/init/agents-template-generator.ts +0 -421
  166. package/source/init/existing-rules-extractor.ts +0 -319
  167. package/source/init/file-scanner.spec.ts +0 -227
  168. package/source/init/file-scanner.ts +0 -238
  169. package/source/init/framework-detector.ts +0 -382
  170. package/source/init/language-detector.ts +0 -269
  171. package/source/init/project-analyzer.spec.ts +0 -231
  172. package/source/init/project-analyzer.ts +0 -458
  173. package/source/lsp/index.ts +0 -31
  174. package/source/lsp/lsp-client.spec.ts +0 -508
  175. package/source/lsp/lsp-client.ts +0 -487
  176. package/source/lsp/lsp-manager.spec.ts +0 -477
  177. package/source/lsp/lsp-manager.ts +0 -419
  178. package/source/lsp/protocol.spec.ts +0 -502
  179. package/source/lsp/protocol.ts +0 -360
  180. package/source/lsp/server-discovery.spec.ts +0 -654
  181. package/source/lsp/server-discovery.ts +0 -515
  182. package/source/markdown-parser/html-entities.spec.ts +0 -88
  183. package/source/markdown-parser/html-entities.ts +0 -45
  184. package/source/markdown-parser/index.spec.ts +0 -281
  185. package/source/markdown-parser/index.ts +0 -126
  186. package/source/markdown-parser/table-parser.spec.ts +0 -133
  187. package/source/markdown-parser/table-parser.ts +0 -114
  188. package/source/markdown-parser/utils.spec.ts +0 -70
  189. package/source/markdown-parser/utils.ts +0 -13
  190. package/source/mcp/mcp-client.spec.ts +0 -81
  191. package/source/mcp/mcp-client.ts +0 -625
  192. package/source/mcp/transport-factory.spec.ts +0 -406
  193. package/source/mcp/transport-factory.ts +0 -312
  194. package/source/message-handler.ts +0 -67
  195. package/source/model-database/database-engine.spec.ts +0 -494
  196. package/source/model-database/database-engine.ts +0 -50
  197. package/source/model-database/model-database.spec.ts +0 -363
  198. package/source/model-database/model-database.ts +0 -91
  199. package/source/model-database/model-engine.spec.ts +0 -447
  200. package/source/model-database/model-engine.ts +0 -65
  201. package/source/model-database/model-fetcher.spec.ts +0 -583
  202. package/source/model-database/model-fetcher.ts +0 -330
  203. package/source/models/index.ts +0 -1
  204. package/source/models/models-cache.spec.ts +0 -214
  205. package/source/models/models-cache.ts +0 -78
  206. package/source/models/models-dev-client.spec.ts +0 -379
  207. package/source/models/models-dev-client.ts +0 -329
  208. package/source/models/models-types.ts +0 -68
  209. package/source/prompt-history.ts +0 -155
  210. package/source/security/command-injection.spec.ts +0 -240
  211. package/source/services/checkpoint-manager.spec.ts +0 -523
  212. package/source/services/checkpoint-manager.ts +0 -466
  213. package/source/services/file-snapshot.spec.ts +0 -569
  214. package/source/services/file-snapshot.ts +0 -220
  215. package/source/test-utils/render-with-theme.tsx +0 -48
  216. package/source/tokenization/index.ts +0 -1
  217. package/source/tokenization/tokenizer-factory.spec.ts +0 -170
  218. package/source/tokenization/tokenizer-factory.ts +0 -125
  219. package/source/tokenization/tokenizers/anthropic-tokenizer.spec.ts +0 -200
  220. package/source/tokenization/tokenizers/anthropic-tokenizer.ts +0 -43
  221. package/source/tokenization/tokenizers/fallback-tokenizer.spec.ts +0 -236
  222. package/source/tokenization/tokenizers/fallback-tokenizer.ts +0 -26
  223. package/source/tokenization/tokenizers/llama-tokenizer.spec.ts +0 -224
  224. package/source/tokenization/tokenizers/llama-tokenizer.ts +0 -41
  225. package/source/tokenization/tokenizers/openai-tokenizer.spec.ts +0 -184
  226. package/source/tokenization/tokenizers/openai-tokenizer.ts +0 -57
  227. package/source/tool-calling/index.ts +0 -5
  228. package/source/tool-calling/json-parser.spec.ts +0 -639
  229. package/source/tool-calling/json-parser.ts +0 -247
  230. package/source/tool-calling/tool-parser.spec.ts +0 -395
  231. package/source/tool-calling/tool-parser.ts +0 -120
  232. package/source/tool-calling/xml-parser.spec.ts +0 -662
  233. package/source/tool-calling/xml-parser.ts +0 -289
  234. package/source/tools/execute-bash.spec.tsx +0 -353
  235. package/source/tools/execute-bash.tsx +0 -219
  236. package/source/tools/execute-function.spec.ts +0 -130
  237. package/source/tools/fetch-url.spec.tsx +0 -342
  238. package/source/tools/fetch-url.tsx +0 -172
  239. package/source/tools/find-files.spec.tsx +0 -924
  240. package/source/tools/find-files.tsx +0 -293
  241. package/source/tools/index.ts +0 -102
  242. package/source/tools/lsp-get-diagnostics.tsx +0 -192
  243. package/source/tools/needs-approval.spec.ts +0 -282
  244. package/source/tools/read-file.spec.tsx +0 -801
  245. package/source/tools/read-file.tsx +0 -387
  246. package/source/tools/search-file-contents.spec.tsx +0 -1273
  247. package/source/tools/search-file-contents.tsx +0 -293
  248. package/source/tools/string-replace.spec.tsx +0 -730
  249. package/source/tools/string-replace.tsx +0 -548
  250. package/source/tools/tool-manager.ts +0 -210
  251. package/source/tools/tool-registry.spec.ts +0 -415
  252. package/source/tools/tool-registry.ts +0 -228
  253. package/source/tools/web-search.tsx +0 -223
  254. package/source/tools/write-file.spec.tsx +0 -559
  255. package/source/tools/write-file.tsx +0 -228
  256. package/source/types/app.ts +0 -37
  257. package/source/types/checkpoint.ts +0 -48
  258. package/source/types/commands.ts +0 -46
  259. package/source/types/components.ts +0 -27
  260. package/source/types/config.ts +0 -103
  261. package/source/types/core-connection-status.spec.ts +0 -67
  262. package/source/types/core.ts +0 -181
  263. package/source/types/hooks.ts +0 -50
  264. package/source/types/index.ts +0 -12
  265. package/source/types/markdown-parser.ts +0 -11
  266. package/source/types/mcp.ts +0 -52
  267. package/source/types/system.ts +0 -16
  268. package/source/types/tokenization.ts +0 -41
  269. package/source/types/ui.ts +0 -40
  270. package/source/types/usage.ts +0 -58
  271. package/source/types/utils.ts +0 -16
  272. package/source/usage/calculator.spec.ts +0 -385
  273. package/source/usage/calculator.ts +0 -104
  274. package/source/usage/storage.spec.ts +0 -703
  275. package/source/usage/storage.ts +0 -238
  276. package/source/usage/tracker.spec.ts +0 -456
  277. package/source/usage/tracker.ts +0 -102
  278. package/source/utils/atomic-deletion.spec.ts +0 -194
  279. package/source/utils/atomic-deletion.ts +0 -127
  280. package/source/utils/bounded-map.spec.ts +0 -300
  281. package/source/utils/bounded-map.ts +0 -193
  282. package/source/utils/checkpoint-utils.spec.ts +0 -222
  283. package/source/utils/checkpoint-utils.ts +0 -92
  284. package/source/utils/error-formatter.spec.ts +0 -169
  285. package/source/utils/error-formatter.ts +0 -194
  286. package/source/utils/file-autocomplete.spec.ts +0 -173
  287. package/source/utils/file-autocomplete.ts +0 -196
  288. package/source/utils/file-cache.spec.ts +0 -309
  289. package/source/utils/file-cache.ts +0 -195
  290. package/source/utils/file-content-loader.spec.ts +0 -180
  291. package/source/utils/file-content-loader.ts +0 -179
  292. package/source/utils/file-mention-handler.spec.ts +0 -261
  293. package/source/utils/file-mention-handler.ts +0 -84
  294. package/source/utils/file-mention-parser.spec.ts +0 -182
  295. package/source/utils/file-mention-parser.ts +0 -170
  296. package/source/utils/fuzzy-matching.spec.ts +0 -149
  297. package/source/utils/fuzzy-matching.ts +0 -146
  298. package/source/utils/indentation-normalizer.spec.ts +0 -216
  299. package/source/utils/indentation-normalizer.ts +0 -76
  300. package/source/utils/installation-detector.spec.ts +0 -178
  301. package/source/utils/installation-detector.ts +0 -153
  302. package/source/utils/logging/config.spec.ts +0 -311
  303. package/source/utils/logging/config.ts +0 -210
  304. package/source/utils/logging/console-facade.spec.ts +0 -184
  305. package/source/utils/logging/console-facade.ts +0 -384
  306. package/source/utils/logging/correlation.spec.ts +0 -679
  307. package/source/utils/logging/correlation.ts +0 -474
  308. package/source/utils/logging/formatters.spec.ts +0 -464
  309. package/source/utils/logging/formatters.ts +0 -207
  310. package/source/utils/logging/health-monitor/alerts/alert-manager.spec.ts +0 -93
  311. package/source/utils/logging/health-monitor/alerts/alert-manager.ts +0 -79
  312. package/source/utils/logging/health-monitor/checks/configuration-check.spec.ts +0 -56
  313. package/source/utils/logging/health-monitor/checks/configuration-check.ts +0 -43
  314. package/source/utils/logging/health-monitor/checks/logging-check.spec.ts +0 -56
  315. package/source/utils/logging/health-monitor/checks/logging-check.ts +0 -58
  316. package/source/utils/logging/health-monitor/checks/memory-check.spec.ts +0 -100
  317. package/source/utils/logging/health-monitor/checks/memory-check.ts +0 -78
  318. package/source/utils/logging/health-monitor/checks/performance-check.spec.ts +0 -56
  319. package/source/utils/logging/health-monitor/checks/performance-check.ts +0 -56
  320. package/source/utils/logging/health-monitor/checks/request-check.spec.ts +0 -56
  321. package/source/utils/logging/health-monitor/checks/request-check.ts +0 -76
  322. package/source/utils/logging/health-monitor/core/health-check-runner.spec.ts +0 -70
  323. package/source/utils/logging/health-monitor/core/health-check-runner.ts +0 -138
  324. package/source/utils/logging/health-monitor/core/health-monitor.spec.ts +0 -58
  325. package/source/utils/logging/health-monitor/core/health-monitor.ts +0 -344
  326. package/source/utils/logging/health-monitor/core/scoring.spec.ts +0 -65
  327. package/source/utils/logging/health-monitor/core/scoring.ts +0 -91
  328. package/source/utils/logging/health-monitor/index.ts +0 -15
  329. package/source/utils/logging/health-monitor/instances.ts +0 -48
  330. package/source/utils/logging/health-monitor/middleware/http-middleware.spec.ts +0 -141
  331. package/source/utils/logging/health-monitor/middleware/http-middleware.ts +0 -75
  332. package/source/utils/logging/health-monitor/types.ts +0 -126
  333. package/source/utils/logging/index.spec.ts +0 -284
  334. package/source/utils/logging/index.ts +0 -236
  335. package/source/utils/logging/integration.spec.ts +0 -441
  336. package/source/utils/logging/log-method-factory.spec.ts +0 -573
  337. package/source/utils/logging/log-method-factory.ts +0 -233
  338. package/source/utils/logging/log-query/aggregation/aggregator.spec.ts +0 -277
  339. package/source/utils/logging/log-query/aggregation/aggregator.ts +0 -159
  340. package/source/utils/logging/log-query/aggregation/facet-generator.spec.ts +0 -159
  341. package/source/utils/logging/log-query/aggregation/facet-generator.ts +0 -47
  342. package/source/utils/logging/log-query/index.ts +0 -23
  343. package/source/utils/logging/log-query/query/filter-predicates.spec.ts +0 -247
  344. package/source/utils/logging/log-query/query/filter-predicates.ts +0 -154
  345. package/source/utils/logging/log-query/query/query-builder.spec.ts +0 -182
  346. package/source/utils/logging/log-query/query/query-builder.ts +0 -151
  347. package/source/utils/logging/log-query/query/query-engine.spec.ts +0 -214
  348. package/source/utils/logging/log-query/query/query-engine.ts +0 -45
  349. package/source/utils/logging/log-query/storage/circular-buffer.spec.ts +0 -143
  350. package/source/utils/logging/log-query/storage/circular-buffer.ts +0 -75
  351. package/source/utils/logging/log-query/storage/index-manager.spec.ts +0 -150
  352. package/source/utils/logging/log-query/storage/index-manager.ts +0 -71
  353. package/source/utils/logging/log-query/storage/log-storage.spec.ts +0 -257
  354. package/source/utils/logging/log-query/storage/log-storage.ts +0 -80
  355. package/source/utils/logging/log-query/types.ts +0 -163
  356. package/source/utils/logging/log-query/utils/helpers.spec.ts +0 -263
  357. package/source/utils/logging/log-query/utils/helpers.ts +0 -72
  358. package/source/utils/logging/log-query/utils/sorting.spec.ts +0 -182
  359. package/source/utils/logging/log-query/utils/sorting.ts +0 -61
  360. package/source/utils/logging/logger-provider.spec.ts +0 -262
  361. package/source/utils/logging/logger-provider.ts +0 -362
  362. package/source/utils/logging/performance.spec.ts +0 -209
  363. package/source/utils/logging/performance.ts +0 -757
  364. package/source/utils/logging/pino-logger.spec.ts +0 -425
  365. package/source/utils/logging/pino-logger.ts +0 -514
  366. package/source/utils/logging/redaction.spec.ts +0 -490
  367. package/source/utils/logging/redaction.ts +0 -267
  368. package/source/utils/logging/request-tracker.spec.ts +0 -1198
  369. package/source/utils/logging/request-tracker.ts +0 -803
  370. package/source/utils/logging/transports.spec.ts +0 -505
  371. package/source/utils/logging/transports.ts +0 -305
  372. package/source/utils/logging/types.ts +0 -216
  373. package/source/utils/message-builder.spec.ts +0 -179
  374. package/source/utils/message-builder.ts +0 -101
  375. package/source/utils/message-queue.tsx +0 -486
  376. package/source/utils/paste-detection.spec.ts +0 -69
  377. package/source/utils/paste-detection.ts +0 -124
  378. package/source/utils/paste-roundtrip.spec.ts +0 -442
  379. package/source/utils/paste-utils.spec.ts +0 -128
  380. package/source/utils/paste-utils.ts +0 -52
  381. package/source/utils/programming-language-helper.spec.ts +0 -74
  382. package/source/utils/programming-language-helper.ts +0 -32
  383. package/source/utils/prompt-assembly.spec.ts +0 -221
  384. package/source/utils/prompt-processor.ts +0 -173
  385. package/source/utils/tool-args-parser.spec.ts +0 -136
  386. package/source/utils/tool-args-parser.ts +0 -54
  387. package/source/utils/tool-cancellation.spec.ts +0 -230
  388. package/source/utils/tool-cancellation.ts +0 -28
  389. package/source/utils/tool-result-display.spec.tsx +0 -469
  390. package/source/utils/tool-result-display.tsx +0 -90
  391. package/source/utils/update-checker.spec.ts +0 -383
  392. package/source/utils/update-checker.ts +0 -183
  393. package/source/wizard/config-wizard.spec.tsx +0 -103
  394. package/source/wizard/config-wizard.tsx +0 -382
  395. package/source/wizard/steps/location-step.spec.tsx +0 -186
  396. package/source/wizard/steps/location-step.tsx +0 -147
  397. package/source/wizard/steps/mcp-step.spec.tsx +0 -607
  398. package/source/wizard/steps/mcp-step.tsx +0 -632
  399. package/source/wizard/steps/provider-step.spec.tsx +0 -342
  400. package/source/wizard/steps/provider-step.tsx +0 -957
  401. package/source/wizard/steps/summary-step.spec.tsx +0 -749
  402. package/source/wizard/steps/summary-step.tsx +0 -228
  403. package/source/wizard/templates/mcp-templates.spec.ts +0 -613
  404. package/source/wizard/templates/mcp-templates.ts +0 -570
  405. package/source/wizard/templates/provider-templates.spec.ts +0 -152
  406. package/source/wizard/templates/provider-templates.ts +0 -485
  407. package/source/wizard/utils/fetch-cloud-models.spec.ts +0 -428
  408. package/source/wizard/utils/fetch-cloud-models.ts +0 -223
  409. package/source/wizard/utils/fetch-local-models.spec.ts +0 -297
  410. package/source/wizard/utils/fetch-local-models.ts +0 -192
  411. package/source/wizard/validation-array.spec.ts +0 -264
  412. package/source/wizard/validation.spec.ts +0 -373
  413. package/source/wizard/validation.ts +0 -232
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gguf/coder",
3
3
  "main": "dist/cli.js",
4
- "version": "0.3.1",
4
+ "version": "0.3.3",
5
5
  "description": "Coder",
6
6
  "keywords": [
7
7
  "ai",
@@ -21,9 +21,12 @@
21
21
  "build": "tsc && tsc-alias",
22
22
  "dev": "tsc --watch",
23
23
  "start": "node dist/cli.js",
24
- "prepublishOnly": "npm run build",
24
+ "prepublishOnly": "pnpm run build",
25
25
  "prepare": "husky"
26
26
  },
27
+ "files": [
28
+ "dist"
29
+ ],
27
30
  "dependencies": {
28
31
  "@ai-sdk/openai-compatible": "2.0.0-beta.57",
29
32
  "@anthropic-ai/tokenizer": "^0.0.4",
package/.editorconfig DELETED
@@ -1,16 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- indent_style = tab
5
- end_of_line = lf
6
- charset = utf-8
7
- trim_trailing_whitespace = true
8
- insert_final_newline = true
9
-
10
- [*.yml]
11
- indent_style = space
12
- indent_size = 2
13
-
14
- [*.nix]
15
- indent_style = space
16
- indent_size = 2
package/.env.example DELETED
@@ -1,63 +0,0 @@
1
- # Environment Variables for Coder
2
- #
3
- # 1. Copy this file to .env and fill in your actual values
4
- # 2. Reference variables in agents.config.json using $VAR_NAME syntax
5
- #
6
- # Example in agents.config.json:
7
- # {
8
- # "coder": {
9
- # "providers": [{
10
- # "apiKey": "$OPENROUTER_API_KEY",
11
- # "models": ["$FALLBACK_MODEL"]
12
- # }]
13
- # }
14
- # }
15
-
16
- # API Keys for AI Providers
17
- OPENROUTER_API_KEY=your-openrouter-api-key-here
18
- ZAI_AUTH_TOKEN=your-zai-api-key-here
19
- ZAI_CODING_AUTH_TOKEN=your-zai-coding-api-key-here
20
- OPENAI_API_KEY=your-openai-api-key-here
21
-
22
- # Installation method override (npm, homebrew, nix, unknown)
23
- # Used for testing and debugging installation detection
24
- # CODER_INSTALL_METHOD=npm
25
-
26
- # Model Names (optional)
27
- FALLBACK_MODEL=your-fallback-model-name
28
-
29
- # Custom Directory Locations (optional)
30
- # Override default config directory location
31
- # Default: macOS: ~/Library/Preferences/coder
32
- # Linux: ~/.config/coder
33
- # Windows: %APPDATA%\coder
34
- CODER_CONFIG_DIR=/custom/path/to/config
35
-
36
- # Override default app data directory location
37
- # Default: macOS: ~/Library/Application Support/coder
38
- # Linux: ~/.local/share/coder (or $XDG_DATA_HOME/coder)
39
- # Windows: %APPDATA%\coder
40
- CODER_DATA_DIR=/custom/path/to/data
41
-
42
- # Cross-platform data directory override (mainly for testing)
43
- # Takes precedence over platform-specific defaults
44
- XDG_DATA_HOME=/custom/xdg/data
45
-
46
- # Logging Configuration (optional)
47
- CODER_LOG_LEVEL=debug
48
- CODER_LOG_TO_FILE=true
49
- CODER_LOG_TO_CONSOLE=true
50
- CODER_LOG_DIR=/custom/path/to/logs
51
- CODER_LOG_TRANSPORTS=default
52
-
53
- # Disable file logging entirely (optional)
54
- # CODER_LOG_DISABLE_FILE=true
55
-
56
- # Correlation Configuration (optional)
57
- CODER_CORRELATION_DEBUG=false
58
- CODER_CORRELATION_ENABLED=true
59
- CODER_CORRELATION_LEGACY_FALLBACK=false
60
-
61
- # MCP Server Environment Variables
62
- GITHUB_TOKEN=your-github-token
63
- GITHUB_PAT=your-github-personal-access-token
package/.gitattributes DELETED
@@ -1 +0,0 @@
1
- * text=auto eol=lf
package/.semgrepignore DELETED
@@ -1,19 +0,0 @@
1
- # Exclude test files from security scanning (not production code)
2
- **/*.spec.ts
3
- **/*.spec.tsx
4
- **/*.test.ts
5
- **/*.test.tsx
6
-
7
- # Exclude test directories
8
- **/test/**
9
- **/tests/**
10
- **/__tests__/**
11
-
12
- # Exclude configuration and build files
13
- **/.husky/**
14
- **/dist/**
15
- **/build/**
16
- **/node_modules/**
17
-
18
- # Exclude TypeScript declaration files
19
- **/*.d.ts
@@ -1,52 +0,0 @@
1
- // A simple file to give to models to test Coder's functionality
2
-
3
- export function greet(name: string): string {
4
- return `Hello ${name}!`;
5
- }
6
-
7
- export function add(a: number, b: number): number {
8
- return a + b;
9
- }
10
-
11
- export function multiply(x: number, y: number): number {
12
- return x * y;
13
- }
14
-
15
- // More functions to make a medium-sized file
16
-
17
- export function subtract(a: number, b: number): number {
18
- return a - b;
19
- }
20
-
21
- export function divide(a: number, b: number): number {
22
- if (b === 0) {
23
- throw new Error('Division by zero');
24
- }
25
- return a / b;
26
- }
27
-
28
- export function power(base: number, exponent: number): number {
29
- return Math.pow(base, exponent);
30
- }
31
-
32
- export function sqrt(n: number): number {
33
- return Math.sqrt(n);
34
- }
35
-
36
- export function abs(n: number): number {
37
- return Math.abs(n);
38
- }
39
-
40
- export function round(n: number): number {
41
- return Math.round(n);
42
- }
43
-
44
- export function floor(n: number): number {
45
- return Math.floor(n);
46
- }
47
-
48
- export function ceil(n: number): number {
49
- return Math.ceil(n);
50
- }
51
-
52
- // End of test file
@@ -1,59 +0,0 @@
1
- {
2
- "coder": {
3
- "providers": [
4
- {
5
- "name": "OpenRouter",
6
- "baseUrl": "https://openrouter.ai/api/v1",
7
- "apiKey": "your-openrouter-api-key-here",
8
- "models": ["openai/gpt-4o-mini", "anthropic/claude-3-haiku"]
9
- },
10
- {
11
- "name": "GitHub Models",
12
- "baseUrl": "https://models.github.ai/inference",
13
- "apiKey": "your-github-token-here",
14
- "models": ["openai/gpt-4o-mini", "openai/gpt-4o"]
15
- },
16
- {
17
- "name": "Local Ollama",
18
- "baseUrl": "http://localhost:11434/v1",
19
- "models": ["llama3.2", "qwen2.5-coder"]
20
- },
21
- {
22
- "name": "OpenAI Compatible",
23
- "baseUrl": "http://localhost:1234/v1",
24
- "apiKey": "optional-api-key-if-needed",
25
- "models": ["local-model-1", "local-model-2"]
26
- },
27
- {
28
- "name": "Z.ai",
29
- "baseUrl": "https://api.z.ai/api/paas/v4/",
30
- "apiKey": "your-z.ai-api-key",
31
- "models": ["glm-4.7", "glm-4.5", "glm-4.5-air"]
32
- },
33
- {
34
- "name": "Z.ai Coding Subscription",
35
- "baseUrl": "https://api.z.ai/api/coding/paas/v4/",
36
- "apiKey": "your-z.ai-coding-api-key",
37
- "models": ["glm-4.7", "glm-4.5", "glm-4.5-air"]
38
- }
39
- ],
40
- "mcpServers": [
41
- {
42
- "name": "filesystem",
43
- "command": "npx",
44
- "args": [
45
- "@modelcontextprotocol/server-filesystem",
46
- "/path/to/allowed/directory"
47
- ]
48
- },
49
- {
50
- "name": "github",
51
- "command": "npx",
52
- "args": ["@modelcontextprotocol/server-github"],
53
- "env": {
54
- "GITHUB_TOKEN": "your-github-token"
55
- }
56
- }
57
- ]
58
- }
59
- }
package/coder.config.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "coder": {
3
- "providers": [
4
- {
5
- "name": "lmstudio",
6
- "models": [
7
- "openai/gpt-oss-20b"
8
- ],
9
- "baseUrl": "http://localhost:1234/v1"
10
- }
11
- ]
12
- }
13
- }
package/color_picker.html DELETED
@@ -1,36 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <title>Random Color Picker</title>
6
- <style>
7
- body {
8
- transition: background-color 0.5s;
9
- font-family: Arial, sans-serif;
10
- display: flex;
11
- justify-content: center;
12
- align-items: center;
13
- height: 100vh;
14
- margin: 0;
15
- }
16
- button {
17
- padding: 1rem 2rem;
18
- font-size: 1.2rem;
19
- cursor: pointer;
20
- }
21
- </style>
22
- </head>
23
- <body>
24
- <button id="pick">Pick Random Color</button>
25
- <script>
26
- function randomHex() {
27
- const hex = Math.floor(Math.random()*0xFFFFFF).toString(16);
28
- return '#' + ('000000' + hex).slice(-6);
29
- }
30
-
31
- document.getElementById('pick').addEventListener('click', () => {
32
- document.body.style.backgroundColor = randomHex();
33
- });
34
- </script>
35
- </body>
36
- </html>
@@ -1,73 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Extract changelog section for a specific version from CHANGELOG.md
5
- * Usage: node scripts/extract-changelog.js [version]
6
- * If no version is provided, reads from package.json
7
- */
8
-
9
- import {readFileSync} from 'fs';
10
- import {dirname, join} from 'path';
11
- import {fileURLToPath} from 'url';
12
-
13
- const __filename = fileURLToPath(import.meta.url);
14
- const __dirname = dirname(__filename);
15
- const rootDir = join(__dirname, '..');
16
-
17
- // Get version from command line arg or package.json
18
- let version = process.argv[2];
19
- if (!version) {
20
- const packageJson = JSON.parse(
21
- readFileSync(join(rootDir, 'package.json'), 'utf-8'),
22
- );
23
- version = packageJson.version;
24
- }
25
-
26
- // Read CHANGELOG.md
27
- let changelogContent;
28
- try {
29
- changelogContent = readFileSync(join(rootDir, 'CHANGELOG.md'), 'utf-8');
30
- } catch (error) {
31
- console.error('Error reading CHANGELOG.md:', error.message);
32
- process.exit(1);
33
- }
34
-
35
- // Extract section for this version
36
- // Support multiple formats:
37
- // 1. ## [version] - date (Keep a Changelog format)
38
- // 2. ## version (simple heading)
39
- // 3. # version (simple heading with single #)
40
- const versionPatterns = [
41
- // Pattern 1: ## [version] or ## version
42
- new RegExp(
43
- `##+ \\[?${version.replace(
44
- /\./g,
45
- '\\.',
46
- )}\\]?.*?\\n([\\s\\S]*?)(?=\\n##+ |$)`,
47
- ),
48
- // Pattern 2: # version
49
- new RegExp(
50
- `#+ ${version.replace(/\./g, '\\.')}.*?\\n([\\s\\S]*?)(?=\\n#+ |$)`,
51
- ),
52
- ];
53
-
54
- let match = null;
55
- for (const pattern of versionPatterns) {
56
- match = changelogContent.match(pattern);
57
- if (match) break;
58
- }
59
-
60
- if (!match) {
61
- console.error(`No changelog entry found for version ${version}`);
62
- console.error(
63
- 'Please add a changelog entry in CHANGELOG.md with one of these formats:',
64
- );
65
- console.error(`## [${version}] - ${new Date().toISOString().split('T')[0]}`);
66
- console.error(`or`);
67
- console.error(`# ${version}`);
68
- process.exit(1);
69
- }
70
-
71
- // Output the changelog section (trim leading/trailing whitespace)
72
- const changelogSection = match[1].trim();
73
- console.log(changelogSection);
@@ -1,143 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Post-install script to fetch and cache models.dev data
5
- * This script runs after npm/pnpm install to ensure fresh model metadata
6
- */
7
-
8
- import * as fs from 'node:fs';
9
- import * as path from 'node:path';
10
- import {request} from 'undici';
11
- import {xdgCache} from 'xdg-basedir';
12
-
13
- const MODELS_DEV_API_URL = 'https://models.dev/api.json';
14
- const CACHE_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
15
-
16
- // Get cache directory
17
- const DEFAULT_CACHE_DIR =
18
- process.platform === 'darwin'
19
- ? path.join(process.env.HOME || '~', 'Library', 'Caches')
20
- : path.join(process.env.HOME || '~', '.cache');
21
-
22
- const cacheBase = xdgCache || DEFAULT_CACHE_DIR;
23
- const cacheDir = path.join(cacheBase, 'coder');
24
- const cacheFilePath = path.join(cacheDir, 'models.json');
25
-
26
- /**
27
- * Fetch models data from models.dev
28
- */
29
- async function fetchModels() {
30
- console.log('Fetching model metadata from models.dev...');
31
-
32
- try {
33
- const response = await request(MODELS_DEV_API_URL, {
34
- method: 'GET',
35
- headersTimeout: 10000,
36
- bodyTimeout: 30000,
37
- });
38
-
39
- if (response.statusCode !== 200) {
40
- throw new Error(`HTTP ${response.statusCode}`);
41
- }
42
-
43
- const data = await response.body.json();
44
-
45
- // Count models for logging
46
- let totalModels = 0;
47
- for (const provider of Object.values(data)) {
48
- totalModels += Object.keys(provider.models).length;
49
- }
50
-
51
- console.log(
52
- `✅ Successfully fetched ${totalModels} models from ${
53
- Object.keys(data).length
54
- } providers`,
55
- );
56
-
57
- return data;
58
- } catch (error) {
59
- console.warn('⚠️ Failed to fetch models.dev data:', error.message);
60
- return null;
61
- }
62
- }
63
-
64
- /**
65
- * Ensure cache directory exists
66
- */
67
- function ensureCacheDir() {
68
- if (!fs.existsSync(cacheDir)) {
69
- fs.mkdirSync(cacheDir, {recursive: true});
70
- }
71
- }
72
-
73
- /**
74
- * Write data to cache
75
- */
76
- function writeCache(data) {
77
- try {
78
- ensureCacheDir();
79
-
80
- const cached = {
81
- data,
82
- fetchedAt: Date.now(),
83
- expiresAt: Date.now() + CACHE_EXPIRATION_MS,
84
- };
85
-
86
- fs.writeFileSync(cacheFilePath, JSON.stringify(cached, null, 2), 'utf-8');
87
- console.log(`💾 Cached to: ${cacheFilePath}`);
88
- } catch (error) {
89
- console.warn('⚠️ Failed to write cache:', error.message);
90
- }
91
- }
92
-
93
- /**
94
- * Check if existing cache is valid
95
- */
96
- function isCacheValid() {
97
- try {
98
- if (!fs.existsSync(cacheFilePath)) {
99
- return false;
100
- }
101
-
102
- const content = fs.readFileSync(cacheFilePath, 'utf-8');
103
- const cached = JSON.parse(content);
104
-
105
- return Date.now() < cached.expiresAt;
106
- } catch {
107
- return false;
108
- }
109
- }
110
-
111
- /**
112
- * Main execution
113
- */
114
- async function main() {
115
- // Skip if in CI environment (don't spam models.dev API)
116
- if (process.env.CI === 'true') {
117
- console.log('ℹ️ Skipping models.dev fetch in CI environment');
118
- return;
119
- }
120
-
121
- // Check if cache is still valid
122
- if (isCacheValid()) {
123
- console.log('✅ Models cache is still valid, skipping fetch');
124
- return;
125
- }
126
-
127
- // Fetch and cache models data
128
- const data = await fetchModels();
129
-
130
- if (data) {
131
- writeCache(data);
132
- } else {
133
- console.log('ℹ️ Installation will continue without model metadata cache');
134
- console.log('ℹ️ Model metadata will be fetched on first use');
135
- }
136
- }
137
-
138
- // Run the script
139
- main().catch(error => {
140
- // Don't fail the installation if this script fails
141
- console.error('⚠️ Post-install script error:', error.message);
142
- process.exit(0); // Exit with success to not break installation
143
- });
package/scripts/test.sh DELETED
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Test script that runs all test:all commands
4
- # Exit on first error
5
- set -e
6
-
7
- echo "🧪 Running all tests..."
8
- echo ""
9
-
10
- echo "📝 Checking code formatting..."
11
- pnpm test:format
12
- echo ""
13
- echo "✅ Format check passed"
14
- echo ""
15
-
16
- echo "🔍 Checking TypeScript types..."
17
- pnpm test:types
18
- echo ""
19
- echo "✅ Type check passed"
20
- echo ""
21
-
22
- echo "🔎 Running linter..."
23
- pnpm test:lint
24
- echo ""
25
- echo "✅ Lint check passed"
26
- echo ""
27
-
28
- echo "🧩 Running AVA tests..."
29
- pnpm test:ava
30
- echo ""
31
- echo "✅ AVA tests passed"
32
- echo ""
33
-
34
- echo "🗑️ Checking for unused code..."
35
- pnpm test:knip
36
- echo ""
37
- echo "✅ Knip check passed"
38
- echo ""
39
-
40
- echo "✅ Everything passes!"
@@ -1,125 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Update Homebrew formula version and SHA256 hash for a new release
3
- # Usage: ./scripts/update-homebrew-formula.sh <version>
4
- # Example: ./scripts/update-homebrew-formula.sh 1.15.0
5
-
6
- set -e
7
-
8
- VERSION=$1
9
- # FORMULA_FILE="Formula/coder.rb"
10
- NPM_PACKAGE="@gguf/coder"
11
-
12
- # Color codes for output
13
- RED='\033[0;31m'
14
- GREEN='\033[0;32m'
15
- YELLOW='\033[1;33m'
16
- NC='\033[0m' # No Color
17
-
18
- if [ -z "$VERSION" ]; then
19
- echo -e "${RED}Error: Version number required${NC}"
20
- echo "Usage: $0 <version>"
21
- echo "Example: $0 1.15.0"
22
- exit 1
23
- fi
24
-
25
- echo -e "${YELLOW}Updating Homebrew formula to version ${VERSION}...${NC}"
26
- echo ""
27
-
28
- # Step 1: Update version in formula file
29
- echo "Step 1: Updating version number in ${FORMULA_FILE}..."
30
- NPM_URL="https://registry.npmjs.org/${NPM_PACKAGE}/-/coder-${VERSION}.tgz"
31
-
32
- if [[ "$OSTYPE" == "darwin"* ]]; then
33
- # macOS requires -i '' for in-place editing
34
- sed -i '' "s|url \"https://registry.npmjs.org/${NPM_PACKAGE}/-/coder-.*\.tgz\"|url \"${NPM_URL}\"|" "$FORMULA_FILE"
35
- else
36
- # Linux
37
- sed -i "s|url \"https://registry.npmjs.org/${NPM_PACKAGE}/-/coder-.*\.tgz\"|url \"${NPM_URL}\"|" "$FORMULA_FILE"
38
- fi
39
-
40
- # Step 2: Download tarball and calculate SHA256
41
- echo "Step 2: Downloading tarball from NPM..."
42
- echo "URL: ${NPM_URL}"
43
-
44
- TEMP_FILE=$(mktemp)
45
- trap "rm -f ${TEMP_FILE}" EXIT
46
-
47
- if ! curl -sSL "${NPM_URL}" -o "${TEMP_FILE}"; then
48
- echo -e "${RED}Error: Failed to download tarball from NPM${NC}"
49
- echo "Please verify that version ${VERSION} has been published to NPM"
50
- echo "Check: https://www.npmjs.com/package/${NPM_PACKAGE}"
51
- exit 1
52
- fi
53
-
54
- echo "Step 3: Calculating SHA256 hash..."
55
- if command -v shasum >/dev/null 2>&1; then
56
- # macOS and some Linux systems
57
- SHA256=$(shasum -a 256 "${TEMP_FILE}" | awk '{print $1}')
58
- elif command -v sha256sum >/dev/null 2>&1; then
59
- # Most Linux systems
60
- SHA256=$(sha256sum "${TEMP_FILE}" | awk '{print $1}')
61
- else
62
- echo -e "${RED}Error: Neither shasum nor sha256sum found${NC}"
63
- echo "Please install one of these tools to calculate SHA256 hashes"
64
- exit 1
65
- fi
66
-
67
- if [ -z "$SHA256" ]; then
68
- echo -e "${RED}Error: Failed to calculate SHA256 hash${NC}"
69
- exit 1
70
- fi
71
-
72
- echo -e "${GREEN}Found hash: ${SHA256}${NC}"
73
- echo ""
74
-
75
- # Step 4: Update formula with real hash
76
- echo "Step 4: Updating formula with calculated hash..."
77
- if [[ "$OSTYPE" == "darwin"* ]]; then
78
- sed -i '' "s/sha256 \".*\"/sha256 \"${SHA256}\"/" "$FORMULA_FILE"
79
- else
80
- sed -i "s/sha256 \".*\"/sha256 \"${SHA256}\"/" "$FORMULA_FILE"
81
- fi
82
-
83
- # Step 5: Validate formula syntax
84
- echo "Step 5: Validating formula syntax..."
85
- if ! ruby -c "$FORMULA_FILE" > /dev/null 2>&1; then
86
- echo -e "${RED}✗ Formula has syntax errors${NC}"
87
- ruby -c "$FORMULA_FILE"
88
- exit 1
89
- fi
90
-
91
- echo -e "${GREEN}✓ Formula syntax is valid${NC}"
92
-
93
- # Step 6: Audit formula (if brew is available)
94
- if command -v brew >/dev/null 2>&1; then
95
- echo "Step 6: Auditing formula with Homebrew..."
96
- # Note: brew audit with path doesn't work in current Homebrew versions
97
- # This is a known limitation, so we skip it for now
98
- echo -e "${YELLOW}Note: Automated brew audit is not available for local formulae${NC}"
99
- echo -e "${YELLOW}Manual audit will be required after pushing to repository${NC}"
100
- else
101
- echo -e "${YELLOW}Step 6: Skipping brew audit (brew not installed)${NC}"
102
- fi
103
-
104
- echo ""
105
- echo -e "${GREEN}════════════════════════════════════════════════${NC}"
106
- echo -e "${GREEN}Success! Homebrew formula updated to v${VERSION}${NC}"
107
- echo -e "${GREEN}════════════════════════════════════════════════${NC}"
108
- echo ""
109
- echo "Changes made to: ${FORMULA_FILE}"
110
- echo ""
111
- echo "Formula details:"
112
- echo " Version: ${VERSION}"
113
- echo " URL: ${NPM_URL}"
114
- echo " SHA256: ${SHA256}"
115
- echo ""
116
- echo "Next steps:"
117
- echo " 1. Review the changes: git diff ${FORMULA_FILE}"
118
- echo " 2. Commit: git add ${FORMULA_FILE}"
119
- echo " 3. Commit: git commit -m 'chore: update homebrew formula to v${VERSION}'"
120
- echo " 4. Push: git push"
121
- echo ""
122
- echo "To test the formula locally:"
123
- echo " 1. brew tap mochiyaki/coder https://github.com/mochiyaki/coder"
124
- echo " 2. brew install coder"
125
- echo " 3. coder --help"