@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
|
@@ -1,474 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Correlation ID management for tracking requests across components
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {randomBytes} from 'crypto';
|
|
6
|
-
import {AsyncLocalStorage} from 'async_hooks';
|
|
7
|
-
import type {
|
|
8
|
-
CorrelationContext,
|
|
9
|
-
CorrelationHttpRequest,
|
|
10
|
-
CorrelationHttpResponse,
|
|
11
|
-
} from './types.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Async local storage for correlation context
|
|
15
|
-
* Provides thread-safe context storage across async operations
|
|
16
|
-
*/
|
|
17
|
-
export const correlationStorage = new AsyncLocalStorage<CorrelationContext>();
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Correlation Context Monitoring Metrics
|
|
21
|
-
* Tracks usage, performance, and potential issues for production monitoring
|
|
22
|
-
*/
|
|
23
|
-
const correlationMonitoring = {
|
|
24
|
-
contextsCreated: 0,
|
|
25
|
-
activeContexts: 0,
|
|
26
|
-
errors: 0,
|
|
27
|
-
lastError: null as string | null,
|
|
28
|
-
lastErrorTime: 0,
|
|
29
|
-
startTime: Date.now(),
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Legacy context has been removed in favor of AsyncLocalStorage-only approach
|
|
34
|
-
* This eliminates race conditions in concurrent operations
|
|
35
|
-
* All code should now use withCorrelationContext() or withNewCorrelationContext()
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Get correlation context monitoring metrics
|
|
40
|
-
* Provides insights into context usage, performance, and health
|
|
41
|
-
*/
|
|
42
|
-
export function getCorrelationMonitoring(): typeof correlationMonitoring {
|
|
43
|
-
return {...correlationMonitoring};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Log correlation context monitoring metrics
|
|
48
|
-
* Useful for periodic logging of system health
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
export function logCorrelationMonitoring(
|
|
52
|
-
level: 'debug' | 'info' | 'warn' | 'error' = 'info',
|
|
53
|
-
): void {
|
|
54
|
-
const metrics = getCorrelationMonitoring();
|
|
55
|
-
const uptime = Date.now() - metrics.startTime;
|
|
56
|
-
const uptimeMinutes = Math.floor(uptime / (1000 * 60));
|
|
57
|
-
|
|
58
|
-
const errorRate =
|
|
59
|
-
metrics.contextsCreated > 0
|
|
60
|
-
? ((metrics.errors / metrics.contextsCreated) * 100).toFixed(2) + '%'
|
|
61
|
-
: '0%';
|
|
62
|
-
|
|
63
|
-
const message = `
|
|
64
|
-
[Correlation Monitoring]
|
|
65
|
-
- Uptime: ${uptimeMinutes} minutes
|
|
66
|
-
- Contexts Created: ${metrics.contextsCreated}
|
|
67
|
-
- Active Contexts: ${metrics.activeContexts}
|
|
68
|
-
- Errors: ${metrics.errors}
|
|
69
|
-
- Error Rate: ${errorRate}
|
|
70
|
-
- Last Error: ${metrics.lastError || 'None'}`;
|
|
71
|
-
|
|
72
|
-
switch (level) {
|
|
73
|
-
case 'debug':
|
|
74
|
-
console.debug(message);
|
|
75
|
-
break;
|
|
76
|
-
case 'info':
|
|
77
|
-
console.info(message);
|
|
78
|
-
break;
|
|
79
|
-
case 'warn':
|
|
80
|
-
console.warn(message);
|
|
81
|
-
break;
|
|
82
|
-
case 'error':
|
|
83
|
-
console.error(message);
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Reset correlation context monitoring metrics
|
|
90
|
-
* Useful for testing or periodic reporting
|
|
91
|
-
*/
|
|
92
|
-
export function resetCorrelationMonitoring(): void {
|
|
93
|
-
correlationMonitoring.contextsCreated = 0;
|
|
94
|
-
correlationMonitoring.activeContexts = 0;
|
|
95
|
-
correlationMonitoring.errors = 0;
|
|
96
|
-
correlationMonitoring.lastError = null;
|
|
97
|
-
correlationMonitoring.lastErrorTime = 0;
|
|
98
|
-
correlationMonitoring.startTime = Date.now();
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Perform health check on correlation context system
|
|
103
|
-
* Verifies that the AsyncLocalStorage context system is functioning properly
|
|
104
|
-
*/
|
|
105
|
-
export function checkCorrelationHealth(): {
|
|
106
|
-
healthy: boolean;
|
|
107
|
-
message: string;
|
|
108
|
-
metrics: typeof correlationMonitoring;
|
|
109
|
-
} {
|
|
110
|
-
try {
|
|
111
|
-
// Test basic context creation and retrieval
|
|
112
|
-
const testContext: CorrelationContext = {
|
|
113
|
-
id: 'health-check-' + generateShortCorrelationId(),
|
|
114
|
-
metadata: {healthCheck: true, timestamp: Date.now()},
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
let contextWorking = false;
|
|
118
|
-
withCorrelationContext(testContext, () => {
|
|
119
|
-
const current = getCurrentCorrelationContext();
|
|
120
|
-
contextWorking = current?.id === testContext.id;
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
if (!contextWorking) {
|
|
124
|
-
return {
|
|
125
|
-
healthy: false,
|
|
126
|
-
message: 'Correlation context system failed basic functionality test',
|
|
127
|
-
metrics: getCorrelationMonitoring(),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Check for excessive errors
|
|
132
|
-
const errorRate =
|
|
133
|
-
correlationMonitoring.contextsCreated > 0
|
|
134
|
-
? correlationMonitoring.errors / correlationMonitoring.contextsCreated
|
|
135
|
-
: 0;
|
|
136
|
-
|
|
137
|
-
if (errorRate > 0.1) {
|
|
138
|
-
// More than 10% error rate
|
|
139
|
-
return {
|
|
140
|
-
healthy: false,
|
|
141
|
-
message: `High error rate detected: ${(errorRate * 100).toFixed(1)}%`,
|
|
142
|
-
metrics: getCorrelationMonitoring(),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return {
|
|
147
|
-
healthy: true,
|
|
148
|
-
message: 'Correlation context system is healthy',
|
|
149
|
-
metrics: getCorrelationMonitoring(),
|
|
150
|
-
};
|
|
151
|
-
} catch (error) {
|
|
152
|
-
return {
|
|
153
|
-
healthy: false,
|
|
154
|
-
message: `Health check failed: ${
|
|
155
|
-
error instanceof Error ? error.message : String(error)
|
|
156
|
-
}`,
|
|
157
|
-
metrics: getCorrelationMonitoring(),
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Generate a new correlation ID
|
|
164
|
-
*/
|
|
165
|
-
export function generateCorrelationId(): string {
|
|
166
|
-
// Generate 16-byte random hex string (32 characters)
|
|
167
|
-
return randomBytes(16).toString('hex');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Generate a short correlation ID (8 characters) for display
|
|
172
|
-
*/
|
|
173
|
-
export function generateShortCorrelationId(): string {
|
|
174
|
-
// Generate 4-byte random hex string (8 characters)
|
|
175
|
-
return randomBytes(4).toString('hex');
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Create a new correlation context with specific ID
|
|
180
|
-
*/
|
|
181
|
-
export function createCorrelationContextWithId(
|
|
182
|
-
id: string,
|
|
183
|
-
metadata?: Record<string, unknown>,
|
|
184
|
-
): CorrelationContext {
|
|
185
|
-
return {
|
|
186
|
-
id,
|
|
187
|
-
metadata,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Create a new correlation context with optional parent ID
|
|
193
|
-
*/
|
|
194
|
-
export function createCorrelationContext(
|
|
195
|
-
parentId?: string,
|
|
196
|
-
metadata?: Record<string, unknown>,
|
|
197
|
-
): CorrelationContext {
|
|
198
|
-
return {
|
|
199
|
-
id: generateCorrelationId(),
|
|
200
|
-
parentId,
|
|
201
|
-
metadata,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Get the current correlation context
|
|
207
|
-
* Now uses AsyncLocalStorage exclusively - no legacy fallback
|
|
208
|
-
*/
|
|
209
|
-
export function getCurrentCorrelationContext(): CorrelationContext | null {
|
|
210
|
-
const asyncContext = correlationStorage.getStore();
|
|
211
|
-
return asyncContext || null;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* Run a function with a specific correlation context
|
|
216
|
-
*/
|
|
217
|
-
export function withCorrelationContext<T>(
|
|
218
|
-
context: CorrelationContext,
|
|
219
|
-
fn: () => T,
|
|
220
|
-
): T {
|
|
221
|
-
try {
|
|
222
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
223
|
-
console.debug(`[Correlation] Context started: ${context.id}`);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
correlationMonitoring.activeContexts++;
|
|
227
|
-
const result = correlationStorage.run(context, fn);
|
|
228
|
-
correlationMonitoring.activeContexts--;
|
|
229
|
-
|
|
230
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
231
|
-
console.debug(`[Correlation] Context completed: ${context.id}`);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return result;
|
|
235
|
-
} catch (error) {
|
|
236
|
-
correlationMonitoring.errors++;
|
|
237
|
-
correlationMonitoring.lastError =
|
|
238
|
-
error instanceof Error ? error.message : String(error);
|
|
239
|
-
correlationMonitoring.lastErrorTime = Date.now();
|
|
240
|
-
correlationMonitoring.activeContexts--;
|
|
241
|
-
|
|
242
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
243
|
-
console.error(`[Correlation] Context error: ${context.id}`, error); // nosemgrep
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
throw error;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Run a function with a new correlation context
|
|
252
|
-
*/
|
|
253
|
-
export function withNewCorrelationContext<T>(
|
|
254
|
-
fn: (context: CorrelationContext) => T,
|
|
255
|
-
correlationId?: string,
|
|
256
|
-
metadata?: Record<string, unknown>,
|
|
257
|
-
): T {
|
|
258
|
-
const context = correlationId
|
|
259
|
-
? createCorrelationContextWithId(correlationId, metadata)
|
|
260
|
-
: createCorrelationContext(undefined, metadata);
|
|
261
|
-
|
|
262
|
-
correlationMonitoring.contextsCreated++;
|
|
263
|
-
|
|
264
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
265
|
-
console.debug(`[Correlation] New context created: ${context.id}`);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
try {
|
|
269
|
-
correlationMonitoring.activeContexts++;
|
|
270
|
-
const result = correlationStorage.run(context, () => fn(context));
|
|
271
|
-
correlationMonitoring.activeContexts--;
|
|
272
|
-
|
|
273
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
274
|
-
console.debug(`[Correlation] New context completed: ${context.id}`);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
return result;
|
|
278
|
-
} catch (error) {
|
|
279
|
-
correlationMonitoring.errors++;
|
|
280
|
-
correlationMonitoring.lastError =
|
|
281
|
-
error instanceof Error ? error.message : String(error);
|
|
282
|
-
correlationMonitoring.lastErrorTime = Date.now();
|
|
283
|
-
correlationMonitoring.activeContexts--;
|
|
284
|
-
|
|
285
|
-
if (process.env.CODER_CORRELATION_DEBUG === 'true') {
|
|
286
|
-
console.error(`[Correlation] New context error: ${context.id}`, error); // nosemgrep
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
throw error;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Get the correlation ID for the current context
|
|
295
|
-
*/
|
|
296
|
-
export function getCorrelationId(): string | null {
|
|
297
|
-
const asyncContext = correlationStorage.getStore();
|
|
298
|
-
return asyncContext?.id || null;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Check if correlation is enabled
|
|
303
|
-
*/
|
|
304
|
-
export function isCorrelationEnabled(): boolean {
|
|
305
|
-
return process.env.CODER_CORRELATION_ENABLED !== 'false';
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Get correlation header for HTTP requests
|
|
310
|
-
*/
|
|
311
|
-
export function getCorrelationHeader():
|
|
312
|
-
| {'X-Correlation-ID': string}
|
|
313
|
-
| Record<string, never> {
|
|
314
|
-
const correlationId = getCorrelationId();
|
|
315
|
-
if (!correlationId || !isCorrelationEnabled()) {
|
|
316
|
-
return {};
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
return {
|
|
320
|
-
'X-Correlation-ID': correlationId,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Extract correlation ID from HTTP headers
|
|
326
|
-
*/
|
|
327
|
-
export function extractCorrelationId(
|
|
328
|
-
headers: Record<string, string>,
|
|
329
|
-
): string | null {
|
|
330
|
-
// Try various header names
|
|
331
|
-
const possibleHeaders = [
|
|
332
|
-
'x-correlation-id',
|
|
333
|
-
'x-request-id',
|
|
334
|
-
'x-trace-id',
|
|
335
|
-
'x-span-id',
|
|
336
|
-
'correlation-id',
|
|
337
|
-
'request-id',
|
|
338
|
-
'trace-id',
|
|
339
|
-
'span-id',
|
|
340
|
-
];
|
|
341
|
-
|
|
342
|
-
for (const header of possibleHeaders) {
|
|
343
|
-
const value = headers[header] || headers[header.toUpperCase()];
|
|
344
|
-
if (value && typeof value === 'string') {
|
|
345
|
-
return value;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
return null;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
/**
|
|
353
|
-
* Create a correlation context from HTTP headers
|
|
354
|
-
*/
|
|
355
|
-
export function createCorrelationFromHeaders(
|
|
356
|
-
headers: Record<string, string>,
|
|
357
|
-
metadata?: Record<string, unknown>,
|
|
358
|
-
): CorrelationContext | null {
|
|
359
|
-
if (!isCorrelationEnabled()) {
|
|
360
|
-
return null;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
const correlationId = extractCorrelationId(headers);
|
|
364
|
-
if (correlationId) {
|
|
365
|
-
return createCorrelationContextWithId(correlationId, metadata);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
return createCorrelationContext(undefined, metadata);
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Get correlation metadata
|
|
373
|
-
*/
|
|
374
|
-
export function getCorrelationMetadata(key?: string): unknown {
|
|
375
|
-
const asyncContext = correlationStorage.getStore();
|
|
376
|
-
if (asyncContext?.metadata) {
|
|
377
|
-
return key ? asyncContext.metadata[key] : asyncContext.metadata;
|
|
378
|
-
}
|
|
379
|
-
return key ? undefined : {};
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Format correlation context for logging
|
|
384
|
-
*/
|
|
385
|
-
export function formatCorrelationForLog(): Record<string, string> {
|
|
386
|
-
const asyncContext = correlationStorage.getStore();
|
|
387
|
-
|
|
388
|
-
if (asyncContext && isCorrelationEnabled()) {
|
|
389
|
-
const result: Record<string, string> = {
|
|
390
|
-
correlationId: asyncContext.id,
|
|
391
|
-
};
|
|
392
|
-
|
|
393
|
-
if (asyncContext.parentId) {
|
|
394
|
-
result.parentCorrelationId = asyncContext.parentId;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
return result;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
return {};
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
/**
|
|
404
|
-
* Correlation middleware for Express-like frameworks
|
|
405
|
-
*/
|
|
406
|
-
export function correlationMiddleware() {
|
|
407
|
-
return (
|
|
408
|
-
req: CorrelationHttpRequest,
|
|
409
|
-
res: CorrelationHttpResponse,
|
|
410
|
-
next: () => void,
|
|
411
|
-
) => {
|
|
412
|
-
// Extract or create correlation ID
|
|
413
|
-
let correlationId = extractCorrelationId(req.headers || {});
|
|
414
|
-
|
|
415
|
-
if (!correlationId) {
|
|
416
|
-
correlationId = generateCorrelationId();
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// Create correlation context with the extracted or generated ID
|
|
420
|
-
const context = createCorrelationContextWithId(correlationId, {
|
|
421
|
-
method: req.method,
|
|
422
|
-
url: req.url,
|
|
423
|
-
userAgent: req.headers?.['user-agent'],
|
|
424
|
-
});
|
|
425
|
-
|
|
426
|
-
// Run the request handler within the correlation context
|
|
427
|
-
return correlationStorage.run(context, () => {
|
|
428
|
-
// Add correlation ID to response headers
|
|
429
|
-
if (res.setHeader) {
|
|
430
|
-
res.setHeader('X-Correlation-ID', correlationId);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
next();
|
|
434
|
-
});
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
/**
|
|
439
|
-
* Wrap an async function with correlation tracking
|
|
440
|
-
*/
|
|
441
|
-
export function withCorrelation<
|
|
442
|
-
T extends (...args: unknown[]) => Promise<unknown>,
|
|
443
|
-
>(fn: T, getCorrelationIdFromArgs?: (...args: Parameters<T>) => string): T {
|
|
444
|
-
return (async (...args: Parameters<T>) => {
|
|
445
|
-
let context: CorrelationContext | null = null;
|
|
446
|
-
|
|
447
|
-
// Try to get correlation ID from arguments if provided
|
|
448
|
-
if (getCorrelationIdFromArgs) {
|
|
449
|
-
const correlationId = getCorrelationIdFromArgs(...args);
|
|
450
|
-
if (correlationId) {
|
|
451
|
-
context = createCorrelationContextWithId(correlationId);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
// If no context from args, try current context or create new
|
|
456
|
-
if (!context) {
|
|
457
|
-
const current = getCurrentCorrelationContext();
|
|
458
|
-
if (current) {
|
|
459
|
-
context = createCorrelationContext(current.id);
|
|
460
|
-
} else if (isCorrelationEnabled()) {
|
|
461
|
-
context = createCorrelationContext();
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
// Run function within correlation context
|
|
466
|
-
if (context) {
|
|
467
|
-
return correlationStorage.run(context, async () => {
|
|
468
|
-
return await fn(...args);
|
|
469
|
-
});
|
|
470
|
-
} else {
|
|
471
|
-
return await fn(...args);
|
|
472
|
-
}
|
|
473
|
-
}) as T;
|
|
474
|
-
}
|