@umituz/react-native-ai-groq-provider 1.0.27 → 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.
- package/dist/application/use-cases/chat-generation.usecase.d.ts +11 -0
- package/dist/application/use-cases/chat-generation.usecase.d.ts.map +1 -0
- package/dist/application/use-cases/chat-generation.usecase.js +40 -0
- package/dist/application/use-cases/chat-generation.usecase.js.map +1 -0
- package/dist/application/use-cases/chat-session.usecase.d.ts +41 -0
- package/dist/application/use-cases/chat-session.usecase.d.ts.map +1 -0
- package/dist/application/use-cases/chat-session.usecase.js +138 -0
- package/dist/application/use-cases/chat-session.usecase.js.map +1 -0
- package/dist/application/use-cases/streaming.usecase.d.ts +17 -0
- package/dist/application/use-cases/streaming.usecase.d.ts.map +1 -0
- package/dist/application/use-cases/streaming.usecase.js +46 -0
- package/dist/application/use-cases/streaming.usecase.js.map +1 -0
- package/dist/application/use-cases/structured-generation.usecase.d.ts +14 -0
- package/dist/application/use-cases/structured-generation.usecase.d.ts.map +1 -0
- package/dist/application/use-cases/structured-generation.usecase.js +77 -0
- package/dist/application/use-cases/structured-generation.usecase.js.map +1 -0
- package/dist/application/use-cases/text-generation.usecase.d.ts +11 -0
- package/dist/application/use-cases/text-generation.usecase.d.ts.map +1 -0
- package/dist/application/use-cases/text-generation.usecase.js +36 -0
- package/dist/application/use-cases/text-generation.usecase.js.map +1 -0
- package/dist/domain/entities/error.types.d.ts +3 -1
- package/dist/domain/entities/error.types.d.ts.map +1 -1
- package/dist/domain/entities/error.types.js +12 -2
- package/dist/domain/entities/error.types.js.map +1 -1
- package/dist/index.d.ts +20 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -39
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/http/groq-http-client.d.ts +22 -0
- package/dist/infrastructure/http/groq-http-client.d.ts.map +1 -0
- package/dist/infrastructure/http/groq-http-client.js +166 -0
- package/dist/infrastructure/http/groq-http-client.js.map +1 -0
- package/dist/infrastructure/http/streaming-client.d.ts +12 -0
- package/dist/infrastructure/http/streaming-client.d.ts.map +1 -0
- package/dist/infrastructure/http/streaming-client.js +148 -0
- package/dist/infrastructure/http/streaming-client.js.map +1 -0
- package/dist/infrastructure/telemetry/TelemetryHooks.d.ts +16 -4
- package/dist/infrastructure/telemetry/TelemetryHooks.d.ts.map +1 -1
- package/dist/infrastructure/telemetry/TelemetryHooks.js +44 -11
- package/dist/infrastructure/telemetry/TelemetryHooks.js.map +1 -1
- package/dist/infrastructure/utils/async/execute-state.util.d.ts +6 -2
- package/dist/infrastructure/utils/async/execute-state.util.d.ts.map +1 -1
- package/dist/infrastructure/utils/async/execute-state.util.js +29 -4
- package/dist/infrastructure/utils/async/execute-state.util.js.map +1 -1
- package/dist/infrastructure/utils/calculation.util.d.ts +61 -0
- package/dist/infrastructure/utils/calculation.util.d.ts.map +1 -0
- package/dist/infrastructure/utils/calculation.util.js +165 -0
- package/dist/infrastructure/utils/calculation.util.js.map +1 -0
- package/dist/infrastructure/utils/content-mapper.util.d.ts +5 -1
- package/dist/infrastructure/utils/content-mapper.util.d.ts.map +1 -1
- package/dist/infrastructure/utils/content-mapper.util.js +17 -0
- package/dist/infrastructure/utils/content-mapper.util.js.map +1 -1
- package/dist/presentation/hooks/use-groq.hook.d.ts +26 -0
- package/dist/presentation/hooks/use-groq.hook.d.ts.map +1 -0
- package/dist/presentation/hooks/use-groq.hook.js +151 -0
- package/dist/presentation/hooks/use-groq.hook.js.map +1 -0
- package/dist/providers/ConfigBuilder.d.ts +1 -57
- package/dist/providers/ConfigBuilder.d.ts.map +1 -1
- package/dist/providers/ConfigBuilder.js +2 -68
- package/dist/providers/ConfigBuilder.js.map +1 -1
- package/dist/providers/ProviderFactory.d.ts +4 -34
- package/dist/providers/ProviderFactory.d.ts.map +1 -1
- package/dist/providers/ProviderFactory.js +9 -50
- package/dist/providers/ProviderFactory.js.map +1 -1
- package/dist/shared/logger.d.ts +26 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +52 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/request-builder.d.ts +17 -0
- package/dist/shared/request-builder.d.ts.map +1 -0
- package/dist/shared/request-builder.js +54 -0
- package/dist/shared/request-builder.js.map +1 -0
- package/dist/shared/response-handler.d.ts +38 -0
- package/dist/shared/response-handler.d.ts.map +1 -0
- package/dist/shared/response-handler.js +69 -0
- package/dist/shared/response-handler.js.map +1 -0
- package/dist/shared/timer.d.ts +20 -0
- package/dist/shared/timer.d.ts.map +1 -0
- package/dist/shared/timer.js +32 -0
- package/dist/shared/timer.js.map +1 -0
- package/package.json +1 -1
- package/src/application/use-cases/chat-generation.usecase.ts +55 -0
- package/src/index.ts +1 -0
|
@@ -2,17 +2,22 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Telemetry Hooks
|
|
4
4
|
* Simple telemetry tracking for Groq operations
|
|
5
|
+
* Optimized with O(1) circular buffer
|
|
5
6
|
*/
|
|
6
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
8
|
exports.telemetry = void 0;
|
|
8
9
|
exports.useTelemetry = useTelemetry;
|
|
10
|
+
const react_1 = require("react");
|
|
9
11
|
class Telemetry {
|
|
10
12
|
constructor() {
|
|
11
13
|
this.events = [];
|
|
12
|
-
this.
|
|
14
|
+
this.MAX_EVENTS = 1000;
|
|
15
|
+
this.head = 0; // Write position
|
|
16
|
+
this.count = 0; // Actual number of events
|
|
17
|
+
this.enabled = typeof __DEV__ !== "undefined" && __DEV__;
|
|
13
18
|
}
|
|
14
19
|
/**
|
|
15
|
-
* Log a telemetry event
|
|
20
|
+
* Log a telemetry event - O(1) operation
|
|
16
21
|
*/
|
|
17
22
|
log(name, data) {
|
|
18
23
|
if (!this.enabled)
|
|
@@ -22,28 +27,48 @@ class Telemetry {
|
|
|
22
27
|
timestamp: Date.now(),
|
|
23
28
|
data,
|
|
24
29
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
// Circular buffer: O(1) write
|
|
31
|
+
this.events[this.head] = event;
|
|
32
|
+
this.head = (this.head + 1) % this.MAX_EVENTS;
|
|
33
|
+
if (this.count < this.MAX_EVENTS) {
|
|
34
|
+
this.count++;
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
37
|
/**
|
|
31
|
-
* Get all events
|
|
38
|
+
* Get all events in chronological order
|
|
39
|
+
* Returns frozen array to prevent external mutations
|
|
32
40
|
*/
|
|
33
41
|
getEvents() {
|
|
34
|
-
|
|
42
|
+
if (this.count === 0) {
|
|
43
|
+
return Object.freeze([]);
|
|
44
|
+
}
|
|
45
|
+
// O(n) but only when called, not on every log
|
|
46
|
+
if (this.count < this.MAX_EVENTS) {
|
|
47
|
+
// Not wrapped yet, just return slice
|
|
48
|
+
return Object.freeze(this.events.slice(0, this.count));
|
|
49
|
+
}
|
|
50
|
+
// Wrapped around - need to reorder
|
|
51
|
+
const result = new Array(this.count);
|
|
52
|
+
for (let i = 0; i < this.count; i++) {
|
|
53
|
+
result[i] = this.events[(this.head + i) % this.MAX_EVENTS];
|
|
54
|
+
}
|
|
55
|
+
return Object.freeze(result);
|
|
35
56
|
}
|
|
36
57
|
/**
|
|
37
|
-
* Clear all events
|
|
58
|
+
* Clear all events - O(1)
|
|
38
59
|
*/
|
|
39
60
|
clear() {
|
|
40
|
-
this.
|
|
61
|
+
this.head = 0;
|
|
62
|
+
this.count = 0;
|
|
41
63
|
}
|
|
42
64
|
/**
|
|
43
65
|
* Enable/disable telemetry
|
|
44
66
|
*/
|
|
45
67
|
setEnabled(enabled) {
|
|
46
68
|
this.enabled = enabled;
|
|
69
|
+
if (!enabled) {
|
|
70
|
+
this.clear();
|
|
71
|
+
}
|
|
47
72
|
}
|
|
48
73
|
/**
|
|
49
74
|
* Check if telemetry is enabled
|
|
@@ -51,6 +76,12 @@ class Telemetry {
|
|
|
51
76
|
isEnabled() {
|
|
52
77
|
return this.enabled;
|
|
53
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Get event count - O(1)
|
|
81
|
+
*/
|
|
82
|
+
getEventCount() {
|
|
83
|
+
return this.count;
|
|
84
|
+
}
|
|
54
85
|
}
|
|
55
86
|
/**
|
|
56
87
|
* Singleton instance
|
|
@@ -58,13 +89,15 @@ class Telemetry {
|
|
|
58
89
|
exports.telemetry = new Telemetry();
|
|
59
90
|
/**
|
|
60
91
|
* Hook to use telemetry in components
|
|
92
|
+
* Memoized to prevent unnecessary re-renders
|
|
61
93
|
*/
|
|
62
94
|
function useTelemetry() {
|
|
63
|
-
return {
|
|
95
|
+
return (0, react_1.useMemo)(() => ({
|
|
64
96
|
log: exports.telemetry.log.bind(exports.telemetry),
|
|
65
97
|
getEvents: exports.telemetry.getEvents.bind(exports.telemetry),
|
|
66
98
|
clear: exports.telemetry.clear.bind(exports.telemetry),
|
|
67
99
|
isEnabled: exports.telemetry.isEnabled.bind(exports.telemetry),
|
|
68
|
-
|
|
100
|
+
getEventCount: exports.telemetry.getEventCount.bind(exports.telemetry),
|
|
101
|
+
}), []);
|
|
69
102
|
}
|
|
70
103
|
//# sourceMappingURL=TelemetryHooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelemetryHooks.js","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/TelemetryHooks.ts"],"names":[],"mappings":";AAAA;;;
|
|
1
|
+
{"version":3,"file":"TelemetryHooks.js","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/TelemetryHooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,11 @@ export interface AsyncCallbacks<T> {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function executeWithState<T>(setters: AsyncStateSetters<T>, asyncFn: () => Promise<T>, callbacks?: AsyncCallbacks<T>): Promise<T>;
|
|
23
23
|
/**
|
|
24
|
-
* Execute async function with retry logic
|
|
24
|
+
* Execute async function with retry logic and exponential backoff
|
|
25
|
+
* @param asyncFn - Function to execute
|
|
26
|
+
* @param maxRetries - Maximum number of retry attempts (default: 3)
|
|
27
|
+
* @param delayMs - Initial delay in milliseconds (default: 1000)
|
|
28
|
+
* @param signal - Optional AbortSignal to cancel retries
|
|
25
29
|
*/
|
|
26
|
-
export declare function executeWithRetry<T>(asyncFn: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
30
|
+
export declare function executeWithRetry<T>(asyncFn: () => Promise<T>, maxRetries?: number, delayMs?: number, signal?: AbortSignal): Promise<T>;
|
|
27
31
|
//# sourceMappingURL=execute-state.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-state.util.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/utils/async/execute-state.util.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"execute-state.util.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/utils/async/execute-state.util.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,UAAU,GAAE,MAAU,EACtB,OAAO,GAAE,MAAa,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAyCZ"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.executeWithState = executeWithState;
|
|
7
7
|
exports.executeWithRetry = executeWithRetry;
|
|
8
|
+
const calculation_util_1 = require("../calculation.util");
|
|
8
9
|
/**
|
|
9
10
|
* Execute async function with state management
|
|
10
11
|
*/
|
|
@@ -29,19 +30,43 @@ async function executeWithState(setters, asyncFn, callbacks) {
|
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
32
|
-
* Execute async function with retry logic
|
|
33
|
+
* Execute async function with retry logic and exponential backoff
|
|
34
|
+
* @param asyncFn - Function to execute
|
|
35
|
+
* @param maxRetries - Maximum number of retry attempts (default: 3)
|
|
36
|
+
* @param delayMs - Initial delay in milliseconds (default: 1000)
|
|
37
|
+
* @param signal - Optional AbortSignal to cancel retries
|
|
33
38
|
*/
|
|
34
|
-
async function executeWithRetry(asyncFn, maxRetries = 3, delayMs = 1000) {
|
|
39
|
+
async function executeWithRetry(asyncFn, maxRetries = 3, delayMs = 1000, signal) {
|
|
40
|
+
// Validate inputs
|
|
41
|
+
if (maxRetries < 1) {
|
|
42
|
+
throw new Error("maxRetries must be at least 1");
|
|
43
|
+
}
|
|
44
|
+
if (delayMs < 0) {
|
|
45
|
+
throw new Error("delayMs must be non-negative");
|
|
46
|
+
}
|
|
35
47
|
let lastError = null;
|
|
48
|
+
const MAX_DELAY_MS = 30000; // Cap at 30 seconds
|
|
36
49
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
50
|
+
// Check if aborted
|
|
51
|
+
if (signal?.aborted) {
|
|
52
|
+
throw new Error("Retry operation was aborted");
|
|
53
|
+
}
|
|
37
54
|
try {
|
|
38
55
|
return await asyncFn();
|
|
39
56
|
}
|
|
40
57
|
catch (error) {
|
|
41
58
|
lastError = error;
|
|
42
59
|
if (attempt < maxRetries - 1) {
|
|
43
|
-
//
|
|
44
|
-
|
|
60
|
+
// Calculate exponential backoff delay using utility
|
|
61
|
+
const delay = (0, calculation_util_1.calculateExponentialBackoff)(delayMs, attempt);
|
|
62
|
+
const cappedDelay = (0, calculation_util_1.clamp)(delay, 0, MAX_DELAY_MS);
|
|
63
|
+
await new Promise((resolve, reject) => {
|
|
64
|
+
const timeoutId = setTimeout(() => resolve(), cappedDelay);
|
|
65
|
+
signal?.addEventListener("abort", () => {
|
|
66
|
+
clearTimeout(timeoutId);
|
|
67
|
+
reject(new Error("Retry operation was aborted during delay"));
|
|
68
|
+
}, { once: true });
|
|
69
|
+
});
|
|
45
70
|
}
|
|
46
71
|
}
|
|
47
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-state.util.js","sourceRoot":"","sources":["../../../../src/infrastructure/utils/async/execute-state.util.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"execute-state.util.js","sourceRoot":"","sources":["../../../../src/infrastructure/utils/async/execute-state.util.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA2BH,4CAyBC;AASD,4CA8CC;AAzGD,0DAG6B;AAmB7B;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,OAA6B,EAC7B,OAAyB,EACzB,SAA6B;IAE7B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAElD,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QAE/B,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QAClB,SAAS,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,SAAS,EAAE,OAAO,EAAE,CAAC,KAAc,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,OAAyB,EACzB,aAAqB,CAAC,EACtB,UAAkB,IAAI,EACtB,MAAoB;IAEpB,kBAAkB;IAClB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,oBAAoB;IAEhD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,mBAAmB;QACnB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAC;YAE3B,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC7B,oDAAoD;gBACpD,MAAM,KAAK,GAAG,IAAA,8CAA2B,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM,WAAW,GAAG,IAAA,wBAAK,EAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBAElD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;oBAE3D,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;wBACrC,YAAY,CAAC,SAAS,CAAC,CAAC;wBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;oBAChE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculation Utilities
|
|
3
|
+
* Common calculation and utility functions for numeric operations
|
|
4
|
+
* Optimized for performance
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a random unique identifier string
|
|
8
|
+
* Uses optimized single-pass operations
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateRandomId(length?: number): string;
|
|
11
|
+
/**
|
|
12
|
+
* Generate a unique chat session ID
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateSessionId(prefix?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate maximum number of messages based on token limit
|
|
17
|
+
*/
|
|
18
|
+
export declare function calculateMaxMessages(maxTokens: number, tokensPerMessage?: number): number;
|
|
19
|
+
/**
|
|
20
|
+
* Calculate exponential backoff delay
|
|
21
|
+
*/
|
|
22
|
+
export declare function calculateExponentialBackoff(baseDelay: number, attempt: number): number;
|
|
23
|
+
/**
|
|
24
|
+
* Clamp a value between min and max
|
|
25
|
+
*/
|
|
26
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Calculate percentage with optional decimal places
|
|
29
|
+
* Optimized: avoids string conversion
|
|
30
|
+
*/
|
|
31
|
+
export declare function calculatePercentage(value: number, total: number, decimals?: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate buffer size limit for streaming
|
|
34
|
+
*/
|
|
35
|
+
export declare function calculateSafeBufferSize(currentSize: number, maxSize: number): number;
|
|
36
|
+
/**
|
|
37
|
+
* Calculate token estimate from text
|
|
38
|
+
*/
|
|
39
|
+
export declare function estimateTokens(text: string): number;
|
|
40
|
+
/**
|
|
41
|
+
* Calculate if message count is within safe limits
|
|
42
|
+
*/
|
|
43
|
+
export declare function isWithinSafeLimit(messageCount: number, maxMessages: number): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Calculate retry delay with jitter
|
|
46
|
+
*/
|
|
47
|
+
export declare function calculateRetryDelayWithJitter(baseDelay: number, attempt: number, jitterFactor?: number): number;
|
|
48
|
+
/**
|
|
49
|
+
* Calculate timeout for network requests
|
|
50
|
+
*/
|
|
51
|
+
export declare function calculateRequestTimeout(attempt: number, baseTimeout?: number, maxTimeout?: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* Calculate data transfer rate
|
|
54
|
+
*/
|
|
55
|
+
export declare function calculateTransferRate(bytes: number, milliseconds: number): number;
|
|
56
|
+
/**
|
|
57
|
+
* Calculate average from array of numbers
|
|
58
|
+
* Optimized: Single pass with inline validation
|
|
59
|
+
*/
|
|
60
|
+
export declare function calculateAverage(values: number[]): number;
|
|
61
|
+
//# sourceMappingURL=calculation.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculation.util.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/utils/calculation.util.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAU,GAAG,MAAM,CAI3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAoB,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,MAAY,GAC7B,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,GACnB,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAKpF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,MAAY,GACzB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAa,EAC1B,UAAU,GAAE,MAAc,GACzB,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAOjF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAkBzD"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Calculation Utilities
|
|
4
|
+
* Common calculation and utility functions for numeric operations
|
|
5
|
+
* Optimized for performance
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.generateRandomId = generateRandomId;
|
|
9
|
+
exports.generateSessionId = generateSessionId;
|
|
10
|
+
exports.calculateMaxMessages = calculateMaxMessages;
|
|
11
|
+
exports.calculateExponentialBackoff = calculateExponentialBackoff;
|
|
12
|
+
exports.clamp = clamp;
|
|
13
|
+
exports.calculatePercentage = calculatePercentage;
|
|
14
|
+
exports.calculateSafeBufferSize = calculateSafeBufferSize;
|
|
15
|
+
exports.estimateTokens = estimateTokens;
|
|
16
|
+
exports.isWithinSafeLimit = isWithinSafeLimit;
|
|
17
|
+
exports.calculateRetryDelayWithJitter = calculateRetryDelayWithJitter;
|
|
18
|
+
exports.calculateRequestTimeout = calculateRequestTimeout;
|
|
19
|
+
exports.calculateTransferRate = calculateTransferRate;
|
|
20
|
+
exports.calculateAverage = calculateAverage;
|
|
21
|
+
const MAX_RANDOM_ID_LENGTH = 11;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a random unique identifier string
|
|
24
|
+
* Uses optimized single-pass operations
|
|
25
|
+
*/
|
|
26
|
+
function generateRandomId(length = 9) {
|
|
27
|
+
const safeLength = Math.min(Math.max(1, Math.floor(length)), MAX_RANDOM_ID_LENGTH);
|
|
28
|
+
const randomStr = Math.random().toString(36).substring(2, 2 + safeLength);
|
|
29
|
+
return randomStr;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate a unique chat session ID
|
|
33
|
+
*/
|
|
34
|
+
function generateSessionId(prefix = "groq-chat") {
|
|
35
|
+
return `${prefix}-${Date.now()}-${generateRandomId(9)}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Calculate maximum number of messages based on token limit
|
|
39
|
+
*/
|
|
40
|
+
function calculateMaxMessages(maxTokens, tokensPerMessage = 100) {
|
|
41
|
+
if (!Number.isFinite(maxTokens) || maxTokens <= 0 ||
|
|
42
|
+
!Number.isFinite(tokensPerMessage) || tokensPerMessage <= 0) {
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
return Math.floor(maxTokens / tokensPerMessage);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Calculate exponential backoff delay
|
|
49
|
+
*/
|
|
50
|
+
function calculateExponentialBackoff(baseDelay, attempt) {
|
|
51
|
+
if (!Number.isFinite(baseDelay) || baseDelay < 0 ||
|
|
52
|
+
!Number.isFinite(attempt) || attempt < 0) {
|
|
53
|
+
return 0;
|
|
54
|
+
}
|
|
55
|
+
return baseDelay * Math.pow(2, attempt);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Clamp a value between min and max
|
|
59
|
+
*/
|
|
60
|
+
function clamp(value, min, max) {
|
|
61
|
+
if (!Number.isFinite(value))
|
|
62
|
+
return min;
|
|
63
|
+
if (!Number.isFinite(min))
|
|
64
|
+
return max;
|
|
65
|
+
if (!Number.isFinite(max))
|
|
66
|
+
return value;
|
|
67
|
+
return Math.min(Math.max(value, min), max);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Calculate percentage with optional decimal places
|
|
71
|
+
* Optimized: avoids string conversion
|
|
72
|
+
*/
|
|
73
|
+
function calculatePercentage(value, total, decimals = 2) {
|
|
74
|
+
if (!Number.isFinite(value) || !Number.isFinite(total) || total === 0) {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
const multiplier = Math.pow(10, Math.max(0, Math.min(20, Math.floor(decimals))));
|
|
78
|
+
return Math.round((value / total) * 100 * multiplier) / multiplier;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Calculate buffer size limit for streaming
|
|
82
|
+
*/
|
|
83
|
+
function calculateSafeBufferSize(currentSize, maxSize) {
|
|
84
|
+
if (!Number.isFinite(currentSize) || !Number.isFinite(maxSize) || maxSize <= 0) {
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
if (currentSize > maxSize) {
|
|
88
|
+
return Math.floor(maxSize / 2);
|
|
89
|
+
}
|
|
90
|
+
return currentSize;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Calculate token estimate from text
|
|
94
|
+
*/
|
|
95
|
+
function estimateTokens(text) {
|
|
96
|
+
if (!text)
|
|
97
|
+
return 0;
|
|
98
|
+
return Math.ceil(text.length / 4);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Calculate if message count is within safe limits
|
|
102
|
+
*/
|
|
103
|
+
function isWithinSafeLimit(messageCount, maxMessages) {
|
|
104
|
+
return Number.isFinite(messageCount) &&
|
|
105
|
+
Number.isFinite(maxMessages) &&
|
|
106
|
+
messageCount >= 0 &&
|
|
107
|
+
messageCount <= maxMessages;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Calculate retry delay with jitter
|
|
111
|
+
*/
|
|
112
|
+
function calculateRetryDelayWithJitter(baseDelay, attempt, jitterFactor = 0.1) {
|
|
113
|
+
if (!Number.isFinite(baseDelay) || baseDelay < 0 ||
|
|
114
|
+
!Number.isFinite(attempt) || attempt < 0) {
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
const safeJitterFactor = clamp(jitterFactor, 0, 1);
|
|
118
|
+
const exponentialDelay = calculateExponentialBackoff(baseDelay, attempt);
|
|
119
|
+
const jitter = exponentialDelay * safeJitterFactor * (Math.random() * 2 - 1);
|
|
120
|
+
return Math.max(0, exponentialDelay + jitter);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Calculate timeout for network requests
|
|
124
|
+
*/
|
|
125
|
+
function calculateRequestTimeout(attempt, baseTimeout = 5000, maxTimeout = 30000) {
|
|
126
|
+
if (!Number.isFinite(attempt) || attempt < 0) {
|
|
127
|
+
return baseTimeout;
|
|
128
|
+
}
|
|
129
|
+
const safeBaseTimeout = Math.max(0, baseTimeout);
|
|
130
|
+
const safeMaxTimeout = Math.max(safeBaseTimeout, maxTimeout);
|
|
131
|
+
const timeout = calculateExponentialBackoff(safeBaseTimeout, attempt);
|
|
132
|
+
return Math.min(timeout, safeMaxTimeout);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Calculate data transfer rate
|
|
136
|
+
*/
|
|
137
|
+
function calculateTransferRate(bytes, milliseconds) {
|
|
138
|
+
if (!Number.isFinite(bytes) || bytes < 0 ||
|
|
139
|
+
!Number.isFinite(milliseconds) || milliseconds <= 0) {
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
const kilobytesPerSecond = (bytes / 1024) * (1000 / milliseconds);
|
|
143
|
+
return Math.round(kilobytesPerSecond * 100) / 100;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Calculate average from array of numbers
|
|
147
|
+
* Optimized: Single pass with inline validation
|
|
148
|
+
*/
|
|
149
|
+
function calculateAverage(values) {
|
|
150
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
let sum = 0;
|
|
154
|
+
let count = 0;
|
|
155
|
+
// Single pass: validate and sum
|
|
156
|
+
for (let i = 0; i < values.length; i++) {
|
|
157
|
+
const v = values[i];
|
|
158
|
+
if (Number.isFinite(v)) {
|
|
159
|
+
sum += v;
|
|
160
|
+
count++;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return count === 0 ? 0 : sum / count;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=calculation.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculation.util.js","sourceRoot":"","sources":["../../../src/infrastructure/utils/calculation.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Content Mapper Utility
|
|
3
3
|
* Utilities for working with message content
|
|
4
4
|
*/
|
|
5
|
-
import type { GroqMessage } from "../../domain/entities";
|
|
5
|
+
import type { GroqMessage } from "../../domain/entities/groq.types";
|
|
6
6
|
/**
|
|
7
7
|
* Create a user message
|
|
8
8
|
*/
|
|
@@ -31,4 +31,8 @@ export declare function extractTextFromMessages(messages: GroqMessage[]): string
|
|
|
31
31
|
* Format messages for display in UI
|
|
32
32
|
*/
|
|
33
33
|
export declare function formatMessagesForDisplay(messages: GroqMessage[]): string;
|
|
34
|
+
/**
|
|
35
|
+
* Clean JSON response by removing markdown code blocks
|
|
36
|
+
*/
|
|
37
|
+
export declare function cleanJsonResponse(content: string): string;
|
|
34
38
|
//# sourceMappingURL=content-mapper.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-mapper.util.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/utils/content-mapper.util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"content-mapper.util.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/utils/content-mapper.util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAK9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAKnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAKhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,WAAW,GAAG,QAAiB,GAAG,WAAW,CAK9G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAgBrF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWzD"}
|
|
@@ -11,6 +11,7 @@ exports.createTextMessage = createTextMessage;
|
|
|
11
11
|
exports.promptToMessages = promptToMessages;
|
|
12
12
|
exports.extractTextFromMessages = extractTextFromMessages;
|
|
13
13
|
exports.formatMessagesForDisplay = formatMessagesForDisplay;
|
|
14
|
+
exports.cleanJsonResponse = cleanJsonResponse;
|
|
14
15
|
/**
|
|
15
16
|
* Create a user message
|
|
16
17
|
*/
|
|
@@ -81,4 +82,20 @@ function formatMessagesForDisplay(messages) {
|
|
|
81
82
|
})
|
|
82
83
|
.join("\n\n---\n\n");
|
|
83
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Clean JSON response by removing markdown code blocks
|
|
87
|
+
*/
|
|
88
|
+
function cleanJsonResponse(content) {
|
|
89
|
+
let cleaned = content.trim();
|
|
90
|
+
if (cleaned.startsWith("```json")) {
|
|
91
|
+
cleaned = cleaned.slice(7);
|
|
92
|
+
}
|
|
93
|
+
else if (cleaned.startsWith("```")) {
|
|
94
|
+
cleaned = cleaned.slice(3);
|
|
95
|
+
}
|
|
96
|
+
if (cleaned.endsWith("```")) {
|
|
97
|
+
cleaned = cleaned.slice(0, -3);
|
|
98
|
+
}
|
|
99
|
+
return cleaned.trim();
|
|
100
|
+
}
|
|
84
101
|
//# sourceMappingURL=content-mapper.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-mapper.util.js","sourceRoot":"","sources":["../../../src/infrastructure/utils/content-mapper.util.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,8CAKC;AAKD,wDAKC;AAKD,kDAKC;AAKD,8CAKC;AAKD,4CAgBC;AAKD,0DAEC;AAKD,4DAOC;
|
|
1
|
+
{"version":3,"file":"content-mapper.util.js","sourceRoot":"","sources":["../../../src/infrastructure/utils/content-mapper.util.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,8CAKC;AAKD,wDAKC;AAKD,kDAKC;AAKD,8CAKC;AAKD,4CAgBC;AAKD,0DAEC;AAKD,4DAOC;AAKD,8CAWC;AA9FD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAe;IACpD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,OAAwC,MAAM;IAC/F,OAAO;QACL,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAc,EAAE,YAAqB;IACpE,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,QAAuB;IAC7D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,QAAuB;IAC9D,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QACtF,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC,CAAC;SACD,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useGroq Hook
|
|
3
|
+
* Main React hook for Groq text generation
|
|
4
|
+
*/
|
|
5
|
+
import type { GroqGenerationConfig } from "../../domain/entities/groq.types";
|
|
6
|
+
export interface UseGroqOptions {
|
|
7
|
+
model?: string;
|
|
8
|
+
generationConfig?: GroqGenerationConfig;
|
|
9
|
+
onStart?: () => void;
|
|
10
|
+
onSuccess?: (result: string) => void;
|
|
11
|
+
onError?: (error: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface UseGroqReturn {
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
error: string | null;
|
|
16
|
+
result: string | null;
|
|
17
|
+
generate: (prompt: string, config?: GroqGenerationConfig) => Promise<string>;
|
|
18
|
+
generateJSON: <T = Record<string, unknown>>(prompt: string, config?: GroqGenerationConfig & {
|
|
19
|
+
schema?: Record<string, unknown>;
|
|
20
|
+
}) => Promise<T>;
|
|
21
|
+
stream: (prompt: string, onChunk: (chunk: string) => void, config?: GroqGenerationConfig) => Promise<void>;
|
|
22
|
+
reset: () => void;
|
|
23
|
+
clearError: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function useGroq(options?: UseGroqOptions): UseGroqReturn;
|
|
26
|
+
//# sourceMappingURL=use-groq.hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-groq.hook.d.ts","sourceRoot":"","sources":["../../../src/presentation/hooks/use-groq.hook.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAM7E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,YAAY,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,oBAAoB,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KACjE,OAAO,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,CACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,CAAC,EAAE,oBAAoB,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAkKnE"}
|