@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,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock provider helpers for testing the stream architecture.
|
|
3
|
+
*
|
|
4
|
+
* Provides declarative mock builders that make tests readable.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default chunks to return from mock streams.
|
|
8
|
+
*/
|
|
9
|
+
export const defaultChunks = [
|
|
10
|
+
{ type: "text-start", id: "1" },
|
|
11
|
+
{ type: "text-delta", id: "1", text: "Hello" },
|
|
12
|
+
{ type: "text-delta", id: "1", text: " world" },
|
|
13
|
+
{ type: "text-delta", id: "1", text: "!" },
|
|
14
|
+
{ type: "text-end", id: "1" },
|
|
15
|
+
{
|
|
16
|
+
type: "finish",
|
|
17
|
+
finishReason: "stop",
|
|
18
|
+
totalUsage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Default response for mock results.
|
|
23
|
+
*/
|
|
24
|
+
const defaultResponse = {
|
|
25
|
+
finishReason: "stop",
|
|
26
|
+
usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
27
|
+
totalUsage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
28
|
+
steps: [],
|
|
29
|
+
response: { messages: [] },
|
|
30
|
+
text: "Hello world!",
|
|
31
|
+
toolCalls: [],
|
|
32
|
+
toolResults: [],
|
|
33
|
+
};
|
|
34
|
+
/** Default usage stats for sentence-based providers. */
|
|
35
|
+
export const sentenceUsage = {
|
|
36
|
+
inputTokens: 100,
|
|
37
|
+
outputTokens: 50,
|
|
38
|
+
totalTokens: 150,
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Create full stream chunks from an array of text strings.
|
|
42
|
+
*/
|
|
43
|
+
export function chunksFromText(textChunks, usage = { inputTokens: 10, outputTokens: 5, totalTokens: 15 }) {
|
|
44
|
+
return [
|
|
45
|
+
{ type: "text-start", id: "1" },
|
|
46
|
+
...textChunks.map((text) => ({
|
|
47
|
+
type: "text-delta",
|
|
48
|
+
id: "1",
|
|
49
|
+
text,
|
|
50
|
+
})),
|
|
51
|
+
{ type: "text-end", id: "1" },
|
|
52
|
+
{
|
|
53
|
+
type: "finish",
|
|
54
|
+
finishReason: "stop",
|
|
55
|
+
totalUsage: usage,
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Split a sentence into word-based text chunks (space-separated).
|
|
61
|
+
* Each word after the first is prefixed with a space.
|
|
62
|
+
*/
|
|
63
|
+
export function textToChunks(text) {
|
|
64
|
+
const words = text.split(" ");
|
|
65
|
+
return words.map((word, i) => (i === 0 ? word : ` ${word}`));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a mock StreamTextResult from text chunks.
|
|
69
|
+
*/
|
|
70
|
+
export function createResultFromText(textChunks, usage = { inputTokens: 10, outputTokens: 5, totalTokens: 15 }) {
|
|
71
|
+
const fullStreamChunks = chunksFromText(textChunks, usage);
|
|
72
|
+
return {
|
|
73
|
+
steps: Promise.resolve([]),
|
|
74
|
+
textStream: asyncIterableFrom(textChunks),
|
|
75
|
+
fullStream: asyncIterableFrom(fullStreamChunks),
|
|
76
|
+
response: Promise.resolve({
|
|
77
|
+
text: textChunks.join(""),
|
|
78
|
+
finishReason: "stop",
|
|
79
|
+
totalUsage: usage,
|
|
80
|
+
}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a mock StreamTextResult from a sentence (splits by spaces).
|
|
85
|
+
*/
|
|
86
|
+
export function createResultFromSentence(text) {
|
|
87
|
+
return createResultFromText(textToChunks(text), sentenceUsage);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create an AsyncIterableStream from an array of items.
|
|
91
|
+
* Each call to [Symbol.asyncIterator]() creates a fresh iterator.
|
|
92
|
+
*/
|
|
93
|
+
export function asyncIterableFrom(items) {
|
|
94
|
+
// Create a fresh iterator for each consumer
|
|
95
|
+
const createIterator = () => {
|
|
96
|
+
let index = 0;
|
|
97
|
+
return {
|
|
98
|
+
async next() {
|
|
99
|
+
if (index < items.length) {
|
|
100
|
+
return { done: false, value: items[index++] };
|
|
101
|
+
}
|
|
102
|
+
return { done: true, value: undefined };
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
// Create a ReadableStream with its own index
|
|
107
|
+
let streamIndex = 0;
|
|
108
|
+
const stream = new ReadableStream({
|
|
109
|
+
pull(controller) {
|
|
110
|
+
if (streamIndex < items.length) {
|
|
111
|
+
controller.enqueue(items[streamIndex++]);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
controller.close();
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
// Return the stream with fresh iterator for each async iteration
|
|
119
|
+
return Object.assign(stream, {
|
|
120
|
+
[Symbol.asyncIterator]: () => createIterator(),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
export const MockProvider = {
|
|
124
|
+
/**
|
|
125
|
+
* Provider that always succeeds with the given chunks.
|
|
126
|
+
*/
|
|
127
|
+
success(chunks = defaultChunks) {
|
|
128
|
+
return {
|
|
129
|
+
async streamText(_options) {
|
|
130
|
+
const fullStream = asyncIterableFrom(chunks);
|
|
131
|
+
const textChunks = chunks
|
|
132
|
+
.filter((c) => c.type === "text-delta")
|
|
133
|
+
.map((c) => c.text);
|
|
134
|
+
return {
|
|
135
|
+
steps: Promise.resolve([]),
|
|
136
|
+
fullStream,
|
|
137
|
+
textStream: asyncIterableFrom(textChunks),
|
|
138
|
+
response: Promise.resolve(defaultResponse),
|
|
139
|
+
};
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Provider that always succeeds with the given text (splits by spaces).
|
|
145
|
+
*/
|
|
146
|
+
successWithText(text) {
|
|
147
|
+
return {
|
|
148
|
+
async streamText() {
|
|
149
|
+
return createResultFromSentence(text);
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
},
|
|
153
|
+
/**
|
|
154
|
+
* Provider that fails on the first N attempts then succeeds.
|
|
155
|
+
* Optionally tracks calls by pushing to the provided `calls` array.
|
|
156
|
+
*/
|
|
157
|
+
failsThenSucceeds(failCount, options = {}) {
|
|
158
|
+
const { error = new Error("Network error"), text, textChunks, calls, } = options;
|
|
159
|
+
let attempts = 0;
|
|
160
|
+
return {
|
|
161
|
+
async streamText(streamOpts) {
|
|
162
|
+
attempts++;
|
|
163
|
+
if (calls) {
|
|
164
|
+
calls.push({
|
|
165
|
+
messages: JSON.parse(JSON.stringify(streamOpts.messages ?? [])),
|
|
166
|
+
timestamp: Date.now(),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if (attempts <= failCount) {
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
if (textChunks) {
|
|
173
|
+
return createResultFromText(textChunks);
|
|
174
|
+
}
|
|
175
|
+
if (text) {
|
|
176
|
+
return createResultFromSentence(text);
|
|
177
|
+
}
|
|
178
|
+
return MockProvider.success().streamText(streamOpts);
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
/**
|
|
183
|
+
* Provider where the stream fails after N chunks (sends error chunk).
|
|
184
|
+
*/
|
|
185
|
+
streamFailsAfter(chunkCount, error = new Error("Stream error")) {
|
|
186
|
+
return {
|
|
187
|
+
async streamText(_options) {
|
|
188
|
+
const chunks = [
|
|
189
|
+
...defaultChunks.slice(0, chunkCount),
|
|
190
|
+
{ type: "error", error },
|
|
191
|
+
];
|
|
192
|
+
return {
|
|
193
|
+
steps: Promise.resolve([]),
|
|
194
|
+
fullStream: asyncIterableFrom(chunks),
|
|
195
|
+
textStream: asyncIterableFrom([]),
|
|
196
|
+
response: Promise.resolve(defaultResponse),
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* Provider where the iterator throws after N chunks (simulates network disconnect).
|
|
203
|
+
* Unlike streamFailsAfter which sends an error chunk, this throws from iterator.next().
|
|
204
|
+
*/
|
|
205
|
+
iteratorThrowsAfter(chunkCount, error = new Error("Network disconnected")) {
|
|
206
|
+
return {
|
|
207
|
+
async streamText(_options) {
|
|
208
|
+
const chunks = defaultChunks.slice(0, chunkCount);
|
|
209
|
+
let index = 0;
|
|
210
|
+
const throwingIterator = {
|
|
211
|
+
async next() {
|
|
212
|
+
if (index < chunks.length) {
|
|
213
|
+
return { done: false, value: chunks[index++] };
|
|
214
|
+
}
|
|
215
|
+
// Simulate network disconnect by throwing
|
|
216
|
+
throw error;
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
const stream = new ReadableStream({
|
|
220
|
+
async pull(controller) {
|
|
221
|
+
if (index < chunks.length) {
|
|
222
|
+
controller.enqueue(chunks[index++]);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// Simulate network disconnect
|
|
226
|
+
controller.error(error);
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
return {
|
|
231
|
+
steps: Promise.resolve([]),
|
|
232
|
+
fullStream: Object.assign(stream, {
|
|
233
|
+
[Symbol.asyncIterator]: () => throwingIterator,
|
|
234
|
+
}),
|
|
235
|
+
textStream: asyncIterableFrom([]),
|
|
236
|
+
response: Promise.resolve(defaultResponse),
|
|
237
|
+
};
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
},
|
|
241
|
+
/**
|
|
242
|
+
* Provider where iterator throws on first N attempts, then succeeds.
|
|
243
|
+
* Simulates network issues that recover after retries.
|
|
244
|
+
*/
|
|
245
|
+
iteratorThrowsThenSucceeds(failCount, options = {}) {
|
|
246
|
+
const { error = new Error("Network disconnected"), chunksBeforeError = 2, text, } = options;
|
|
247
|
+
let attempts = 0;
|
|
248
|
+
return {
|
|
249
|
+
async streamText(streamOpts) {
|
|
250
|
+
attempts++;
|
|
251
|
+
if (attempts <= failCount) {
|
|
252
|
+
// Return a stream that throws mid-iteration
|
|
253
|
+
const chunks = defaultChunks.slice(0, chunksBeforeError);
|
|
254
|
+
let index = 0;
|
|
255
|
+
const throwingIterator = {
|
|
256
|
+
async next() {
|
|
257
|
+
if (index < chunks.length) {
|
|
258
|
+
return { done: false, value: chunks[index++] };
|
|
259
|
+
}
|
|
260
|
+
throw error;
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
const stream = new ReadableStream({
|
|
264
|
+
async pull(controller) {
|
|
265
|
+
if (index < chunks.length) {
|
|
266
|
+
controller.enqueue(chunks[index++]);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
controller.error(error);
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
});
|
|
273
|
+
return {
|
|
274
|
+
steps: Promise.resolve([]),
|
|
275
|
+
fullStream: Object.assign(stream, {
|
|
276
|
+
[Symbol.asyncIterator]: () => throwingIterator,
|
|
277
|
+
}),
|
|
278
|
+
textStream: asyncIterableFrom([]),
|
|
279
|
+
response: Promise.resolve(defaultResponse),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
// Success case
|
|
283
|
+
if (text) {
|
|
284
|
+
return createResultFromSentence(text);
|
|
285
|
+
}
|
|
286
|
+
return MockProvider.success().streamText(streamOpts);
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
},
|
|
290
|
+
/**
|
|
291
|
+
* Provider that stalls after N chunks.
|
|
292
|
+
*/
|
|
293
|
+
streamStalls(chunkCount) {
|
|
294
|
+
return {
|
|
295
|
+
async streamText(_options) {
|
|
296
|
+
const chunks = defaultChunks.slice(0, chunkCount);
|
|
297
|
+
let index = 0;
|
|
298
|
+
const stallingIterable = {
|
|
299
|
+
[Symbol.asyncIterator]: () => ({
|
|
300
|
+
async next() {
|
|
301
|
+
if (index < chunks.length) {
|
|
302
|
+
return { done: false, value: chunks[index++] };
|
|
303
|
+
}
|
|
304
|
+
// stalls forever
|
|
305
|
+
return new Promise(() => { });
|
|
306
|
+
},
|
|
307
|
+
}),
|
|
308
|
+
};
|
|
309
|
+
const stream = new ReadableStream({
|
|
310
|
+
async pull(controller) {
|
|
311
|
+
if (index < chunks.length) {
|
|
312
|
+
controller.enqueue(chunks[index++]);
|
|
313
|
+
}
|
|
314
|
+
// Stall - never close
|
|
315
|
+
},
|
|
316
|
+
});
|
|
317
|
+
return {
|
|
318
|
+
steps: Promise.resolve([]),
|
|
319
|
+
fullStream: Object.assign(stream, {
|
|
320
|
+
[Symbol.asyncIterator]: () => stallingIterable[Symbol.asyncIterator](),
|
|
321
|
+
}),
|
|
322
|
+
textStream: asyncIterableFrom([]),
|
|
323
|
+
response: Promise.resolve(defaultResponse),
|
|
324
|
+
};
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
},
|
|
328
|
+
/**
|
|
329
|
+
* Provider that tracks calls for verification.
|
|
330
|
+
*/
|
|
331
|
+
tracked(text) {
|
|
332
|
+
const calls = [];
|
|
333
|
+
return {
|
|
334
|
+
calls,
|
|
335
|
+
provider: {
|
|
336
|
+
async streamText(options) {
|
|
337
|
+
calls.push({ options, timestamp: Date.now() });
|
|
338
|
+
if (text) {
|
|
339
|
+
return createResultFromSentence(text);
|
|
340
|
+
}
|
|
341
|
+
return MockProvider.success().streamText(options);
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
},
|
|
346
|
+
/**
|
|
347
|
+
* Provider that always fails with the given error.
|
|
348
|
+
*/
|
|
349
|
+
alwaysFails(error = new Error("Always fails")) {
|
|
350
|
+
return {
|
|
351
|
+
async streamText() {
|
|
352
|
+
throw error;
|
|
353
|
+
},
|
|
354
|
+
};
|
|
355
|
+
},
|
|
356
|
+
/**
|
|
357
|
+
* Provider that waits for a delay then fails.
|
|
358
|
+
*/
|
|
359
|
+
slowAlwaysFails(delayMs, error = new Error("Slow failure")) {
|
|
360
|
+
return {
|
|
361
|
+
async streamText() {
|
|
362
|
+
await new Promise((r) => setTimeout(r, delayMs));
|
|
363
|
+
throw error;
|
|
364
|
+
},
|
|
365
|
+
};
|
|
366
|
+
},
|
|
367
|
+
/**
|
|
368
|
+
* Provider that stalls for a specified duration then continues producing chunks.
|
|
369
|
+
* This simulates the scenario where stall detection fires but the underlying
|
|
370
|
+
* stream continues to produce data (e.g., tool calls appear after the stall error).
|
|
371
|
+
*
|
|
372
|
+
* @param stallDurationMs - How long to stall before continuing
|
|
373
|
+
* @param chunksBeforeStall - Number of chunks to emit before stalling
|
|
374
|
+
* @param chunksAfterStall - Optional chunks to emit after stall (defaults to success chunks)
|
|
375
|
+
*/
|
|
376
|
+
stallsThenContinues(stallDurationMs, chunksBeforeStall = 1, chunksAfterStall) {
|
|
377
|
+
return {
|
|
378
|
+
async streamText(_options) {
|
|
379
|
+
const preStallChunks = defaultChunks.slice(0, chunksBeforeStall);
|
|
380
|
+
const postStallChunks = (chunksAfterStall ?? [
|
|
381
|
+
{ type: "text-start", id: "after-stall" },
|
|
382
|
+
{
|
|
383
|
+
type: "text-delta",
|
|
384
|
+
id: "after-stall",
|
|
385
|
+
text: "Continued after stall",
|
|
386
|
+
},
|
|
387
|
+
{ type: "text-end", id: "after-stall" },
|
|
388
|
+
{
|
|
389
|
+
type: "finish",
|
|
390
|
+
finishReason: "stop",
|
|
391
|
+
totalUsage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
392
|
+
},
|
|
393
|
+
]);
|
|
394
|
+
const allChunks = [...preStallChunks, ...postStallChunks];
|
|
395
|
+
let index = 0;
|
|
396
|
+
let hasStalled = false;
|
|
397
|
+
const stream = new ReadableStream({
|
|
398
|
+
async pull(controller) {
|
|
399
|
+
// After pre-stall chunks, stall for the specified duration
|
|
400
|
+
if (index === preStallChunks.length && !hasStalled) {
|
|
401
|
+
hasStalled = true;
|
|
402
|
+
await new Promise((r) => setTimeout(r, stallDurationMs));
|
|
403
|
+
}
|
|
404
|
+
if (index < allChunks.length) {
|
|
405
|
+
controller.enqueue(allChunks[index++]);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
controller.close();
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
});
|
|
412
|
+
const asyncIterator = {
|
|
413
|
+
index: 0,
|
|
414
|
+
hasStalled: false,
|
|
415
|
+
async next() {
|
|
416
|
+
// After pre-stall chunks, stall for the specified duration
|
|
417
|
+
if (this.index === preStallChunks.length && !this.hasStalled) {
|
|
418
|
+
this.hasStalled = true;
|
|
419
|
+
await new Promise((r) => setTimeout(r, stallDurationMs));
|
|
420
|
+
}
|
|
421
|
+
if (this.index < allChunks.length) {
|
|
422
|
+
return { done: false, value: allChunks[this.index++] };
|
|
423
|
+
}
|
|
424
|
+
return { done: true, value: undefined };
|
|
425
|
+
},
|
|
426
|
+
};
|
|
427
|
+
return {
|
|
428
|
+
steps: Promise.resolve([]),
|
|
429
|
+
fullStream: Object.assign(stream, {
|
|
430
|
+
[Symbol.asyncIterator]: () => asyncIterator,
|
|
431
|
+
}),
|
|
432
|
+
textStream: asyncIterableFrom([]),
|
|
433
|
+
response: Promise.resolve(defaultResponse),
|
|
434
|
+
};
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
},
|
|
438
|
+
/**
|
|
439
|
+
* Provider with slow steps on first N attempts, then succeeds.
|
|
440
|
+
* Simulates slow LLM responses that trigger stall detection.
|
|
441
|
+
*/
|
|
442
|
+
slowStepsThenSucceeds(slowCount, stepDelayMs, options = {}) {
|
|
443
|
+
let attempts = 0;
|
|
444
|
+
return {
|
|
445
|
+
async streamText(streamOptions) {
|
|
446
|
+
attempts++;
|
|
447
|
+
const isSlowAttempt = attempts <= slowCount;
|
|
448
|
+
// Call prepareStep if provided
|
|
449
|
+
if (streamOptions.prepareStep) {
|
|
450
|
+
await streamOptions.prepareStep({
|
|
451
|
+
messages: streamOptions.messages ?? [],
|
|
452
|
+
stepNumber: 1,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
if (isSlowAttempt) {
|
|
456
|
+
// Simulate slow step by waiting before calling onStepFinish
|
|
457
|
+
await new Promise((r) => setTimeout(r, stepDelayMs));
|
|
458
|
+
}
|
|
459
|
+
// Call onStepFinish
|
|
460
|
+
if (streamOptions.onStepFinish) {
|
|
461
|
+
await streamOptions.onStepFinish({
|
|
462
|
+
text: isSlowAttempt
|
|
463
|
+
? "Slow response"
|
|
464
|
+
: (options.text ?? "Fast response"),
|
|
465
|
+
finishReason: "stop",
|
|
466
|
+
usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
467
|
+
toolCalls: [],
|
|
468
|
+
toolResults: [],
|
|
469
|
+
response: { messages: [] },
|
|
470
|
+
rawResponse: undefined,
|
|
471
|
+
request: undefined,
|
|
472
|
+
warnings: [],
|
|
473
|
+
isContinued: false,
|
|
474
|
+
providerMetadata: undefined,
|
|
475
|
+
files: [],
|
|
476
|
+
reasoning: undefined,
|
|
477
|
+
reasoningDetails: [],
|
|
478
|
+
sources: [],
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
// Call onFinish
|
|
482
|
+
if (streamOptions.onFinish) {
|
|
483
|
+
await streamOptions.onFinish({
|
|
484
|
+
text: options.text ?? "Response",
|
|
485
|
+
finishReason: "stop",
|
|
486
|
+
usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
487
|
+
totalUsage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
|
|
488
|
+
toolCalls: [],
|
|
489
|
+
toolResults: [],
|
|
490
|
+
response: { messages: [] },
|
|
491
|
+
steps: [],
|
|
492
|
+
rawResponse: undefined,
|
|
493
|
+
request: undefined,
|
|
494
|
+
warnings: [],
|
|
495
|
+
providerMetadata: undefined,
|
|
496
|
+
files: [],
|
|
497
|
+
reasoning: undefined,
|
|
498
|
+
reasoningDetails: [],
|
|
499
|
+
sources: [],
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
const text = options.text ?? "Response";
|
|
503
|
+
return createResultFromSentence(text);
|
|
504
|
+
},
|
|
505
|
+
};
|
|
506
|
+
},
|
|
507
|
+
};
|
|
508
|
+
//# sourceMappingURL=mock-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-provider.js","sourceRoot":"","sources":["../../../../../../src/ai-service/llm/stream/tests/helpers/mock-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ProviderType, CoreModelType } from "./config.js";
|
|
2
|
+
export interface ProviderInfo {
|
|
3
|
+
name: ProviderType;
|
|
4
|
+
model: CoreModelType;
|
|
5
|
+
}
|
|
6
|
+
export interface StreamMetrics {
|
|
7
|
+
chunkCount: number;
|
|
8
|
+
totalTokens: number;
|
|
9
|
+
retryCount: number;
|
|
10
|
+
totalRetryDelayMs: number;
|
|
11
|
+
durationMs: number;
|
|
12
|
+
timeToFirstTokenMs?: number;
|
|
13
|
+
}
|
|
14
|
+
export type SessionOutcome = "pending" | "complete" | "error" | "aborted";
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/types.ts"],"names":[],"mappings":""}
|
|
@@ -6,7 +6,7 @@ export type LLMProviderSettings = {
|
|
|
6
6
|
anthropic: AnthropicProviderSettings;
|
|
7
7
|
clark: ClarkProviderSettings;
|
|
8
8
|
};
|
|
9
|
-
export type LLMTask = "classifyPrompt" | "summarizeMessages" | "explain" | "openApiIntent" | "generateSpecificEdit" | "generateBroadEdit" | "generateFullAppGen";
|
|
9
|
+
export type LLMTask = "classifyPrompt" | "summarizeMessages" | "explain" | "openApiIntent" | "generateSpecificEdit" | "generateBroadEdit" | "generateFullAppGen" | "fast";
|
|
10
10
|
export type LLMTaskModels = {
|
|
11
11
|
[K in LLMTask]: LanguageModelV2;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,gBAAgB,GAChB,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,gBAAgB,GAChB,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,GACpB,MAAM,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,OAAO,GAAG,eAAe;CAChC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,eAAe,CAAC;IACpD,sBAAsB,EAAE,CACtB,cAAc,EAAE,oBAAoB,KACjC,eAAe,CAAC;CACtB,CAAC"}
|
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
import { type Logger } from "../../util/logger.js";
|
|
2
|
-
import { type StreamTextOptions } from "../llm/interaction/index.js";
|
|
3
1
|
import { LLMObsTracer } from "./tracer.js";
|
|
4
2
|
import type { LLMObsSpan } from "./types.js";
|
|
5
|
-
import type { Tool } from "../agent/tools2/types.js";
|
|
6
3
|
export declare function traceWorkflow<T>(name: string, operation: (span: any) => Promise<T>, tags?: Record<string, string | boolean>, llmobs?: LLMObsTracer): Promise<T>;
|
|
7
4
|
export declare function traceTask<T>(name: string, operation: (span: any) => Promise<T>, tags?: Record<string, string | boolean>, llmobs?: LLMObsTracer): Promise<T>;
|
|
8
5
|
export declare function traceLLM<T>(name: string, modelName: string, modelProvider: string, operation: (span: LLMObsSpan) => Promise<T>, tags?: Record<string, string | boolean>, llmobs?: LLMObsTracer): Promise<T>;
|
|
9
6
|
export declare function getJwtTraceTags(jwt: string | undefined): Record<string, string>;
|
|
10
7
|
export declare function getCommonTraceTags(jwt: string | undefined, applicationId: string, organizationId: string, additionalTags?: Record<string, string | boolean>): Record<string, string | boolean>;
|
|
11
|
-
/**
|
|
12
|
-
* Instruments ai.streamText with LLMObs tracing.
|
|
13
|
-
* Wraps user-provided callbacks to ensure spans are finished correctly.
|
|
14
|
-
* Captures input/output data, metrics, errors, and metadata for each step and the overall call.
|
|
15
|
-
*
|
|
16
|
-
* Note: Retry logic is now handled at the LanguageModelV2 middleware level in the provider,
|
|
17
|
-
* and chaos monkey error injection is handled at the fetch level. This function only applies
|
|
18
|
-
* LLMObs tracing.
|
|
19
|
-
*
|
|
20
|
-
* @param params - Parameters to pass to streamText
|
|
21
|
-
* @param tracer - Optional LLMObs tracer
|
|
22
|
-
* @param logger - Optional logger
|
|
23
|
-
*
|
|
24
|
-
* @deprecated use the LLMClient with LLMObs middleware instead (Clark.streamText in most cases)
|
|
25
|
-
*/
|
|
26
|
-
export declare function tracedStreamText<T extends Record<string, Tool>>(params: StreamTextOptions<T>, tracer?: LLMObsTracer, logger?: Logger): Promise<import("../llm/interaction/provider.js").StreamTextResult<T>>;
|
|
27
8
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llmobs/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llmobs/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAaZ;AAGD,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAaZ;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EACvC,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAeZ;AAGD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB;AAGD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAM,GACpD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAclC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { getLogger } from "../../util/logger.js";
|
|
2
|
-
import { applyMiddleware } from "../llm/interaction/compose.js";
|
|
3
|
-
import { createLLMObsMiddleware, VercelStreamTextAdapter, } from "../llm/interaction/index.js";
|
|
4
1
|
import { parseJwt } from "../util/parse-jwt.js";
|
|
5
2
|
import { LLMObsTracer } from "./tracer.js";
|
|
6
3
|
// Helper function for workflow tracing with common patterns
|
|
@@ -67,24 +64,4 @@ export function getCommonTraceTags(jwt, applicationId, organizationId, additiona
|
|
|
67
64
|
Object.assign(result, additionalTags);
|
|
68
65
|
return result;
|
|
69
66
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Instruments ai.streamText with LLMObs tracing.
|
|
72
|
-
* Wraps user-provided callbacks to ensure spans are finished correctly.
|
|
73
|
-
* Captures input/output data, metrics, errors, and metadata for each step and the overall call.
|
|
74
|
-
*
|
|
75
|
-
* Note: Retry logic is now handled at the LanguageModelV2 middleware level in the provider,
|
|
76
|
-
* and chaos monkey error injection is handled at the fetch level. This function only applies
|
|
77
|
-
* LLMObs tracing.
|
|
78
|
-
*
|
|
79
|
-
* @param params - Parameters to pass to streamText
|
|
80
|
-
* @param tracer - Optional LLMObs tracer
|
|
81
|
-
* @param logger - Optional logger
|
|
82
|
-
*
|
|
83
|
-
* @deprecated use the LLMClient with LLMObs middleware instead (Clark.streamText in most cases)
|
|
84
|
-
*/
|
|
85
|
-
export function tracedStreamText(params, tracer = LLMObsTracer.instance, logger = getLogger()) {
|
|
86
|
-
// Apply LLMObs tracing middleware
|
|
87
|
-
const traced = applyMiddleware(new VercelStreamTextAdapter(), createLLMObsMiddleware({ tracer, logger }));
|
|
88
|
-
return traced.streamText(params);
|
|
89
|
-
}
|
|
90
67
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/ai-service/llmobs/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/ai-service/llmobs/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,SAAoC,EACpC,IAAuC,EACvC,SAAuB,YAAY,CAAC,QAAQ;IAE5C,OAAO,MAAM,CAAC,KAAK,CACjB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI;KACL,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,SAAoC,EACpC,IAAuC,EACvC,SAAuB,YAAY,CAAC,QAAQ;IAE5C,OAAO,MAAM,CAAC,KAAK,CACjB;QACE,IAAI,EAAE,MAAM;QACZ,IAAI;KACL,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,SAAiB,EACjB,aAAqB,EACrB,SAA2C,EAC3C,IAAuC,EACvC,SAAuB,YAAY,CAAC,QAAQ;IAE5C,OAAO,MAAM,CAAC,KAAK,CACjB;QACE,IAAI,EAAE,KAAK;QACX,IAAI;QACJ,SAAS;QACT,aAAa;KACd,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,eAAe,CAC7B,GAAuB;IAEvB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,MAAM,CAAC,KAAK;QAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAClD,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IAE9D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAChC,GAAuB,EACvB,aAAqB,EACrB,cAAsB,EACtB,iBAAmD,EAAE;IAErD,MAAM,MAAM,GAAqC,EAAE,CAAC;IAEpD,wDAAwD;IACxD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5C,iEAAiE;IACjE,MAAM,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;IACzC,MAAM,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;IAE3C,sBAAsB;IACtB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|