@umituz/react-native-ai-groq-provider 1.0.28 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/application/use-cases/chat-generation.usecase.d.ts +11 -0
  2. package/dist/application/use-cases/chat-generation.usecase.d.ts.map +1 -0
  3. package/dist/application/use-cases/chat-generation.usecase.js +40 -0
  4. package/dist/application/use-cases/chat-generation.usecase.js.map +1 -0
  5. package/dist/application/use-cases/chat-session.usecase.d.ts +41 -0
  6. package/dist/application/use-cases/chat-session.usecase.d.ts.map +1 -0
  7. package/dist/application/use-cases/chat-session.usecase.js +138 -0
  8. package/dist/application/use-cases/chat-session.usecase.js.map +1 -0
  9. package/dist/application/use-cases/streaming.usecase.d.ts +17 -0
  10. package/dist/application/use-cases/streaming.usecase.d.ts.map +1 -0
  11. package/dist/application/use-cases/streaming.usecase.js +46 -0
  12. package/dist/application/use-cases/streaming.usecase.js.map +1 -0
  13. package/dist/application/use-cases/structured-generation.usecase.d.ts +14 -0
  14. package/dist/application/use-cases/structured-generation.usecase.d.ts.map +1 -0
  15. package/dist/application/use-cases/structured-generation.usecase.js +77 -0
  16. package/dist/application/use-cases/structured-generation.usecase.js.map +1 -0
  17. package/dist/application/use-cases/text-generation.usecase.d.ts +11 -0
  18. package/dist/application/use-cases/text-generation.usecase.d.ts.map +1 -0
  19. package/dist/application/use-cases/text-generation.usecase.js +36 -0
  20. package/dist/application/use-cases/text-generation.usecase.js.map +1 -0
  21. package/dist/domain/entities/error.types.d.ts +3 -1
  22. package/dist/domain/entities/error.types.d.ts.map +1 -1
  23. package/dist/domain/entities/error.types.js +12 -2
  24. package/dist/domain/entities/error.types.js.map +1 -1
  25. package/dist/index.d.ts +20 -16
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +61 -39
  28. package/dist/index.js.map +1 -1
  29. package/dist/infrastructure/http/groq-http-client.d.ts +22 -0
  30. package/dist/infrastructure/http/groq-http-client.d.ts.map +1 -0
  31. package/dist/infrastructure/http/groq-http-client.js +166 -0
  32. package/dist/infrastructure/http/groq-http-client.js.map +1 -0
  33. package/dist/infrastructure/http/streaming-client.d.ts +12 -0
  34. package/dist/infrastructure/http/streaming-client.d.ts.map +1 -0
  35. package/dist/infrastructure/http/streaming-client.js +148 -0
  36. package/dist/infrastructure/http/streaming-client.js.map +1 -0
  37. package/dist/infrastructure/telemetry/TelemetryHooks.d.ts +16 -4
  38. package/dist/infrastructure/telemetry/TelemetryHooks.d.ts.map +1 -1
  39. package/dist/infrastructure/telemetry/TelemetryHooks.js +44 -11
  40. package/dist/infrastructure/telemetry/TelemetryHooks.js.map +1 -1
  41. package/dist/infrastructure/utils/async/execute-state.util.d.ts +6 -2
  42. package/dist/infrastructure/utils/async/execute-state.util.d.ts.map +1 -1
  43. package/dist/infrastructure/utils/async/execute-state.util.js +29 -4
  44. package/dist/infrastructure/utils/async/execute-state.util.js.map +1 -1
  45. package/dist/infrastructure/utils/calculation.util.d.ts +61 -0
  46. package/dist/infrastructure/utils/calculation.util.d.ts.map +1 -0
  47. package/dist/infrastructure/utils/calculation.util.js +165 -0
  48. package/dist/infrastructure/utils/calculation.util.js.map +1 -0
  49. package/dist/infrastructure/utils/content-mapper.util.d.ts +5 -1
  50. package/dist/infrastructure/utils/content-mapper.util.d.ts.map +1 -1
  51. package/dist/infrastructure/utils/content-mapper.util.js +17 -0
  52. package/dist/infrastructure/utils/content-mapper.util.js.map +1 -1
  53. package/dist/presentation/hooks/use-groq.hook.d.ts +26 -0
  54. package/dist/presentation/hooks/use-groq.hook.d.ts.map +1 -0
  55. package/dist/presentation/hooks/use-groq.hook.js +151 -0
  56. package/dist/presentation/hooks/use-groq.hook.js.map +1 -0
  57. package/dist/providers/ConfigBuilder.d.ts +1 -57
  58. package/dist/providers/ConfigBuilder.d.ts.map +1 -1
  59. package/dist/providers/ConfigBuilder.js +2 -68
  60. package/dist/providers/ConfigBuilder.js.map +1 -1
  61. package/dist/providers/ProviderFactory.d.ts +4 -34
  62. package/dist/providers/ProviderFactory.d.ts.map +1 -1
  63. package/dist/providers/ProviderFactory.js +9 -50
  64. package/dist/providers/ProviderFactory.js.map +1 -1
  65. package/dist/shared/logger.d.ts +26 -0
  66. package/dist/shared/logger.d.ts.map +1 -0
  67. package/dist/shared/logger.js +52 -0
  68. package/dist/shared/logger.js.map +1 -0
  69. package/dist/shared/request-builder.d.ts +17 -0
  70. package/dist/shared/request-builder.d.ts.map +1 -0
  71. package/dist/shared/request-builder.js +54 -0
  72. package/dist/shared/request-builder.js.map +1 -0
  73. package/dist/shared/response-handler.d.ts +38 -0
  74. package/dist/shared/response-handler.d.ts.map +1 -0
  75. package/dist/shared/response-handler.js +69 -0
  76. package/dist/shared/response-handler.js.map +1 -0
  77. package/dist/shared/timer.d.ts +20 -0
  78. package/dist/shared/timer.d.ts.map +1 -0
  79. package/dist/shared/timer.js +32 -0
  80. package/dist/shared/timer.js.map +1 -0
  81. package/package.json +1 -1
  82. package/src/application/use-cases/chat-generation.usecase.ts +55 -0
  83. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,SAAS,EACT,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGhG,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAG/E,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,cAAc,EACd,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,SAAS,EACT,YAAY,GACb,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE3E,OAAO,EACL,SAAS,EACT,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAGzH,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGtG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG5H,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,EACL,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC"}
package/dist/index.js CHANGED
@@ -7,10 +7,11 @@
7
7
  * @license MIT
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.useTelemetry = exports.telemetry = exports.executeWithRetry = exports.executeWithState = exports.formatErrorForLogging = exports.isAuthError = exports.isRetryableError = exports.getUserFriendlyError = exports.formatMessagesForDisplay = exports.extractTextFromMessages = exports.promptToMessages = exports.createTextMessage = exports.createSystemMessage = exports.createAssistantMessage = exports.createUserMessage = exports.resetProvider = exports.configureProvider = exports.initializeProvider = exports.providerFactory = exports.GenerationConfigBuilder = exports.ConfigBuilder = exports.useOperationManager = exports.useGroq = exports.trimChatHistory = exports.buildChatHistory = exports.sendChatMessage = exports.createChatSession = exports.chatSessionService = exports.streamingChat = exports.streaming = exports.structuredChat = exports.structuredText = exports.chatGeneration = exports.textGeneration = exports.groqHttpClient = exports.modelSupports = exports.getModelInfo = exports.MODEL_REGISTRY = exports.mapHttpStatusToErrorType = exports.GroqErrorType = exports.GroqError = exports.DEFAULT_MODELS = exports.GROQ_MODELS = void 0;
11
- var entities_1 = require("./domain/entities");
12
- Object.defineProperty(exports, "GROQ_MODELS", { enumerable: true, get: function () { return entities_1.GROQ_MODELS; } });
13
- Object.defineProperty(exports, "DEFAULT_MODELS", { enumerable: true, get: function () { return entities_1.DEFAULT_MODELS; } });
10
+ exports.calculateRetryDelayWithJitter = exports.isWithinSafeLimit = exports.estimateTokens = exports.calculateSafeBufferSize = exports.calculatePercentage = exports.clamp = exports.calculateExponentialBackoff = exports.calculateMaxMessages = exports.generateSessionId = exports.generateRandomId = exports.executeWithRetry = exports.executeWithState = exports.formatErrorForLogging = exports.isAuthError = exports.isRetryableError = exports.getUserFriendlyError = exports.cleanJsonResponse = exports.formatMessagesForDisplay = exports.extractTextFromMessages = exports.promptToMessages = exports.createTextMessage = exports.createSystemMessage = exports.createAssistantMessage = exports.createUserMessage = exports.isProviderInitialized = exports.resetProvider = exports.initializeProvider = exports.GenerationConfigBuilder = exports.ConfigBuilder = exports.ResponseHandler = exports.RequestBuilder = exports.Timer = exports.LogLevel = exports.logger = exports.useGroq = exports.streamChatCompletion = exports.groqHttpClient = exports.chatSessionManager = exports.chatGeneration = exports.streamText = exports.generateStructured = exports.generateText = exports.modelSupports = exports.getModelInfo = exports.MODEL_REGISTRY = exports.mapHttpStatusToErrorType = exports.GroqErrorType = exports.GroqError = exports.DEFAULT_MODELS = exports.GROQ_MODELS = void 0;
11
+ exports.useTelemetry = exports.telemetry = exports.calculateAverage = exports.calculateTransferRate = exports.calculateRequestTimeout = void 0;
12
+ var groq_types_1 = require("./domain/entities/groq.types");
13
+ Object.defineProperty(exports, "GROQ_MODELS", { enumerable: true, get: function () { return groq_types_1.GROQ_MODELS; } });
14
+ Object.defineProperty(exports, "DEFAULT_MODELS", { enumerable: true, get: function () { return groq_types_1.DEFAULT_MODELS; } });
14
15
  var error_types_1 = require("./domain/entities/error.types");
15
16
  Object.defineProperty(exports, "GroqError", { enumerable: true, get: function () { return error_types_1.GroqError; } });
16
17
  Object.defineProperty(exports, "GroqErrorType", { enumerable: true, get: function () { return error_types_1.GroqErrorType; } });
@@ -19,38 +20,44 @@ var models_1 = require("./domain/entities/models");
19
20
  Object.defineProperty(exports, "MODEL_REGISTRY", { enumerable: true, get: function () { return models_1.MODEL_REGISTRY; } });
20
21
  Object.defineProperty(exports, "getModelInfo", { enumerable: true, get: function () { return models_1.getModelInfo; } });
21
22
  Object.defineProperty(exports, "modelSupports", { enumerable: true, get: function () { return models_1.modelSupports; } });
22
- // Services
23
- var GroqClient_1 = require("./infrastructure/services/GroqClient");
24
- Object.defineProperty(exports, "groqHttpClient", { enumerable: true, get: function () { return GroqClient_1.groqHttpClient; } });
25
- var TextGeneration_1 = require("./infrastructure/services/TextGeneration");
26
- Object.defineProperty(exports, "textGeneration", { enumerable: true, get: function () { return TextGeneration_1.textGeneration; } });
27
- Object.defineProperty(exports, "chatGeneration", { enumerable: true, get: function () { return TextGeneration_1.chatGeneration; } });
28
- var StructuredText_1 = require("./infrastructure/services/StructuredText");
29
- Object.defineProperty(exports, "structuredText", { enumerable: true, get: function () { return StructuredText_1.structuredText; } });
30
- Object.defineProperty(exports, "structuredChat", { enumerable: true, get: function () { return StructuredText_1.structuredChat; } });
31
- var Streaming_1 = require("./infrastructure/services/Streaming");
32
- Object.defineProperty(exports, "streaming", { enumerable: true, get: function () { return Streaming_1.streaming; } });
33
- Object.defineProperty(exports, "streamingChat", { enumerable: true, get: function () { return Streaming_1.streamingChat; } });
34
- var services_1 = require("./infrastructure/services");
35
- Object.defineProperty(exports, "chatSessionService", { enumerable: true, get: function () { return services_1.chatSessionService; } });
36
- Object.defineProperty(exports, "createChatSession", { enumerable: true, get: function () { return services_1.createChatSession; } });
37
- Object.defineProperty(exports, "sendChatMessage", { enumerable: true, get: function () { return services_1.sendChatMessage; } });
38
- Object.defineProperty(exports, "buildChatHistory", { enumerable: true, get: function () { return services_1.buildChatHistory; } });
39
- Object.defineProperty(exports, "trimChatHistory", { enumerable: true, get: function () { return services_1.trimChatHistory; } });
40
- // React Hooks
41
- var useGroq_1 = require("./presentation/hooks/useGroq");
42
- Object.defineProperty(exports, "useGroq", { enumerable: true, get: function () { return useGroq_1.useGroq; } });
43
- var useOperationManager_1 = require("./presentation/hooks/useOperationManager");
44
- Object.defineProperty(exports, "useOperationManager", { enumerable: true, get: function () { return useOperationManager_1.useOperationManager; } });
45
- // Provider Configuration & Factory
23
+ // Application Layer - Direct exports
24
+ var text_generation_usecase_1 = require("./application/use-cases/text-generation.usecase");
25
+ Object.defineProperty(exports, "generateText", { enumerable: true, get: function () { return text_generation_usecase_1.generateText; } });
26
+ var structured_generation_usecase_1 = require("./application/use-cases/structured-generation.usecase");
27
+ Object.defineProperty(exports, "generateStructured", { enumerable: true, get: function () { return structured_generation_usecase_1.generateStructured; } });
28
+ var streaming_usecase_1 = require("./application/use-cases/streaming.usecase");
29
+ Object.defineProperty(exports, "streamText", { enumerable: true, get: function () { return streaming_usecase_1.streamText; } });
30
+ var chat_generation_usecase_1 = require("./application/use-cases/chat-generation.usecase");
31
+ Object.defineProperty(exports, "chatGeneration", { enumerable: true, get: function () { return chat_generation_usecase_1.chatGeneration; } });
32
+ var chat_session_usecase_1 = require("./application/use-cases/chat-session.usecase");
33
+ Object.defineProperty(exports, "chatSessionManager", { enumerable: true, get: function () { return chat_session_usecase_1.chatSessionManager; } });
34
+ // Infrastructure Layer - Direct exports
35
+ var groq_http_client_1 = require("./infrastructure/http/groq-http-client");
36
+ Object.defineProperty(exports, "groqHttpClient", { enumerable: true, get: function () { return groq_http_client_1.groqHttpClient; } });
37
+ var streaming_client_1 = require("./infrastructure/http/streaming-client");
38
+ Object.defineProperty(exports, "streamChatCompletion", { enumerable: true, get: function () { return streaming_client_1.streamChatCompletion; } });
39
+ // Presentation Layer - Direct exports
40
+ var use_groq_hook_1 = require("./presentation/hooks/use-groq.hook");
41
+ Object.defineProperty(exports, "useGroq", { enumerable: true, get: function () { return use_groq_hook_1.useGroq; } });
42
+ // Shared Layer - Direct exports
43
+ var logger_1 = require("./shared/logger");
44
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
45
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_1.LogLevel; } });
46
+ var timer_1 = require("./shared/timer");
47
+ Object.defineProperty(exports, "Timer", { enumerable: true, get: function () { return timer_1.Timer; } });
48
+ var request_builder_1 = require("./shared/request-builder");
49
+ Object.defineProperty(exports, "RequestBuilder", { enumerable: true, get: function () { return request_builder_1.RequestBuilder; } });
50
+ var response_handler_1 = require("./shared/response-handler");
51
+ Object.defineProperty(exports, "ResponseHandler", { enumerable: true, get: function () { return response_handler_1.ResponseHandler; } });
52
+ // Provider Factory - Direct exports, no wrappers
53
+ var ConfigBuilder_1 = require("./providers/ConfigBuilder");
54
+ Object.defineProperty(exports, "ConfigBuilder", { enumerable: true, get: function () { return ConfigBuilder_1.ConfigBuilder; } });
55
+ Object.defineProperty(exports, "GenerationConfigBuilder", { enumerable: true, get: function () { return ConfigBuilder_1.GenerationConfigBuilder; } });
46
56
  var ProviderFactory_1 = require("./providers/ProviderFactory");
47
- Object.defineProperty(exports, "ConfigBuilder", { enumerable: true, get: function () { return ProviderFactory_1.ConfigBuilder; } });
48
- Object.defineProperty(exports, "GenerationConfigBuilder", { enumerable: true, get: function () { return ProviderFactory_1.GenerationConfigBuilder; } });
49
- Object.defineProperty(exports, "providerFactory", { enumerable: true, get: function () { return ProviderFactory_1.providerFactory; } });
50
57
  Object.defineProperty(exports, "initializeProvider", { enumerable: true, get: function () { return ProviderFactory_1.initializeProvider; } });
51
- Object.defineProperty(exports, "configureProvider", { enumerable: true, get: function () { return ProviderFactory_1.configureProvider; } });
52
58
  Object.defineProperty(exports, "resetProvider", { enumerable: true, get: function () { return ProviderFactory_1.resetProvider; } });
53
- // Utilities
59
+ Object.defineProperty(exports, "isProviderInitialized", { enumerable: true, get: function () { return ProviderFactory_1.isProviderInitialized; } });
60
+ // Utilities - Direct exports, no barrel re-exports
54
61
  var content_mapper_util_1 = require("./infrastructure/utils/content-mapper.util");
55
62
  Object.defineProperty(exports, "createUserMessage", { enumerable: true, get: function () { return content_mapper_util_1.createUserMessage; } });
56
63
  Object.defineProperty(exports, "createAssistantMessage", { enumerable: true, get: function () { return content_mapper_util_1.createAssistantMessage; } });
@@ -59,15 +66,30 @@ Object.defineProperty(exports, "createTextMessage", { enumerable: true, get: fun
59
66
  Object.defineProperty(exports, "promptToMessages", { enumerable: true, get: function () { return content_mapper_util_1.promptToMessages; } });
60
67
  Object.defineProperty(exports, "extractTextFromMessages", { enumerable: true, get: function () { return content_mapper_util_1.extractTextFromMessages; } });
61
68
  Object.defineProperty(exports, "formatMessagesForDisplay", { enumerable: true, get: function () { return content_mapper_util_1.formatMessagesForDisplay; } });
69
+ Object.defineProperty(exports, "cleanJsonResponse", { enumerable: true, get: function () { return content_mapper_util_1.cleanJsonResponse; } });
62
70
  var error_mapper_util_1 = require("./infrastructure/utils/error-mapper.util");
63
71
  Object.defineProperty(exports, "getUserFriendlyError", { enumerable: true, get: function () { return error_mapper_util_1.getUserFriendlyError; } });
64
72
  Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return error_mapper_util_1.isRetryableError; } });
65
73
  Object.defineProperty(exports, "isAuthError", { enumerable: true, get: function () { return error_mapper_util_1.isAuthError; } });
66
74
  Object.defineProperty(exports, "formatErrorForLogging", { enumerable: true, get: function () { return error_mapper_util_1.formatErrorForLogging; } });
67
- var async_1 = require("./infrastructure/utils/async");
68
- Object.defineProperty(exports, "executeWithState", { enumerable: true, get: function () { return async_1.executeWithState; } });
69
- Object.defineProperty(exports, "executeWithRetry", { enumerable: true, get: function () { return async_1.executeWithRetry; } });
70
- var telemetry_1 = require("./infrastructure/telemetry");
71
- Object.defineProperty(exports, "telemetry", { enumerable: true, get: function () { return telemetry_1.telemetry; } });
72
- Object.defineProperty(exports, "useTelemetry", { enumerable: true, get: function () { return telemetry_1.useTelemetry; } });
75
+ var execute_state_util_1 = require("./infrastructure/utils/async/execute-state.util");
76
+ Object.defineProperty(exports, "executeWithState", { enumerable: true, get: function () { return execute_state_util_1.executeWithState; } });
77
+ Object.defineProperty(exports, "executeWithRetry", { enumerable: true, get: function () { return execute_state_util_1.executeWithRetry; } });
78
+ var calculation_util_1 = require("./infrastructure/utils/calculation.util");
79
+ Object.defineProperty(exports, "generateRandomId", { enumerable: true, get: function () { return calculation_util_1.generateRandomId; } });
80
+ Object.defineProperty(exports, "generateSessionId", { enumerable: true, get: function () { return calculation_util_1.generateSessionId; } });
81
+ Object.defineProperty(exports, "calculateMaxMessages", { enumerable: true, get: function () { return calculation_util_1.calculateMaxMessages; } });
82
+ Object.defineProperty(exports, "calculateExponentialBackoff", { enumerable: true, get: function () { return calculation_util_1.calculateExponentialBackoff; } });
83
+ Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return calculation_util_1.clamp; } });
84
+ Object.defineProperty(exports, "calculatePercentage", { enumerable: true, get: function () { return calculation_util_1.calculatePercentage; } });
85
+ Object.defineProperty(exports, "calculateSafeBufferSize", { enumerable: true, get: function () { return calculation_util_1.calculateSafeBufferSize; } });
86
+ Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return calculation_util_1.estimateTokens; } });
87
+ Object.defineProperty(exports, "isWithinSafeLimit", { enumerable: true, get: function () { return calculation_util_1.isWithinSafeLimit; } });
88
+ Object.defineProperty(exports, "calculateRetryDelayWithJitter", { enumerable: true, get: function () { return calculation_util_1.calculateRetryDelayWithJitter; } });
89
+ Object.defineProperty(exports, "calculateRequestTimeout", { enumerable: true, get: function () { return calculation_util_1.calculateRequestTimeout; } });
90
+ Object.defineProperty(exports, "calculateTransferRate", { enumerable: true, get: function () { return calculation_util_1.calculateTransferRate; } });
91
+ Object.defineProperty(exports, "calculateAverage", { enumerable: true, get: function () { return calculation_util_1.calculateAverage; } });
92
+ var TelemetryHooks_1 = require("./infrastructure/telemetry/TelemetryHooks");
93
+ Object.defineProperty(exports, "telemetry", { enumerable: true, get: function () { return TelemetryHooks_1.telemetry; } });
94
+ Object.defineProperty(exports, "useTelemetry", { enumerable: true, get: function () { return TelemetryHooks_1.useTelemetry; } });
73
95
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAmBH,8CAG2B;AAFzB,uGAAA,WAAW,OAAA;AACX,0GAAA,cAAc,OAAA;AAGhB,6DAIuC;AAHrC,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,uHAAA,wBAAwB,OAAA;AAG1B,mDAMkC;AALhC,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA;AAKf,WAAW;AACX,mEAAsE;AAA7D,4GAAA,cAAc,OAAA;AACvB,2EAA0F;AAAjF,gHAAA,cAAc,OAAA;AAAE,gHAAA,cAAc,OAAA;AACvC,2EAA0F;AAAjF,gHAAA,cAAc,OAAA;AAAE,gHAAA,cAAc,OAAA;AACvC,iEAA+E;AAAtE,sGAAA,SAAS,OAAA;AAAE,0GAAA,aAAa,OAAA;AACjC,sDAUmC;AATjC,8GAAA,kBAAkB,OAAA;AAClB,6GAAA,iBAAiB,OAAA;AACjB,2GAAA,eAAe,OAAA;AACf,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AASjB,cAAc;AACd,wDAAuD;AAA9C,kGAAA,OAAO,OAAA;AAGhB,gFAA+E;AAAtE,0HAAA,mBAAmB,OAAA;AAE5B,mCAAmC;AACnC,+DAOqC;AANnC,gHAAA,aAAa,OAAA;AACb,0HAAA,uBAAuB,OAAA;AACvB,kHAAA,eAAe,OAAA;AACf,qHAAA,kBAAkB,OAAA;AAClB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AAQf,YAAY;AACZ,kFAQoD;AAPlD,wHAAA,iBAAiB,OAAA;AACjB,6HAAA,sBAAsB,OAAA;AACtB,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,uHAAA,gBAAgB,OAAA;AAChB,8HAAA,uBAAuB,OAAA;AACvB,+HAAA,wBAAwB,OAAA;AAG1B,8EAKkD;AAJhD,yHAAA,oBAAoB,OAAA;AACpB,qHAAA,gBAAgB,OAAA;AAChB,gHAAA,WAAW,OAAA;AACX,0HAAA,qBAAqB,OAAA;AAGvB,sDAKsC;AAJpC,yGAAA,gBAAgB,OAAA;AAChB,yGAAA,gBAAgB,OAAA;AAKlB,wDAGoC;AAFlC,sGAAA,SAAS,OAAA;AACT,yGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAmBH,2DAA2E;AAAlE,yGAAA,WAAW,OAAA;AAAE,4GAAA,cAAc,OAAA;AAEpC,6DAIuC;AAHrC,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,uHAAA,wBAAwB,OAAA;AAG1B,mDAMkC;AALhC,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA;AAKf,qCAAqC;AACrC,2FAA2G;AAAlG,uHAAA,YAAY,OAAA;AACrB,uGAA6H;AAApH,mIAAA,kBAAkB,OAAA;AAC3B,+EAAuH;AAA9G,+GAAA,UAAU,OAAA;AACnB,2FAA6G;AAApG,yHAAA,cAAc,OAAA;AACvB,qFAAyH;AAAhH,0HAAA,kBAAkB,OAAA;AAE3B,wCAAwC;AACxC,2EAAwE;AAA/D,kHAAA,cAAc,OAAA;AACvB,2EAA8E;AAArE,wHAAA,oBAAoB,OAAA;AAE7B,sCAAsC;AACtC,oEAAsG;AAA7F,wGAAA,OAAO,OAAA;AAEhB,gCAAgC;AAChC,0CAAoE;AAA3D,gGAAA,MAAM,OAAA;AAAE,kGAAA,QAAQ,OAAA;AACzB,wCAAyD;AAAhD,8FAAA,KAAK,OAAA;AACd,4DAAsF;AAA7E,iHAAA,cAAc,OAAA;AACvB,8DAAwF;AAA/E,mHAAA,eAAe,OAAA;AAExB,iDAAiD;AACjD,2DAAmF;AAA1E,8GAAA,aAAa,OAAA;AAAE,wHAAA,uBAAuB,OAAA;AAC/C,+DAA4H;AAAnH,qHAAA,kBAAkB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAEjE,mDAAmD;AACnD,kFASoD;AARlD,wHAAA,iBAAiB,OAAA;AACjB,6HAAA,sBAAsB,OAAA;AACtB,0HAAA,mBAAmB,OAAA;AACnB,wHAAA,iBAAiB,OAAA;AACjB,uHAAA,gBAAgB,OAAA;AAChB,8HAAA,uBAAuB,OAAA;AACvB,+HAAA,wBAAwB,OAAA;AACxB,wHAAA,iBAAiB,OAAA;AAGnB,8EAKkD;AAJhD,yHAAA,oBAAoB,OAAA;AACpB,qHAAA,gBAAgB,OAAA;AAChB,gHAAA,WAAW,OAAA;AACX,0HAAA,qBAAqB,OAAA;AAGvB,sFAKyD;AAJvD,sHAAA,gBAAgB,OAAA;AAChB,sHAAA,gBAAgB,OAAA;AAKlB,4EAciD;AAb/C,oHAAA,gBAAgB,OAAA;AAChB,qHAAA,iBAAiB,OAAA;AACjB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAC3B,yGAAA,KAAK,OAAA;AACL,uHAAA,mBAAmB,OAAA;AACnB,2HAAA,uBAAuB,OAAA;AACvB,kHAAA,cAAc,OAAA;AACd,qHAAA,iBAAiB,OAAA;AACjB,iIAAA,6BAA6B,OAAA;AAC7B,2HAAA,uBAAuB,OAAA;AACvB,yHAAA,qBAAqB,OAAA;AACrB,oHAAA,gBAAgB,OAAA;AAGlB,4EAAoF;AAA3E,2GAAA,SAAS,OAAA;AAAE,8GAAA,YAAY,OAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Groq HTTP Client
3
+ * Core HTTP client for Groq API - simplified and focused
4
+ */
5
+ import type { GroqConfig, GroqChatRequest, GroqChatResponse } from "../../domain/entities/groq.types";
6
+ declare class GroqHttpClient {
7
+ private config;
8
+ private initialized;
9
+ initialize(config: GroqConfig): void;
10
+ private normalizeBaseUrl;
11
+ private validateTimeout;
12
+ isInitialized(): boolean;
13
+ getConfig(): GroqConfig;
14
+ private request;
15
+ private handleErrorResponse;
16
+ private handleRequestError;
17
+ chatCompletion(request: GroqChatRequest): Promise<GroqChatResponse>;
18
+ reset(): void;
19
+ }
20
+ export declare const groqHttpClient: GroqHttpClient;
21
+ export {};
22
+ //# sourceMappingURL=groq-http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq-http-client.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/http/groq-http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAS1C,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAAS;IAE5B,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IA0CpC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAevB,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,UAAU;YAUT,OAAO;YAmDP,mBAAmB;IAwBjC,OAAO,CAAC,kBAAkB;IAkBpB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOzE,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * Groq HTTP Client
4
+ * Core HTTP client for Groq API - simplified and focused
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.groqHttpClient = void 0;
8
+ const error_types_1 = require("../../domain/entities/error.types");
9
+ const logger_1 = require("../../shared/logger");
10
+ const DEFAULT_BASE_URL = "https://api.groq.com/openai/v1";
11
+ const DEFAULT_TIMEOUT = 60000;
12
+ const MIN_API_KEY_LENGTH = 10;
13
+ const GROQ_KEY_PREFIX = "gsk_";
14
+ class GroqHttpClient {
15
+ constructor() {
16
+ this.config = null;
17
+ this.initialized = false;
18
+ }
19
+ initialize(config) {
20
+ const apiKey = config.apiKey?.trim();
21
+ logger_1.logger.debug("GroqClient", "Initializing", {
22
+ hasApiKey: !!apiKey,
23
+ keyLength: apiKey?.length,
24
+ baseUrl: config.baseUrl || DEFAULT_BASE_URL,
25
+ });
26
+ if (!apiKey) {
27
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.INVALID_API_KEY, "API key is required");
28
+ }
29
+ if (apiKey.length < MIN_API_KEY_LENGTH) {
30
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.INVALID_API_KEY, `API key must be at least ${MIN_API_KEY_LENGTH} characters`);
31
+ }
32
+ if (!apiKey.startsWith(GROQ_KEY_PREFIX)) {
33
+ logger_1.logger.warn("GroqClient", "API key does not start with expected prefix", {
34
+ prefix: GROQ_KEY_PREFIX,
35
+ });
36
+ }
37
+ this.config = {
38
+ apiKey,
39
+ baseUrl: this.normalizeBaseUrl(config.baseUrl),
40
+ timeoutMs: this.validateTimeout(config.timeoutMs),
41
+ textModel: config.textModel,
42
+ };
43
+ this.initialized = true;
44
+ logger_1.logger.debug("GroqClient", "Initialization complete", {
45
+ initialized: this.initialized,
46
+ });
47
+ }
48
+ normalizeBaseUrl(baseUrl) {
49
+ if (!baseUrl) {
50
+ return DEFAULT_BASE_URL;
51
+ }
52
+ return baseUrl.replace(/\/+$/, ""); // Remove trailing slashes
53
+ }
54
+ validateTimeout(timeout) {
55
+ const DEFAULT = DEFAULT_TIMEOUT;
56
+ if (timeout === undefined || timeout === null) {
57
+ return DEFAULT;
58
+ }
59
+ if (!Number.isFinite(timeout) || timeout <= 0) {
60
+ logger_1.logger.warn("GroqClient", "Invalid timeout, using default", {
61
+ provided: timeout,
62
+ default: DEFAULT,
63
+ });
64
+ return DEFAULT;
65
+ }
66
+ return Math.min(timeout, 300000); // Cap at 5 minutes
67
+ }
68
+ isInitialized() {
69
+ return this.initialized && this.config !== null;
70
+ }
71
+ getConfig() {
72
+ if (!this.config || !this.initialized) {
73
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.MISSING_CONFIG, "Client not initialized");
74
+ }
75
+ return this.config;
76
+ }
77
+ async request(endpoint, body) {
78
+ if (!this.config || !this.initialized) {
79
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.MISSING_CONFIG, "Client not initialized");
80
+ }
81
+ const url = `${this.config.baseUrl}${endpoint}`;
82
+ const timeout = this.config.timeoutMs || DEFAULT_TIMEOUT;
83
+ logger_1.logger.debug("GroqClient", "API Request", {
84
+ endpoint,
85
+ timeout: `${timeout}ms`,
86
+ });
87
+ const controller = new AbortController();
88
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
89
+ try {
90
+ const response = await fetch(url, {
91
+ method: "POST",
92
+ headers: {
93
+ "Content-Type": "application/json",
94
+ "Authorization": `Bearer ${this.config.apiKey}`,
95
+ },
96
+ body: JSON.stringify(body),
97
+ signal: controller.signal,
98
+ });
99
+ clearTimeout(timeoutId);
100
+ if (!response.ok) {
101
+ await this.handleErrorResponse(response);
102
+ }
103
+ const text = await response.text();
104
+ if (!text) {
105
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.SERVER_ERROR, "Empty response from server");
106
+ }
107
+ try {
108
+ return JSON.parse(text);
109
+ }
110
+ catch {
111
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.SERVER_ERROR, `Invalid JSON response: ${text.substring(0, 200)}`);
112
+ }
113
+ }
114
+ catch (error) {
115
+ throw this.handleRequestError(error);
116
+ }
117
+ }
118
+ async handleErrorResponse(response) {
119
+ let errorMessage = `HTTP ${response.status}`;
120
+ const errorType = (0, error_types_1.mapHttpStatusToErrorType)(response.status);
121
+ try {
122
+ const text = await response.text();
123
+ if (text) {
124
+ try {
125
+ const errorData = JSON.parse(text);
126
+ if (errorData.error?.message) {
127
+ errorMessage = errorData.error.message;
128
+ }
129
+ }
130
+ catch {
131
+ // Use text content if JSON parsing fails
132
+ errorMessage = text.substring(0, 500);
133
+ }
134
+ }
135
+ }
136
+ catch {
137
+ // Use default message
138
+ }
139
+ throw new error_types_1.GroqError(errorType, errorMessage);
140
+ }
141
+ handleRequestError(error) {
142
+ if (error instanceof error_types_1.GroqError)
143
+ return error;
144
+ if (error instanceof Error) {
145
+ if (error.name === "AbortError") {
146
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.ABORT_ERROR, "Request timeout", error);
147
+ }
148
+ if (error.name === "TypeError" && error.message.includes("network")) {
149
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.NETWORK_ERROR, "Network error", error);
150
+ }
151
+ }
152
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, error instanceof Error ? error.message : "Unknown error");
153
+ }
154
+ async chatCompletion(request) {
155
+ return this.request("/chat/completions", {
156
+ ...request,
157
+ stream: false,
158
+ });
159
+ }
160
+ reset() {
161
+ this.config = null;
162
+ this.initialized = false;
163
+ }
164
+ }
165
+ exports.groqHttpClient = new GroqHttpClient();
166
+ //# sourceMappingURL=groq-http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq-http-client.js","sourceRoot":"","sources":["../../../src/infrastructure/http/groq-http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Streaming Client
3
+ * Handles SSE streaming from Groq API
4
+ * Optimized for performance and memory efficiency
5
+ */
6
+ import type { GroqChatRequest, GroqChatChunk } from "../../domain/entities/groq.types";
7
+ export declare function streamChatCompletion(request: GroqChatRequest, config: {
8
+ apiKey: string;
9
+ baseUrl: string;
10
+ timeoutMs?: number;
11
+ }): AsyncGenerator<GroqChatChunk>;
12
+ //# sourceMappingURL=streaming-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-client.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/http/streaming-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAQvF,wBAAuB,oBAAoB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,cAAc,CAAC,aAAa,CAAC,CAG/B"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * Streaming Client
4
+ * Handles SSE streaming from Groq API
5
+ * Optimized for performance and memory efficiency
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.streamChatCompletion = streamChatCompletion;
9
+ const error_types_1 = require("../../domain/entities/error.types");
10
+ const logger_1 = require("../../shared/logger");
11
+ const DEFAULT_TIMEOUT = 60000;
12
+ const MAX_BUFFER_SIZE = 1024 * 1024; // 1MB
13
+ const MAX_INCOMPLETE_CHUNKS = 10;
14
+ async function* streamChatCompletion(request, config) {
15
+ const client = new GroqStreamingClient();
16
+ yield* client.stream(request, config);
17
+ }
18
+ class GroqStreamingClient {
19
+ normalizeBaseUrl(baseUrl) {
20
+ return baseUrl.replace(/\/+$/, "");
21
+ }
22
+ validateTimeout(timeout) {
23
+ if (timeout === undefined || timeout === null || timeout <= 0) {
24
+ return DEFAULT_TIMEOUT;
25
+ }
26
+ return Math.min(timeout, 300000);
27
+ }
28
+ async *stream(request, config) {
29
+ const baseUrl = this.normalizeBaseUrl(config.baseUrl);
30
+ const url = `${baseUrl}/chat/completions`;
31
+ const timeout = this.validateTimeout(config.timeoutMs);
32
+ logger_1.logger.debug("StreamingClient", "Starting stream", { model: request.model });
33
+ const controller = new AbortController();
34
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
35
+ try {
36
+ const response = await fetch(url, {
37
+ method: "POST",
38
+ headers: {
39
+ "Content-Type": "application/json",
40
+ "Authorization": `Bearer ${config.apiKey}`,
41
+ },
42
+ body: JSON.stringify({ ...request, stream: true }),
43
+ signal: controller.signal,
44
+ });
45
+ clearTimeout(timeoutId);
46
+ if (!response.ok) {
47
+ await this.handleErrorResponse(response);
48
+ }
49
+ if (!response.body) {
50
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.NETWORK_ERROR, "Response body is empty");
51
+ }
52
+ yield* this.parseSSE(response.body);
53
+ }
54
+ catch (error) {
55
+ throw this.handleRequestError(error);
56
+ }
57
+ finally {
58
+ clearTimeout(timeoutId);
59
+ }
60
+ }
61
+ async *parseSSE(body) {
62
+ const reader = body.getReader();
63
+ const decoder = new TextDecoder();
64
+ const chunks = []; // Array for efficient string building
65
+ let buffer = "";
66
+ let consecutiveErrors = 0;
67
+ try {
68
+ while (true) {
69
+ const { done, value } = await reader.read();
70
+ if (done)
71
+ break;
72
+ chunks.push(decoder.decode(value, { stream: true }));
73
+ // Join all chunks at once - more efficient than +=
74
+ buffer = chunks.join("");
75
+ chunks.length = 0; // Clear array
76
+ // Trim buffer if necessary
77
+ if (buffer.length > MAX_BUFFER_SIZE) {
78
+ buffer = buffer.slice(-Math.floor(MAX_BUFFER_SIZE / 2));
79
+ logger_1.logger.warn("StreamingClient", "Buffer trimmed");
80
+ }
81
+ const lines = buffer.split("\n");
82
+ buffer = lines.pop() || "";
83
+ for (const line of lines) {
84
+ const trimmed = line.trim();
85
+ if (!trimmed || trimmed === "data: [DONE]")
86
+ continue;
87
+ if (trimmed.startsWith("data: ")) {
88
+ try {
89
+ const jsonStr = trimmed.slice(6);
90
+ const chunk = JSON.parse(jsonStr);
91
+ consecutiveErrors = 0;
92
+ yield chunk;
93
+ }
94
+ catch (error) {
95
+ consecutiveErrors++;
96
+ logger_1.logger.error("StreamingClient", "Parse error", {
97
+ error: error instanceof Error ? error.message : String(error),
98
+ consecutiveErrors,
99
+ });
100
+ if (consecutiveErrors >= MAX_INCOMPLETE_CHUNKS) {
101
+ throw new error_types_1.GroqError(error_types_1.GroqErrorType.SERVER_ERROR, `Stream corrupted: ${consecutiveErrors} parse failures`);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ finally {
109
+ reader.releaseLock();
110
+ }
111
+ }
112
+ async handleErrorResponse(response) {
113
+ let errorMessage = `HTTP ${response.status}`;
114
+ const errorType = (0, error_types_1.mapHttpStatusToErrorType)(response.status);
115
+ try {
116
+ const text = await response.text();
117
+ if (text) {
118
+ try {
119
+ const errorData = JSON.parse(text);
120
+ if (errorData.error?.message) {
121
+ errorMessage = errorData.error.message;
122
+ }
123
+ }
124
+ catch {
125
+ errorMessage = text.substring(0, 500);
126
+ }
127
+ }
128
+ }
129
+ catch {
130
+ // Use default message
131
+ }
132
+ throw new error_types_1.GroqError(errorType, errorMessage);
133
+ }
134
+ handleRequestError(error) {
135
+ if (error instanceof error_types_1.GroqError)
136
+ return error;
137
+ if (error instanceof Error) {
138
+ if (error.name === "AbortError") {
139
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.ABORT_ERROR, "Request timeout", error);
140
+ }
141
+ if (error.name === "TypeError" && error.message.includes("fetch")) {
142
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.NETWORK_ERROR, "Network error", error);
143
+ }
144
+ }
145
+ return new error_types_1.GroqError(error_types_1.GroqErrorType.UNKNOWN_ERROR, error instanceof Error ? error.message : "Unknown error");
146
+ }
147
+ }
148
+ //# sourceMappingURL=streaming-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-client.js","sourceRoot":"","sources":["../../../src/infrastructure/http/streaming-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Telemetry Hooks
3
3
  * Simple telemetry tracking for Groq operations
4
+ * Optimized with O(1) circular buffer
4
5
  */
5
6
  type TelemetryEvent = {
6
7
  name: string;
@@ -10,16 +11,21 @@ type TelemetryEvent = {
10
11
  declare class Telemetry {
11
12
  private events;
12
13
  private enabled;
14
+ private readonly MAX_EVENTS;
15
+ private head;
16
+ private count;
17
+ constructor();
13
18
  /**
14
- * Log a telemetry event
19
+ * Log a telemetry event - O(1) operation
15
20
  */
16
21
  log(name: string, data?: Record<string, unknown>): void;
17
22
  /**
18
- * Get all events
23
+ * Get all events in chronological order
24
+ * Returns frozen array to prevent external mutations
19
25
  */
20
- getEvents(): TelemetryEvent[];
26
+ getEvents(): ReadonlyArray<TelemetryEvent>;
21
27
  /**
22
- * Clear all events
28
+ * Clear all events - O(1)
23
29
  */
24
30
  clear(): void;
25
31
  /**
@@ -30,6 +36,10 @@ declare class Telemetry {
30
36
  * Check if telemetry is enabled
31
37
  */
32
38
  isEnabled(): boolean;
39
+ /**
40
+ * Get event count - O(1)
41
+ */
42
+ getEventCount(): number;
33
43
  }
34
44
  /**
35
45
  * Singleton instance
@@ -37,12 +47,14 @@ declare class Telemetry {
37
47
  export declare const telemetry: Telemetry;
38
48
  /**
39
49
  * Hook to use telemetry in components
50
+ * Memoized to prevent unnecessary re-renders
40
51
  */
41
52
  export declare function useTelemetry(): {
42
53
  log: any;
43
54
  getEvents: any;
44
55
  clear: any;
45
56
  isEnabled: any;
57
+ getEventCount: any;
46
58
  };
47
59
  export {};
48
60
  //# sourceMappingURL=TelemetryHooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TelemetryHooks.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/TelemetryHooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAW;IAE1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgBvD;;OAEG;IACH,SAAS,IAAI,cAAc,EAAE;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC;AAEzC;;GAEG;AACH,wBAAgB,YAAY;;;;;EAO3B"}
1
+ {"version":3,"file":"TelemetryHooks.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/TelemetryHooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAK;;IAMlB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkBvD;;;OAGG;IACH,SAAS,IAAI,aAAa,CAAC,cAAc,CAAC;IAmB1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,YAAY;;;;;;EAW3B"}