@gguf/coder 0.3.1 → 0.3.2
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.
- package/package.json +2 -2
- package/pnpm-workspace.yaml +15 -0
- package/color_picker.html +0 -36
- package/scripts/extract-changelog.js +0 -73
- package/scripts/fetch-models.js +0 -143
- package/scripts/test.sh +0 -40
- package/scripts/update-homebrew-formula.sh +0 -125
- package/scripts/update-nix-version.sh +0 -157
- package/source/ai-sdk-client/AISDKClient.spec.ts +0 -117
- package/source/ai-sdk-client/AISDKClient.ts +0 -155
- package/source/ai-sdk-client/chat/chat-handler.spec.ts +0 -121
- package/source/ai-sdk-client/chat/chat-handler.ts +0 -276
- package/source/ai-sdk-client/chat/streaming-handler.spec.ts +0 -173
- package/source/ai-sdk-client/chat/streaming-handler.ts +0 -110
- package/source/ai-sdk-client/chat/tool-processor.spec.ts +0 -92
- package/source/ai-sdk-client/chat/tool-processor.ts +0 -70
- package/source/ai-sdk-client/converters/message-converter.spec.ts +0 -220
- package/source/ai-sdk-client/converters/message-converter.ts +0 -113
- package/source/ai-sdk-client/converters/tool-converter.spec.ts +0 -90
- package/source/ai-sdk-client/converters/tool-converter.ts +0 -46
- package/source/ai-sdk-client/error-handling/error-extractor.spec.ts +0 -55
- package/source/ai-sdk-client/error-handling/error-extractor.ts +0 -15
- package/source/ai-sdk-client/error-handling/error-parser.spec.ts +0 -169
- package/source/ai-sdk-client/error-handling/error-parser.ts +0 -161
- package/source/ai-sdk-client/index.ts +0 -7
- package/source/ai-sdk-client/providers/provider-factory.spec.ts +0 -71
- package/source/ai-sdk-client/providers/provider-factory.ts +0 -41
- package/source/ai-sdk-client/types.ts +0 -9
- package/source/ai-sdk-client-empty-message.spec.ts +0 -141
- package/source/ai-sdk-client-error-handling.spec.ts +0 -186
- package/source/ai-sdk-client-maxretries.spec.ts +0 -114
- package/source/ai-sdk-client-preparestep.spec.ts +0 -279
- package/source/app/App.spec.tsx +0 -32
- package/source/app/App.tsx +0 -480
- package/source/app/components/AppContainer.spec.tsx +0 -96
- package/source/app/components/AppContainer.tsx +0 -56
- package/source/app/components/ChatInterface.spec.tsx +0 -163
- package/source/app/components/ChatInterface.tsx +0 -144
- package/source/app/components/ModalSelectors.spec.tsx +0 -141
- package/source/app/components/ModalSelectors.tsx +0 -135
- package/source/app/helpers.spec.ts +0 -97
- package/source/app/helpers.ts +0 -63
- package/source/app/index.ts +0 -4
- package/source/app/types.ts +0 -39
- package/source/app/utils/appUtils.ts +0 -294
- package/source/app/utils/conversationState.ts +0 -310
- package/source/app.spec.tsx +0 -244
- package/source/cli.spec.ts +0 -73
- package/source/cli.tsx +0 -51
- package/source/client-factory.spec.ts +0 -48
- package/source/client-factory.ts +0 -178
- package/source/command-parser.spec.ts +0 -127
- package/source/command-parser.ts +0 -36
- package/source/commands/checkpoint.spec.tsx +0 -277
- package/source/commands/checkpoint.tsx +0 -366
- package/source/commands/clear.tsx +0 -22
- package/source/commands/custom-commands.tsx +0 -121
- package/source/commands/exit.ts +0 -21
- package/source/commands/export.spec.tsx +0 -131
- package/source/commands/export.tsx +0 -79
- package/source/commands/help.tsx +0 -120
- package/source/commands/index.ts +0 -17
- package/source/commands/init.tsx +0 -339
- package/source/commands/lsp-command.spec.tsx +0 -281
- package/source/commands/lsp.tsx +0 -120
- package/source/commands/mcp-command.spec.tsx +0 -313
- package/source/commands/mcp.tsx +0 -162
- package/source/commands/model-database.spec.tsx +0 -758
- package/source/commands/model-database.tsx +0 -418
- package/source/commands/model.ts +0 -12
- package/source/commands/provider.ts +0 -12
- package/source/commands/setup-config.tsx +0 -16
- package/source/commands/simple-commands.spec.tsx +0 -175
- package/source/commands/status.ts +0 -12
- package/source/commands/theme.ts +0 -12
- package/source/commands/update.spec.tsx +0 -261
- package/source/commands/update.tsx +0 -201
- package/source/commands/usage.spec.tsx +0 -495
- package/source/commands/usage.tsx +0 -100
- package/source/commands.spec.ts +0 -436
- package/source/commands.ts +0 -83
- package/source/components/assistant-message.spec.tsx +0 -796
- package/source/components/assistant-message.tsx +0 -34
- package/source/components/bash-execution-indicator.tsx +0 -21
- package/source/components/cancelling-indicator.tsx +0 -16
- package/source/components/chat-queue.spec.tsx +0 -83
- package/source/components/chat-queue.tsx +0 -36
- package/source/components/checkpoint-display.spec.tsx +0 -219
- package/source/components/checkpoint-display.tsx +0 -126
- package/source/components/checkpoint-selector.spec.tsx +0 -173
- package/source/components/checkpoint-selector.tsx +0 -173
- package/source/components/development-mode-indicator.spec.tsx +0 -268
- package/source/components/development-mode-indicator.tsx +0 -38
- package/source/components/message-box.spec.tsx +0 -427
- package/source/components/message-box.tsx +0 -87
- package/source/components/model-selector.tsx +0 -132
- package/source/components/provider-selector.tsx +0 -75
- package/source/components/random-spinner.tsx +0 -19
- package/source/components/security-disclaimer.tsx +0 -73
- package/source/components/status-connection-display.spec.tsx +0 -133
- package/source/components/status.tsx +0 -267
- package/source/components/theme-selector.tsx +0 -126
- package/source/components/tool-confirmation.tsx +0 -190
- package/source/components/tool-execution-indicator.tsx +0 -33
- package/source/components/tool-message.tsx +0 -85
- package/source/components/ui/titled-box.spec.tsx +0 -207
- package/source/components/ui/titled-box.tsx +0 -57
- package/source/components/usage/progress-bar.spec.tsx +0 -398
- package/source/components/usage/progress-bar.tsx +0 -30
- package/source/components/usage/usage-display.spec.tsx +0 -780
- package/source/components/usage/usage-display.tsx +0 -291
- package/source/components/user-input.spec.tsx +0 -327
- package/source/components/user-input.tsx +0 -533
- package/source/components/user-message.spec.tsx +0 -230
- package/source/components/user-message.tsx +0 -84
- package/source/components/welcome-message.tsx +0 -76
- package/source/config/env-substitution.ts +0 -65
- package/source/config/index.spec.ts +0 -171
- package/source/config/index.ts +0 -154
- package/source/config/paths.spec.ts +0 -241
- package/source/config/paths.ts +0 -55
- package/source/config/preferences.ts +0 -51
- package/source/config/themes.ts +0 -315
- package/source/constants.ts +0 -130
- package/source/context/mode-context.spec.ts +0 -79
- package/source/context/mode-context.ts +0 -24
- package/source/custom-commands/executor.spec.ts +0 -142
- package/source/custom-commands/executor.ts +0 -64
- package/source/custom-commands/loader.spec.ts +0 -314
- package/source/custom-commands/loader.ts +0 -153
- package/source/custom-commands/parser.ts +0 -196
- package/source/hooks/chat-handler/conversation/conversation-loop.spec.ts +0 -39
- package/source/hooks/chat-handler/conversation/conversation-loop.tsx +0 -511
- package/source/hooks/chat-handler/conversation/tool-executor.spec.ts +0 -50
- package/source/hooks/chat-handler/conversation/tool-executor.tsx +0 -109
- package/source/hooks/chat-handler/index.ts +0 -12
- package/source/hooks/chat-handler/state/streaming-state.spec.ts +0 -26
- package/source/hooks/chat-handler/state/streaming-state.ts +0 -19
- package/source/hooks/chat-handler/types.ts +0 -38
- package/source/hooks/chat-handler/useChatHandler.spec.tsx +0 -321
- package/source/hooks/chat-handler/useChatHandler.tsx +0 -194
- package/source/hooks/chat-handler/utils/context-checker.spec.ts +0 -60
- package/source/hooks/chat-handler/utils/context-checker.tsx +0 -73
- package/source/hooks/chat-handler/utils/message-helpers.spec.ts +0 -42
- package/source/hooks/chat-handler/utils/message-helpers.tsx +0 -36
- package/source/hooks/chat-handler/utils/tool-filters.spec.ts +0 -109
- package/source/hooks/chat-handler/utils/tool-filters.ts +0 -64
- package/source/hooks/useAppHandlers.tsx +0 -291
- package/source/hooks/useAppInitialization.tsx +0 -422
- package/source/hooks/useAppState.tsx +0 -311
- package/source/hooks/useDirectoryTrust.tsx +0 -98
- package/source/hooks/useInputState.ts +0 -414
- package/source/hooks/useModeHandlers.tsx +0 -302
- package/source/hooks/useNonInteractiveMode.ts +0 -140
- package/source/hooks/useTerminalWidth.tsx +0 -81
- package/source/hooks/useTheme.ts +0 -18
- package/source/hooks/useToolHandler.tsx +0 -349
- package/source/hooks/useUIState.ts +0 -61
- package/source/init/agents-template-generator.ts +0 -421
- package/source/init/existing-rules-extractor.ts +0 -319
- package/source/init/file-scanner.spec.ts +0 -227
- package/source/init/file-scanner.ts +0 -238
- package/source/init/framework-detector.ts +0 -382
- package/source/init/language-detector.ts +0 -269
- package/source/init/project-analyzer.spec.ts +0 -231
- package/source/init/project-analyzer.ts +0 -458
- package/source/lsp/index.ts +0 -31
- package/source/lsp/lsp-client.spec.ts +0 -508
- package/source/lsp/lsp-client.ts +0 -487
- package/source/lsp/lsp-manager.spec.ts +0 -477
- package/source/lsp/lsp-manager.ts +0 -419
- package/source/lsp/protocol.spec.ts +0 -502
- package/source/lsp/protocol.ts +0 -360
- package/source/lsp/server-discovery.spec.ts +0 -654
- package/source/lsp/server-discovery.ts +0 -515
- package/source/markdown-parser/html-entities.spec.ts +0 -88
- package/source/markdown-parser/html-entities.ts +0 -45
- package/source/markdown-parser/index.spec.ts +0 -281
- package/source/markdown-parser/index.ts +0 -126
- package/source/markdown-parser/table-parser.spec.ts +0 -133
- package/source/markdown-parser/table-parser.ts +0 -114
- package/source/markdown-parser/utils.spec.ts +0 -70
- package/source/markdown-parser/utils.ts +0 -13
- package/source/mcp/mcp-client.spec.ts +0 -81
- package/source/mcp/mcp-client.ts +0 -625
- package/source/mcp/transport-factory.spec.ts +0 -406
- package/source/mcp/transport-factory.ts +0 -312
- package/source/message-handler.ts +0 -67
- package/source/model-database/database-engine.spec.ts +0 -494
- package/source/model-database/database-engine.ts +0 -50
- package/source/model-database/model-database.spec.ts +0 -363
- package/source/model-database/model-database.ts +0 -91
- package/source/model-database/model-engine.spec.ts +0 -447
- package/source/model-database/model-engine.ts +0 -65
- package/source/model-database/model-fetcher.spec.ts +0 -583
- package/source/model-database/model-fetcher.ts +0 -330
- package/source/models/index.ts +0 -1
- package/source/models/models-cache.spec.ts +0 -214
- package/source/models/models-cache.ts +0 -78
- package/source/models/models-dev-client.spec.ts +0 -379
- package/source/models/models-dev-client.ts +0 -329
- package/source/models/models-types.ts +0 -68
- package/source/prompt-history.ts +0 -155
- package/source/security/command-injection.spec.ts +0 -240
- package/source/services/checkpoint-manager.spec.ts +0 -523
- package/source/services/checkpoint-manager.ts +0 -466
- package/source/services/file-snapshot.spec.ts +0 -569
- package/source/services/file-snapshot.ts +0 -220
- package/source/test-utils/render-with-theme.tsx +0 -48
- package/source/tokenization/index.ts +0 -1
- package/source/tokenization/tokenizer-factory.spec.ts +0 -170
- package/source/tokenization/tokenizer-factory.ts +0 -125
- package/source/tokenization/tokenizers/anthropic-tokenizer.spec.ts +0 -200
- package/source/tokenization/tokenizers/anthropic-tokenizer.ts +0 -43
- package/source/tokenization/tokenizers/fallback-tokenizer.spec.ts +0 -236
- package/source/tokenization/tokenizers/fallback-tokenizer.ts +0 -26
- package/source/tokenization/tokenizers/llama-tokenizer.spec.ts +0 -224
- package/source/tokenization/tokenizers/llama-tokenizer.ts +0 -41
- package/source/tokenization/tokenizers/openai-tokenizer.spec.ts +0 -184
- package/source/tokenization/tokenizers/openai-tokenizer.ts +0 -57
- package/source/tool-calling/index.ts +0 -5
- package/source/tool-calling/json-parser.spec.ts +0 -639
- package/source/tool-calling/json-parser.ts +0 -247
- package/source/tool-calling/tool-parser.spec.ts +0 -395
- package/source/tool-calling/tool-parser.ts +0 -120
- package/source/tool-calling/xml-parser.spec.ts +0 -662
- package/source/tool-calling/xml-parser.ts +0 -289
- package/source/tools/execute-bash.spec.tsx +0 -353
- package/source/tools/execute-bash.tsx +0 -219
- package/source/tools/execute-function.spec.ts +0 -130
- package/source/tools/fetch-url.spec.tsx +0 -342
- package/source/tools/fetch-url.tsx +0 -172
- package/source/tools/find-files.spec.tsx +0 -924
- package/source/tools/find-files.tsx +0 -293
- package/source/tools/index.ts +0 -102
- package/source/tools/lsp-get-diagnostics.tsx +0 -192
- package/source/tools/needs-approval.spec.ts +0 -282
- package/source/tools/read-file.spec.tsx +0 -801
- package/source/tools/read-file.tsx +0 -387
- package/source/tools/search-file-contents.spec.tsx +0 -1273
- package/source/tools/search-file-contents.tsx +0 -293
- package/source/tools/string-replace.spec.tsx +0 -730
- package/source/tools/string-replace.tsx +0 -548
- package/source/tools/tool-manager.ts +0 -210
- package/source/tools/tool-registry.spec.ts +0 -415
- package/source/tools/tool-registry.ts +0 -228
- package/source/tools/web-search.tsx +0 -223
- package/source/tools/write-file.spec.tsx +0 -559
- package/source/tools/write-file.tsx +0 -228
- package/source/types/app.ts +0 -37
- package/source/types/checkpoint.ts +0 -48
- package/source/types/commands.ts +0 -46
- package/source/types/components.ts +0 -27
- package/source/types/config.ts +0 -103
- package/source/types/core-connection-status.spec.ts +0 -67
- package/source/types/core.ts +0 -181
- package/source/types/hooks.ts +0 -50
- package/source/types/index.ts +0 -12
- package/source/types/markdown-parser.ts +0 -11
- package/source/types/mcp.ts +0 -52
- package/source/types/system.ts +0 -16
- package/source/types/tokenization.ts +0 -41
- package/source/types/ui.ts +0 -40
- package/source/types/usage.ts +0 -58
- package/source/types/utils.ts +0 -16
- package/source/usage/calculator.spec.ts +0 -385
- package/source/usage/calculator.ts +0 -104
- package/source/usage/storage.spec.ts +0 -703
- package/source/usage/storage.ts +0 -238
- package/source/usage/tracker.spec.ts +0 -456
- package/source/usage/tracker.ts +0 -102
- package/source/utils/atomic-deletion.spec.ts +0 -194
- package/source/utils/atomic-deletion.ts +0 -127
- package/source/utils/bounded-map.spec.ts +0 -300
- package/source/utils/bounded-map.ts +0 -193
- package/source/utils/checkpoint-utils.spec.ts +0 -222
- package/source/utils/checkpoint-utils.ts +0 -92
- package/source/utils/error-formatter.spec.ts +0 -169
- package/source/utils/error-formatter.ts +0 -194
- package/source/utils/file-autocomplete.spec.ts +0 -173
- package/source/utils/file-autocomplete.ts +0 -196
- package/source/utils/file-cache.spec.ts +0 -309
- package/source/utils/file-cache.ts +0 -195
- package/source/utils/file-content-loader.spec.ts +0 -180
- package/source/utils/file-content-loader.ts +0 -179
- package/source/utils/file-mention-handler.spec.ts +0 -261
- package/source/utils/file-mention-handler.ts +0 -84
- package/source/utils/file-mention-parser.spec.ts +0 -182
- package/source/utils/file-mention-parser.ts +0 -170
- package/source/utils/fuzzy-matching.spec.ts +0 -149
- package/source/utils/fuzzy-matching.ts +0 -146
- package/source/utils/indentation-normalizer.spec.ts +0 -216
- package/source/utils/indentation-normalizer.ts +0 -76
- package/source/utils/installation-detector.spec.ts +0 -178
- package/source/utils/installation-detector.ts +0 -153
- package/source/utils/logging/config.spec.ts +0 -311
- package/source/utils/logging/config.ts +0 -210
- package/source/utils/logging/console-facade.spec.ts +0 -184
- package/source/utils/logging/console-facade.ts +0 -384
- package/source/utils/logging/correlation.spec.ts +0 -679
- package/source/utils/logging/correlation.ts +0 -474
- package/source/utils/logging/formatters.spec.ts +0 -464
- package/source/utils/logging/formatters.ts +0 -207
- package/source/utils/logging/health-monitor/alerts/alert-manager.spec.ts +0 -93
- package/source/utils/logging/health-monitor/alerts/alert-manager.ts +0 -79
- package/source/utils/logging/health-monitor/checks/configuration-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/configuration-check.ts +0 -43
- package/source/utils/logging/health-monitor/checks/logging-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/logging-check.ts +0 -58
- package/source/utils/logging/health-monitor/checks/memory-check.spec.ts +0 -100
- package/source/utils/logging/health-monitor/checks/memory-check.ts +0 -78
- package/source/utils/logging/health-monitor/checks/performance-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/performance-check.ts +0 -56
- package/source/utils/logging/health-monitor/checks/request-check.spec.ts +0 -56
- package/source/utils/logging/health-monitor/checks/request-check.ts +0 -76
- package/source/utils/logging/health-monitor/core/health-check-runner.spec.ts +0 -70
- package/source/utils/logging/health-monitor/core/health-check-runner.ts +0 -138
- package/source/utils/logging/health-monitor/core/health-monitor.spec.ts +0 -58
- package/source/utils/logging/health-monitor/core/health-monitor.ts +0 -344
- package/source/utils/logging/health-monitor/core/scoring.spec.ts +0 -65
- package/source/utils/logging/health-monitor/core/scoring.ts +0 -91
- package/source/utils/logging/health-monitor/index.ts +0 -15
- package/source/utils/logging/health-monitor/instances.ts +0 -48
- package/source/utils/logging/health-monitor/middleware/http-middleware.spec.ts +0 -141
- package/source/utils/logging/health-monitor/middleware/http-middleware.ts +0 -75
- package/source/utils/logging/health-monitor/types.ts +0 -126
- package/source/utils/logging/index.spec.ts +0 -284
- package/source/utils/logging/index.ts +0 -236
- package/source/utils/logging/integration.spec.ts +0 -441
- package/source/utils/logging/log-method-factory.spec.ts +0 -573
- package/source/utils/logging/log-method-factory.ts +0 -233
- package/source/utils/logging/log-query/aggregation/aggregator.spec.ts +0 -277
- package/source/utils/logging/log-query/aggregation/aggregator.ts +0 -159
- package/source/utils/logging/log-query/aggregation/facet-generator.spec.ts +0 -159
- package/source/utils/logging/log-query/aggregation/facet-generator.ts +0 -47
- package/source/utils/logging/log-query/index.ts +0 -23
- package/source/utils/logging/log-query/query/filter-predicates.spec.ts +0 -247
- package/source/utils/logging/log-query/query/filter-predicates.ts +0 -154
- package/source/utils/logging/log-query/query/query-builder.spec.ts +0 -182
- package/source/utils/logging/log-query/query/query-builder.ts +0 -151
- package/source/utils/logging/log-query/query/query-engine.spec.ts +0 -214
- package/source/utils/logging/log-query/query/query-engine.ts +0 -45
- package/source/utils/logging/log-query/storage/circular-buffer.spec.ts +0 -143
- package/source/utils/logging/log-query/storage/circular-buffer.ts +0 -75
- package/source/utils/logging/log-query/storage/index-manager.spec.ts +0 -150
- package/source/utils/logging/log-query/storage/index-manager.ts +0 -71
- package/source/utils/logging/log-query/storage/log-storage.spec.ts +0 -257
- package/source/utils/logging/log-query/storage/log-storage.ts +0 -80
- package/source/utils/logging/log-query/types.ts +0 -163
- package/source/utils/logging/log-query/utils/helpers.spec.ts +0 -263
- package/source/utils/logging/log-query/utils/helpers.ts +0 -72
- package/source/utils/logging/log-query/utils/sorting.spec.ts +0 -182
- package/source/utils/logging/log-query/utils/sorting.ts +0 -61
- package/source/utils/logging/logger-provider.spec.ts +0 -262
- package/source/utils/logging/logger-provider.ts +0 -362
- package/source/utils/logging/performance.spec.ts +0 -209
- package/source/utils/logging/performance.ts +0 -757
- package/source/utils/logging/pino-logger.spec.ts +0 -425
- package/source/utils/logging/pino-logger.ts +0 -514
- package/source/utils/logging/redaction.spec.ts +0 -490
- package/source/utils/logging/redaction.ts +0 -267
- package/source/utils/logging/request-tracker.spec.ts +0 -1198
- package/source/utils/logging/request-tracker.ts +0 -803
- package/source/utils/logging/transports.spec.ts +0 -505
- package/source/utils/logging/transports.ts +0 -305
- package/source/utils/logging/types.ts +0 -216
- package/source/utils/message-builder.spec.ts +0 -179
- package/source/utils/message-builder.ts +0 -101
- package/source/utils/message-queue.tsx +0 -486
- package/source/utils/paste-detection.spec.ts +0 -69
- package/source/utils/paste-detection.ts +0 -124
- package/source/utils/paste-roundtrip.spec.ts +0 -442
- package/source/utils/paste-utils.spec.ts +0 -128
- package/source/utils/paste-utils.ts +0 -52
- package/source/utils/programming-language-helper.spec.ts +0 -74
- package/source/utils/programming-language-helper.ts +0 -32
- package/source/utils/prompt-assembly.spec.ts +0 -221
- package/source/utils/prompt-processor.ts +0 -173
- package/source/utils/tool-args-parser.spec.ts +0 -136
- package/source/utils/tool-args-parser.ts +0 -54
- package/source/utils/tool-cancellation.spec.ts +0 -230
- package/source/utils/tool-cancellation.ts +0 -28
- package/source/utils/tool-result-display.spec.tsx +0 -469
- package/source/utils/tool-result-display.tsx +0 -90
- package/source/utils/update-checker.spec.ts +0 -383
- package/source/utils/update-checker.ts +0 -183
- package/source/wizard/config-wizard.spec.tsx +0 -103
- package/source/wizard/config-wizard.tsx +0 -382
- package/source/wizard/steps/location-step.spec.tsx +0 -186
- package/source/wizard/steps/location-step.tsx +0 -147
- package/source/wizard/steps/mcp-step.spec.tsx +0 -607
- package/source/wizard/steps/mcp-step.tsx +0 -632
- package/source/wizard/steps/provider-step.spec.tsx +0 -342
- package/source/wizard/steps/provider-step.tsx +0 -957
- package/source/wizard/steps/summary-step.spec.tsx +0 -749
- package/source/wizard/steps/summary-step.tsx +0 -228
- package/source/wizard/templates/mcp-templates.spec.ts +0 -613
- package/source/wizard/templates/mcp-templates.ts +0 -570
- package/source/wizard/templates/provider-templates.spec.ts +0 -152
- package/source/wizard/templates/provider-templates.ts +0 -485
- package/source/wizard/utils/fetch-cloud-models.spec.ts +0 -428
- package/source/wizard/utils/fetch-cloud-models.ts +0 -223
- package/source/wizard/utils/fetch-local-models.spec.ts +0 -297
- package/source/wizard/utils/fetch-local-models.ts +0 -192
- package/source/wizard/validation-array.spec.ts +0 -264
- package/source/wizard/validation.spec.ts +0 -373
- 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.
|
|
4
|
+
"version": "0.3.2",
|
|
5
5
|
"description": "Coder",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"ai",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"build": "tsc && tsc-alias",
|
|
22
22
|
"dev": "tsc --watch",
|
|
23
23
|
"start": "node dist/cli.js",
|
|
24
|
-
"prepublishOnly": "
|
|
24
|
+
"prepublishOnly": "pnpm run build",
|
|
25
25
|
"prepare": "husky"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
packages:
|
|
2
|
+
- .
|
|
3
|
+
|
|
4
|
+
ignoredBuiltDependencies:
|
|
5
|
+
- protobufjs
|
|
6
|
+
|
|
7
|
+
onlyBuiltDependencies:
|
|
8
|
+
- esbuild
|
|
9
|
+
- keytar
|
|
10
|
+
|
|
11
|
+
overrides:
|
|
12
|
+
glob@>=10.2.0 <10.5.0: '>=10.5.0'
|
|
13
|
+
js-yaml@<3.14.2: '>=3.14.2'
|
|
14
|
+
js-yaml@>=4.0.0 <4.1.1: '>=4.1.1'
|
|
15
|
+
jws@<3.2.3: '>=3.2.3'
|
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);
|
package/scripts/fetch-models.js
DELETED
|
@@ -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"
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Update Nix package version and hashes for a new release
|
|
3
|
-
# Usage: ./scripts/update-nix-version.sh <version>
|
|
4
|
-
# Example: ./scripts/update-nix-version.sh 1.15.0
|
|
5
|
-
|
|
6
|
-
set -e
|
|
7
|
-
|
|
8
|
-
VERSION=$1
|
|
9
|
-
SKIP_VERIFY=$2
|
|
10
|
-
NIX_FILE="nix/packages/default/default.nix"
|
|
11
|
-
FAKE_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
|
12
|
-
|
|
13
|
-
# Color codes for output
|
|
14
|
-
RED='\033[0;31m'
|
|
15
|
-
GREEN='\033[0;32m'
|
|
16
|
-
YELLOW='\033[1;33m'
|
|
17
|
-
NC='\033[0m' # No Color
|
|
18
|
-
|
|
19
|
-
if [ -z "$VERSION" ]; then
|
|
20
|
-
echo -e "${RED}Error: Version number required${NC}"
|
|
21
|
-
echo "Usage: $0 <version> [--skip-verify]"
|
|
22
|
-
echo "Example: $0 1.15.0"
|
|
23
|
-
echo "Example: $0 1.15.0 --skip-verify"
|
|
24
|
-
exit 1
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
echo -e "${YELLOW}Updating Nix package to version ${VERSION}...${NC}"
|
|
28
|
-
echo ""
|
|
29
|
-
|
|
30
|
-
# Step 1: Update version in nix file
|
|
31
|
-
echo "Step 1: Updating version number in ${NIX_FILE}..."
|
|
32
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
33
|
-
sed -i '' "s|version = \".*\";|version = \"${VERSION}\";|" "$NIX_FILE"
|
|
34
|
-
else
|
|
35
|
-
sed -i "s|version = \".*\";|version = \"${VERSION}\";|" "$NIX_FILE"
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
# Step 2: Insert fake source hash
|
|
39
|
-
echo "Step 2: Using fake source hash to trigger hash calculation..."
|
|
40
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
41
|
-
sed -i '' "s|sha256 = \".*\";|sha256 = \"${FAKE_HASH}\";|" "$NIX_FILE"
|
|
42
|
-
else
|
|
43
|
-
sed -i "s|sha256 = \".*\";|sha256 = \"${FAKE_HASH}\";|" "$NIX_FILE"
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
# Step 3: Build to get the real source hash
|
|
47
|
-
echo "Step 3: Building package to get correct source hash..."
|
|
48
|
-
echo -e "${YELLOW}(This will fail - that's expected!)${NC}"
|
|
49
|
-
echo ""
|
|
50
|
-
|
|
51
|
-
BUILD_OUTPUT=$(nix build .#default 2>&1 || true)
|
|
52
|
-
SOURCE_HASH=$(echo "$BUILD_OUTPUT" | sed -n 's/.*got:[[:space:]]*\(sha256-[A-Za-z0-9+/=]*\).*/\1/p' | head -1)
|
|
53
|
-
|
|
54
|
-
if [ -z "$SOURCE_HASH" ]; then
|
|
55
|
-
echo -e "${RED}Error: Could not extract source hash from build output${NC}"
|
|
56
|
-
echo "Build output:"
|
|
57
|
-
echo "$BUILD_OUTPUT"
|
|
58
|
-
exit 1
|
|
59
|
-
fi
|
|
60
|
-
|
|
61
|
-
echo -e "${GREEN}Found source hash: ${SOURCE_HASH}${NC}"
|
|
62
|
-
echo ""
|
|
63
|
-
|
|
64
|
-
# Step 4: Update with real source hash
|
|
65
|
-
echo "Step 4: Updating with correct source hash..."
|
|
66
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
67
|
-
sed -i '' "s|sha256 = \".*\";|sha256 = \"${SOURCE_HASH}\";|" "$NIX_FILE"
|
|
68
|
-
else
|
|
69
|
-
sed -i "s|sha256 = \".*\";|sha256 = \"${SOURCE_HASH}\";|" "$NIX_FILE"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
# Step 5: Insert fake pnpmDeps hash
|
|
73
|
-
echo "Step 5: Using fake pnpmDeps hash to trigger hash calculation..."
|
|
74
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
75
|
-
sed -i '' "s|hash = \".*\";|hash = \"${FAKE_HASH}\";|" "$NIX_FILE"
|
|
76
|
-
else
|
|
77
|
-
sed -i "s|hash = \".*\";|hash = \"${FAKE_HASH}\";|" "$NIX_FILE"
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
# Step 6: Build to get the real pnpmDeps hash
|
|
81
|
-
echo "Step 6: Building package to get correct pnpmDeps hash..."
|
|
82
|
-
echo -e "${YELLOW}(This will fail - that's expected!)${NC}"
|
|
83
|
-
echo ""
|
|
84
|
-
|
|
85
|
-
BUILD_OUTPUT=$(nix build .#default 2>&1 || true)
|
|
86
|
-
PNPM_HASH=$(echo "$BUILD_OUTPUT" | sed -n 's/.*got:[[:space:]]*\(sha256-[A-Za-z0-9+/=]*\).*/\1/p' | head -1)
|
|
87
|
-
|
|
88
|
-
if [ -z "$PNPM_HASH" ]; then
|
|
89
|
-
echo -e "${RED}Error: Could not extract pnpmDeps hash from build output${NC}"
|
|
90
|
-
echo "Build output:"
|
|
91
|
-
echo "$BUILD_OUTPUT"
|
|
92
|
-
exit 1
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
echo -e "${GREEN}Found pnpmDeps hash: ${PNPM_HASH}${NC}"
|
|
96
|
-
echo ""
|
|
97
|
-
|
|
98
|
-
# Step 7: Update with real pnpmDeps hash
|
|
99
|
-
echo "Step 7: Updating with correct pnpmDeps hash..."
|
|
100
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
101
|
-
sed -i '' "s|hash = \".*\";|hash = \"${PNPM_HASH}\";|" "$NIX_FILE"
|
|
102
|
-
else
|
|
103
|
-
sed -i "s|hash = \".*\";|hash = \"${PNPM_HASH}\";|" "$NIX_FILE"
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# Step 8: Build again to verify (unless --skip-verify is passed)
|
|
107
|
-
if [ "$SKIP_VERIFY" = "--skip-verify" ]; then
|
|
108
|
-
echo "Step 8: Skipping verification build (--skip-verify flag passed)"
|
|
109
|
-
echo ""
|
|
110
|
-
echo -e "${GREEN}════════════════════════════════════════════════${NC}"
|
|
111
|
-
echo -e "${GREEN}Success! Nix package updated to v${VERSION}${NC}"
|
|
112
|
-
echo -e "${GREEN}════════════════════════════════════════════════${NC}"
|
|
113
|
-
echo ""
|
|
114
|
-
echo "Changes made to: ${NIX_FILE}"
|
|
115
|
-
echo ""
|
|
116
|
-
echo "Source hash: ${SOURCE_HASH}"
|
|
117
|
-
echo "pnpmDeps hash: ${PNPM_HASH}"
|
|
118
|
-
echo ""
|
|
119
|
-
echo -e "${YELLOW}Note: Verification build was skipped. Run 'nix build .#default' locally to verify.${NC}"
|
|
120
|
-
else
|
|
121
|
-
echo "Step 8: Verifying build with correct hashes..."
|
|
122
|
-
if nix build .#default; then
|
|
123
|
-
echo -e "${GREEN}✓ Build successful!${NC}"
|
|
124
|
-
echo ""
|
|
125
|
-
|
|
126
|
-
# Test the binary exists
|
|
127
|
-
echo "Step 9: Verifying binary exists..."
|
|
128
|
-
if [ -f "./result/bin/coder" ] && [ -x "./result/bin/coder" ]; then
|
|
129
|
-
echo -e "${GREEN}✓ Binary exists and is executable!${NC}"
|
|
130
|
-
else
|
|
131
|
-
echo -e "${YELLOW}⚠ Warning: Binary not found or not executable${NC}"
|
|
132
|
-
fi
|
|
133
|
-
|
|
134
|
-
# Clean up
|
|
135
|
-
rm -f result
|
|
136
|
-
|
|
137
|
-
echo ""
|
|
138
|
-
echo -e "${GREEN}════════════════════════════════════════════════${NC}"
|
|
139
|
-
echo -e "${GREEN}Success! Nix package updated to v${VERSION}${NC}"
|
|
140
|
-
echo -e "${GREEN}════════════════════════════════════════════════${NC}"
|
|
141
|
-
echo ""
|
|
142
|
-
echo "Changes made to: ${NIX_FILE}"
|
|
143
|
-
echo ""
|
|
144
|
-
echo "Source hash: ${SOURCE_HASH}"
|
|
145
|
-
echo "pnpmDeps hash: ${PNPM_HASH}"
|
|
146
|
-
echo ""
|
|
147
|
-
echo "Next steps:"
|
|
148
|
-
echo " 1. Review the changes: git diff ${NIX_FILE}"
|
|
149
|
-
echo " 2. Commit: git add ${NIX_FILE}"
|
|
150
|
-
echo " 3. Commit: git commit -m 'chore: update nix package to v${VERSION}'"
|
|
151
|
-
echo " 4. Push: git push"
|
|
152
|
-
else
|
|
153
|
-
echo -e "${RED}✗ Build failed with correct hashes${NC}"
|
|
154
|
-
echo "Please check the build output above for errors."
|
|
155
|
-
exit 1
|
|
156
|
-
fi
|
|
157
|
-
fi
|