@artemiskit/core 0.2.0 → 0.2.2
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/CHANGELOG.md +42 -0
- package/dist/adapters/types.d.ts +5 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/cost/pricing.d.ts +2 -1
- package/dist/cost/pricing.d.ts.map +1 -1
- package/dist/evaluators/llm-grader.d.ts.map +1 -1
- package/dist/index.js +299 -68
- package/dist/scenario/schema.d.ts +8 -0
- package/dist/scenario/schema.d.ts.map +1 -1
- package/dist/storage/local.d.ts +44 -2
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/types.d.ts +62 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/types.ts +5 -0
- package/src/cost/pricing.ts +242 -65
- package/src/evaluators/llm-grader.ts +45 -13
- package/src/scenario/schema.ts +4 -0
- package/src/storage/local.test.ts +243 -0
- package/src/storage/local.ts +162 -2
- package/src/storage/types.ts +73 -0
- package/dist/events/emitter.d.ts +0 -111
- package/dist/events/emitter.d.ts.map +0 -1
- package/dist/events/index.d.ts +0 -6
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/types.d.ts +0 -177
- package/dist/events/types.d.ts.map +0 -1
package/dist/events/emitter.d.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event emitter for observability
|
|
3
|
-
*
|
|
4
|
-
* A lightweight typed event emitter that allows the observability package
|
|
5
|
-
* to subscribe to events from the core runner.
|
|
6
|
-
*/
|
|
7
|
-
import type { ArtemisEvent, ArtemisEventMap, ArtemisEventType } from './types';
|
|
8
|
-
/**
|
|
9
|
-
* Event handler function type
|
|
10
|
-
*/
|
|
11
|
-
export type EventHandler<T extends ArtemisEventType> = (event: ArtemisEventMap[T]) => void;
|
|
12
|
-
/**
|
|
13
|
-
* Async event handler function type
|
|
14
|
-
*/
|
|
15
|
-
export type AsyncEventHandler<T extends ArtemisEventType> = (event: ArtemisEventMap[T]) => void | Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Subscriber interface for observability integrations
|
|
18
|
-
*/
|
|
19
|
-
export interface EventSubscriber {
|
|
20
|
-
/** Unique identifier for this subscriber */
|
|
21
|
-
id: string;
|
|
22
|
-
/** Handle an event */
|
|
23
|
-
handleEvent(event: ArtemisEvent): void | Promise<void>;
|
|
24
|
-
/** Optional: called when subscriber is removed */
|
|
25
|
-
dispose?(): void | Promise<void>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Global event emitter instance
|
|
29
|
-
*
|
|
30
|
-
* This singleton allows the observability package to subscribe to events
|
|
31
|
-
* without tight coupling to the core runner.
|
|
32
|
-
*/
|
|
33
|
-
declare class ArtemisEventEmitter {
|
|
34
|
-
private subscribers;
|
|
35
|
-
private handlers;
|
|
36
|
-
private enabled;
|
|
37
|
-
/**
|
|
38
|
-
* Enable or disable event emission
|
|
39
|
-
* When disabled, no events are emitted (zero overhead)
|
|
40
|
-
*/
|
|
41
|
-
setEnabled(enabled: boolean): void;
|
|
42
|
-
/**
|
|
43
|
-
* Check if any subscribers are registered
|
|
44
|
-
*/
|
|
45
|
-
hasSubscribers(): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Register a subscriber that receives all events
|
|
48
|
-
*/
|
|
49
|
-
subscribe(subscriber: EventSubscriber): () => void;
|
|
50
|
-
/**
|
|
51
|
-
* Remove a subscriber by ID
|
|
52
|
-
*/
|
|
53
|
-
unsubscribe(subscriberId: string): Promise<void>;
|
|
54
|
-
/**
|
|
55
|
-
* Register a handler for a specific event type
|
|
56
|
-
*/
|
|
57
|
-
on<T extends ArtemisEventType>(eventType: T, handler: AsyncEventHandler<T>): () => void;
|
|
58
|
-
/**
|
|
59
|
-
* Remove a handler for a specific event type
|
|
60
|
-
*/
|
|
61
|
-
off<T extends ArtemisEventType>(eventType: T, handler: AsyncEventHandler<T>): void;
|
|
62
|
-
/**
|
|
63
|
-
* Emit an event to all subscribers and type-specific handlers
|
|
64
|
-
*
|
|
65
|
-
* Events are emitted asynchronously but errors are caught and logged
|
|
66
|
-
* to prevent observability from breaking the test runner.
|
|
67
|
-
*/
|
|
68
|
-
emit<T extends ArtemisEventType>(event: ArtemisEventMap[T]): void;
|
|
69
|
-
/**
|
|
70
|
-
* Emit an event and wait for all handlers to complete
|
|
71
|
-
* Useful for testing or when you need to ensure handlers have run
|
|
72
|
-
*/
|
|
73
|
-
emitAsync<T extends ArtemisEventType>(event: ArtemisEventMap[T]): Promise<void>;
|
|
74
|
-
/**
|
|
75
|
-
* Remove all subscribers and handlers
|
|
76
|
-
*/
|
|
77
|
-
clear(): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Get the number of registered subscribers
|
|
80
|
-
*/
|
|
81
|
-
get subscriberCount(): number;
|
|
82
|
-
/**
|
|
83
|
-
* Get the number of registered handlers (across all event types)
|
|
84
|
-
*/
|
|
85
|
-
get handlerCount(): number;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Global event emitter singleton
|
|
89
|
-
*
|
|
90
|
-
* Usage in core:
|
|
91
|
-
* ```typescript
|
|
92
|
-
* import { events } from '@artemiskit/core';
|
|
93
|
-
* events.emit({ type: 'test:start', ... });
|
|
94
|
-
* ```
|
|
95
|
-
*
|
|
96
|
-
* Usage in observability:
|
|
97
|
-
* ```typescript
|
|
98
|
-
* import { events } from '@artemiskit/core';
|
|
99
|
-
* events.subscribe({
|
|
100
|
-
* id: 'metrics',
|
|
101
|
-
* handleEvent: (event) => { ... }
|
|
102
|
-
* });
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
export declare const events: ArtemisEventEmitter;
|
|
106
|
-
/**
|
|
107
|
-
* Helper to create a timestamp for events
|
|
108
|
-
*/
|
|
109
|
-
export declare function createTimestamp(): number;
|
|
110
|
-
export {};
|
|
111
|
-
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE3F;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC1D,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,kDAAkD;IAClD,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,QAAQ,CAAiE;IACjF,OAAO,CAAC,OAAO,CAAiB;IAEhC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,IAAI;IASlD;;OAEG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAYvF;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAUlF;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAWjE;;;OAGG;IACG,SAAS,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAMzB;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM,qBAA4B,CAAC;AAEhD;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/events/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/events/types.d.ts
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event types for observability integration
|
|
3
|
-
*
|
|
4
|
-
* These events are emitted by the core runner and can be consumed by
|
|
5
|
-
* the @artemiskit/observability package for metrics, traces, and hooks.
|
|
6
|
-
*/
|
|
7
|
-
import type { TokenUsage } from '../adapters/types';
|
|
8
|
-
/**
|
|
9
|
-
* Emitted when a test case starts execution
|
|
10
|
-
*/
|
|
11
|
-
export interface TestStartEvent {
|
|
12
|
-
type: 'test:start';
|
|
13
|
-
timestamp: number;
|
|
14
|
-
testId: string;
|
|
15
|
-
testName?: string;
|
|
16
|
-
scenarioName: string;
|
|
17
|
-
tags: string[];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Emitted when a test case completes (success or failure)
|
|
21
|
-
*/
|
|
22
|
-
export interface TestCompleteEvent {
|
|
23
|
-
type: 'test:complete';
|
|
24
|
-
timestamp: number;
|
|
25
|
-
testId: string;
|
|
26
|
-
testName?: string;
|
|
27
|
-
scenarioName: string;
|
|
28
|
-
passed: boolean;
|
|
29
|
-
score: number;
|
|
30
|
-
durationMs: number;
|
|
31
|
-
evaluatorType: string;
|
|
32
|
-
reason?: string;
|
|
33
|
-
error?: string;
|
|
34
|
-
tags: string[];
|
|
35
|
-
tokens: TokenUsage;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Emitted when a scenario starts execution
|
|
39
|
-
*/
|
|
40
|
-
export interface ScenarioStartEvent {
|
|
41
|
-
type: 'scenario:start';
|
|
42
|
-
timestamp: number;
|
|
43
|
-
scenarioName: string;
|
|
44
|
-
testCount: number;
|
|
45
|
-
provider: string;
|
|
46
|
-
model?: string;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Emitted when a scenario completes
|
|
50
|
-
*/
|
|
51
|
-
export interface ScenarioCompleteEvent {
|
|
52
|
-
type: 'scenario:complete';
|
|
53
|
-
timestamp: number;
|
|
54
|
-
scenarioName: string;
|
|
55
|
-
durationMs: number;
|
|
56
|
-
passed: number;
|
|
57
|
-
failed: number;
|
|
58
|
-
skipped: number;
|
|
59
|
-
passRate: number;
|
|
60
|
-
totalTokens: number;
|
|
61
|
-
provider: string;
|
|
62
|
-
model?: string;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Emitted before a provider/LLM API call
|
|
66
|
-
*/
|
|
67
|
-
export interface ProviderCallStartEvent {
|
|
68
|
-
type: 'provider:call:start';
|
|
69
|
-
timestamp: number;
|
|
70
|
-
provider: string;
|
|
71
|
-
model: string;
|
|
72
|
-
testId: string;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Emitted after a provider/LLM API call completes
|
|
76
|
-
*/
|
|
77
|
-
export interface ProviderCallCompleteEvent {
|
|
78
|
-
type: 'provider:call:complete';
|
|
79
|
-
timestamp: number;
|
|
80
|
-
provider: string;
|
|
81
|
-
model: string;
|
|
82
|
-
testId: string;
|
|
83
|
-
latencyMs: number;
|
|
84
|
-
tokens: TokenUsage;
|
|
85
|
-
success: boolean;
|
|
86
|
-
error?: string;
|
|
87
|
-
finishReason?: string;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Emitted before an evaluator runs
|
|
91
|
-
*/
|
|
92
|
-
export interface EvaluatorStartEvent {
|
|
93
|
-
type: 'evaluator:start';
|
|
94
|
-
timestamp: number;
|
|
95
|
-
evaluatorType: string;
|
|
96
|
-
testId: string;
|
|
97
|
-
expected: unknown;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Emitted after an evaluator completes
|
|
101
|
-
*/
|
|
102
|
-
export interface EvaluatorCompleteEvent {
|
|
103
|
-
type: 'evaluator:complete';
|
|
104
|
-
timestamp: number;
|
|
105
|
-
evaluatorType: string;
|
|
106
|
-
testId: string;
|
|
107
|
-
passed: boolean;
|
|
108
|
-
score: number;
|
|
109
|
-
durationMs: number;
|
|
110
|
-
reason?: string;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Emitted when a run starts (can include multiple scenarios)
|
|
114
|
-
*/
|
|
115
|
-
export interface RunStartEvent {
|
|
116
|
-
type: 'run:start';
|
|
117
|
-
timestamp: number;
|
|
118
|
-
runId: string;
|
|
119
|
-
project: string;
|
|
120
|
-
command: 'run' | 'stress' | 'redteam';
|
|
121
|
-
scenarioCount: number;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Emitted when a run completes
|
|
125
|
-
*/
|
|
126
|
-
export interface RunCompleteEvent {
|
|
127
|
-
type: 'run:complete';
|
|
128
|
-
timestamp: number;
|
|
129
|
-
runId: string;
|
|
130
|
-
project: string;
|
|
131
|
-
command: 'run' | 'stress' | 'redteam';
|
|
132
|
-
durationMs: number;
|
|
133
|
-
totalTests: number;
|
|
134
|
-
passed: number;
|
|
135
|
-
failed: number;
|
|
136
|
-
success: boolean;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Emitted when an error occurs
|
|
140
|
-
*/
|
|
141
|
-
export interface ErrorEvent {
|
|
142
|
-
type: 'error';
|
|
143
|
-
timestamp: number;
|
|
144
|
-
error: Error;
|
|
145
|
-
source: 'test' | 'scenario' | 'provider' | 'evaluator' | 'runner';
|
|
146
|
-
context?: {
|
|
147
|
-
testId?: string;
|
|
148
|
-
scenarioName?: string;
|
|
149
|
-
provider?: string;
|
|
150
|
-
evaluatorType?: string;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* All possible event types
|
|
155
|
-
*/
|
|
156
|
-
export type ArtemisEvent = TestStartEvent | TestCompleteEvent | ScenarioStartEvent | ScenarioCompleteEvent | ProviderCallStartEvent | ProviderCallCompleteEvent | EvaluatorStartEvent | EvaluatorCompleteEvent | RunStartEvent | RunCompleteEvent | ErrorEvent;
|
|
157
|
-
/**
|
|
158
|
-
* Event type string literals
|
|
159
|
-
*/
|
|
160
|
-
export type ArtemisEventType = ArtemisEvent['type'];
|
|
161
|
-
/**
|
|
162
|
-
* Map of event types to their payloads
|
|
163
|
-
*/
|
|
164
|
-
export interface ArtemisEventMap {
|
|
165
|
-
'test:start': TestStartEvent;
|
|
166
|
-
'test:complete': TestCompleteEvent;
|
|
167
|
-
'scenario:start': ScenarioStartEvent;
|
|
168
|
-
'scenario:complete': ScenarioCompleteEvent;
|
|
169
|
-
'provider:call:start': ProviderCallStartEvent;
|
|
170
|
-
'provider:call:complete': ProviderCallCompleteEvent;
|
|
171
|
-
'evaluator:start': EvaluatorStartEvent;
|
|
172
|
-
'evaluator:complete': EvaluatorCompleteEvent;
|
|
173
|
-
'run:start': RunStartEvent;
|
|
174
|
-
'run:complete': RunCompleteEvent;
|
|
175
|
-
error: ErrorEvent;
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"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"}
|