@agtlantis/core 0.5.0 → 0.6.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/README.md +18 -5
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/types.d.ts +69 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +116 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/utils.d.ts +17 -0
- package/dist/errors/utils.d.ts.map +1 -0
- package/dist/errors/utils.js +16 -0
- package/dist/errors/utils.js.map +1 -0
- package/dist/execution/constants.d.ts +7 -0
- package/dist/execution/constants.d.ts.map +1 -0
- package/dist/execution/constants.js +7 -0
- package/dist/execution/constants.js.map +1 -0
- package/dist/execution/index.d.ts +8 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +7 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/mapping.d.ts +17 -0
- package/dist/execution/mapping.d.ts.map +1 -0
- package/dist/execution/mapping.js +197 -0
- package/dist/execution/mapping.js.map +1 -0
- package/dist/execution/shared.d.ts +86 -0
- package/dist/execution/shared.d.ts.map +1 -0
- package/dist/execution/shared.js +100 -0
- package/dist/execution/shared.js.map +1 -0
- package/dist/execution/simple-host.d.ts +56 -0
- package/dist/execution/simple-host.d.ts.map +1 -0
- package/dist/execution/simple-host.js +126 -0
- package/dist/execution/simple-host.js.map +1 -0
- package/dist/execution/streaming-host.d.ts +79 -0
- package/dist/execution/streaming-host.d.ts.map +1 -0
- package/dist/execution/streaming-host.js +276 -0
- package/dist/execution/streaming-host.js.map +1 -0
- package/dist/execution/testing/fixtures.d.ts +67 -0
- package/dist/execution/testing/fixtures.d.ts.map +1 -0
- package/dist/execution/testing/fixtures.js +145 -0
- package/dist/execution/testing/fixtures.js.map +1 -0
- package/dist/execution/testing/helpers.d.ts +218 -0
- package/dist/execution/testing/helpers.d.ts.map +1 -0
- package/dist/execution/testing/helpers.js +327 -0
- package/dist/execution/testing/helpers.js.map +1 -0
- package/dist/execution/testing/host-configs.d.ts +56 -0
- package/dist/execution/testing/host-configs.d.ts.map +1 -0
- package/dist/execution/testing/host-configs.js +154 -0
- package/dist/execution/testing/host-configs.js.map +1 -0
- package/dist/execution/testing/vitest-assertions.d.ts +102 -0
- package/dist/execution/testing/vitest-assertions.d.ts.map +1 -0
- package/dist/execution/testing/vitest-assertions.js +142 -0
- package/dist/execution/testing/vitest-assertions.js.map +1 -0
- package/dist/execution/types.d.ts +432 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/execution/utils.d.ts +68 -0
- package/dist/execution/utils.d.ts.map +1 -0
- package/dist/execution/utils.js +93 -0
- package/dist/execution/utils.js.map +1 -0
- package/dist/index.d.ts +10 -1506
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -2979
- package/dist/index.js.map +1 -1
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +2 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +161 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +31 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/types.d.ts +46 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +2 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/progressive/index.d.ts +2 -0
- package/dist/patterns/progressive/index.d.ts.map +1 -0
- package/dist/patterns/progressive/index.js +2 -0
- package/dist/patterns/progressive/index.js.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts +174 -0
- package/dist/patterns/progressive/progressive-pattern.d.ts.map +1 -0
- package/dist/patterns/progressive/progressive-pattern.js +260 -0
- package/dist/patterns/progressive/progressive-pattern.js.map +1 -0
- package/dist/pricing/calculator.d.ts +71 -0
- package/dist/pricing/calculator.d.ts.map +1 -0
- package/dist/pricing/calculator.js +127 -0
- package/dist/pricing/calculator.js.map +1 -0
- package/dist/pricing/config.d.ts +61 -0
- package/dist/pricing/config.d.ts.map +1 -0
- package/dist/pricing/config.js +87 -0
- package/dist/pricing/config.js.map +1 -0
- package/dist/pricing/defaults.d.ts +29 -0
- package/dist/pricing/defaults.d.ts.map +1 -0
- package/dist/pricing/defaults.js +139 -0
- package/dist/pricing/defaults.js.map +1 -0
- package/dist/pricing/index.d.ts +40 -0
- package/dist/pricing/index.d.ts.map +1 -0
- package/dist/pricing/index.js +43 -0
- package/dist/pricing/index.js.map +1 -0
- package/dist/pricing/types.d.ts +96 -0
- package/dist/pricing/types.d.ts.map +1 -0
- package/dist/pricing/types.js +7 -0
- package/dist/pricing/types.js.map +1 -0
- package/dist/pricing/validator.d.ts +55 -0
- package/dist/pricing/validator.d.ts.map +1 -0
- package/dist/pricing/validator.js +84 -0
- package/dist/pricing/validator.js.map +1 -0
- package/dist/prompt/errors.d.ts +112 -0
- package/dist/prompt/errors.d.ts.map +1 -0
- package/dist/prompt/errors.js +174 -0
- package/dist/prompt/errors.js.map +1 -0
- package/dist/prompt/file-prompt-repository.d.ts +80 -0
- package/dist/prompt/file-prompt-repository.d.ts.map +1 -0
- package/dist/prompt/file-prompt-repository.js +287 -0
- package/dist/prompt/file-prompt-repository.js.map +1 -0
- package/dist/prompt/index.d.ts +34 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +37 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/prompt-template.d.ts +64 -0
- package/dist/prompt/prompt-template.d.ts.map +1 -0
- package/dist/prompt/prompt-template.js +90 -0
- package/dist/prompt/prompt-template.js.map +1 -0
- package/dist/prompt/template.d.ts +23 -0
- package/dist/prompt/template.d.ts.map +1 -0
- package/dist/prompt/template.js +70 -0
- package/dist/prompt/template.js.map +1 -0
- package/dist/prompt/types.d.ts +148 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +7 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/provider/base-file-manager.d.ts +14 -0
- package/dist/provider/base-file-manager.d.ts.map +1 -0
- package/dist/provider/base-file-manager.js +91 -0
- package/dist/provider/base-file-manager.js.map +1 -0
- package/dist/provider/base-provider.d.ts +41 -0
- package/dist/provider/base-provider.d.ts.map +1 -0
- package/dist/provider/base-provider.js +21 -0
- package/dist/provider/base-provider.js.map +1 -0
- package/dist/provider/file-cache.d.ts +14 -0
- package/dist/provider/file-cache.d.ts.map +1 -0
- package/dist/provider/file-cache.js +29 -0
- package/dist/provider/file-cache.js.map +1 -0
- package/dist/provider/file-source.d.ts +32 -0
- package/dist/provider/file-source.d.ts.map +1 -0
- package/dist/provider/file-source.js +180 -0
- package/dist/provider/file-source.js.map +1 -0
- package/dist/provider/file-utils.d.ts +5 -0
- package/dist/provider/file-utils.d.ts.map +1 -0
- package/dist/provider/file-utils.js +15 -0
- package/dist/provider/file-utils.js.map +1 -0
- package/dist/provider/google/factory.d.ts +107 -0
- package/dist/provider/google/factory.d.ts.map +1 -0
- package/dist/provider/google/factory.js +143 -0
- package/dist/provider/google/factory.js.map +1 -0
- package/dist/provider/google/file-manager.d.ts +10 -0
- package/dist/provider/google/file-manager.d.ts.map +1 -0
- package/dist/provider/google/file-manager.js +93 -0
- package/dist/provider/google/file-manager.js.map +1 -0
- package/dist/provider/google/index.d.ts +8 -0
- package/dist/provider/google/index.d.ts.map +1 -0
- package/dist/provider/google/index.js +10 -0
- package/dist/provider/google/index.js.map +1 -0
- package/dist/provider/hash.d.ts +3 -0
- package/dist/provider/hash.d.ts.map +1 -0
- package/dist/provider/hash.js +34 -0
- package/dist/provider/hash.js.map +1 -0
- package/dist/provider/index.d.ts +10 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +12 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/noop-file-manager.d.ts +9 -0
- package/dist/provider/noop-file-manager.d.ts.map +1 -0
- package/dist/provider/noop-file-manager.js +28 -0
- package/dist/provider/noop-file-manager.js.map +1 -0
- package/dist/provider/openai/factory.d.ts +67 -0
- package/dist/provider/openai/factory.d.ts.map +1 -0
- package/dist/provider/openai/factory.js +100 -0
- package/dist/provider/openai/factory.js.map +1 -0
- package/dist/provider/openai/file-manager.d.ts +17 -0
- package/dist/provider/openai/file-manager.d.ts.map +1 -0
- package/dist/provider/openai/file-manager.js +108 -0
- package/dist/provider/openai/file-manager.js.map +1 -0
- package/dist/provider/openai/index.d.ts +8 -0
- package/dist/provider/openai/index.d.ts.map +1 -0
- package/dist/provider/openai/index.js +8 -0
- package/dist/provider/openai/index.js.map +1 -0
- package/dist/provider/types.d.ts +105 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +19 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/simple-session.d.ts +98 -0
- package/dist/session/simple-session.d.ts.map +1 -0
- package/dist/session/simple-session.js +299 -0
- package/dist/session/simple-session.js.map +1 -0
- package/dist/session/streaming-session.d.ts +90 -0
- package/dist/session/streaming-session.d.ts.map +1 -0
- package/dist/session/streaming-session.js +151 -0
- package/dist/session/streaming-session.js.map +1 -0
- package/dist/session/test-utils.d.ts +19 -0
- package/dist/session/test-utils.d.ts.map +1 -0
- package/dist/session/test-utils.js +65 -0
- package/dist/session/test-utils.js.map +1 -0
- package/dist/session/types.d.ts +219 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +181 -0
- package/dist/session/types.js.map +1 -0
- package/dist/session/usage-extractors.d.ts +7 -0
- package/dist/session/usage-extractors.d.ts.map +1 -0
- package/dist/session/usage-extractors.js +71 -0
- package/dist/session/usage-extractors.js.map +1 -0
- package/dist/testing/fixtures.d.ts +34 -0
- package/dist/testing/fixtures.d.ts.map +1 -0
- package/dist/testing/fixtures.js +65 -0
- package/dist/testing/fixtures.js.map +1 -0
- package/dist/testing/helpers.d.ts +20 -0
- package/dist/testing/helpers.d.ts.map +1 -0
- package/dist/testing/helpers.js +32 -0
- package/dist/testing/helpers.js.map +1 -0
- package/dist/testing/index.d.ts +7 -519
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +21 -2123
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-provider.d.ts +79 -0
- package/dist/testing/mock-provider.d.ts.map +1 -0
- package/dist/testing/mock-provider.js +152 -0
- package/dist/testing/mock-provider.js.map +1 -0
- package/dist/testing/mock.d.ts +29 -0
- package/dist/testing/mock.d.ts.map +1 -0
- package/dist/testing/mock.js +154 -0
- package/dist/testing/mock.js.map +1 -0
- package/dist/testing/test-execution.d.ts +14 -0
- package/dist/testing/test-execution.d.ts.map +1 -0
- package/dist/testing/test-execution.js +108 -0
- package/dist/testing/test-execution.js.map +1 -0
- package/dist/utils/deep-merge.d.ts +6 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +24 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/validation/errors.d.ts +28 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +38 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +4 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +49 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validation-history.d.ts +12 -0
- package/dist/validation/validation-history.d.ts.map +1 -0
- package/dist/validation/validation-history.js +29 -0
- package/dist/validation/validation-history.js.map +1 -0
- package/dist/validation/with-validation.d.ts +38 -0
- package/dist/validation/with-validation.d.ts.map +1 -0
- package/dist/validation/with-validation.js +58 -0
- package/dist/validation/with-validation.js.map +1 -0
- package/package.json +71 -75
- package/dist/base-provider-2TTw5HAa.d.cts +0 -1254
- package/dist/base-provider-2TTw5HAa.d.ts +0 -1254
- package/dist/index.cjs +0 -3085
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1506
- package/dist/testing/index.cjs +0 -2167
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -520
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { LanguageModel, ToolSet } from 'ai';
|
|
2
|
+
import type { Logger } from '../observability/logger.js';
|
|
3
|
+
import type { FileManager } from '../provider/types.js';
|
|
4
|
+
import type { ProviderType, ProviderPricing } from '../pricing/types.js';
|
|
5
|
+
import type { GenerationOptions, SessionSummary } from './types.js';
|
|
6
|
+
import { SimpleSession } from './simple-session.js';
|
|
7
|
+
import type { SessionEvent, EmittableEventInput, ExtractResult } from '../execution/types.js';
|
|
8
|
+
type ProviderOptions = Record<string, Record<string, unknown>>;
|
|
9
|
+
export interface StreamingSessionOptions {
|
|
10
|
+
defaultLanguageModel?: LanguageModel | null;
|
|
11
|
+
modelFactory?: (modelId: string) => LanguageModel;
|
|
12
|
+
providerType: ProviderType;
|
|
13
|
+
providerPricing?: ProviderPricing;
|
|
14
|
+
fileManager: FileManager;
|
|
15
|
+
logger?: Logger;
|
|
16
|
+
startTime?: number;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
defaultProviderOptions?: ProviderOptions;
|
|
19
|
+
defaultTools?: ToolSet;
|
|
20
|
+
defaultGenerationOptions?: GenerationOptions;
|
|
21
|
+
}
|
|
22
|
+
export declare class StreamingSession<TEvent extends {
|
|
23
|
+
type: string;
|
|
24
|
+
}> extends SimpleSession {
|
|
25
|
+
private lastEventTime;
|
|
26
|
+
private _terminated;
|
|
27
|
+
constructor(options: StreamingSessionOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Emits a streaming event with automatically attached metrics.
|
|
30
|
+
*
|
|
31
|
+
* Reserved types ('complete', 'error') throw at runtime - use session.done()
|
|
32
|
+
* or session.fail() instead.
|
|
33
|
+
*
|
|
34
|
+
* @param event - The event to emit (metrics will be added automatically)
|
|
35
|
+
* @returns The complete event with metrics attached
|
|
36
|
+
* @throws Error when attempting to emit reserved types ('complete', 'error')
|
|
37
|
+
*/
|
|
38
|
+
emit(event: EmittableEventInput<TEvent>): SessionEvent<TEvent>;
|
|
39
|
+
/**
|
|
40
|
+
* Internal emit method - bypasses reserved type check.
|
|
41
|
+
* Used by done() and fail() to emit terminal events.
|
|
42
|
+
*/
|
|
43
|
+
private emitInternal;
|
|
44
|
+
/**
|
|
45
|
+
* Signals successful completion of the streaming execution.
|
|
46
|
+
* Emits a 'complete' event with the result data and session summary.
|
|
47
|
+
* Also triggers Logger.onExecutionDone for observability.
|
|
48
|
+
* @param data - The final result data
|
|
49
|
+
* @returns The complete event with data and summary
|
|
50
|
+
*/
|
|
51
|
+
done(data: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
|
|
52
|
+
/**
|
|
53
|
+
* Signals that the streaming execution failed with an error.
|
|
54
|
+
* Emits an 'error' event and triggers Logger.onExecutionError for observability.
|
|
55
|
+
* Gracefully handles getSummary() failures - summary will be undefined if it fails.
|
|
56
|
+
* @param error - The error that caused the failure
|
|
57
|
+
* @param data - Optional partial result data (if any was produced before failure)
|
|
58
|
+
* @returns The error event
|
|
59
|
+
*/
|
|
60
|
+
fail(error: Error, data?: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
|
|
61
|
+
private createMetrics;
|
|
62
|
+
}
|
|
63
|
+
export interface StreamingSessionInternal<TEvent extends {
|
|
64
|
+
type: string;
|
|
65
|
+
}> {
|
|
66
|
+
generateText: SimpleSession['generateText'];
|
|
67
|
+
streamText: SimpleSession['streamText'];
|
|
68
|
+
fileManager: FileManager;
|
|
69
|
+
onDone: SimpleSession['onDone'];
|
|
70
|
+
record: SimpleSession['record'];
|
|
71
|
+
recordToolCall: SimpleSession['recordToolCall'];
|
|
72
|
+
emit(event: EmittableEventInput<TEvent>): SessionEvent<TEvent>;
|
|
73
|
+
done(data: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
|
|
74
|
+
fail(error: Error, data?: ExtractResult<TEvent>): Promise<SessionEvent<TEvent>>;
|
|
75
|
+
runOnDoneHooks(): Promise<void>;
|
|
76
|
+
getSummary(): Promise<SessionSummary>;
|
|
77
|
+
}
|
|
78
|
+
export interface CreateStreamingSessionOptions {
|
|
79
|
+
defaultLanguageModel: LanguageModel;
|
|
80
|
+
providerType: ProviderType;
|
|
81
|
+
fileManager: FileManager;
|
|
82
|
+
logger?: Logger;
|
|
83
|
+
startTime?: number;
|
|
84
|
+
signal?: AbortSignal;
|
|
85
|
+
}
|
|
86
|
+
export declare function createStreamingSession<TEvent extends {
|
|
87
|
+
type: string;
|
|
88
|
+
}>(options: CreateStreamingSessionOptions): StreamingSessionInternal<TEvent>;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=streaming-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-session.d.ts","sourceRoot":"","sources":["../../src/session/streaming-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { noopLogger } from '../observability/logger.js';
|
|
2
|
+
import { SimpleSession } from './simple-session.js';
|
|
3
|
+
export class StreamingSession extends SimpleSession {
|
|
4
|
+
lastEventTime;
|
|
5
|
+
_terminated = false;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
super({
|
|
8
|
+
defaultLanguageModel: options.defaultLanguageModel,
|
|
9
|
+
modelFactory: options.modelFactory,
|
|
10
|
+
providerType: options.providerType,
|
|
11
|
+
providerPricing: options.providerPricing,
|
|
12
|
+
fileManager: options.fileManager,
|
|
13
|
+
logger: options.logger,
|
|
14
|
+
startTime: options.startTime,
|
|
15
|
+
signal: options.signal,
|
|
16
|
+
defaultProviderOptions: options.defaultProviderOptions,
|
|
17
|
+
defaultTools: options.defaultTools,
|
|
18
|
+
defaultGenerationOptions: options.defaultGenerationOptions,
|
|
19
|
+
});
|
|
20
|
+
this.lastEventTime = this._startTime;
|
|
21
|
+
this._logger.onExecutionStart?.({
|
|
22
|
+
type: 'execution_start',
|
|
23
|
+
timestamp: Date.now(),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Emits a streaming event with automatically attached metrics.
|
|
28
|
+
*
|
|
29
|
+
* Reserved types ('complete', 'error') throw at runtime - use session.done()
|
|
30
|
+
* or session.fail() instead.
|
|
31
|
+
*
|
|
32
|
+
* @param event - The event to emit (metrics will be added automatically)
|
|
33
|
+
* @returns The complete event with metrics attached
|
|
34
|
+
* @throws Error when attempting to emit reserved types ('complete', 'error')
|
|
35
|
+
*/
|
|
36
|
+
emit(event) {
|
|
37
|
+
if (this._terminated) {
|
|
38
|
+
throw new Error('Session already terminated. Cannot call emit() after a terminal operation.');
|
|
39
|
+
}
|
|
40
|
+
// Runtime check: prevent reserved types even when TypeScript is bypassed
|
|
41
|
+
const eventType = event.type;
|
|
42
|
+
if (eventType === 'complete' || eventType === 'error') {
|
|
43
|
+
throw new Error(`Cannot emit reserved type "${eventType}". ` +
|
|
44
|
+
'Use session.done() for completion or session.fail() for errors.');
|
|
45
|
+
}
|
|
46
|
+
return this.emitInternal(event);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Internal emit method - bypasses reserved type check.
|
|
50
|
+
* Used by done() and fail() to emit terminal events.
|
|
51
|
+
*/
|
|
52
|
+
emitInternal(event) {
|
|
53
|
+
const metrics = this.createMetrics();
|
|
54
|
+
const fullEvent = { ...event, metrics };
|
|
55
|
+
this._logger.onExecutionEmit?.({
|
|
56
|
+
type: 'execution_emit',
|
|
57
|
+
event: fullEvent,
|
|
58
|
+
});
|
|
59
|
+
return fullEvent;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Signals successful completion of the streaming execution.
|
|
63
|
+
* Emits a 'complete' event with the result data and session summary.
|
|
64
|
+
* Also triggers Logger.onExecutionDone for observability.
|
|
65
|
+
* @param data - The final result data
|
|
66
|
+
* @returns The complete event with data and summary
|
|
67
|
+
*/
|
|
68
|
+
async done(data) {
|
|
69
|
+
if (this._terminated) {
|
|
70
|
+
throw new Error('Session already terminated. Cannot call done() after a terminal operation.');
|
|
71
|
+
}
|
|
72
|
+
this._terminated = true;
|
|
73
|
+
const summary = await this.getSummary();
|
|
74
|
+
this._logger.onExecutionDone?.({
|
|
75
|
+
type: 'execution_done',
|
|
76
|
+
timestamp: Date.now(),
|
|
77
|
+
duration: summary.totalDuration,
|
|
78
|
+
data,
|
|
79
|
+
summary,
|
|
80
|
+
});
|
|
81
|
+
// Use emitInternal to bypass reserved type check (internal only)
|
|
82
|
+
return this.emitInternal({
|
|
83
|
+
type: 'complete',
|
|
84
|
+
data,
|
|
85
|
+
summary,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Signals that the streaming execution failed with an error.
|
|
90
|
+
* Emits an 'error' event and triggers Logger.onExecutionError for observability.
|
|
91
|
+
* Gracefully handles getSummary() failures - summary will be undefined if it fails.
|
|
92
|
+
* @param error - The error that caused the failure
|
|
93
|
+
* @param data - Optional partial result data (if any was produced before failure)
|
|
94
|
+
* @returns The error event
|
|
95
|
+
*/
|
|
96
|
+
async fail(error, data) {
|
|
97
|
+
if (this._terminated) {
|
|
98
|
+
throw new Error('Session already terminated. Cannot call fail() after a terminal operation.');
|
|
99
|
+
}
|
|
100
|
+
this._terminated = true;
|
|
101
|
+
let summary;
|
|
102
|
+
try {
|
|
103
|
+
summary = await this.getSummary();
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Ignore summary errors on failure path
|
|
107
|
+
}
|
|
108
|
+
this._logger.onExecutionError?.({
|
|
109
|
+
type: 'execution_error',
|
|
110
|
+
timestamp: Date.now(),
|
|
111
|
+
duration: summary?.totalDuration ?? (Date.now() - this._startTime),
|
|
112
|
+
error,
|
|
113
|
+
data,
|
|
114
|
+
summary,
|
|
115
|
+
});
|
|
116
|
+
const errorEvent = {
|
|
117
|
+
type: 'error',
|
|
118
|
+
error,
|
|
119
|
+
};
|
|
120
|
+
if (summary) {
|
|
121
|
+
errorEvent.summary = summary;
|
|
122
|
+
}
|
|
123
|
+
if (data !== undefined) {
|
|
124
|
+
errorEvent.data = data;
|
|
125
|
+
}
|
|
126
|
+
// Use emitInternal to bypass reserved type check (internal only)
|
|
127
|
+
return this.emitInternal(errorEvent);
|
|
128
|
+
}
|
|
129
|
+
createMetrics() {
|
|
130
|
+
const now = Date.now();
|
|
131
|
+
const metrics = {
|
|
132
|
+
timestamp: now,
|
|
133
|
+
elapsedMs: now - this._startTime,
|
|
134
|
+
deltaMs: now - this.lastEventTime,
|
|
135
|
+
};
|
|
136
|
+
this.lastEventTime = now;
|
|
137
|
+
return metrics;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export function createStreamingSession(options) {
|
|
141
|
+
const session = new StreamingSession({
|
|
142
|
+
defaultLanguageModel: options.defaultLanguageModel,
|
|
143
|
+
providerType: options.providerType,
|
|
144
|
+
fileManager: options.fileManager,
|
|
145
|
+
logger: options.logger ?? noopLogger,
|
|
146
|
+
startTime: options.startTime,
|
|
147
|
+
signal: options.signal,
|
|
148
|
+
});
|
|
149
|
+
return session;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=streaming-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-session.js","sourceRoot":"","sources":["../../src/session/streaming-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
import type { LanguageModel, LanguageModelUsage } from 'ai';
|
|
3
|
+
import type { Logger } from '../observability/logger.js';
|
|
4
|
+
import type { FileManager } from '../provider/types.js';
|
|
5
|
+
export declare const TEST_PROVIDER_TYPE: 'google';
|
|
6
|
+
export declare function createMockModel(): LanguageModel;
|
|
7
|
+
export declare function createMockFileManager(): FileManager;
|
|
8
|
+
export type MockLogger = Logger & {
|
|
9
|
+
onLLMCallStart: ReturnType<typeof vi.fn>;
|
|
10
|
+
onLLMCallEnd: ReturnType<typeof vi.fn>;
|
|
11
|
+
onExecutionStart: ReturnType<typeof vi.fn>;
|
|
12
|
+
onExecutionEmit: ReturnType<typeof vi.fn>;
|
|
13
|
+
onExecutionDone: ReturnType<typeof vi.fn>;
|
|
14
|
+
onExecutionError: ReturnType<typeof vi.fn>;
|
|
15
|
+
};
|
|
16
|
+
export declare function createMockLogger(): MockLogger;
|
|
17
|
+
export declare function createMockUsage(overrides?: Partial<LanguageModelUsage>): LanguageModelUsage;
|
|
18
|
+
export declare function createTestUsage(partial: Partial<LanguageModelUsage>): LanguageModelUsage;
|
|
19
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/session/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,kBAAkB,EAAG,QAAiB,CAAC;AAEpD,wBAAgB,eAAe,IAAI,aAAa,CAS/C;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAOnD;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAChC,cAAc,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,gBAAgB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5C,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,UAAU,CAS7C;AAED,wBAAgB,eAAe,CAAC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CAgB/F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAgBxF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
export const TEST_PROVIDER_TYPE = 'google';
|
|
3
|
+
export function createMockModel() {
|
|
4
|
+
return {
|
|
5
|
+
specificationVersion: 'v1',
|
|
6
|
+
provider: 'test-provider',
|
|
7
|
+
modelId: 'test-model',
|
|
8
|
+
defaultObjectGenerationMode: 'json',
|
|
9
|
+
doGenerate: vi.fn(),
|
|
10
|
+
doStream: vi.fn(),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function createMockFileManager() {
|
|
14
|
+
return {
|
|
15
|
+
upload: vi.fn().mockResolvedValue([]),
|
|
16
|
+
delete: vi.fn().mockResolvedValue(undefined),
|
|
17
|
+
clear: vi.fn().mockResolvedValue(undefined),
|
|
18
|
+
getUploadedFiles: vi.fn().mockReturnValue([]),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function createMockLogger() {
|
|
22
|
+
return {
|
|
23
|
+
onLLMCallStart: vi.fn(),
|
|
24
|
+
onLLMCallEnd: vi.fn(),
|
|
25
|
+
onExecutionStart: vi.fn(),
|
|
26
|
+
onExecutionEmit: vi.fn(),
|
|
27
|
+
onExecutionDone: vi.fn(),
|
|
28
|
+
onExecutionError: vi.fn(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function createMockUsage(overrides = {}) {
|
|
32
|
+
return {
|
|
33
|
+
inputTokens: 100,
|
|
34
|
+
outputTokens: 50,
|
|
35
|
+
totalTokens: 150,
|
|
36
|
+
inputTokenDetails: {
|
|
37
|
+
noCacheTokens: 100,
|
|
38
|
+
cacheReadTokens: 0,
|
|
39
|
+
cacheWriteTokens: 0,
|
|
40
|
+
},
|
|
41
|
+
outputTokenDetails: {
|
|
42
|
+
textTokens: 50,
|
|
43
|
+
reasoningTokens: 0,
|
|
44
|
+
},
|
|
45
|
+
...overrides,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function createTestUsage(partial) {
|
|
49
|
+
return {
|
|
50
|
+
inputTokens: 0,
|
|
51
|
+
outputTokens: 0,
|
|
52
|
+
totalTokens: 0,
|
|
53
|
+
inputTokenDetails: {
|
|
54
|
+
noCacheTokens: 0,
|
|
55
|
+
cacheReadTokens: 0,
|
|
56
|
+
cacheWriteTokens: 0,
|
|
57
|
+
},
|
|
58
|
+
outputTokenDetails: {
|
|
59
|
+
textTokens: 0,
|
|
60
|
+
reasoningTokens: 0,
|
|
61
|
+
},
|
|
62
|
+
...partial,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/session/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAK5B,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAiB,CAAC;AAEpD,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,oBAAoB,EAAE,IAAI;QAC1B,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,YAAY;QACrB,2BAA2B,EAAE,MAAM;QACnC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;KACU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC5C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC3C,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;QACvB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;QACrB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;KACZ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAS,GAAgC,EAAE;IACzE,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,GAAG;QAChB,iBAAiB,EAAE;YACjB,aAAa,EAAE,GAAG;YAClB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;SACpB;QACD,kBAAkB,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,CAAC;SACnB;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAoC;IAClE,OAAO;QACL,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,iBAAiB,EAAE;YACjB,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;SACpB;QACD,kBAAkB,EAAE;YAClB,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,CAAC;SACnB;QACD,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session module types for @agtlantis/core.
|
|
3
|
+
* Provides interfaces for tracking LLM calls, tool calls, and session summaries.
|
|
4
|
+
*/
|
|
5
|
+
import type { CallSettings, LanguageModelUsage, generateText as aiGenerateText, streamText as aiStreamText, generateObject as aiGenerateObject, GenerateTextResult, StreamTextResult, ToolSet } from 'ai';
|
|
6
|
+
import type { ExecutionMetadata } from '../observability/types.js';
|
|
7
|
+
import type { ProviderType } from '../pricing/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Standard AI SDK generation parameters that can be set as defaults at the Provider level.
|
|
10
|
+
* Per-call parameters override these defaults via simple spread merge.
|
|
11
|
+
*/
|
|
12
|
+
export type GenerationOptions = Pick<CallSettings, 'maxOutputTokens' | 'temperature' | 'topP' | 'topK' | 'presencePenalty' | 'frequencyPenalty' | 'stopSequences' | 'seed'>;
|
|
13
|
+
/**
|
|
14
|
+
* Structural interface matching AI SDK's internal Output<OUTPUT, PARTIAL>.
|
|
15
|
+
*
|
|
16
|
+
* AI SDK exports `output as Output` (runtime value), not the interface directly.
|
|
17
|
+
* We define this compatible interface to enable structural typing.
|
|
18
|
+
*
|
|
19
|
+
* CRITICAL: Method signatures MUST exactly match AI SDK's internal interface
|
|
20
|
+
* for generic type inference to work.
|
|
21
|
+
*
|
|
22
|
+
* @see AI SDK source: node_modules/ai/dist/index.d.ts lines 572-596
|
|
23
|
+
*/
|
|
24
|
+
export interface OutputSpec<OUTPUT = unknown, PARTIAL = unknown> {
|
|
25
|
+
responseFormat: PromiseLike<unknown>;
|
|
26
|
+
parseCompleteOutput(options: {
|
|
27
|
+
text: string;
|
|
28
|
+
}, context: {
|
|
29
|
+
response: unknown;
|
|
30
|
+
usage: unknown;
|
|
31
|
+
finishReason: unknown;
|
|
32
|
+
}): Promise<OUTPUT>;
|
|
33
|
+
parsePartialOutput(options: {
|
|
34
|
+
text: string;
|
|
35
|
+
}): Promise<{
|
|
36
|
+
partial: PARTIAL;
|
|
37
|
+
} | undefined>;
|
|
38
|
+
}
|
|
39
|
+
export type DefaultOutput = OutputSpec<string, string>;
|
|
40
|
+
export type InferOutputComplete<T> = T extends OutputSpec<infer O, unknown> ? O : string;
|
|
41
|
+
export type GenerateTextResultTyped<TOOLS extends ToolSet, OUTPUT extends OutputSpec> = Awaited<ReturnType<typeof aiGenerateText<TOOLS>>> & {
|
|
42
|
+
output: InferOutputComplete<OUTPUT> | undefined;
|
|
43
|
+
};
|
|
44
|
+
export type StreamTextResultTyped<TOOLS extends ToolSet, OUTPUT extends OutputSpec> = ReturnType<typeof aiStreamText<TOOLS>> & {
|
|
45
|
+
output: Promise<InferOutputComplete<OUTPUT> | undefined>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Parameters for session.generateText().
|
|
49
|
+
* Mirrors AI SDK's generateText() with 'model' excluded (injected by session).
|
|
50
|
+
*/
|
|
51
|
+
export type GenerateTextParams<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput> = Omit<Parameters<typeof aiGenerateText<TOOLS>>[0], 'model' | 'output'> & {
|
|
52
|
+
model?: string;
|
|
53
|
+
output?: OUTPUT;
|
|
54
|
+
};
|
|
55
|
+
export type { GenerateTextResult };
|
|
56
|
+
/**
|
|
57
|
+
* Parameters for session.streamText().
|
|
58
|
+
* Mirrors AI SDK's streamText() with 'model' excluded (injected by session).
|
|
59
|
+
*/
|
|
60
|
+
export type StreamTextParams<TOOLS extends ToolSet = {}, OUTPUT extends OutputSpec = DefaultOutput> = Omit<Parameters<typeof aiStreamText<TOOLS>>[0], 'model' | 'output'> & {
|
|
61
|
+
model?: string;
|
|
62
|
+
output?: OUTPUT;
|
|
63
|
+
};
|
|
64
|
+
export type { StreamTextResult };
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Use generateText with Output.object instead
|
|
67
|
+
*/
|
|
68
|
+
export type GenerateObjectParams = Omit<Parameters<typeof aiGenerateObject>[0], 'model'>;
|
|
69
|
+
export type { ToolSet };
|
|
70
|
+
export interface ToolCallSummary {
|
|
71
|
+
name: string;
|
|
72
|
+
duration?: number;
|
|
73
|
+
success: boolean;
|
|
74
|
+
error?: string;
|
|
75
|
+
}
|
|
76
|
+
export type LLMCallType = 'generateText' | 'streamText' | 'generateObject' | 'manual';
|
|
77
|
+
export interface LLMCallRecord {
|
|
78
|
+
startTime: number;
|
|
79
|
+
endTime: number;
|
|
80
|
+
duration: number;
|
|
81
|
+
usage: LanguageModelUsage;
|
|
82
|
+
type: LLMCallType;
|
|
83
|
+
model: string;
|
|
84
|
+
provider: ProviderType;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Aggregated summary of all activity within an execution session.
|
|
88
|
+
* Used for cost tracking, performance analysis, and metadata reporting.
|
|
89
|
+
*/
|
|
90
|
+
export interface AdditionalCost {
|
|
91
|
+
type: string;
|
|
92
|
+
cost: number;
|
|
93
|
+
label?: string;
|
|
94
|
+
metadata?: Record<string, unknown>;
|
|
95
|
+
timestamp: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Internal data structure for SessionSummary constructor.
|
|
99
|
+
*/
|
|
100
|
+
interface SessionSummaryData {
|
|
101
|
+
totalLLMUsage: LanguageModelUsage;
|
|
102
|
+
llmCalls: LLMCallRecord[];
|
|
103
|
+
toolCalls: ToolCallSummary[];
|
|
104
|
+
customRecords: Record<string, unknown>[];
|
|
105
|
+
llmCost: number;
|
|
106
|
+
additionalCosts: AdditionalCost[];
|
|
107
|
+
metadata: Record<string, unknown>;
|
|
108
|
+
costByModel: Record<string, number>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Aggregated summary of all activity within an execution session.
|
|
112
|
+
* Used for cost tracking, performance analysis, and metadata reporting.
|
|
113
|
+
*
|
|
114
|
+
* This is an immutable Value Object. All mutation methods return new instances.
|
|
115
|
+
*/
|
|
116
|
+
export declare class SessionSummary {
|
|
117
|
+
readonly totalLLMUsage: LanguageModelUsage;
|
|
118
|
+
readonly llmCallCount: number;
|
|
119
|
+
readonly llmCalls: readonly LLMCallRecord[];
|
|
120
|
+
readonly toolCalls: readonly ToolCallSummary[];
|
|
121
|
+
readonly customRecords: readonly Record<string, unknown>[];
|
|
122
|
+
readonly llmCost: number;
|
|
123
|
+
readonly additionalCosts: readonly AdditionalCost[];
|
|
124
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
125
|
+
/** Cost breakdown by model. Key format: `${provider}/${model}` */
|
|
126
|
+
readonly costByModel: Readonly<Record<string, number>>;
|
|
127
|
+
private readonly startTime;
|
|
128
|
+
private constructor();
|
|
129
|
+
/**
|
|
130
|
+
* Total duration from session start to now (computed dynamically).
|
|
131
|
+
*/
|
|
132
|
+
get totalDuration(): number;
|
|
133
|
+
/**
|
|
134
|
+
* Creates an empty SessionSummary.
|
|
135
|
+
*/
|
|
136
|
+
static empty(startTime: number): SessionSummary;
|
|
137
|
+
/**
|
|
138
|
+
* Creates a SessionSummary with custom data for testing purposes.
|
|
139
|
+
* @internal For testing only - do not use in production code.
|
|
140
|
+
*/
|
|
141
|
+
static forTest(data: Partial<SessionSummaryData> & {
|
|
142
|
+
startTime?: number;
|
|
143
|
+
}): SessionSummary;
|
|
144
|
+
/**
|
|
145
|
+
* Total cost of all additional (non-LLM) operations.
|
|
146
|
+
*/
|
|
147
|
+
get totalAdditionalCost(): number;
|
|
148
|
+
/**
|
|
149
|
+
* Total cost including LLM and additional costs.
|
|
150
|
+
*/
|
|
151
|
+
get totalCost(): number;
|
|
152
|
+
/**
|
|
153
|
+
* Returns a new SessionSummary with an LLM call added.
|
|
154
|
+
*/
|
|
155
|
+
withLLMCall(call: LLMCallRecord, newLlmCost: number, newCostByModel: Record<string, number>, newTotalUsage: LanguageModelUsage): SessionSummary;
|
|
156
|
+
/**
|
|
157
|
+
* Returns a new SessionSummary with an additional cost recorded.
|
|
158
|
+
*/
|
|
159
|
+
withAdditionalCost(cost: AdditionalCost): SessionSummary;
|
|
160
|
+
/**
|
|
161
|
+
* Returns a new SessionSummary with metadata updated.
|
|
162
|
+
*/
|
|
163
|
+
withMetadata(key: string, value: unknown): SessionSummary;
|
|
164
|
+
/**
|
|
165
|
+
* Returns a new SessionSummary with a tool call added.
|
|
166
|
+
*/
|
|
167
|
+
withToolCall(call: ToolCallSummary): SessionSummary;
|
|
168
|
+
/**
|
|
169
|
+
* Returns a new SessionSummary with a custom record added.
|
|
170
|
+
*/
|
|
171
|
+
withCustomRecord(record: Record<string, unknown>): SessionSummary;
|
|
172
|
+
/**
|
|
173
|
+
* Serializes to plain JSON object for database storage.
|
|
174
|
+
*/
|
|
175
|
+
toJSON(): SessionSummaryJSON;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* JSON representation of SessionSummary for database storage.
|
|
179
|
+
*/
|
|
180
|
+
export interface SessionSummaryJSON {
|
|
181
|
+
totalDuration: number;
|
|
182
|
+
totalLLMUsage: LanguageModelUsage;
|
|
183
|
+
llmCallCount: number;
|
|
184
|
+
llmCalls: LLMCallRecord[];
|
|
185
|
+
toolCalls: ToolCallSummary[];
|
|
186
|
+
customRecords: Record<string, unknown>[];
|
|
187
|
+
llmCost: number;
|
|
188
|
+
additionalCosts: AdditionalCost[];
|
|
189
|
+
metadata: Record<string, unknown>;
|
|
190
|
+
costByModel: Record<string, number>;
|
|
191
|
+
totalCost: number;
|
|
192
|
+
totalAdditionalCost: number;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Session for tracking LLM calls, tool calls, and custom records.
|
|
196
|
+
* Provides AI SDK wrappers with auto-tracking and manual recording methods.
|
|
197
|
+
*/
|
|
198
|
+
export interface ExecutionSession {
|
|
199
|
+
generateText(params: GenerateTextParams): Promise<Awaited<ReturnType<typeof aiGenerateText>>>;
|
|
200
|
+
streamText(params: StreamTextParams): ReturnType<typeof aiStreamText>;
|
|
201
|
+
generateObject<T>(params: GenerateObjectParams & {
|
|
202
|
+
schema: import('zod').ZodType<T>;
|
|
203
|
+
}): Promise<Awaited<ReturnType<typeof aiGenerateObject>>>;
|
|
204
|
+
recordToolCall(summary: ToolCallSummary): void;
|
|
205
|
+
recordLLMCall(record: Omit<LLMCallRecord, 'type'> & {
|
|
206
|
+
type?: LLMCallType;
|
|
207
|
+
}): void;
|
|
208
|
+
record(data: Record<string, unknown>): void;
|
|
209
|
+
recordAdditionalCost(cost: Omit<AdditionalCost, 'timestamp'>): void;
|
|
210
|
+
setMetadata(key: string, value: unknown): void;
|
|
211
|
+
setMetadata(data: Record<string, unknown>): void;
|
|
212
|
+
summary(): Promise<SessionSummary>;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Metadata passed to done() and fail() in StreamGeneratorControl.
|
|
216
|
+
* Union of SessionSummary and ExecutionMetadata for flexible usage.
|
|
217
|
+
*/
|
|
218
|
+
export type DoneMetadata = SessionSummary | ExecutionMetadata;
|
|
219
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"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"}
|