@agtlantis/core 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +119 -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 +175 -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-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/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 +14 -0
- package/dist/provider/google/file-manager.d.ts.map +1 -0
- package/dist/provider/google/file-manager.js +183 -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 +9 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +11 -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 +95 -0
- package/dist/provider/openai/factory.js.map +1 -0
- package/dist/provider/openai/index.d.ts +7 -0
- package/dist/provider/openai/index.d.ts.map +1 -0
- package/dist/provider/openai/index.js +7 -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 +39 -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 +72 -76
- 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,4 @@
|
|
|
1
|
+
export type { EventMetrics, LanguageModelUsage, ExecutionMetadata } from './types.js';
|
|
2
|
+
export type { Logger, LogLevel, LLMCallLogType, LLMCallStartEvent, LLMCallEndEvent, ExecutionStartEvent, ExecutionEmitEvent, ExecutionDoneEvent, ExecutionErrorEvent, } from './logger.js';
|
|
3
|
+
export { noopLogger, createLogger } from './logger.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import type { LanguageModelUsage } from 'ai';
|
|
2
|
+
import type { SessionSummary } from '../session/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Logger interface for observability.
|
|
5
|
+
* All methods are optional - implement only the events you care about.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const myLogger: Logger = {
|
|
10
|
+
* onLLMCallEnd(event) {
|
|
11
|
+
* console.log(`${event.modelId}: ${event.response.duration}ms`);
|
|
12
|
+
* },
|
|
13
|
+
* onExecutionDone(event) {
|
|
14
|
+
* console.log('Total duration:', event.duration);
|
|
15
|
+
* },
|
|
16
|
+
* };
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface Logger {
|
|
20
|
+
onLLMCallStart?(event: LLMCallStartEvent): void;
|
|
21
|
+
onLLMCallEnd?(event: LLMCallEndEvent): void;
|
|
22
|
+
onExecutionStart?(event: ExecutionStartEvent): void;
|
|
23
|
+
onExecutionEmit?<TEvent>(event: ExecutionEmitEvent<TEvent>): void;
|
|
24
|
+
onExecutionDone?<TResult>(event: ExecutionDoneEvent<TResult>): void;
|
|
25
|
+
onExecutionError?<TResult>(event: ExecutionErrorEvent<TResult>): void;
|
|
26
|
+
log?(level: LogLevel, message: string, data?: Record<string, unknown>): void;
|
|
27
|
+
}
|
|
28
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
29
|
+
export type LLMCallLogType = 'generateText' | 'streamText';
|
|
30
|
+
/**
|
|
31
|
+
* Event emitted when an LLM call starts.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* logger.onLLMCallStart?.({
|
|
36
|
+
* type: 'llm_call_start',
|
|
37
|
+
* callType: 'generateText',
|
|
38
|
+
* modelId: 'gemini-2.5-flash',
|
|
39
|
+
* timestamp: Date.now(),
|
|
40
|
+
* request: { params: { prompt: 'Hello' } },
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export interface LLMCallStartEvent {
|
|
45
|
+
type: 'llm_call_start';
|
|
46
|
+
callType: LLMCallLogType;
|
|
47
|
+
modelId: string;
|
|
48
|
+
timestamp: number;
|
|
49
|
+
request: {
|
|
50
|
+
params: Record<string, unknown>;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Event emitted when an LLM call ends (success or error).
|
|
55
|
+
*
|
|
56
|
+
* @example Success case:
|
|
57
|
+
* ```typescript
|
|
58
|
+
* logger.onLLMCallEnd?.({
|
|
59
|
+
* type: 'llm_call_end',
|
|
60
|
+
* callType: 'generateText',
|
|
61
|
+
* modelId: 'gemini-2.5-flash',
|
|
62
|
+
* timestamp: Date.now(),
|
|
63
|
+
* response: {
|
|
64
|
+
* duration: 1500,
|
|
65
|
+
* usage: { inputTokens: 100, outputTokens: 50, totalTokens: 150 },
|
|
66
|
+
* raw: result,
|
|
67
|
+
* },
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example Error case:
|
|
72
|
+
* ```typescript
|
|
73
|
+
* logger.onLLMCallEnd?.({
|
|
74
|
+
* type: 'llm_call_end',
|
|
75
|
+
* callType: 'streamText',
|
|
76
|
+
* modelId: 'gpt-4o',
|
|
77
|
+
* timestamp: Date.now(),
|
|
78
|
+
* response: {
|
|
79
|
+
* duration: 500,
|
|
80
|
+
* error: new Error('Rate limit exceeded'),
|
|
81
|
+
* raw: null,
|
|
82
|
+
* },
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export interface LLMCallEndEvent {
|
|
87
|
+
type: 'llm_call_end';
|
|
88
|
+
callType: LLMCallLogType;
|
|
89
|
+
modelId: string;
|
|
90
|
+
timestamp: number;
|
|
91
|
+
response: {
|
|
92
|
+
duration: number;
|
|
93
|
+
usage?: LanguageModelUsage;
|
|
94
|
+
raw: unknown;
|
|
95
|
+
error?: Error;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export interface ExecutionStartEvent {
|
|
99
|
+
type: 'execution_start';
|
|
100
|
+
timestamp: number;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Event emitted for each intermediate event during execution.
|
|
104
|
+
* @typeParam TEvent - The type of the emitted event (includes metrics)
|
|
105
|
+
*/
|
|
106
|
+
export interface ExecutionEmitEvent<TEvent = unknown> {
|
|
107
|
+
type: 'execution_emit';
|
|
108
|
+
event: TEvent;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Event emitted when execution completes successfully.
|
|
112
|
+
* @typeParam TResult - The type of the execution result
|
|
113
|
+
*/
|
|
114
|
+
export interface ExecutionDoneEvent<TResult = unknown> {
|
|
115
|
+
type: 'execution_done';
|
|
116
|
+
timestamp: number;
|
|
117
|
+
duration: number;
|
|
118
|
+
data: TResult;
|
|
119
|
+
summary: SessionSummary;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Event emitted when execution fails with an error.
|
|
123
|
+
* @typeParam TResult - The type of partial result data (if available)
|
|
124
|
+
*/
|
|
125
|
+
export interface ExecutionErrorEvent<TResult = unknown> {
|
|
126
|
+
type: 'execution_error';
|
|
127
|
+
timestamp: number;
|
|
128
|
+
duration: number;
|
|
129
|
+
error: Error;
|
|
130
|
+
data?: TResult;
|
|
131
|
+
summary?: SessionSummary;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* No-op logger (default when no logger provided).
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const provider = createGoogleProvider({
|
|
139
|
+
* apiKey: 'xxx',
|
|
140
|
+
* logger: noopLogger,
|
|
141
|
+
* });
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare const noopLogger: Logger;
|
|
145
|
+
/**
|
|
146
|
+
* Helper to create a logger with only the handlers you need.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const metricsLogger = createLogger({
|
|
151
|
+
* onLLMCallEnd(event) {
|
|
152
|
+
* metrics.recordLatency(event.response.duration);
|
|
153
|
+
* },
|
|
154
|
+
* onExecutionDone(event) {
|
|
155
|
+
* metrics.recordTokens(event.summary.totalLLMUsage.totalTokens);
|
|
156
|
+
* },
|
|
157
|
+
* });
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export declare function createLogger(handlers: Partial<Logger>): Logger;
|
|
161
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* No-op logger (default when no logger provided).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* const provider = createGoogleProvider({
|
|
7
|
+
* apiKey: 'xxx',
|
|
8
|
+
* logger: noopLogger,
|
|
9
|
+
* });
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export const noopLogger = {};
|
|
13
|
+
/**
|
|
14
|
+
* Helper to create a logger with only the handlers you need.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const metricsLogger = createLogger({
|
|
19
|
+
* onLLMCallEnd(event) {
|
|
20
|
+
* metrics.recordLatency(event.response.duration);
|
|
21
|
+
* },
|
|
22
|
+
* onExecutionDone(event) {
|
|
23
|
+
* metrics.recordTokens(event.summary.totalLLMUsage.totalTokens);
|
|
24
|
+
* },
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function createLogger(handlers) {
|
|
29
|
+
return handlers;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AA8IA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW,EAAE,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,QAAyB,EAAU;IAC9D,OAAO,QAAQ,CAAC;AAAA,CACjB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { LanguageModelUsage } from 'ai';
|
|
2
|
+
/**
|
|
3
|
+
* Timing metrics attached to each streaming event.
|
|
4
|
+
* Enables performance monitoring and latency debugging.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const event = {
|
|
9
|
+
* type: 'progress',
|
|
10
|
+
* message: 'Processing...',
|
|
11
|
+
* metrics: {
|
|
12
|
+
* timestamp: Date.now(),
|
|
13
|
+
* elapsedMs: 150,
|
|
14
|
+
* deltaMs: 50,
|
|
15
|
+
* },
|
|
16
|
+
* };
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface EventMetrics {
|
|
20
|
+
timestamp: number;
|
|
21
|
+
elapsedMs: number;
|
|
22
|
+
deltaMs: number;
|
|
23
|
+
}
|
|
24
|
+
export type { LanguageModelUsage } from 'ai';
|
|
25
|
+
/**
|
|
26
|
+
* Metadata collected during agent execution.
|
|
27
|
+
* Available after execution completes via `getSummary()`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const metadata: ExecutionMetadata = {
|
|
32
|
+
* duration: 1250,
|
|
33
|
+
* usage: {
|
|
34
|
+
* inputTokens: 500,
|
|
35
|
+
* outputTokens: 200,
|
|
36
|
+
* totalTokens: 700,
|
|
37
|
+
* },
|
|
38
|
+
* };
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export interface ExecutionMetadata {
|
|
42
|
+
duration: number;
|
|
43
|
+
languageModelUsage?: LanguageModelUsage;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,YAAY,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/progressive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/patterns/progressive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GAItB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { type StopCondition, type ToolSet } from 'ai';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { ErrorEvent, SessionEvent } from '../../execution/types.js';
|
|
4
|
+
import type { BaseProvider } from '../../provider/base-provider.js';
|
|
5
|
+
import type { StreamingSession } from '../../session/streaming-session.js';
|
|
6
|
+
import type { StreamTextParams } from '../../session/types.js';
|
|
7
|
+
export type ProgressiveStreamOptions<TUserTools extends ToolSet = {}> = Omit<StreamTextParams<TUserTools>, 'tools' | 'toolChoice' | 'stopWhen'> & {
|
|
8
|
+
tools?: TUserTools;
|
|
9
|
+
/**
|
|
10
|
+
* Additional stop conditions. Will be combined with the default
|
|
11
|
+
* `hasToolCall('submitResult')`.
|
|
12
|
+
*/
|
|
13
|
+
stopWhen?: StopCondition<ToolSet> | StopCondition<ToolSet>[];
|
|
14
|
+
/**
|
|
15
|
+
* Custom protocol instructions appended to the system prompt.
|
|
16
|
+
* If not provided, uses the default TOOL_CALLING_PROTOCOL.
|
|
17
|
+
*/
|
|
18
|
+
protocol?: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Progress event - pure domain event without metrics.
|
|
22
|
+
* Framework automatically wraps with SessionEvent at runtime.
|
|
23
|
+
*/
|
|
24
|
+
export interface ProgressEvent<TProgress> {
|
|
25
|
+
type: 'progress';
|
|
26
|
+
data: TProgress;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Complete event - pure domain event without metrics.
|
|
30
|
+
* Framework automatically wraps with SessionEvent at runtime.
|
|
31
|
+
*/
|
|
32
|
+
export interface CompleteEvent<TResult> {
|
|
33
|
+
type: 'complete';
|
|
34
|
+
data: TResult;
|
|
35
|
+
summary: unknown;
|
|
36
|
+
}
|
|
37
|
+
export declare const TOOL_CALLING_PROTOCOL = "## CRITICAL INSTRUCTION - READ CAREFULLY\n\nYou have 2 tools available:\n1. reportProgress - [OPTIONAL] Show intermediate work (multiple times)\n2. submitResult - [REQUIRED] Submit your final answer\n\n\u26A0\uFE0F IMPORTANT RULES:\n- You may call reportProgress 0-3 times to show progress\n- You MUST call submitResult exactly once to complete the task\n- After calling reportProgress, you MUST call submitResult in your NEXT response\n- If you call reportProgress more than 3 times without submitResult, the task FAILS\n- The task is NOT complete until submitResult is called\n\nCORRECT SEQUENCE:\n1. [Optional] reportProgress\n2. [Required] submitResult (exactly once)\n\n\u274C WRONG: reportProgress \u2192 reportProgress \u2192 reportProgress \u2192 reportProgress (no submitResult = FAIL)\n\u2705 CORRECT: reportProgress \u2192 submitResult (SUCCESS)";
|
|
38
|
+
/**
|
|
39
|
+
* Creates a progressive pattern for streaming LLM responses with intermediate progress updates.
|
|
40
|
+
*
|
|
41
|
+
* The pattern automatically:
|
|
42
|
+
* - Injects `reportProgress` and `submitResult` tools
|
|
43
|
+
* - Stops when `submitResult` is called (via `hasToolCall('submitResult')`)
|
|
44
|
+
* - Appends protocol instructions to the system prompt
|
|
45
|
+
*
|
|
46
|
+
* @example Basic usage
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const pattern = defineProgressivePattern({
|
|
49
|
+
* progressSchema: z.object({ stage: z.string(), message: z.string() }),
|
|
50
|
+
* resultSchema: z.object({ summary: z.string(), score: z.number() }),
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* for await (const event of pattern.run(provider, {
|
|
54
|
+
* system: 'You are an analyzer.',
|
|
55
|
+
* prompt: 'Analyze this...',
|
|
56
|
+
* })) {
|
|
57
|
+
* console.log(event.type, event.data);
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example With custom stopWhen (add step limit)
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { stepCountIs } from 'ai';
|
|
64
|
+
*
|
|
65
|
+
* for await (const event of pattern.run(provider, {
|
|
66
|
+
* prompt: 'Analyze...',
|
|
67
|
+
* stopWhen: stepCountIs(10), // Stop at submitResult OR after 10 steps
|
|
68
|
+
* })) { ... }
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example With custom protocol
|
|
72
|
+
* ```typescript
|
|
73
|
+
* for await (const event of pattern.run(provider, {
|
|
74
|
+
* prompt: 'Analyze...',
|
|
75
|
+
* protocol: 'Call reportProgress for each step, then submitResult.',
|
|
76
|
+
* })) { ... }
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example Composable (within a session)
|
|
80
|
+
* ```typescript
|
|
81
|
+
* provider.streamingExecution(async function*(session) {
|
|
82
|
+
* yield* pattern.runInSession(session, {
|
|
83
|
+
* system: 'You are an analyzer.',
|
|
84
|
+
* messages: [...],
|
|
85
|
+
* });
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function defineProgressivePattern<TProgressSchema extends z.ZodType, TResultSchema extends z.ZodType>(config: {
|
|
90
|
+
progressSchema: TProgressSchema;
|
|
91
|
+
resultSchema: TResultSchema;
|
|
92
|
+
}): ProgressivePattern<TProgressSchema, TResultSchema, z.TypeOf<TProgressSchema>, z.TypeOf<TResultSchema>, {
|
|
93
|
+
type: string;
|
|
94
|
+
}>;
|
|
95
|
+
export declare class ProgressivePattern<TProgressSchema extends z.ZodType, TResultSchema extends z.ZodType, TProgress = z.infer<TProgressSchema>, TResult = z.infer<TResultSchema>, TEvent extends {
|
|
96
|
+
type: string;
|
|
97
|
+
} = {
|
|
98
|
+
type: string;
|
|
99
|
+
}> {
|
|
100
|
+
readonly progressSchema: TProgressSchema;
|
|
101
|
+
readonly resultSchema: TResultSchema;
|
|
102
|
+
constructor(progressSchema: TProgressSchema, resultSchema: TResultSchema);
|
|
103
|
+
private lastParseError;
|
|
104
|
+
/**
|
|
105
|
+
* Runs the pattern within an existing session. Use this for composing
|
|
106
|
+
* multiple patterns or when you need fine-grained control over the session.
|
|
107
|
+
*
|
|
108
|
+
* @param session - The streaming session to run within
|
|
109
|
+
* @param options - Stream options including:
|
|
110
|
+
* - `stopWhen` - Additional stop conditions (combined with default `hasToolCall('submitResult')`)
|
|
111
|
+
* - `protocol` - Custom protocol instructions (replaces default `TOOL_CALLING_PROTOCOL`)
|
|
112
|
+
* - All other `streamText` options except `tools`, `toolChoice`, `stopWhen`
|
|
113
|
+
*
|
|
114
|
+
* @example Basic usage
|
|
115
|
+
* ```typescript
|
|
116
|
+
* provider.streamingExecution(async function*(session) {
|
|
117
|
+
* yield* pattern.runInSession(session, {
|
|
118
|
+
* system: 'You are an analyzer.',
|
|
119
|
+
* messages: [{ role: 'user', content: 'Analyze...' }],
|
|
120
|
+
* });
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @example With custom stopWhen
|
|
125
|
+
* ```typescript
|
|
126
|
+
* yield* pattern.runInSession(session, {
|
|
127
|
+
* prompt: 'Analyze...',
|
|
128
|
+
* stopWhen: stepCountIs(5), // Combined: submitResult OR 5 steps
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
runInSession<TUserTools extends ToolSet = {}>(session: StreamingSession<TEvent>, options: ProgressiveStreamOptions<TUserTools>): AsyncGenerator<SessionEvent<TEvent>, SessionEvent<TEvent>, undefined>;
|
|
133
|
+
/**
|
|
134
|
+
* Standalone execution that creates a new session internally.
|
|
135
|
+
* Use this for simple, single-pattern executions.
|
|
136
|
+
*
|
|
137
|
+
* @param provider - The AI provider to use
|
|
138
|
+
* @param options - Stream options including:
|
|
139
|
+
* - `stopWhen` - Additional stop conditions (combined with default `hasToolCall('submitResult')`)
|
|
140
|
+
* - `protocol` - Custom protocol instructions (replaces default `TOOL_CALLING_PROTOCOL`)
|
|
141
|
+
*
|
|
142
|
+
* @example Basic usage
|
|
143
|
+
* ```typescript
|
|
144
|
+
* for await (const event of pattern.run(provider, {
|
|
145
|
+
* system: 'You are an analyzer.',
|
|
146
|
+
* prompt: 'Analyze this document...',
|
|
147
|
+
* })) {
|
|
148
|
+
* if (event.type === 'progress') {
|
|
149
|
+
* console.log('Progress:', event.data);
|
|
150
|
+
* } else if (event.type === 'complete') {
|
|
151
|
+
* console.log('Result:', event.data);
|
|
152
|
+
* }
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* @example With step limit
|
|
157
|
+
* ```typescript
|
|
158
|
+
* import { stepCountIs } from 'ai';
|
|
159
|
+
*
|
|
160
|
+
* for await (const event of pattern.run(provider, {
|
|
161
|
+
* prompt: 'Analyze...',
|
|
162
|
+
* stopWhen: stepCountIs(10),
|
|
163
|
+
* })) { ... }
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
run<TUserTools extends ToolSet = {}>(provider: BaseProvider, options: ProgressiveStreamOptions<TUserTools>): AsyncIterable<SessionEvent<TEvent | ErrorEvent>>;
|
|
167
|
+
private createTools;
|
|
168
|
+
private parseJsonWrapper;
|
|
169
|
+
private parseProgressInput;
|
|
170
|
+
private parseResultInput;
|
|
171
|
+
private combineStopConditions;
|
|
172
|
+
private renderSystemPrompt;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=progressive-pattern.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressive-pattern.d.ts","sourceRoot":"","sources":["../../../src/patterns/progressive/progressive-pattern.ts"],"names":[],"mappings":"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"}
|