@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,305 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transport configuration for different output destinations
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {join} from 'path';
|
|
6
|
-
import {BUFFER_LOG_BYTES, INTERVAL_LOG_FLUSH_MS} from '@/constants';
|
|
7
|
-
import {getDefaultLogDirectory} from './config.js';
|
|
8
|
-
import type {TransportConfig} from './types.js';
|
|
9
|
-
|
|
10
|
-
// Type definition for Pino transport target
|
|
11
|
-
type TransportTarget = {
|
|
12
|
-
target: string;
|
|
13
|
-
options?: Record<string, unknown>;
|
|
14
|
-
level?: string;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Create a development transport with pretty printing
|
|
19
|
-
*/
|
|
20
|
-
export function createDevelopmentTransport(): TransportTarget {
|
|
21
|
-
return {
|
|
22
|
-
target: 'pino-pretty',
|
|
23
|
-
level: 'debug',
|
|
24
|
-
options: {
|
|
25
|
-
colorize: true,
|
|
26
|
-
translateTime: 'HH:MM:ss Z',
|
|
27
|
-
ignore: 'pid,hostname',
|
|
28
|
-
levelFirst: true,
|
|
29
|
-
messageFormat: '{levelLabel} - {msg}',
|
|
30
|
-
customPrettifiers: {
|
|
31
|
-
time: (timestamp: number) => {
|
|
32
|
-
return new Date(timestamp).toLocaleTimeString('en-US', {
|
|
33
|
-
hour12: false,
|
|
34
|
-
timeZone: 'UTC',
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
singleLine: false,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Create a production transport with file rotation
|
|
45
|
-
*/
|
|
46
|
-
export function createProductionTransport(
|
|
47
|
-
logDir: string = getDefaultLogDirectory(),
|
|
48
|
-
): TransportTarget {
|
|
49
|
-
return {
|
|
50
|
-
target: 'pino-roll',
|
|
51
|
-
level: 'info',
|
|
52
|
-
options: {
|
|
53
|
-
file: join(logDir, 'coder-%Y-%m-%d.log'), // nosemgrep
|
|
54
|
-
frequency: 'daily',
|
|
55
|
-
size: '100m',
|
|
56
|
-
dateFormat: 'yyyy-MM-dd',
|
|
57
|
-
extension: '.log',
|
|
58
|
-
symlink: true,
|
|
59
|
-
mkdir: true,
|
|
60
|
-
compress: true,
|
|
61
|
-
sync: false,
|
|
62
|
-
limit: {
|
|
63
|
-
count: 30,
|
|
64
|
-
removeOtherLogFiles: true,
|
|
65
|
-
},
|
|
66
|
-
minLength: 4096,
|
|
67
|
-
maxLength: 1048576, // 1MB
|
|
68
|
-
periodicFlush: INTERVAL_LOG_FLUSH_MS,
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Create a test transport that outputs to /dev/null
|
|
75
|
-
*/
|
|
76
|
-
export function createTestTransport(): TransportTarget {
|
|
77
|
-
return {
|
|
78
|
-
target: 'pino/file',
|
|
79
|
-
level: 'silent',
|
|
80
|
-
options: {
|
|
81
|
-
destination: '/dev/null',
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Create a custom transport for specific needs
|
|
88
|
-
*/
|
|
89
|
-
export function createCustomTransport(
|
|
90
|
-
config: TransportConfig,
|
|
91
|
-
): TransportTarget {
|
|
92
|
-
return {
|
|
93
|
-
target: config.target,
|
|
94
|
-
level: (config.options as {level?: string})?.level || 'info',
|
|
95
|
-
options: {
|
|
96
|
-
...config.options,
|
|
97
|
-
// Ensure minimum buffer size for performance
|
|
98
|
-
minLength: config.options.minLength || 4096,
|
|
99
|
-
// Set maximum buffer size to prevent memory issues
|
|
100
|
-
maxLength: config.options.maxLength || 1048576,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Create a multi-transport configuration
|
|
107
|
-
*/
|
|
108
|
-
export function createMultiTransport(): TransportTarget[] {
|
|
109
|
-
const transports: TransportTarget[] = [];
|
|
110
|
-
const env = process.env.NODE_ENV || 'development';
|
|
111
|
-
|
|
112
|
-
// Always include console output for development
|
|
113
|
-
if (env !== 'production') {
|
|
114
|
-
transports.push(createDevelopmentTransport());
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Add file output for production or when explicitly enabled
|
|
118
|
-
if (env === 'production' || process.env.CODER_LOG_TO_FILE === 'true') {
|
|
119
|
-
transports.push(createProductionTransport());
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return transports;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Create a transport with buffering for high-performance scenarios
|
|
127
|
-
*/
|
|
128
|
-
export function createBufferedTransport(
|
|
129
|
-
baseTransport: TransportTarget,
|
|
130
|
-
bufferSize: number = BUFFER_LOG_BYTES,
|
|
131
|
-
): TransportTarget {
|
|
132
|
-
return {
|
|
133
|
-
...baseTransport,
|
|
134
|
-
options: {
|
|
135
|
-
...baseTransport.options,
|
|
136
|
-
// Use sonic-boom for high-performance buffering
|
|
137
|
-
bufferSize,
|
|
138
|
-
// Enable async writing
|
|
139
|
-
sync: false,
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Create a transport for error-specific logging
|
|
146
|
-
*/
|
|
147
|
-
export function createErrorTransport(
|
|
148
|
-
logDir: string = getDefaultLogDirectory(),
|
|
149
|
-
): TransportTarget {
|
|
150
|
-
return {
|
|
151
|
-
target: 'pino-roll',
|
|
152
|
-
level: 'error',
|
|
153
|
-
options: {
|
|
154
|
-
file: join(logDir, 'coder-error-%Y-%m-%d.log'), // nosemgrep
|
|
155
|
-
frequency: 'daily',
|
|
156
|
-
size: '50m', // Smaller files for errors
|
|
157
|
-
dateFormat: 'yyyy-MM-dd',
|
|
158
|
-
extension: '.log',
|
|
159
|
-
mkdir: true,
|
|
160
|
-
compress: true,
|
|
161
|
-
sync: true, // Sync writes for errors to ensure they're logged
|
|
162
|
-
limit: {
|
|
163
|
-
count: 90, // Keep more error logs
|
|
164
|
-
removeOtherLogFiles: true,
|
|
165
|
-
},
|
|
166
|
-
minLength: 1024,
|
|
167
|
-
maxLength: 1048576,
|
|
168
|
-
},
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Create a transport for audit logging
|
|
174
|
-
*/
|
|
175
|
-
export function createAuditTransport(
|
|
176
|
-
logDir: string = getDefaultLogDirectory(),
|
|
177
|
-
): TransportTarget {
|
|
178
|
-
return {
|
|
179
|
-
target: 'pino-roll',
|
|
180
|
-
level: 'info',
|
|
181
|
-
options: {
|
|
182
|
-
file: join(logDir, 'coder-audit-%Y-%m-%d.log'), // nosemgrep
|
|
183
|
-
frequency: 'daily',
|
|
184
|
-
size: '200m',
|
|
185
|
-
dateFormat: 'yyyy-MM-dd',
|
|
186
|
-
extension: '.log',
|
|
187
|
-
mkdir: true,
|
|
188
|
-
compress: true,
|
|
189
|
-
sync: true, // Sync writes for audit logs
|
|
190
|
-
limit: {
|
|
191
|
-
count: 365, // Keep 1 year of audit logs
|
|
192
|
-
removeOtherLogFiles: false,
|
|
193
|
-
},
|
|
194
|
-
minLength: 1024,
|
|
195
|
-
maxLength: 10485760, // 10MB for audit logs
|
|
196
|
-
},
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Get transport configuration based on environment variables
|
|
202
|
-
*/
|
|
203
|
-
export function getTransportFromEnvironment():
|
|
204
|
-
| TransportTarget
|
|
205
|
-
| TransportTarget[] {
|
|
206
|
-
// Support multiple transports via comma separation
|
|
207
|
-
const transportTypes = (process.env.CODER_LOG_TRANSPORTS || 'default')
|
|
208
|
-
.split(',')
|
|
209
|
-
.map(t => t.trim());
|
|
210
|
-
const transports: TransportTarget[] = [];
|
|
211
|
-
|
|
212
|
-
for (const transportType of transportTypes) {
|
|
213
|
-
switch (transportType) {
|
|
214
|
-
case 'development':
|
|
215
|
-
case 'dev':
|
|
216
|
-
transports.push(createDevelopmentTransport());
|
|
217
|
-
break;
|
|
218
|
-
|
|
219
|
-
case 'production':
|
|
220
|
-
case 'prod':
|
|
221
|
-
transports.push(createProductionTransport());
|
|
222
|
-
break;
|
|
223
|
-
|
|
224
|
-
case 'test':
|
|
225
|
-
transports.push(createTestTransport());
|
|
226
|
-
break;
|
|
227
|
-
|
|
228
|
-
case 'error':
|
|
229
|
-
transports.push(createErrorTransport());
|
|
230
|
-
break;
|
|
231
|
-
|
|
232
|
-
case 'audit':
|
|
233
|
-
transports.push(createAuditTransport());
|
|
234
|
-
break;
|
|
235
|
-
|
|
236
|
-
case 'default':
|
|
237
|
-
default:
|
|
238
|
-
// Use default behavior
|
|
239
|
-
{
|
|
240
|
-
const defaultTransports = createMultiTransport();
|
|
241
|
-
transports.push(...defaultTransports);
|
|
242
|
-
}
|
|
243
|
-
break;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Return single transport if only one, otherwise return array
|
|
248
|
-
return transports.length === 1 ? transports[0] : transports;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Validate transport configuration
|
|
253
|
-
*/
|
|
254
|
-
export function validateTransport(transport: TransportTarget): boolean {
|
|
255
|
-
if (!transport.target) {
|
|
256
|
-
console.error('[ERROR] Transport target is required');
|
|
257
|
-
return false;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// Validate target is a string or function
|
|
261
|
-
if (
|
|
262
|
-
typeof transport.target !== 'string' &&
|
|
263
|
-
typeof transport.target !== 'function'
|
|
264
|
-
) {
|
|
265
|
-
console.error('[ERROR] Transport target must be a string or function');
|
|
266
|
-
return false;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Validate options if present
|
|
270
|
-
if (transport.options && typeof transport.options !== 'object') {
|
|
271
|
-
console.error('[ERROR] Transport options must be an object');
|
|
272
|
-
return false;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
return true;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Create transport with error handling and fallback
|
|
280
|
-
*/
|
|
281
|
-
export function createSafeTransport(
|
|
282
|
-
primaryTransport: TransportTarget,
|
|
283
|
-
fallbackTransport?: TransportTarget,
|
|
284
|
-
): TransportTarget {
|
|
285
|
-
try {
|
|
286
|
-
if (!validateTransport(primaryTransport)) {
|
|
287
|
-
throw new Error('Invalid primary transport configuration');
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
return primaryTransport;
|
|
291
|
-
} catch (error) {
|
|
292
|
-
console.error('[ERROR] Failed to create primary transport:', error);
|
|
293
|
-
|
|
294
|
-
if (fallbackTransport) {
|
|
295
|
-
console.warn('[WARN] Falling back to secondary transport');
|
|
296
|
-
if (validateTransport(fallbackTransport)) {
|
|
297
|
-
return fallbackTransport;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// Ultimate fallback to console
|
|
302
|
-
console.warn('[WARN] Falling back to console transport');
|
|
303
|
-
return createDevelopmentTransport();
|
|
304
|
-
}
|
|
305
|
-
}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for the structured logging system
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export type LogLevel =
|
|
6
|
-
| 'silent'
|
|
7
|
-
| 'fatal'
|
|
8
|
-
| 'error'
|
|
9
|
-
| 'warn'
|
|
10
|
-
| 'info'
|
|
11
|
-
| 'http'
|
|
12
|
-
| 'debug'
|
|
13
|
-
| 'trace';
|
|
14
|
-
|
|
15
|
-
export interface LoggerConfig {
|
|
16
|
-
level: LogLevel;
|
|
17
|
-
destination?: string;
|
|
18
|
-
pretty: boolean;
|
|
19
|
-
redact: string[];
|
|
20
|
-
correlation: boolean;
|
|
21
|
-
serialize: boolean;
|
|
22
|
-
transport?: unknown;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface LogEntry {
|
|
26
|
-
level: LogLevel;
|
|
27
|
-
time: string;
|
|
28
|
-
pid: number;
|
|
29
|
-
hostname: string;
|
|
30
|
-
correlationId?: string;
|
|
31
|
-
nodeVersion?: string; // NEW: Node.js version field
|
|
32
|
-
platform?: string; // NEW: platform field
|
|
33
|
-
arch?: string; // NEW: architecture field
|
|
34
|
-
service?: string; // NEW: service field
|
|
35
|
-
version?: string; // NEW: version field
|
|
36
|
-
environment?: string; // NEW: environment field
|
|
37
|
-
msg: string;
|
|
38
|
-
[key: string]: unknown;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Enhanced logger configuration types
|
|
42
|
-
export interface EnhancedLoggerConfig extends LoggerConfig {
|
|
43
|
-
options?: EnhancedTransportOptions;
|
|
44
|
-
[key: string]: unknown;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface EnhancedTransportOptions {
|
|
48
|
-
destination?: string | number;
|
|
49
|
-
level?: LogLevel;
|
|
50
|
-
translateTime?: string;
|
|
51
|
-
ignore?: string;
|
|
52
|
-
messageFormat?: string;
|
|
53
|
-
customPrettifiers?: Record<string, (data: unknown) => string>;
|
|
54
|
-
levelFirst?: boolean;
|
|
55
|
-
singleLine?: boolean;
|
|
56
|
-
colorize?: boolean;
|
|
57
|
-
[key: string]: unknown;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export interface Logger {
|
|
61
|
-
fatal: ((msg: string, ...args: unknown[]) => void) &
|
|
62
|
-
((obj: object, msg?: string) => void);
|
|
63
|
-
error: ((msg: string, ...args: unknown[]) => void) &
|
|
64
|
-
((obj: object, msg?: string) => void);
|
|
65
|
-
warn: ((msg: string, ...args: unknown[]) => void) &
|
|
66
|
-
((obj: object, msg?: string) => void);
|
|
67
|
-
info: ((msg: string, ...args: unknown[]) => void) &
|
|
68
|
-
((obj: object, msg?: string) => void);
|
|
69
|
-
http: ((msg: string, ...args: unknown[]) => void) &
|
|
70
|
-
((obj: object, msg?: string) => void);
|
|
71
|
-
debug: ((msg: string, ...args: unknown[]) => void) &
|
|
72
|
-
((obj: object, msg?: string) => void);
|
|
73
|
-
trace: ((msg: string, ...args: unknown[]) => void) &
|
|
74
|
-
((obj: object, msg?: string) => void);
|
|
75
|
-
|
|
76
|
-
child(bindings: Record<string, unknown>): Logger;
|
|
77
|
-
isLevelEnabled(level: LogLevel): boolean;
|
|
78
|
-
flush(): Promise<void>;
|
|
79
|
-
end(): Promise<void>;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export interface PiiRedactionRules {
|
|
83
|
-
patterns: RegExp[];
|
|
84
|
-
customPaths: string[];
|
|
85
|
-
emailRedaction: boolean;
|
|
86
|
-
userIdRedaction: boolean;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export interface CorrelationContext {
|
|
90
|
-
id: string;
|
|
91
|
-
parentId?: string;
|
|
92
|
-
metadata?: Record<string, unknown>;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export interface CorrelationMetadata {
|
|
96
|
-
source?: string;
|
|
97
|
-
version?: string;
|
|
98
|
-
environment?: string;
|
|
99
|
-
requestId?: string;
|
|
100
|
-
[key: string]: unknown;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export interface PerformanceMetrics {
|
|
104
|
-
startTime: number;
|
|
105
|
-
duration?: number;
|
|
106
|
-
memoryUsage?: NodeJS.MemoryUsage;
|
|
107
|
-
cpuUsage?: NodeJS.CpuUsage;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export interface TransportConfig {
|
|
111
|
-
target: string;
|
|
112
|
-
options: {
|
|
113
|
-
destination?: string;
|
|
114
|
-
level?: LogLevel;
|
|
115
|
-
formatters?: Record<string, (data: unknown) => unknown>;
|
|
116
|
-
redact?: string[];
|
|
117
|
-
frequency?: string | number;
|
|
118
|
-
size?: string | number;
|
|
119
|
-
limit?: {
|
|
120
|
-
count: number;
|
|
121
|
-
removeOtherLogFiles?: boolean;
|
|
122
|
-
};
|
|
123
|
-
dateFormat?: string;
|
|
124
|
-
extension?: string;
|
|
125
|
-
symlink?: boolean;
|
|
126
|
-
mkdir?: boolean;
|
|
127
|
-
compress?: boolean;
|
|
128
|
-
sync?: boolean;
|
|
129
|
-
minLength?: number;
|
|
130
|
-
maxLength?: number;
|
|
131
|
-
periodicFlush?: number;
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* CLI configuration for logging control
|
|
137
|
-
*/
|
|
138
|
-
export interface LoggingCliConfig {
|
|
139
|
-
logToFile?: boolean;
|
|
140
|
-
logToConsole?: boolean;
|
|
141
|
-
noLogFile?: boolean;
|
|
142
|
-
noLogConsole?: boolean;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Environment-specific transport configuration
|
|
147
|
-
*/
|
|
148
|
-
export interface EnvironmentTransportConfig {
|
|
149
|
-
enableFile: boolean;
|
|
150
|
-
enableConsole: boolean;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Pino transport options type
|
|
155
|
-
*/
|
|
156
|
-
export interface PinoTransportOptions {
|
|
157
|
-
target: string;
|
|
158
|
-
options?: {
|
|
159
|
-
destination?: string;
|
|
160
|
-
mkdir?: boolean;
|
|
161
|
-
append?: boolean;
|
|
162
|
-
[key: string]: unknown;
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Type for console method arguments
|
|
168
|
-
*/
|
|
169
|
-
export type ConsoleArgument =
|
|
170
|
-
| string
|
|
171
|
-
| number
|
|
172
|
-
| boolean
|
|
173
|
-
| null
|
|
174
|
-
| undefined
|
|
175
|
-
| Error
|
|
176
|
-
| Record<string, unknown>
|
|
177
|
-
| Array<unknown>;
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Type for console method arguments array
|
|
181
|
-
*/
|
|
182
|
-
export type ConsoleArguments = ConsoleArgument[];
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Typed object for console log data
|
|
186
|
-
*/
|
|
187
|
-
export interface ConsoleLogData extends Record<string, unknown> {
|
|
188
|
-
correlationId: string;
|
|
189
|
-
source: string;
|
|
190
|
-
argumentCount?: number;
|
|
191
|
-
stringArgs?: number;
|
|
192
|
-
objectArgs?: number;
|
|
193
|
-
primitiveArgs?: number;
|
|
194
|
-
objects?: unknown[];
|
|
195
|
-
errorLikeObjects?: unknown[];
|
|
196
|
-
moduleName?: string;
|
|
197
|
-
allArgs?: ConsoleArguments;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Type for HTTP request object in correlation tracking
|
|
202
|
-
*/
|
|
203
|
-
export interface CorrelationHttpRequest {
|
|
204
|
-
method?: string;
|
|
205
|
-
url?: string;
|
|
206
|
-
headers?: Record<string, string>;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Type for HTTP response object in correlation tracking
|
|
211
|
-
*/
|
|
212
|
-
export interface CorrelationHttpResponse {
|
|
213
|
-
statusCode?: number;
|
|
214
|
-
headers?: Record<string, string>;
|
|
215
|
-
setHeader?: (name: string, value: string) => void;
|
|
216
|
-
}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import test from 'ava';
|
|
2
|
-
import {MessageBuilder} from './message-builder.js';
|
|
3
|
-
import type {Message, ToolResult} from '@/types/core';
|
|
4
|
-
|
|
5
|
-
test('MessageBuilder starts with initial messages', t => {
|
|
6
|
-
const userMsg: Message = {role: 'user', content: 'Hello'};
|
|
7
|
-
const builder = new MessageBuilder([userMsg]);
|
|
8
|
-
|
|
9
|
-
const messages = builder.build();
|
|
10
|
-
|
|
11
|
-
t.is(messages.length, 1);
|
|
12
|
-
t.deepEqual(messages[0], userMsg);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
test('MessageBuilder addAssistantMessage adds assistant message', t => {
|
|
16
|
-
const builder = new MessageBuilder([]);
|
|
17
|
-
const assistantMsg: Message = {
|
|
18
|
-
role: 'assistant',
|
|
19
|
-
content: 'Hi there',
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
builder.addAssistantMessage(assistantMsg);
|
|
23
|
-
const messages = builder.build();
|
|
24
|
-
|
|
25
|
-
t.is(messages.length, 1);
|
|
26
|
-
t.is(messages[0].role, 'assistant');
|
|
27
|
-
t.is(messages[0].content, 'Hi there');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('MessageBuilder addAssistantMessage throws on non-assistant message', t => {
|
|
31
|
-
const builder = new MessageBuilder([]);
|
|
32
|
-
const userMsg: Message = {role: 'user', content: 'Test'};
|
|
33
|
-
|
|
34
|
-
t.throws(
|
|
35
|
-
() => {
|
|
36
|
-
builder.addAssistantMessage(userMsg);
|
|
37
|
-
},
|
|
38
|
-
{message: /requires a message with role "assistant"/},
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('MessageBuilder addToolResults adds tool messages', t => {
|
|
43
|
-
const builder = new MessageBuilder([]);
|
|
44
|
-
const toolResults: ToolResult[] = [
|
|
45
|
-
{
|
|
46
|
-
tool_call_id: 'tool_1',
|
|
47
|
-
role: 'tool',
|
|
48
|
-
name: 'read_file',
|
|
49
|
-
content: 'File contents here',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
tool_call_id: 'tool_2',
|
|
53
|
-
role: 'tool',
|
|
54
|
-
name: 'execute_bash',
|
|
55
|
-
content: 'Command output',
|
|
56
|
-
},
|
|
57
|
-
];
|
|
58
|
-
|
|
59
|
-
builder.addToolResults(toolResults);
|
|
60
|
-
const messages = builder.build();
|
|
61
|
-
|
|
62
|
-
t.is(messages.length, 2);
|
|
63
|
-
t.is(messages[0].role, 'tool');
|
|
64
|
-
t.is(messages[0].tool_call_id, 'tool_1');
|
|
65
|
-
t.is(messages[0].name, 'read_file');
|
|
66
|
-
t.is(messages[0].content, 'File contents here');
|
|
67
|
-
|
|
68
|
-
t.is(messages[1].role, 'tool');
|
|
69
|
-
t.is(messages[1].tool_call_id, 'tool_2');
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
test('MessageBuilder addAutoExecutedMessages adds multiple messages', t => {
|
|
73
|
-
const builder = new MessageBuilder([]);
|
|
74
|
-
const autoMessages: Message[] = [
|
|
75
|
-
{role: 'assistant', content: '', tool_calls: [{id: '1', function: {name: 'test', arguments: {}}}]},
|
|
76
|
-
{role: 'tool', content: 'result', tool_call_id: '1', name: 'test'},
|
|
77
|
-
];
|
|
78
|
-
|
|
79
|
-
builder.addAutoExecutedMessages(autoMessages);
|
|
80
|
-
const messages = builder.build();
|
|
81
|
-
|
|
82
|
-
t.is(messages.length, 2);
|
|
83
|
-
t.is(messages[0].role, 'assistant');
|
|
84
|
-
t.is(messages[1].role, 'tool');
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
test('MessageBuilder addUserMessage adds user message', t => {
|
|
88
|
-
const builder = new MessageBuilder([]);
|
|
89
|
-
|
|
90
|
-
builder.addUserMessage('Hello');
|
|
91
|
-
const messages = builder.build();
|
|
92
|
-
|
|
93
|
-
t.is(messages.length, 1);
|
|
94
|
-
t.is(messages[0].role, 'user');
|
|
95
|
-
t.is(messages[0].content, 'Hello');
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test('MessageBuilder addErrorMessage adds error as user message', t => {
|
|
99
|
-
const builder = new MessageBuilder([]);
|
|
100
|
-
|
|
101
|
-
builder.addErrorMessage('Error: something went wrong');
|
|
102
|
-
const messages = builder.build();
|
|
103
|
-
|
|
104
|
-
t.is(messages.length, 1);
|
|
105
|
-
t.is(messages[0].role, 'user');
|
|
106
|
-
t.is(messages[0].content, 'Error: something went wrong');
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
test('MessageBuilder supports method chaining', t => {
|
|
110
|
-
const builder = new MessageBuilder([]);
|
|
111
|
-
|
|
112
|
-
const messages = builder
|
|
113
|
-
.addUserMessage('Hello')
|
|
114
|
-
.addAssistantMessage({role: 'assistant', content: 'Hi'})
|
|
115
|
-
.addUserMessage('How are you?')
|
|
116
|
-
.build();
|
|
117
|
-
|
|
118
|
-
t.is(messages.length, 3);
|
|
119
|
-
t.is(messages[0].role, 'user');
|
|
120
|
-
t.is(messages[1].role, 'assistant');
|
|
121
|
-
t.is(messages[2].role, 'user');
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
test('MessageBuilder length property returns correct count', t => {
|
|
125
|
-
const builder = new MessageBuilder([]);
|
|
126
|
-
|
|
127
|
-
t.is(builder.length, 0);
|
|
128
|
-
|
|
129
|
-
builder.addUserMessage('Test');
|
|
130
|
-
t.is(builder.length, 1);
|
|
131
|
-
|
|
132
|
-
builder.addAssistantMessage({role: 'assistant', content: 'Response'});
|
|
133
|
-
t.is(builder.length, 2);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
test('MessageBuilder isEmpty property works correctly', t => {
|
|
137
|
-
const builder = new MessageBuilder([]);
|
|
138
|
-
|
|
139
|
-
t.true(builder.isEmpty);
|
|
140
|
-
|
|
141
|
-
builder.addUserMessage('Test');
|
|
142
|
-
t.false(builder.isEmpty);
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
test('MessageBuilder builds complete conversation flow', t => {
|
|
146
|
-
const userMsg: Message = {role: 'user', content: 'Read config.json'};
|
|
147
|
-
const assistantMsg: Message = {
|
|
148
|
-
role: 'assistant',
|
|
149
|
-
content: '',
|
|
150
|
-
tool_calls: [
|
|
151
|
-
{
|
|
152
|
-
id: 'call_1',
|
|
153
|
-
function: {
|
|
154
|
-
name: 'read_file',
|
|
155
|
-
arguments: {path: 'config.json'},
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
|
-
};
|
|
160
|
-
const toolResult: ToolResult = {
|
|
161
|
-
tool_call_id: 'call_1',
|
|
162
|
-
role: 'tool',
|
|
163
|
-
name: 'read_file',
|
|
164
|
-
content: '{"setting": "value"}',
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
const builder = new MessageBuilder([userMsg]);
|
|
168
|
-
const messages = builder
|
|
169
|
-
.addAssistantMessage(assistantMsg)
|
|
170
|
-
.addToolResults([toolResult])
|
|
171
|
-
.build();
|
|
172
|
-
|
|
173
|
-
t.is(messages.length, 3);
|
|
174
|
-
t.is(messages[0].role, 'user');
|
|
175
|
-
t.is(messages[1].role, 'assistant');
|
|
176
|
-
t.is(messages[1].tool_calls?.length, 1);
|
|
177
|
-
t.is(messages[2].role, 'tool');
|
|
178
|
-
t.is(messages[2].content, '{"setting": "value"}');
|
|
179
|
-
});
|