@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.
@@ -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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Events module - for observability integration
3
- */
4
- export * from './types';
5
- export { events, createTimestamp, type EventSubscriber, type EventHandler, type AsyncEventHandler } from './emitter';
6
- //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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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"}