@superblocksteam/vite-plugin-file-sync 2.0.70-next.8 → 2.0.71-next.0
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
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { StreamEventBus } from "./event-bus.js";
|
|
2
|
+
/**
|
|
3
|
+
* State container for a single stream operation.
|
|
4
|
+
*
|
|
5
|
+
* Contains all mutable state for the session:
|
|
6
|
+
* - Current attempt number
|
|
7
|
+
* - Current provider info
|
|
8
|
+
* - Metrics (chunks, tokens, retries, duration)
|
|
9
|
+
* - Error and outcome status
|
|
10
|
+
*
|
|
11
|
+
* The session also owns the event bus for this operation.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const session = new StreamSession(config, initialProvider);
|
|
16
|
+
*
|
|
17
|
+
* // Record activity
|
|
18
|
+
* session.recordChunk();
|
|
19
|
+
* session.recordRetry(500);
|
|
20
|
+
*
|
|
21
|
+
* // Finalize when done
|
|
22
|
+
* session.finalize("complete");
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class StreamSession {
|
|
26
|
+
id;
|
|
27
|
+
startTime;
|
|
28
|
+
events;
|
|
29
|
+
config;
|
|
30
|
+
attempt = 1;
|
|
31
|
+
provider;
|
|
32
|
+
metrics = {
|
|
33
|
+
chunkCount: 0,
|
|
34
|
+
totalTokens: 0,
|
|
35
|
+
retryCount: 0,
|
|
36
|
+
totalRetryDelayMs: 0,
|
|
37
|
+
durationMs: 0,
|
|
38
|
+
timeToFirstTokenMs: undefined,
|
|
39
|
+
};
|
|
40
|
+
error = null;
|
|
41
|
+
outcome = "pending";
|
|
42
|
+
// tracks when we last received a chunk or started a retry, used for max-time checks.
|
|
43
|
+
lastActivityTime;
|
|
44
|
+
constructor(config, initialProvider) {
|
|
45
|
+
this.id = crypto.randomUUID();
|
|
46
|
+
this.startTime = Date.now();
|
|
47
|
+
this.lastActivityTime = this.startTime;
|
|
48
|
+
this.config = config;
|
|
49
|
+
this.provider = initialProvider;
|
|
50
|
+
this.events = new StreamEventBus();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Finalize the session with an outcome.
|
|
54
|
+
*
|
|
55
|
+
* Can only be called once. Subsequent calls are ignored.
|
|
56
|
+
* Emits the appropriate lifecycle event based on outcome.
|
|
57
|
+
*
|
|
58
|
+
* @param outcome - The final outcome of the session
|
|
59
|
+
* @param error - Optional error that caused failure
|
|
60
|
+
*/
|
|
61
|
+
finalize(outcome, error) {
|
|
62
|
+
if (this.outcome !== "pending") {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.outcome = outcome;
|
|
66
|
+
this.error = error ?? null;
|
|
67
|
+
this.metrics.durationMs = Date.now() - this.startTime;
|
|
68
|
+
switch (outcome) {
|
|
69
|
+
case "complete":
|
|
70
|
+
void this.events.emit("session:complete", this);
|
|
71
|
+
break;
|
|
72
|
+
case "error":
|
|
73
|
+
void this.events.emit("session:error", error, this);
|
|
74
|
+
break;
|
|
75
|
+
case "aborted":
|
|
76
|
+
void this.events.emit("session:abort", this);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
recordRetry(delayMs) {
|
|
81
|
+
this.attempt++;
|
|
82
|
+
this.metrics.retryCount++;
|
|
83
|
+
this.metrics.totalRetryDelayMs += delayMs;
|
|
84
|
+
this.lastActivityTime = Date.now();
|
|
85
|
+
}
|
|
86
|
+
// called when falling back to a new provider, each provider gets fresh attempts.
|
|
87
|
+
// if we do not reset, we burn through all providers in one go.
|
|
88
|
+
resetAttempts() {
|
|
89
|
+
this.attempt = 0;
|
|
90
|
+
}
|
|
91
|
+
recordChunk() {
|
|
92
|
+
if (this.metrics.chunkCount === 0) {
|
|
93
|
+
this.metrics.timeToFirstTokenMs = Date.now() - this.startTime;
|
|
94
|
+
}
|
|
95
|
+
this.metrics.chunkCount++;
|
|
96
|
+
this.lastActivityTime = Date.now();
|
|
97
|
+
}
|
|
98
|
+
setTotalTokens(tokens) {
|
|
99
|
+
this.metrics.totalTokens = tokens;
|
|
100
|
+
}
|
|
101
|
+
isPending() {
|
|
102
|
+
return this.outcome === "pending";
|
|
103
|
+
}
|
|
104
|
+
getElapsedMs() {
|
|
105
|
+
return Date.now() - this.startTime;
|
|
106
|
+
}
|
|
107
|
+
// use this for max-time checks, NOT getElapsedMs(). we only want to timeout
|
|
108
|
+
// if nothing is happening, not if the stream has been running for a while.
|
|
109
|
+
getTimeSinceLastActivity() {
|
|
110
|
+
return Date.now() - this.lastActivityTime;
|
|
111
|
+
}
|
|
112
|
+
resetActivityTimer() {
|
|
113
|
+
this.lastActivityTime = Date.now();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,aAAa;IACf,EAAE,CAAS;IACX,SAAS,CAAS;IAClB,MAAM,CAAiB;IACvB,MAAM,CAAe;IAE9B,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,CAAe;IACvB,OAAO,GAAkB;QACvB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,CAAC;QACb,kBAAkB,EAAE,SAAS;KAC9B,CAAC;IACF,KAAK,GAAY,IAAI,CAAC;IACtB,OAAO,GAAmB,SAAS,CAAC;IAEpC,qFAAqF;IAC7E,gBAAgB,CAAS;IAEjC,YAAY,MAAoB,EAAE,eAA6B;QAC7D,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAA2C,EAAE,KAAe;QACnE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEtD,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,UAAU;gBACb,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBAC7C,MAAM;QACV,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED,iFAAiF;IACjF,+DAA+D;IAC/D,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;IACpC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,wBAAwB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock provider helpers for testing the stream architecture.
|
|
3
|
+
*
|
|
4
|
+
* Provides declarative mock builders that make tests readable.
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool } from "../../../../agent/tools2/types.js";
|
|
7
|
+
import type { StreamTextProvider, StreamTextResult, StreamTextOptions } from "../../../interaction/provider.js";
|
|
8
|
+
import type { TextStreamPart, AsyncIterableStream } from "ai";
|
|
9
|
+
/**
|
|
10
|
+
* Default chunks to return from mock streams.
|
|
11
|
+
*/
|
|
12
|
+
export declare const defaultChunks: TextStreamPart<Record<string, Tool>>[];
|
|
13
|
+
/** Default usage stats for sentence-based providers. */
|
|
14
|
+
export declare const sentenceUsage: {
|
|
15
|
+
inputTokens: number;
|
|
16
|
+
outputTokens: number;
|
|
17
|
+
totalTokens: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Create full stream chunks from an array of text strings.
|
|
21
|
+
*/
|
|
22
|
+
export declare function chunksFromText<TOOLS extends Record<string, Tool>>(textChunks: string[], usage?: {
|
|
23
|
+
inputTokens: number;
|
|
24
|
+
outputTokens: number;
|
|
25
|
+
totalTokens: number;
|
|
26
|
+
}): TextStreamPart<TOOLS>[];
|
|
27
|
+
/**
|
|
28
|
+
* Split a sentence into word-based text chunks (space-separated).
|
|
29
|
+
* Each word after the first is prefixed with a space.
|
|
30
|
+
*/
|
|
31
|
+
export declare function textToChunks(text: string): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Create a mock StreamTextResult from text chunks.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createResultFromText<TOOLS extends Record<string, Tool>>(textChunks: string[], usage?: {
|
|
36
|
+
inputTokens: number;
|
|
37
|
+
outputTokens: number;
|
|
38
|
+
totalTokens: number;
|
|
39
|
+
}): StreamTextResult<TOOLS>;
|
|
40
|
+
/**
|
|
41
|
+
* Create a mock StreamTextResult from a sentence (splits by spaces).
|
|
42
|
+
*/
|
|
43
|
+
export declare function createResultFromSentence<TOOLS extends Record<string, Tool>>(text: string): StreamTextResult<TOOLS>;
|
|
44
|
+
/**
|
|
45
|
+
* Create an AsyncIterableStream from an array of items.
|
|
46
|
+
* Each call to [Symbol.asyncIterator]() creates a fresh iterator.
|
|
47
|
+
*/
|
|
48
|
+
export declare function asyncIterableFrom<T>(items: T[]): AsyncIterableStream<T>;
|
|
49
|
+
export declare const MockProvider: {
|
|
50
|
+
/**
|
|
51
|
+
* Provider that always succeeds with the given chunks.
|
|
52
|
+
*/
|
|
53
|
+
success<TOOLS extends Record<string, Tool> = Record<string, Tool<any, any>>>(chunks?: TextStreamPart<TOOLS>[]): StreamTextProvider;
|
|
54
|
+
/**
|
|
55
|
+
* Provider that always succeeds with the given text (splits by spaces).
|
|
56
|
+
*/
|
|
57
|
+
successWithText(text: string): StreamTextProvider;
|
|
58
|
+
/**
|
|
59
|
+
* Provider that fails on the first N attempts then succeeds.
|
|
60
|
+
* Optionally tracks calls by pushing to the provided `calls` array.
|
|
61
|
+
*/
|
|
62
|
+
failsThenSucceeds(failCount: number, options?: {
|
|
63
|
+
error?: Error;
|
|
64
|
+
text?: string;
|
|
65
|
+
textChunks?: string[];
|
|
66
|
+
calls?: Array<{
|
|
67
|
+
messages: any[];
|
|
68
|
+
timestamp: number;
|
|
69
|
+
}>;
|
|
70
|
+
}): StreamTextProvider;
|
|
71
|
+
/**
|
|
72
|
+
* Provider where the stream fails after N chunks (sends error chunk).
|
|
73
|
+
*/
|
|
74
|
+
streamFailsAfter(chunkCount: number, error?: Error): StreamTextProvider;
|
|
75
|
+
/**
|
|
76
|
+
* Provider where the iterator throws after N chunks (simulates network disconnect).
|
|
77
|
+
* Unlike streamFailsAfter which sends an error chunk, this throws from iterator.next().
|
|
78
|
+
*/
|
|
79
|
+
iteratorThrowsAfter(chunkCount: number, error?: Error): StreamTextProvider;
|
|
80
|
+
/**
|
|
81
|
+
* Provider where iterator throws on first N attempts, then succeeds.
|
|
82
|
+
* Simulates network issues that recover after retries.
|
|
83
|
+
*/
|
|
84
|
+
iteratorThrowsThenSucceeds(failCount: number, options?: {
|
|
85
|
+
error?: Error;
|
|
86
|
+
chunksBeforeError?: number;
|
|
87
|
+
text?: string;
|
|
88
|
+
}): StreamTextProvider;
|
|
89
|
+
/**
|
|
90
|
+
* Provider that stalls after N chunks.
|
|
91
|
+
*/
|
|
92
|
+
streamStalls(chunkCount: number): StreamTextProvider;
|
|
93
|
+
/**
|
|
94
|
+
* Provider that tracks calls for verification.
|
|
95
|
+
*/
|
|
96
|
+
tracked(text?: string): {
|
|
97
|
+
provider: StreamTextProvider;
|
|
98
|
+
calls: Array<{
|
|
99
|
+
options: StreamTextOptions<any>;
|
|
100
|
+
timestamp: number;
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Provider that always fails with the given error.
|
|
105
|
+
*/
|
|
106
|
+
alwaysFails(error?: Error): StreamTextProvider;
|
|
107
|
+
/**
|
|
108
|
+
* Provider that waits for a delay then fails.
|
|
109
|
+
*/
|
|
110
|
+
slowAlwaysFails(delayMs: number, error?: Error): StreamTextProvider;
|
|
111
|
+
/**
|
|
112
|
+
* Provider that stalls for a specified duration then continues producing chunks.
|
|
113
|
+
* This simulates the scenario where stall detection fires but the underlying
|
|
114
|
+
* stream continues to produce data (e.g., tool calls appear after the stall error).
|
|
115
|
+
*
|
|
116
|
+
* @param stallDurationMs - How long to stall before continuing
|
|
117
|
+
* @param chunksBeforeStall - Number of chunks to emit before stalling
|
|
118
|
+
* @param chunksAfterStall - Optional chunks to emit after stall (defaults to success chunks)
|
|
119
|
+
*/
|
|
120
|
+
stallsThenContinues(stallDurationMs: number, chunksBeforeStall?: number, chunksAfterStall?: TextStreamPart<Record<string, Tool>>[]): StreamTextProvider;
|
|
121
|
+
/**
|
|
122
|
+
* Provider with slow steps on first N attempts, then succeeds.
|
|
123
|
+
* Simulates slow LLM responses that trigger stall detection.
|
|
124
|
+
*/
|
|
125
|
+
slowStepsThenSucceeds(slowCount: number, stepDelayMs: number, options?: {
|
|
126
|
+
text?: string;
|
|
127
|
+
}): StreamTextProvider;
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=mock-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-provider.d.ts","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/stream/tests/helpers/mock-provider.ts"],"names":[],"mappings":"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"}
|