@superblocksteam/vite-plugin-file-sync 2.0.70 → 2.0.71-next.1
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/ai-service/agent/prompts/build-base-system-prompt.js +1 -1
- package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/types.js +1 -0
- package/dist/ai-service/agent/subagents/types.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +5 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +2 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/sample-json.d.ts +2 -0
- package/dist/ai-service/agent/tools/apis/sample-json.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/sample-json.js +16 -0
- package/dist/ai-service/agent/tools/apis/sample-json.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +4 -4
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +16 -5
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +35 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +90 -15
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts +3 -18
- package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-validate-icons.js +12 -50
- package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.d.ts +0 -35
- package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/shared-helpers.js +0 -89
- package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts +1 -23
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.js +3 -68
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +16 -5
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/bash.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/bash.js +2 -1
- package/dist/ai-service/agent/tools2/tools/bash.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +10 -2
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +2 -1
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ls.js +3 -1
- package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +2 -1
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js +31 -11
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +5 -10
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.d.ts +2 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.d.ts.map +1 -1
- package/dist/ai-service/clark-provider/clark-chat-settings.js +1 -0
- package/dist/ai-service/clark-provider/clark-chat-settings.js.map +1 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +7 -4
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +1 -0
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +1 -0
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +14 -117
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +57 -149
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +7 -2
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +17 -17
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/anthropic.js +2 -1
- package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +2 -1
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/interaction/index.d.ts +0 -64
- package/dist/ai-service/llm/interaction/index.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/index.js +0 -65
- package/dist/ai-service/llm/interaction/index.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +2 -6
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/config.d.ts +56 -0
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/config.js +41 -0
- package/dist/ai-service/llm/stream/config.js.map +1 -0
- package/dist/ai-service/llm/stream/errors.d.ts +16 -0
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/errors.js +68 -0
- package/dist/ai-service/llm/stream/errors.js.map +1 -0
- package/dist/ai-service/llm/stream/event-bus.d.ts +68 -0
- package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/event-bus.js +51 -0
- package/dist/ai-service/llm/stream/event-bus.js.map +1 -0
- package/dist/ai-service/llm/stream/index.d.ts +49 -0
- package/dist/ai-service/llm/stream/index.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/index.js +46 -0
- package/dist/ai-service/llm/stream/index.js.map +1 -0
- package/dist/ai-service/llm/stream/managed-stream.d.ts +25 -0
- package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/managed-stream.js +68 -0
- package/dist/ai-service/llm/stream/managed-stream.js.map +1 -0
- package/dist/ai-service/llm/stream/observer.d.ts +34 -0
- package/dist/ai-service/llm/stream/observer.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observer.js +2 -0
- package/dist/ai-service/llm/stream/observer.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts +40 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/context.js +55 -0
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/index.d.ts +8 -0
- package/dist/ai-service/llm/stream/observers/index.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/index.js +8 -0
- package/dist/ai-service/llm/stream/observers/index.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +78 -0
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/llmobs.js +504 -0
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/logging.d.ts +46 -0
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/logging.js +296 -0
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts +17 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.js +36 -0
- package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts +73 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/orchestrator.js +285 -0
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -0
- package/dist/ai-service/llm/stream/retry-engine.d.ts +58 -0
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/retry-engine.js +151 -0
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -0
- package/dist/ai-service/llm/stream/session.d.ts +58 -0
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/session.js +116 -0
- package/dist/ai-service/llm/stream/session.js.map +1 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts +129 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js +508 -0
- package/dist/ai-service/llm/stream/tests/helpers/mock-provider.js.map +1 -0
- package/dist/ai-service/llm/stream/types.d.ts +15 -0
- package/dist/ai-service/llm/stream/types.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/types.js +2 -0
- package/dist/ai-service/llm/stream/types.js.map +1 -0
- package/dist/ai-service/llm/types.d.ts +1 -1
- package/dist/ai-service/llm/types.d.ts.map +1 -1
- package/dist/ai-service/llmobs/helpers.d.ts +0 -19
- package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
- package/dist/ai-service/llmobs/helpers.js +0 -23
- package/dist/ai-service/llmobs/helpers.js.map +1 -1
- package/dist/ai-service/llmobs/tracer.d.ts +1 -0
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +1 -0
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/llmobs/types.d.ts +2 -0
- package/dist/ai-service/llmobs/types.d.ts.map +1 -1
- package/dist/ai-service/llmobs/utils.d.ts.map +1 -1
- package/dist/ai-service/llmobs/utils.js +8 -0
- package/dist/ai-service/llmobs/utils.js.map +1 -1
- package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/playwright-server.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +1 -3
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +6 -28
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +9 -11
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +3 -2
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +18 -4
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts +5 -4
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js +25 -25
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
- package/dist/ai-service/types.d.ts +3 -3
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js +10 -10
- package/dist/ai-service/types.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +10 -3
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +8 -0
- package/dist/source-tracker.js.map +1 -1
- package/dist/sync-service/index.d.ts +7 -2
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +16 -9
- package/dist/sync-service/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/ai-service/llm/interaction/compose.d.ts +0 -71
- package/dist/ai-service/llm/interaction/compose.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/compose.js +0 -88
- package/dist/ai-service/llm/interaction/compose.js.map +0 -1
- package/dist/ai-service/llm/interaction/middleware.d.ts +0 -52
- package/dist/ai-service/llm/interaction/middleware.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middleware.js +0 -17
- package/dist/ai-service/llm/interaction/middleware.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +0 -45
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js +0 -85
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +0 -88
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/logging.js +0 -238
- package/dist/ai-service/llm/interaction/middlewares/logging.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +0 -47
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/profiler.js +0 -183
- package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +0 -115
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +0 -231
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts +0 -41
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.js +0 -74
- package/dist/ai-service/llm/interaction/middlewares/utils/abort.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts +0 -61
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js +0 -116
- package/dist/ai-service/llm/interaction/middlewares/utils/fallback-chain.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts +0 -47
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.js +0 -141
- package/dist/ai-service/llm/interaction/middlewares/utils/retries.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts +0 -30
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js +0 -36
- package/dist/ai-service/llm/interaction/middlewares/utils/stall-detector.js.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts +0 -42
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.d.ts.map +0 -1
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.js +0 -208
- package/dist/ai-service/llm/interaction/middlewares/utils/streams.js.map +0 -1
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts +0 -56
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +0 -1
- package/dist/ai-service/llmobs/middleware/stream-text.js +0 -597
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-chain.js","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/fallback-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for retry middleware.
|
|
3
|
-
*
|
|
4
|
-
* Contains error wrapping, retry eligibility checking, and backoff logic.
|
|
5
|
-
*/
|
|
6
|
-
import { LLMProviderError } from "../../../error.js";
|
|
7
|
-
import type { Logger } from "../../../../../util/logger.js";
|
|
8
|
-
import type { BackoffStrategy } from "../../../../util/backoff-strategy.js";
|
|
9
|
-
/**
|
|
10
|
-
* Configuration for retry attempts.
|
|
11
|
-
*/
|
|
12
|
-
export interface RetryConfig {
|
|
13
|
-
maxRetries: number;
|
|
14
|
-
maxRetriesDisplay: string;
|
|
15
|
-
maxTotalRetryTimeMs: number | undefined;
|
|
16
|
-
overallStartTime: number;
|
|
17
|
-
backoffStrategy: BackoffStrategy;
|
|
18
|
-
isRetryable: (error: unknown) => boolean;
|
|
19
|
-
onRetry?: (error: unknown, attempt: number, delayMs: number, totalRetryTimeMs: number) => void | Promise<void>;
|
|
20
|
-
abortSignal?: AbortSignal;
|
|
21
|
-
logger: Logger;
|
|
22
|
-
errorContext: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Wraps an error in LLMProviderError if it isn't already.
|
|
26
|
-
* Also detects NoOutput errors and sets the appropriate type.
|
|
27
|
-
*/
|
|
28
|
-
export declare function wrapError(err: unknown, provider?: string): LLMProviderError;
|
|
29
|
-
/**
|
|
30
|
-
* Default function to determine if an error is retryable.
|
|
31
|
-
* Delegates to LLMProviderError.isRetryable if available.
|
|
32
|
-
*/
|
|
33
|
-
export declare function defaultIsRetryable(error: unknown): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Checks if retry is allowed and executes retry logic.
|
|
36
|
-
* Returns the delay in milliseconds if a retry should be attempted.
|
|
37
|
-
* Throws if no retry is possible.
|
|
38
|
-
*
|
|
39
|
-
* @param error - The error that triggered the retry
|
|
40
|
-
* @param attempt - The current attempt number (1-indexed)
|
|
41
|
-
* @param totalRetryTimeMs - Total time spent on retries so far
|
|
42
|
-
* @param config - Retry configuration
|
|
43
|
-
* @returns The delay before the retry (after waiting)
|
|
44
|
-
* @throws If retry is not allowed (non-retryable error, max retries, timeout)
|
|
45
|
-
*/
|
|
46
|
-
export declare function handleRetryAttempt(error: LLMProviderError, attempt: number, totalRetryTimeMs: number, config: RetryConfig): Promise<number>;
|
|
47
|
-
//# sourceMappingURL=retries.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retries.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/retries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACzC,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA+B3E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAuEjB"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for retry middleware.
|
|
3
|
-
*
|
|
4
|
-
* Contains error wrapping, retry eligibility checking, and backoff logic.
|
|
5
|
-
*/
|
|
6
|
-
import { InvalidToolInputError } from "ai";
|
|
7
|
-
import { getErrorMeta } from "../../../../../util/logger.js";
|
|
8
|
-
import { LLMProviderError, isNoOutputError } from "../../../error.js";
|
|
9
|
-
/**
|
|
10
|
-
* Wraps an error in LLMProviderError if it isn't already.
|
|
11
|
-
* Also detects NoOutput errors and sets the appropriate type.
|
|
12
|
-
*/
|
|
13
|
-
export function wrapError(err, provider) {
|
|
14
|
-
if (err instanceof LLMProviderError) {
|
|
15
|
-
return err;
|
|
16
|
-
}
|
|
17
|
-
// Check for NoOutput error and wrap with appropriate type
|
|
18
|
-
if (isNoOutputError(err)) {
|
|
19
|
-
return new LLMProviderError({
|
|
20
|
-
provider: provider,
|
|
21
|
-
message: err instanceof Error ? err.message : "No output generated by model",
|
|
22
|
-
type: "no_output",
|
|
23
|
-
isRetryable: true,
|
|
24
|
-
cause: err,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
if (InvalidToolInputError.isInstance(err)) {
|
|
28
|
-
return new LLMProviderError({
|
|
29
|
-
provider: provider,
|
|
30
|
-
message: err.message,
|
|
31
|
-
type: "invalid_tool_input",
|
|
32
|
-
isRetryable: true,
|
|
33
|
-
cause: err,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return new LLMProviderError({
|
|
37
|
-
provider: provider,
|
|
38
|
-
cause: err,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Default function to determine if an error is retryable.
|
|
43
|
-
* Delegates to LLMProviderError.isRetryable if available.
|
|
44
|
-
*/
|
|
45
|
-
export function defaultIsRetryable(error) {
|
|
46
|
-
if (LLMProviderError.isInstance(error)) {
|
|
47
|
-
return error.isRetryable;
|
|
48
|
-
}
|
|
49
|
-
// For thrown errors or unstructured errors, be permissive and retry
|
|
50
|
-
// These might be network issues, timeouts, or other transient problems
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Checks if retry is allowed and executes retry logic.
|
|
55
|
-
* Returns the delay in milliseconds if a retry should be attempted.
|
|
56
|
-
* Throws if no retry is possible.
|
|
57
|
-
*
|
|
58
|
-
* @param error - The error that triggered the retry
|
|
59
|
-
* @param attempt - The current attempt number (1-indexed)
|
|
60
|
-
* @param totalRetryTimeMs - Total time spent on retries so far
|
|
61
|
-
* @param config - Retry configuration
|
|
62
|
-
* @returns The delay before the retry (after waiting)
|
|
63
|
-
* @throws If retry is not allowed (non-retryable error, max retries, timeout)
|
|
64
|
-
*/
|
|
65
|
-
export async function handleRetryAttempt(error, attempt, totalRetryTimeMs, config) {
|
|
66
|
-
config.logger.debug(`totalRetryTimeMs: ${totalRetryTimeMs}`);
|
|
67
|
-
// Check abort signal
|
|
68
|
-
if (config.abortSignal?.aborted) {
|
|
69
|
-
const abortError = new LLMProviderError({
|
|
70
|
-
provider: error.provider,
|
|
71
|
-
message: "Request aborted",
|
|
72
|
-
type: "aborted",
|
|
73
|
-
isRetryable: false,
|
|
74
|
-
});
|
|
75
|
-
config.logger.info("Request aborted, stopping retry attempts");
|
|
76
|
-
throw abortError;
|
|
77
|
-
}
|
|
78
|
-
// Check retry conditions
|
|
79
|
-
const withinMaxRetries = attempt <= config.maxRetries;
|
|
80
|
-
const withinTimeLimit = !config.maxTotalRetryTimeMs ||
|
|
81
|
-
totalRetryTimeMs < config.maxTotalRetryTimeMs;
|
|
82
|
-
const errorIsRetryable = config.isRetryable(error);
|
|
83
|
-
const canRetry = errorIsRetryable && withinMaxRetries && withinTimeLimit;
|
|
84
|
-
if (!canRetry) {
|
|
85
|
-
if (errorIsRetryable) {
|
|
86
|
-
const reason = !withinMaxRetries
|
|
87
|
-
? `after ${config.maxRetriesDisplay} retries`
|
|
88
|
-
: `total retry time exceeded ${config.maxTotalRetryTimeMs}ms`;
|
|
89
|
-
config.logger.error(`Exceeded retry limits: ${reason}`, getErrorMeta(error));
|
|
90
|
-
throw new LLMProviderError({
|
|
91
|
-
provider: error.provider,
|
|
92
|
-
message: `${config.errorContext} ${reason}`,
|
|
93
|
-
type: "retries_exhausted",
|
|
94
|
-
isRetryable: false,
|
|
95
|
-
cause: error,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
config.logger.error("Non-retryable error encountered", getErrorMeta(error));
|
|
99
|
-
throw error;
|
|
100
|
-
}
|
|
101
|
-
const delay = config.backoffStrategy.getNextDelay(attempt);
|
|
102
|
-
config.logger.warn(`${config.errorContext} (type: ${error.type}). Attempt ${attempt}/${config.maxRetriesDisplay}. Retrying in ${delay}ms... Error: ${JSON.stringify(error)}`);
|
|
103
|
-
if (config.onRetry) {
|
|
104
|
-
await config.onRetry(error, attempt, delay, totalRetryTimeMs);
|
|
105
|
-
}
|
|
106
|
-
// Wait before retry, but allow immediate cancellation via abort signal
|
|
107
|
-
await abortableDelay(delay, config.abortSignal);
|
|
108
|
-
// Check if aborted during delay
|
|
109
|
-
if (config.abortSignal?.aborted) {
|
|
110
|
-
const abortError = new LLMProviderError({
|
|
111
|
-
provider: error.provider,
|
|
112
|
-
message: "Request aborted during retry delay",
|
|
113
|
-
type: "aborted",
|
|
114
|
-
isRetryable: false,
|
|
115
|
-
});
|
|
116
|
-
config.logger.info("Request aborted during retry delay");
|
|
117
|
-
throw abortError;
|
|
118
|
-
}
|
|
119
|
-
return delay;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Returns a promise that resolves after the specified delay,
|
|
123
|
-
* but can be interrupted early by an abort signal.
|
|
124
|
-
*
|
|
125
|
-
* @param delayMs - The delay in milliseconds
|
|
126
|
-
* @param abortSignal - Optional abort signal to cancel the delay
|
|
127
|
-
*/
|
|
128
|
-
function abortableDelay(delayMs, abortSignal) {
|
|
129
|
-
return new Promise((resolve) => {
|
|
130
|
-
if (abortSignal?.aborted) {
|
|
131
|
-
resolve();
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
const timeoutId = setTimeout(resolve, delayMs);
|
|
135
|
-
abortSignal?.addEventListener("abort", () => {
|
|
136
|
-
clearTimeout(timeoutId);
|
|
137
|
-
resolve();
|
|
138
|
-
}, { once: true });
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=retries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retries.js","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/retries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { LLMProviderError } from "../../../error.js";
|
|
2
|
-
export interface StallDetectorConfig {
|
|
3
|
-
stallTimeoutMs: number;
|
|
4
|
-
enabled: boolean;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Result of waiting for the next chunk with stall detection.
|
|
8
|
-
*/
|
|
9
|
-
export type StallDetectorResult<T> = {
|
|
10
|
-
type: "chunk";
|
|
11
|
-
value: IteratorResult<T>;
|
|
12
|
-
} | {
|
|
13
|
-
type: "stall";
|
|
14
|
-
durationMs: number;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Waits for the next chunk from an iterator with a timeout.
|
|
18
|
-
* If the timeout expires before a chunk arrives, returns a stall result.
|
|
19
|
-
*
|
|
20
|
-
* @param iterator - The async iterator to get the next chunk from
|
|
21
|
-
* @param config - Stall detector configuration
|
|
22
|
-
* @param lastChunkTime - Timestamp of the last received chunk (for duration calculation)
|
|
23
|
-
* @returns Either the chunk result or a stall indication
|
|
24
|
-
*/
|
|
25
|
-
export declare function waitForNextChunkWithStallDetection<T>(iterator: AsyncIterator<T>, config: StallDetectorConfig, lastChunkTime: number): Promise<StallDetectorResult<T>>;
|
|
26
|
-
/**
|
|
27
|
-
* Creates an LLMProviderError for a stream stall.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createStallError(stallDurationMs: number): LLMProviderError;
|
|
30
|
-
//# sourceMappingURL=stall-detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/stall-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAsB,kCAAkC,CAAC,CAAC,EACxD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAmBjC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB,CAO1E"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { LLMProviderError } from "../../../error.js";
|
|
2
|
-
/**
|
|
3
|
-
* Waits for the next chunk from an iterator with a timeout.
|
|
4
|
-
* If the timeout expires before a chunk arrives, returns a stall result.
|
|
5
|
-
*
|
|
6
|
-
* @param iterator - The async iterator to get the next chunk from
|
|
7
|
-
* @param config - Stall detector configuration
|
|
8
|
-
* @param lastChunkTime - Timestamp of the last received chunk (for duration calculation)
|
|
9
|
-
* @returns Either the chunk result or a stall indication
|
|
10
|
-
*/
|
|
11
|
-
export async function waitForNextChunkWithStallDetection(iterator, config, lastChunkTime) {
|
|
12
|
-
if (!config.enabled) {
|
|
13
|
-
// Stall detection disabled - just wait for the chunk
|
|
14
|
-
const result = await iterator.next();
|
|
15
|
-
return { type: "chunk", value: result };
|
|
16
|
-
}
|
|
17
|
-
const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve("stall"), config.stallTimeoutMs));
|
|
18
|
-
const raceResult = await Promise.race([iterator.next(), timeoutPromise]);
|
|
19
|
-
if (raceResult === "stall") {
|
|
20
|
-
const stallDuration = Date.now() - lastChunkTime;
|
|
21
|
-
return { type: "stall", durationMs: stallDuration };
|
|
22
|
-
}
|
|
23
|
-
return { type: "chunk", value: raceResult };
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Creates an LLMProviderError for a stream stall.
|
|
27
|
-
*/
|
|
28
|
-
export function createStallError(stallDurationMs) {
|
|
29
|
-
return new LLMProviderError({
|
|
30
|
-
provider: "unified",
|
|
31
|
-
message: `Stream stalled for ${stallDurationMs}ms`,
|
|
32
|
-
type: "stream_stall",
|
|
33
|
-
isRetryable: true,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=stall-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector.js","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/stall-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAcrD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,QAA0B,EAC1B,MAA2B,EAC3B,aAAqB;IAErB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CACtD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAC1D,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzE,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAA+B,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,eAAuB;IACtD,OAAO,IAAI,gBAAgB,CAAC;QAC1B,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sBAAsB,eAAe,IAAI;QAClD,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retrying async iterable stream for stream retry middleware.
|
|
3
|
-
*
|
|
4
|
-
* This module creates an AsyncIterableStream that automatically retries
|
|
5
|
-
* on consumption errors, with optional stall detection and provider fallback.
|
|
6
|
-
*/
|
|
7
|
-
import type { FallbackState, FallbackConfig } from "./fallback-chain.js";
|
|
8
|
-
import type { Logger } from "../../../../../util/logger.js";
|
|
9
|
-
import type { BackoffStrategy } from "../../../../util/backoff-strategy.js";
|
|
10
|
-
import type { AsyncIterableStream, TextStreamPart } from "ai";
|
|
11
|
-
/**
|
|
12
|
-
* Configuration for creating a retrying async iterable.
|
|
13
|
-
*/
|
|
14
|
-
export interface RetryingStreamConfig {
|
|
15
|
-
maxRetries: number;
|
|
16
|
-
maxRetriesDisplay: string;
|
|
17
|
-
maxTotalRetryTimeMs: number | undefined;
|
|
18
|
-
overallStartTime: number;
|
|
19
|
-
backoffStrategy: BackoffStrategy;
|
|
20
|
-
isRetryable: (error: unknown) => boolean;
|
|
21
|
-
onRetry?: (error: unknown, attempt: number, delayMs: number, totalRetryTimeMs: number) => void | Promise<void>;
|
|
22
|
-
abortSignal?: AbortSignal;
|
|
23
|
-
logger: Logger;
|
|
24
|
-
fallbackState: FallbackState | null;
|
|
25
|
-
fallbackConfig: FallbackConfig | undefined;
|
|
26
|
-
stallTimeoutMs: number;
|
|
27
|
-
retryOnStall: boolean;
|
|
28
|
-
/** Called when stream completes successfully (after any retries) */
|
|
29
|
-
onStreamComplete?: () => void | Promise<void>;
|
|
30
|
-
/** Called when stream fails and all retries are exhausted */
|
|
31
|
-
onStreamFailed?: (error: unknown) => void | Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Creates an AsyncIterableStream that retries on consumption errors,
|
|
35
|
-
* with optional stall detection for fallback.
|
|
36
|
-
*
|
|
37
|
-
* @param getStream - Function to get a fresh stream for each attempt
|
|
38
|
-
* @param config - Retry and fallback configuration
|
|
39
|
-
* @returns An AsyncIterableStream that automatically retries on errors
|
|
40
|
-
*/
|
|
41
|
-
export declare function createRetryingAsyncIterable<T extends string | TextStreamPart<any>>(getStream: (isInitial: boolean, abortSignal?: AbortSignal) => Promise<AsyncIterableStream<T>>, config: RetryingStreamConfig): AsyncIterableStream<T>;
|
|
42
|
-
//# sourceMappingURL=streams.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/streams.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACzC,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IAEtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,6DAA6D;IAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAqCD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,CAAC,SAAS,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,EAEtC,SAAS,EAAE,CACT,SAAS,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,oBAAoB,GAC3B,mBAAmB,CAAC,CAAC,CAAC,CAiNxB"}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retrying async iterable stream for stream retry middleware.
|
|
3
|
-
*
|
|
4
|
-
* This module creates an AsyncIterableStream that automatically retries
|
|
5
|
-
* on consumption errors, with optional stall detection and provider fallback.
|
|
6
|
-
*/
|
|
7
|
-
import { getErrorMeta } from "../../../../../util/logger.js";
|
|
8
|
-
import { LLMProviderError } from "../../../error.js";
|
|
9
|
-
import { AttemptAbortManager } from "./abort.js";
|
|
10
|
-
import { advanceFallback } from "./fallback-chain.js";
|
|
11
|
-
import { wrapError, handleRetryAttempt } from "./retries.js";
|
|
12
|
-
import { waitForNextChunkWithStallDetection, createStallError, } from "./stall-detector.js";
|
|
13
|
-
/**
|
|
14
|
-
* Chunk types that indicate meaningful progress from the LLM.
|
|
15
|
-
* These warrant resetting the retry counter because we're making real progress.
|
|
16
|
-
*
|
|
17
|
-
* Excluded chunk types (don't reset retry):
|
|
18
|
-
* - Start markers: text-start, reasoning-start, tool-input-start, start-step, start
|
|
19
|
-
* - End markers without content: text-end, reasoning-end, tool-input-end
|
|
20
|
-
* - Errors: error, tool-error, abort
|
|
21
|
-
* - Unknown: raw
|
|
22
|
-
*/
|
|
23
|
-
const PROGRESS_CHUNK_TYPES = new Set([
|
|
24
|
-
"text-delta",
|
|
25
|
-
"reasoning-delta",
|
|
26
|
-
"tool-input-delta",
|
|
27
|
-
"tool-call",
|
|
28
|
-
"tool-result",
|
|
29
|
-
"source",
|
|
30
|
-
"file",
|
|
31
|
-
"finish-step",
|
|
32
|
-
"finish",
|
|
33
|
-
]);
|
|
34
|
-
/**
|
|
35
|
-
* Checks if a chunk indicates meaningful progress from the LLM.
|
|
36
|
-
* Progress chunks reset the retry counter because they indicate the stream is working.
|
|
37
|
-
*/
|
|
38
|
-
function isProgressChunk(chunk) {
|
|
39
|
-
if (typeof chunk === "string") {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
return PROGRESS_CHUNK_TYPES.has(chunk.type);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Creates an AsyncIterableStream that retries on consumption errors,
|
|
46
|
-
* with optional stall detection for fallback.
|
|
47
|
-
*
|
|
48
|
-
* @param getStream - Function to get a fresh stream for each attempt
|
|
49
|
-
* @param config - Retry and fallback configuration
|
|
50
|
-
* @returns An AsyncIterableStream that automatically retries on errors
|
|
51
|
-
*/
|
|
52
|
-
export function createRetryingAsyncIterable(getStream, config) {
|
|
53
|
-
const { fallbackState, stallTimeoutMs, retryOnStall, logger, onStreamComplete, onStreamFailed, } = config;
|
|
54
|
-
const retryingIterable = {
|
|
55
|
-
async *[Symbol.asyncIterator]() {
|
|
56
|
-
let consumptionAttempt = 0;
|
|
57
|
-
let totalRetryTimeMs = 0;
|
|
58
|
-
let isFirstAttempt = true;
|
|
59
|
-
// Metrics for logging
|
|
60
|
-
let chunkCount = 0;
|
|
61
|
-
let totalChunkLatency = 0;
|
|
62
|
-
const streamStartTime = Date.now();
|
|
63
|
-
const CHUNK_LOG_INTERVAL = 50;
|
|
64
|
-
// Manages per-attempt abort controllers
|
|
65
|
-
const abortManager = new AttemptAbortManager(config.abortSignal);
|
|
66
|
-
while (true) {
|
|
67
|
-
// Exit immediately if external abort signal fired - never retry external aborts
|
|
68
|
-
if (abortManager.isExternallyAborted()) {
|
|
69
|
-
logger.info("[stream] external abort signal triggered, stopping retries");
|
|
70
|
-
const abortError = new LLMProviderError({
|
|
71
|
-
provider: "unified",
|
|
72
|
-
message: "Request aborted",
|
|
73
|
-
type: "aborted",
|
|
74
|
-
isRetryable: false,
|
|
75
|
-
});
|
|
76
|
-
await onStreamFailed?.(abortError);
|
|
77
|
-
yield {
|
|
78
|
-
type: "error",
|
|
79
|
-
error: abortError,
|
|
80
|
-
};
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
// Start new attempt (aborts previous attempt if any)
|
|
84
|
-
const attemptAbortSignal = abortManager.startNewAttempt();
|
|
85
|
-
let iterator = null;
|
|
86
|
-
try {
|
|
87
|
-
iterator = (await getStream(isFirstAttempt, attemptAbortSignal))[Symbol.asyncIterator]();
|
|
88
|
-
isFirstAttempt = false;
|
|
89
|
-
let lastChunkTime = Date.now();
|
|
90
|
-
while (true) {
|
|
91
|
-
const chunkStartTime = Date.now();
|
|
92
|
-
// Wait for next chunk with optional stall detection
|
|
93
|
-
const stallResult = await waitForNextChunkWithStallDetection(iterator, {
|
|
94
|
-
enabled: retryOnStall && !!fallbackState,
|
|
95
|
-
stallTimeoutMs,
|
|
96
|
-
}, lastChunkTime);
|
|
97
|
-
if (stallResult.type === "stall") {
|
|
98
|
-
logger.warn(`[stream] stall detected: stallDuration=${stallResult.durationMs}ms timeout=${stallTimeoutMs}ms chunkCount=${chunkCount}`);
|
|
99
|
-
throw createStallError(stallResult.durationMs);
|
|
100
|
-
}
|
|
101
|
-
const result = stallResult.value;
|
|
102
|
-
if (result.done) {
|
|
103
|
-
const totalDuration = Date.now() - streamStartTime;
|
|
104
|
-
const avgLatency = chunkCount > 0 ? totalChunkLatency / chunkCount : 0;
|
|
105
|
-
logger.info(`[stream] completed: chunks=${chunkCount} totalDuration=${totalDuration}ms avgChunkLatency=${avgLatency.toFixed(1)}ms`);
|
|
106
|
-
void onStreamComplete?.();
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const chunk = result.value;
|
|
110
|
-
const chunkLatency = Date.now() - chunkStartTime;
|
|
111
|
-
chunkCount++;
|
|
112
|
-
totalChunkLatency += chunkLatency;
|
|
113
|
-
lastChunkTime = Date.now();
|
|
114
|
-
if (chunkCount % CHUNK_LOG_INTERVAL === 0) {
|
|
115
|
-
const avgLatency = totalChunkLatency / chunkCount;
|
|
116
|
-
logger.debug(`[stream] chunk timing: count=${chunkCount} lastLatency=${chunkLatency}ms avgLatency=${avgLatency.toFixed(1)}ms`);
|
|
117
|
-
}
|
|
118
|
-
// Check for error chunks
|
|
119
|
-
if (typeof chunk !== "string" && chunk.type === "error") {
|
|
120
|
-
const errorChunk = chunk;
|
|
121
|
-
logger.error(`[stream] error chunk received after ${chunkCount} chunks: ${typeof errorChunk.error === "object" ? JSON.stringify(errorChunk.error) : String(errorChunk.error)}`);
|
|
122
|
-
throw wrapError(errorChunk.error);
|
|
123
|
-
}
|
|
124
|
-
yield chunk;
|
|
125
|
-
// Reset consumption attempt on successful progress chunk
|
|
126
|
-
if (isProgressChunk(chunk)) {
|
|
127
|
-
consumptionAttempt = 0;
|
|
128
|
-
totalRetryTimeMs = 0;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
const error = wrapError(err);
|
|
134
|
-
// Abort current stream and clean up
|
|
135
|
-
abortManager.abortCurrentAttempt();
|
|
136
|
-
if (iterator) {
|
|
137
|
-
// Fire-and-forget: don't await since abort signal already triggered cancellation.
|
|
138
|
-
// Waiting for return() can block on server-side stream termination.
|
|
139
|
-
void iterator.return?.().catch(() => { });
|
|
140
|
-
}
|
|
141
|
-
consumptionAttempt++;
|
|
142
|
-
// Advance fallback state on error
|
|
143
|
-
if (fallbackState) {
|
|
144
|
-
const reason = error.type === "stream_stall"
|
|
145
|
-
? "stall"
|
|
146
|
-
: error.type === "no_output"
|
|
147
|
-
? "no_output"
|
|
148
|
-
: "error";
|
|
149
|
-
advanceFallback(fallbackState, reason, logger);
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
const delay = await handleRetryAttempt(error, consumptionAttempt, totalRetryTimeMs, {
|
|
153
|
-
...config,
|
|
154
|
-
errorContext: "Stream error",
|
|
155
|
-
});
|
|
156
|
-
totalRetryTimeMs += delay;
|
|
157
|
-
// Loop continues - will try again with fresh stream
|
|
158
|
-
}
|
|
159
|
-
catch (finalError) {
|
|
160
|
-
logger.error("[stream] failed after all retries", getErrorMeta(finalError));
|
|
161
|
-
await onStreamFailed?.(finalError);
|
|
162
|
-
yield {
|
|
163
|
-
type: "error",
|
|
164
|
-
error: finalError,
|
|
165
|
-
};
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
// Convert AsyncIterable to ReadableStream
|
|
173
|
-
let streamClosed = false;
|
|
174
|
-
const readableStream = new ReadableStream({
|
|
175
|
-
async start(controller) {
|
|
176
|
-
try {
|
|
177
|
-
for await (const chunk of retryingIterable) {
|
|
178
|
-
// Guard against enqueue after stream has been cancelled
|
|
179
|
-
if (streamClosed) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
controller.enqueue(chunk);
|
|
183
|
-
}
|
|
184
|
-
if (!streamClosed) {
|
|
185
|
-
controller.close();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
catch {
|
|
189
|
-
// The error is already yielded as an error chunk by the retry loop,
|
|
190
|
-
// so we just close the stream normally rather than erroring it
|
|
191
|
-
if (!streamClosed) {
|
|
192
|
-
try {
|
|
193
|
-
controller.close();
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
// Controller may already be closed/errored, ignore
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
cancel(reason) {
|
|
202
|
-
logger.info(`ReadableStream cancelled: ${reason ?? "no reason"}`);
|
|
203
|
-
streamClosed = true;
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
return readableStream;
|
|
207
|
-
}
|
|
208
|
-
//# sourceMappingURL=streams.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/interaction/middlewares/utils/streams.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { type Logger } from "../../../util/logger.js";
|
|
2
|
-
import { LLMObsTracer, type LLMObsSpan } from "../index.js";
|
|
3
|
-
import type { Tool } from "../../agent/tools2/types.js";
|
|
4
|
-
import type { StepParameters, StreamChunk, FinalResult } from "../../llm/interaction/provider.js";
|
|
5
|
-
import type { LanguageModelV2 } from "@ai-sdk/provider";
|
|
6
|
-
import type { StepResult, AsyncIterableStream } from "ai";
|
|
7
|
-
type StreamSegment = {
|
|
8
|
-
type: "text" | "reasoning" | "tool-call" | "tool-result" | "tool-input" | "raw" | "thinking" | "source";
|
|
9
|
-
span: LLMObsSpan;
|
|
10
|
-
content: string | {
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
} | undefined;
|
|
13
|
-
};
|
|
14
|
-
export declare class LLMObsStreamTextMiddleware<TOOLS extends Record<string, Tool>> {
|
|
15
|
-
fullSpan?: LLMObsSpan;
|
|
16
|
-
stepSpan?: LLMObsSpan;
|
|
17
|
-
currentSegment?: StreamSegment;
|
|
18
|
-
model: LanguageModelV2;
|
|
19
|
-
tools?: TOOLS;
|
|
20
|
-
stepResults: StepResult<any>[];
|
|
21
|
-
llmobs: LLMObsTracer;
|
|
22
|
-
logger: Logger;
|
|
23
|
-
private errorLogged;
|
|
24
|
-
constructor(model: LanguageModelV2, tools?: TOOLS, llmobs?: LLMObsTracer, logger?: Logger);
|
|
25
|
-
/**
|
|
26
|
-
* Handles stream errors by logging and finishing spans.
|
|
27
|
-
* Public so it can be called from stream wrappers.
|
|
28
|
-
*/
|
|
29
|
-
handleStreamError(error: unknown): void;
|
|
30
|
-
wrapTools(tools: TOOLS): TOOLS;
|
|
31
|
-
prepareStep(step: StepParameters<TOOLS>, next?: (step: StepParameters<TOOLS>) => Promise<StepParameters<TOOLS>> | StepParameters<TOOLS>): Promise<StepParameters<TOOLS>>;
|
|
32
|
-
onChunk(chunk: StreamChunk, next?: (event: {
|
|
33
|
-
chunk: StreamChunk;
|
|
34
|
-
}) => Promise<void> | void): Promise<void>;
|
|
35
|
-
onStepFinish(step: StepResult<TOOLS>, next?: (step: StepResult<TOOLS>) => Promise<void> | void): Promise<void>;
|
|
36
|
-
onError(error: Error, next?: (error: Error) => Promise<void> | void): Promise<void>;
|
|
37
|
-
onAbort(next?: () => Promise<void> | void): Promise<void>;
|
|
38
|
-
onFinish(result: FinalResult<TOOLS>, next?: (result: FinalResult<TOOLS>) => Promise<void> | void): Promise<void>;
|
|
39
|
-
onFinally(): Promise<void>;
|
|
40
|
-
private handleToolExecuteStart;
|
|
41
|
-
private logStreamError;
|
|
42
|
-
private ensureSegment;
|
|
43
|
-
private appendTextToCurrentSegment;
|
|
44
|
-
private appendToolInputDelta;
|
|
45
|
-
private isTextualSegment;
|
|
46
|
-
private getSegmentType;
|
|
47
|
-
private startSegment;
|
|
48
|
-
private finishSegment;
|
|
49
|
-
private startStepSpan;
|
|
50
|
-
private finishStepSpan;
|
|
51
|
-
private startFullSpan;
|
|
52
|
-
private finishFullSpan;
|
|
53
|
-
}
|
|
54
|
-
export declare function wrapStream<T>(source: AsyncIterable<T>, onError: (err: unknown) => Promise<void>, onFinally: () => Promise<void>): AsyncIterableStream<T>;
|
|
55
|
-
export {};
|
|
56
|
-
//# sourceMappingURL=stream-text.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream-text.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llmobs/middleware/stream-text.ts"],"names":[],"mappings":"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"}
|