@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.
- package/package.json +5 -2
- package/.editorconfig +0 -16
- package/.env.example +0 -63
- package/.gitattributes +0 -1
- package/.semgrepignore +0 -19
- package/coder-dummy-file.ts +0 -52
- package/coder.config.example.json +0 -59
- package/coder.config.json +0 -13
- 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
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Health check middleware for HTTP servers
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Health check middleware for HTTP servers
|
|
7
|
-
*/
|
|
8
|
-
export function healthCheckMiddleware(healthChecks: {
|
|
9
|
-
full: () => Promise<{
|
|
10
|
-
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
11
|
-
timestamp: string;
|
|
12
|
-
score: number;
|
|
13
|
-
checks: Array<{
|
|
14
|
-
name: string;
|
|
15
|
-
status: 'pass' | 'fail' | 'warn';
|
|
16
|
-
score: number;
|
|
17
|
-
}>;
|
|
18
|
-
}>;
|
|
19
|
-
ready: () => Promise<boolean>;
|
|
20
|
-
alive: () => boolean;
|
|
21
|
-
metrics: () => unknown;
|
|
22
|
-
}) {
|
|
23
|
-
return async (
|
|
24
|
-
req: {path: string},
|
|
25
|
-
res: {
|
|
26
|
-
status: (code: number) => {
|
|
27
|
-
json: (data: unknown) => void;
|
|
28
|
-
};
|
|
29
|
-
json: (data: unknown) => void;
|
|
30
|
-
},
|
|
31
|
-
next: () => void,
|
|
32
|
-
) => {
|
|
33
|
-
if (req.path === '/health') {
|
|
34
|
-
try {
|
|
35
|
-
const health = await healthChecks.full();
|
|
36
|
-
const statusCode =
|
|
37
|
-
health.status === 'healthy'
|
|
38
|
-
? 200
|
|
39
|
-
: health.status === 'degraded'
|
|
40
|
-
? 200
|
|
41
|
-
: 503;
|
|
42
|
-
|
|
43
|
-
res.status(statusCode).json({
|
|
44
|
-
status: health.status,
|
|
45
|
-
timestamp: health.timestamp,
|
|
46
|
-
score: health.score,
|
|
47
|
-
checks: health.checks.map(check => ({
|
|
48
|
-
name: check.name,
|
|
49
|
-
status: check.status,
|
|
50
|
-
score: check.score,
|
|
51
|
-
})),
|
|
52
|
-
});
|
|
53
|
-
} catch (error) {
|
|
54
|
-
res.status(503).json({
|
|
55
|
-
status: 'unhealthy',
|
|
56
|
-
timestamp: new Date().toISOString(),
|
|
57
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
} else if (req.path === '/health/ready') {
|
|
61
|
-
const ready = await healthChecks.ready();
|
|
62
|
-
const statusCode = ready ? 200 : 503;
|
|
63
|
-
res.status(statusCode).json({ready});
|
|
64
|
-
} else if (req.path === '/health/live') {
|
|
65
|
-
const alive = healthChecks.alive();
|
|
66
|
-
const statusCode = alive ? 200 : 503;
|
|
67
|
-
res.status(statusCode).json({alive});
|
|
68
|
-
} else if (req.path === '/metrics') {
|
|
69
|
-
const metrics = healthChecks.metrics();
|
|
70
|
-
res.json(metrics);
|
|
71
|
-
} else {
|
|
72
|
-
next();
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for health monitoring system
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Health check result interface
|
|
7
|
-
*/
|
|
8
|
-
export interface HealthCheckResult {
|
|
9
|
-
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
10
|
-
score: number; // 0-100
|
|
11
|
-
checks: HealthCheck[];
|
|
12
|
-
timestamp: string;
|
|
13
|
-
duration: number;
|
|
14
|
-
correlationId: string;
|
|
15
|
-
summary: {
|
|
16
|
-
total: number;
|
|
17
|
-
passed: number;
|
|
18
|
-
failed: number;
|
|
19
|
-
warnings: number;
|
|
20
|
-
};
|
|
21
|
-
recommendations: string[];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Individual health check interface
|
|
26
|
-
*/
|
|
27
|
-
export interface HealthCheck {
|
|
28
|
-
name: string;
|
|
29
|
-
status: 'pass' | 'fail' | 'warn';
|
|
30
|
-
score: number; // 0-100
|
|
31
|
-
duration: number;
|
|
32
|
-
message?: string;
|
|
33
|
-
details?: Record<string, unknown>;
|
|
34
|
-
error?: string;
|
|
35
|
-
threshold?: {
|
|
36
|
-
warning: number;
|
|
37
|
-
critical: number;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* System metrics interface
|
|
43
|
-
*/
|
|
44
|
-
export interface SystemMetrics {
|
|
45
|
-
timestamp: string;
|
|
46
|
-
memory: {
|
|
47
|
-
heapUsed: number;
|
|
48
|
-
heapTotal: number;
|
|
49
|
-
external: number;
|
|
50
|
-
rss: number;
|
|
51
|
-
heapUsagePercent: number;
|
|
52
|
-
};
|
|
53
|
-
cpu: {
|
|
54
|
-
usage: number;
|
|
55
|
-
loadAverage: number[];
|
|
56
|
-
};
|
|
57
|
-
process: {
|
|
58
|
-
uptime: number;
|
|
59
|
-
pid: number;
|
|
60
|
-
nodeVersion: string;
|
|
61
|
-
platform: string;
|
|
62
|
-
arch: string;
|
|
63
|
-
};
|
|
64
|
-
logging: {
|
|
65
|
-
totalLogEntries: number;
|
|
66
|
-
logRate: number; // entries per second
|
|
67
|
-
errorRate: number; // errors per second
|
|
68
|
-
averageLogSize: number;
|
|
69
|
-
oldestLogEntry?: string;
|
|
70
|
-
newestLogEntry?: string;
|
|
71
|
-
};
|
|
72
|
-
requests: {
|
|
73
|
-
totalRequests: number;
|
|
74
|
-
activeRequests: number;
|
|
75
|
-
averageDuration: number;
|
|
76
|
-
errorRate: number;
|
|
77
|
-
requestsPerSecond: number;
|
|
78
|
-
};
|
|
79
|
-
performance: {
|
|
80
|
-
operationCount: number;
|
|
81
|
-
averageDuration: number;
|
|
82
|
-
slowOperations: number;
|
|
83
|
-
memoryIntensiveOps: number;
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Health check configuration
|
|
89
|
-
*/
|
|
90
|
-
export interface HealthCheckConfig {
|
|
91
|
-
enabled: boolean;
|
|
92
|
-
interval: number; // ms between checks
|
|
93
|
-
timeout: number; // ms per check
|
|
94
|
-
thresholds: {
|
|
95
|
-
memory: {
|
|
96
|
-
heapUsageWarning: number; // percentage
|
|
97
|
-
heapUsageCritical: number;
|
|
98
|
-
externalWarning: number; // MB
|
|
99
|
-
externalCritical: number;
|
|
100
|
-
};
|
|
101
|
-
performance: {
|
|
102
|
-
averageDurationWarning: number; // ms
|
|
103
|
-
averageDurationCritical: number;
|
|
104
|
-
errorRateWarning: number; // percentage
|
|
105
|
-
errorRateCritical: number;
|
|
106
|
-
};
|
|
107
|
-
logging: {
|
|
108
|
-
logRateWarning: number; // logs per second
|
|
109
|
-
logRateCritical: number;
|
|
110
|
-
errorRateWarning: number; // percentage
|
|
111
|
-
errorRateCritical: number;
|
|
112
|
-
};
|
|
113
|
-
requests: {
|
|
114
|
-
durationWarning: number; // ms
|
|
115
|
-
durationCritical: number;
|
|
116
|
-
errorRateWarning: number; // percentage
|
|
117
|
-
errorRateCritical: number;
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
alerts: {
|
|
121
|
-
enabled: boolean;
|
|
122
|
-
channels: ('console' | 'file' | 'webhook')[];
|
|
123
|
-
webhookUrl?: string;
|
|
124
|
-
cooldown: number; // ms between alerts
|
|
125
|
-
};
|
|
126
|
-
}
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
import {existsSync, mkdirSync, rmSync, writeFileSync} from 'fs';
|
|
2
|
-
import {tmpdir} from 'os';
|
|
3
|
-
import {join} from 'path';
|
|
4
|
-
import test from 'ava';
|
|
5
|
-
|
|
6
|
-
console.log(`\nlogging/index.spec.ts`);
|
|
7
|
-
|
|
8
|
-
// Import the logging functions we want to test
|
|
9
|
-
import {
|
|
10
|
-
createChildLogger,
|
|
11
|
-
end,
|
|
12
|
-
flush,
|
|
13
|
-
getLogger,
|
|
14
|
-
getLoggerConfig,
|
|
15
|
-
initializeLogger,
|
|
16
|
-
isLevelEnabled,
|
|
17
|
-
log,
|
|
18
|
-
console as structuredConsole,
|
|
19
|
-
} from './index.js';
|
|
20
|
-
|
|
21
|
-
// Import logger provider for reset functionality
|
|
22
|
-
import {LoggerProvider} from './logger-provider.js';
|
|
23
|
-
|
|
24
|
-
// Import types for testing
|
|
25
|
-
import type {LogLevel, LoggerConfig} from './types.js';
|
|
26
|
-
|
|
27
|
-
// Create a temporary test directory
|
|
28
|
-
const testDir = join(tmpdir(), `coder-logging-test-${Date.now()}`);
|
|
29
|
-
|
|
30
|
-
test.before(() => {
|
|
31
|
-
// Create test directory
|
|
32
|
-
mkdirSync(testDir, {recursive: true});
|
|
33
|
-
|
|
34
|
-
// Set test environment variables
|
|
35
|
-
process.env.NODE_ENV = 'test';
|
|
36
|
-
process.env.LOG_LEVEL = 'debug';
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test.after.always(async () => {
|
|
40
|
-
// Clean up test directory
|
|
41
|
-
if (existsSync(testDir)) {
|
|
42
|
-
rmSync(testDir, {recursive: true, force: true});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Reset logger state
|
|
46
|
-
await end();
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('initializeLogger creates a logger instance', t => {
|
|
50
|
-
const logger = initializeLogger({
|
|
51
|
-
level: 'debug',
|
|
52
|
-
pretty: true,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
t.truthy(logger, 'Logger should be created');
|
|
56
|
-
t.is(typeof logger.info, 'function', 'Logger should have info method');
|
|
57
|
-
t.is(typeof logger.error, 'function', 'Logger should have error method');
|
|
58
|
-
t.is(typeof logger.warn, 'function', 'Logger should have warn method');
|
|
59
|
-
t.is(typeof logger.debug, 'function', 'Logger should have debug method');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('getLogger returns the same logger instance', t => {
|
|
63
|
-
// Reset logger state first
|
|
64
|
-
const logger1 = initializeLogger({level: 'info'});
|
|
65
|
-
const logger2 = getLogger();
|
|
66
|
-
const logger3 = getLogger();
|
|
67
|
-
|
|
68
|
-
t.is(logger1, logger2, 'Should return same instance');
|
|
69
|
-
t.is(logger2, logger3, 'Should return same instance');
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
test('getLogger auto-initializes with defaults', async t => {
|
|
73
|
-
// Reset logger state
|
|
74
|
-
await end();
|
|
75
|
-
|
|
76
|
-
const logger = getLogger();
|
|
77
|
-
|
|
78
|
-
t.truthy(logger, 'Should auto-initialize logger');
|
|
79
|
-
t.is(typeof logger.info, 'function', 'Should have info method');
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
test('getLoggerConfig returns current configuration', t => {
|
|
83
|
-
const config: LoggerConfig = {
|
|
84
|
-
level: 'warn',
|
|
85
|
-
pretty: false,
|
|
86
|
-
redact: ['apiKey'],
|
|
87
|
-
correlation: true,
|
|
88
|
-
serialize: true,
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
initializeLogger(config);
|
|
92
|
-
const retrievedConfig = getLoggerConfig();
|
|
93
|
-
|
|
94
|
-
t.truthy(retrievedConfig, 'Should return configuration');
|
|
95
|
-
// Note: The logger provider may apply default configuration overrides
|
|
96
|
-
// so we check that the level is set appropriately rather than exact match
|
|
97
|
-
t.truthy(retrievedConfig!.level, 'Should have level');
|
|
98
|
-
t.is(retrievedConfig!.pretty, config.pretty, 'Should match pretty setting');
|
|
99
|
-
// Check that the redaction rules include our custom rule
|
|
100
|
-
t.true(
|
|
101
|
-
retrievedConfig!.redact.includes('apiKey'),
|
|
102
|
-
'Should include custom redaction rule',
|
|
103
|
-
);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
test('createChildLogger creates child with bindings', t => {
|
|
107
|
-
const parentLogger = initializeLogger({level: 'debug'});
|
|
108
|
-
const childBindings = {module: 'test', userId: '123'};
|
|
109
|
-
const childLogger = createChildLogger(childBindings);
|
|
110
|
-
|
|
111
|
-
t.truthy(childLogger, 'Should create child logger');
|
|
112
|
-
t.is(typeof childLogger.info, 'function', 'Child should have info method');
|
|
113
|
-
t.not(parentLogger, childLogger, 'Should be different instance');
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
test('isLevelEnabled checks log level correctly', t => {
|
|
117
|
-
// Reset logger to ensure clean state
|
|
118
|
-
const provider = LoggerProvider.getInstance();
|
|
119
|
-
provider.reset();
|
|
120
|
-
|
|
121
|
-
// Initialize with debug level to ensure logging is enabled in tests
|
|
122
|
-
initializeLogger({level: 'debug'});
|
|
123
|
-
|
|
124
|
-
// With debug level, these should all be enabled
|
|
125
|
-
t.true(
|
|
126
|
-
isLevelEnabled('debug'),
|
|
127
|
-
'Debug should be enabled',
|
|
128
|
-
);
|
|
129
|
-
t.true(
|
|
130
|
-
isLevelEnabled('trace'),
|
|
131
|
-
'Trace should be enabled',
|
|
132
|
-
);
|
|
133
|
-
t.true(isLevelEnabled('warn'), 'Warn should be enabled');
|
|
134
|
-
t.true(isLevelEnabled('error'), 'Error should be enabled');
|
|
135
|
-
t.true(isLevelEnabled('fatal'), 'Fatal should be enabled');
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
test('log convenience methods work correctly', t => {
|
|
139
|
-
const logger = initializeLogger({level: 'debug'});
|
|
140
|
-
|
|
141
|
-
t.notThrows(() => {
|
|
142
|
-
log.debug('Debug message');
|
|
143
|
-
log.info('Info message');
|
|
144
|
-
log.warn('Warning message');
|
|
145
|
-
log.error('Error message');
|
|
146
|
-
log.fatal('Fatal message');
|
|
147
|
-
log.http('HTTP message');
|
|
148
|
-
log.trace('Trace message');
|
|
149
|
-
}, 'Log methods should not throw');
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
test('structured console facade provides backward compatibility', t => {
|
|
153
|
-
t.notThrows(() => {
|
|
154
|
-
structuredConsole.log('Test log message');
|
|
155
|
-
structuredConsole.info('Test info message');
|
|
156
|
-
structuredConsole.warn('Test warning message');
|
|
157
|
-
structuredConsole.error('Test error message');
|
|
158
|
-
structuredConsole.debug('Test debug message');
|
|
159
|
-
}, 'Console facade methods should not throw');
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
test('flush and end methods work correctly', async t => {
|
|
163
|
-
const logger = initializeLogger({level: 'info'});
|
|
164
|
-
|
|
165
|
-
logger.info('Test message for flushing');
|
|
166
|
-
|
|
167
|
-
await t.notThrowsAsync(async () => {
|
|
168
|
-
await flush();
|
|
169
|
-
await end();
|
|
170
|
-
}, 'Flush and end should not throw');
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
test('logger handles different log levels correctly', t => {
|
|
174
|
-
const logger = initializeLogger({level: 'warn'});
|
|
175
|
-
|
|
176
|
-
// These should be filtered out
|
|
177
|
-
t.notThrows(() => {
|
|
178
|
-
logger.trace('trace message');
|
|
179
|
-
logger.debug('debug message');
|
|
180
|
-
logger.info('info message');
|
|
181
|
-
logger.http('http message');
|
|
182
|
-
}, 'Filtered levels should not throw');
|
|
183
|
-
|
|
184
|
-
// These should be logged
|
|
185
|
-
t.notThrows(() => {
|
|
186
|
-
logger.warn('warn message');
|
|
187
|
-
logger.error('error message');
|
|
188
|
-
logger.fatal('fatal message');
|
|
189
|
-
}, 'Active levels should not throw');
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
test('logger handles structured data correctly', t => {
|
|
193
|
-
const logger = initializeLogger({level: 'debug'});
|
|
194
|
-
|
|
195
|
-
const testData = {
|
|
196
|
-
userId: '123',
|
|
197
|
-
action: 'login',
|
|
198
|
-
metadata: {ip: '127.0.0.1', userAgent: 'test-agent'},
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
t.notThrows(() => {
|
|
202
|
-
logger.info('User action', testData);
|
|
203
|
-
logger.warn('Warning with data', {type: 'validation', details: testData});
|
|
204
|
-
logger.error('Error with context', {
|
|
205
|
-
error: new Error('test'),
|
|
206
|
-
context: testData,
|
|
207
|
-
});
|
|
208
|
-
}, 'Structured data should be handled correctly');
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
test('logger handles edge cases gracefully', t => {
|
|
212
|
-
const logger = initializeLogger({level: 'debug'});
|
|
213
|
-
|
|
214
|
-
// Empty message
|
|
215
|
-
t.notThrows(() => {
|
|
216
|
-
logger.info('');
|
|
217
|
-
logger.info(null as any);
|
|
218
|
-
logger.info(undefined as any);
|
|
219
|
-
}, 'Edge cases should not throw');
|
|
220
|
-
|
|
221
|
-
// Large objects
|
|
222
|
-
const largeObject = {data: 'x'.repeat(10000)};
|
|
223
|
-
t.notThrows(() => {
|
|
224
|
-
logger.info('Large object', largeObject);
|
|
225
|
-
}, 'Large objects should be handled');
|
|
226
|
-
|
|
227
|
-
// Circular references
|
|
228
|
-
const circular: any = {a: 1};
|
|
229
|
-
circular.self = circular;
|
|
230
|
-
t.notThrows(() => {
|
|
231
|
-
logger.info('Circular reference', circular);
|
|
232
|
-
}, 'Circular references should be handled');
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
test('logger maintains correlation context', t => {
|
|
236
|
-
const logger = initializeLogger({
|
|
237
|
-
level: 'debug',
|
|
238
|
-
correlation: true,
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
t.notThrows(() => {
|
|
242
|
-
logger.info('Message with correlation');
|
|
243
|
-
logger.child({requestId: 'req-123'}).info('Child message');
|
|
244
|
-
}, 'Correlation context should be maintained');
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
test('logger respects redaction rules', t => {
|
|
248
|
-
const logger = initializeLogger({
|
|
249
|
-
level: 'debug',
|
|
250
|
-
redact: ['apiKey', 'token', 'password', 'secret'],
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
const sensitiveData = {
|
|
254
|
-
username: 'user123',
|
|
255
|
-
apiKey: 'sk-1234567890',
|
|
256
|
-
password: 'secret123',
|
|
257
|
-
token: 'abc123xyz',
|
|
258
|
-
safeField: 'public-data',
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
t.notThrows(() => {
|
|
262
|
-
logger.info('Login attempt', sensitiveData);
|
|
263
|
-
}, 'Redaction should not throw errors');
|
|
264
|
-
|
|
265
|
-
// The actual redaction would be verified by checking log output,
|
|
266
|
-
// but that requires more complex test setup with output capture
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
test('multiple logger instances do not interfere', t => {
|
|
270
|
-
const logger1 = initializeLogger({
|
|
271
|
-
level: 'debug',
|
|
272
|
-
pretty: true,
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
// This should return the existing instance
|
|
276
|
-
const logger2 = getLogger();
|
|
277
|
-
|
|
278
|
-
t.is(logger1, logger2, 'Should return same instance');
|
|
279
|
-
|
|
280
|
-
t.notThrows(() => {
|
|
281
|
-
logger1.info('Message from logger1');
|
|
282
|
-
logger2.debug('Message from logger2');
|
|
283
|
-
}, 'Multiple references should work');
|
|
284
|
-
});
|