@prefactor/core 0.1.1 → 0.2.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/README.md +35 -2
- package/dist/agent/instance-manager.d.ts +16 -0
- package/dist/agent/instance-manager.d.ts.map +1 -0
- package/dist/agent/instance-manager.js +50 -0
- package/dist/agent/instance-manager.js.map +1 -0
- package/dist/config.d.ts +28 -52
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -18
- package/dist/config.js.map +1 -1
- package/dist/create-core.d.ts +10 -0
- package/dist/create-core.d.ts.map +1 -0
- package/dist/create-core.js +31 -0
- package/dist/create-core.js.map +1 -0
- package/dist/index.cjs +632 -256
- package/dist/index.cjs.map +18 -11
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +633 -257
- package/dist/index.js.map +18 -11
- package/dist/queue/actions.d.ts +24 -0
- package/dist/queue/actions.d.ts.map +1 -0
- package/dist/queue/actions.js +2 -0
- package/dist/queue/actions.js.map +1 -0
- package/dist/queue/base.d.ts +19 -0
- package/dist/queue/base.d.ts.map +1 -0
- package/dist/{transport → queue}/base.js.map +1 -1
- package/dist/queue/in-memory-queue.d.ts +11 -0
- package/dist/queue/in-memory-queue.d.ts.map +1 -0
- package/dist/queue/in-memory-queue.js +46 -0
- package/dist/queue/in-memory-queue.js.map +1 -0
- package/dist/queue/task-executor.d.ts +18 -0
- package/dist/queue/task-executor.d.ts.map +1 -0
- package/dist/queue/task-executor.js +77 -0
- package/dist/queue/task-executor.js.map +1 -0
- package/dist/tracing/context.d.ts +12 -0
- package/dist/tracing/context.d.ts.map +1 -1
- package/dist/tracing/context.js +41 -5
- package/dist/tracing/context.js.map +1 -1
- package/dist/tracing/span.d.ts +7 -9
- package/dist/tracing/span.d.ts.map +1 -1
- package/dist/tracing/span.js +6 -8
- package/dist/tracing/span.js.map +1 -1
- package/dist/tracing/tracer.d.ts +5 -16
- package/dist/tracing/tracer.d.ts.map +1 -1
- package/dist/tracing/tracer.js +22 -26
- package/dist/tracing/tracer.js.map +1 -1
- package/dist/transport/http/agent-instance-client.d.ts +23 -0
- package/dist/transport/http/agent-instance-client.d.ts.map +1 -0
- package/dist/transport/http/agent-instance-client.js +25 -0
- package/dist/transport/http/agent-instance-client.js.map +1 -0
- package/dist/transport/http/agent-span-client.d.ts +25 -0
- package/dist/transport/http/agent-span-client.d.ts.map +1 -0
- package/dist/transport/http/agent-span-client.js +37 -0
- package/dist/transport/http/agent-span-client.js.map +1 -0
- package/dist/transport/http/http-client.d.ts +43 -0
- package/dist/transport/http/http-client.d.ts.map +1 -0
- package/dist/transport/http/http-client.js +127 -0
- package/dist/transport/http/http-client.js.map +1 -0
- package/dist/transport/http/retry-policy.d.ts +4 -0
- package/dist/transport/http/retry-policy.d.ts.map +1 -0
- package/dist/transport/http/retry-policy.js +10 -0
- package/dist/transport/http/retry-policy.js.map +1 -0
- package/dist/transport/http.d.ts +30 -72
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +146 -269
- package/dist/transport/http.js.map +1 -1
- package/dist/utils/logging.d.ts.map +1 -1
- package/dist/utils/logging.js +7 -1
- package/dist/utils/logging.js.map +1 -1
- package/package.json +1 -1
- package/dist/transport/base.d.ts +0 -38
- package/dist/transport/base.d.ts.map +0 -1
- package/dist/transport/stdio.d.ts +0 -48
- package/dist/transport/stdio.d.ts.map +0 -1
- package/dist/transport/stdio.js +0 -71
- package/dist/transport/stdio.js.map +0 -1
- /package/dist/{transport → queue}/base.js +0 -0
|
@@ -29,6 +29,18 @@ export declare class SpanContext {
|
|
|
29
29
|
* @returns The current span, or undefined if no span is active
|
|
30
30
|
*/
|
|
31
31
|
static getCurrent(): Span | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Get the full span stack from the async context
|
|
34
|
+
*/
|
|
35
|
+
static getStack(): Span[];
|
|
36
|
+
/**
|
|
37
|
+
* Push a span onto the stack for the current async context
|
|
38
|
+
*/
|
|
39
|
+
static enter(span: Span): void;
|
|
40
|
+
/**
|
|
41
|
+
* Pop the current span from the stack for the current async context
|
|
42
|
+
*/
|
|
43
|
+
static exit(): void;
|
|
32
44
|
/**
|
|
33
45
|
* Run a synchronous function with the given span as the current context
|
|
34
46
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tracing/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tracing/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI,GAAG,SAAS;IAKrC;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;IAIzB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAK9B;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,IAAI;IAMnB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAWzC;;;;;;OAMG;WACU,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWtE;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAGrB"}
|
package/dist/tracing/context.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
1
|
+
import { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';
|
|
2
2
|
/**
|
|
3
|
-
* Storage for the current span in async context
|
|
3
|
+
* Storage for the current span stack in async context
|
|
4
4
|
*/
|
|
5
5
|
const spanStorage = new AsyncLocalStorage();
|
|
6
6
|
/**
|
|
@@ -34,7 +34,29 @@ export class SpanContext {
|
|
|
34
34
|
* @returns The current span, or undefined if no span is active
|
|
35
35
|
*/
|
|
36
36
|
static getCurrent() {
|
|
37
|
-
|
|
37
|
+
const stack = spanStorage.getStore() ?? [];
|
|
38
|
+
return stack[stack.length - 1];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the full span stack from the async context
|
|
42
|
+
*/
|
|
43
|
+
static getStack() {
|
|
44
|
+
return [...(spanStorage.getStore() ?? [])];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Push a span onto the stack for the current async context
|
|
48
|
+
*/
|
|
49
|
+
static enter(span) {
|
|
50
|
+
const stack = [...(spanStorage.getStore() ?? []), span];
|
|
51
|
+
spanStorage.enterWith(stack);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Pop the current span from the stack for the current async context
|
|
55
|
+
*/
|
|
56
|
+
static exit() {
|
|
57
|
+
const stack = [...(spanStorage.getStore() ?? [])];
|
|
58
|
+
stack.pop();
|
|
59
|
+
spanStorage.enterWith(stack);
|
|
38
60
|
}
|
|
39
61
|
/**
|
|
40
62
|
* Run a synchronous function with the given span as the current context
|
|
@@ -44,7 +66,14 @@ export class SpanContext {
|
|
|
44
66
|
* @returns The return value of the function
|
|
45
67
|
*/
|
|
46
68
|
static run(span, fn) {
|
|
47
|
-
|
|
69
|
+
const stack = spanStorage.getStore() ?? [];
|
|
70
|
+
const resource = new AsyncResource('SpanContext.run');
|
|
71
|
+
try {
|
|
72
|
+
return resource.runInAsyncScope(() => spanStorage.run([...stack, span], fn));
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
resource.emitDestroy();
|
|
76
|
+
}
|
|
48
77
|
}
|
|
49
78
|
/**
|
|
50
79
|
* Run an asynchronous function with the given span as the current context
|
|
@@ -54,7 +83,14 @@ export class SpanContext {
|
|
|
54
83
|
* @returns A promise resolving to the return value of the function
|
|
55
84
|
*/
|
|
56
85
|
static async runAsync(span, fn) {
|
|
57
|
-
|
|
86
|
+
const stack = spanStorage.getStore() ?? [];
|
|
87
|
+
const resource = new AsyncResource('SpanContext.runAsync');
|
|
88
|
+
try {
|
|
89
|
+
return await resource.runInAsyncScope(() => spanStorage.run([...stack, span], fn));
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
resource.emitDestroy();
|
|
93
|
+
}
|
|
58
94
|
}
|
|
59
95
|
/**
|
|
60
96
|
* Clear the current context (primarily for testing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tracing/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tracing/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,4GAA4G;AAC5G,MAAM,OAAO,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,UAAU;QACf,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAU;QACrB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxD,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI;QACT,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAI,IAAU,EAAE,EAAW;QACnC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAI,IAAU,EAAE,EAAoB;QACvD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,WAAW,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
|
package/dist/tracing/span.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Types of spans that can be traced
|
|
3
3
|
*/
|
|
4
|
-
export declare
|
|
5
|
-
AGENT
|
|
6
|
-
LLM
|
|
7
|
-
TOOL
|
|
8
|
-
CHAIN
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
export declare const SpanType: {
|
|
5
|
+
readonly AGENT: "agent";
|
|
6
|
+
readonly LLM: "llm";
|
|
7
|
+
readonly TOOL: "tool";
|
|
8
|
+
readonly CHAIN: "chain";
|
|
9
|
+
};
|
|
10
|
+
export type SpanType = (typeof SpanType)[keyof typeof SpanType] | string;
|
|
11
11
|
/**
|
|
12
12
|
* Status of a span
|
|
13
13
|
*/
|
|
@@ -62,7 +62,5 @@ export interface Span {
|
|
|
62
62
|
error: ErrorInfo | null;
|
|
63
63
|
/** Additional metadata about this span */
|
|
64
64
|
metadata: Record<string, unknown>;
|
|
65
|
-
/** Tags for categorizing and filtering spans */
|
|
66
|
-
tags: string[];
|
|
67
65
|
}
|
|
68
66
|
//# sourceMappingURL=span.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,GAAG,MAAM,CAAC;AAEzE;;GAEG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,iCAAiC;IACjC,MAAM,EAAE,UAAU,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExC,2DAA2D;IAC3D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAE9B,kEAAkE;IAClE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
package/dist/tracing/span.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Types of spans that can be traced
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
SpanType["RETRIEVER"] = "retriever";
|
|
11
|
-
})(SpanType || (SpanType = {}));
|
|
4
|
+
export const SpanType = {
|
|
5
|
+
AGENT: 'agent',
|
|
6
|
+
LLM: 'llm',
|
|
7
|
+
TOOL: 'tool',
|
|
8
|
+
CHAIN: 'chain',
|
|
9
|
+
};
|
|
12
10
|
/**
|
|
13
11
|
* Status of a span
|
|
14
12
|
*/
|
package/dist/tracing/span.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span.js","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"span.js","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAIX;;GAEG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACjB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB"}
|
package/dist/tracing/tracer.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Partition } from '@prefactor/pfid';
|
|
2
|
-
import type { Transport } from '../transport/
|
|
3
|
-
import type { Span,
|
|
2
|
+
import type { Transport } from '../transport/http.js';
|
|
3
|
+
import type { Span, TokenUsage } from './span.js';
|
|
4
|
+
import { SpanType } from './span.js';
|
|
4
5
|
/**
|
|
5
6
|
* Options for starting a new span
|
|
6
7
|
*/
|
|
@@ -11,14 +12,8 @@ export interface StartSpanOptions {
|
|
|
11
12
|
spanType: SpanType;
|
|
12
13
|
/** Input data for this operation */
|
|
13
14
|
inputs: Record<string, unknown>;
|
|
14
|
-
/** ID of the parent span (optional) */
|
|
15
|
-
parentSpanId?: string;
|
|
16
|
-
/** Trace ID to use (optional, will generate if not provided) */
|
|
17
|
-
traceId?: string;
|
|
18
15
|
/** Additional metadata (optional) */
|
|
19
16
|
metadata?: Record<string, unknown>;
|
|
20
|
-
/** Tags for categorizing the span (optional) */
|
|
21
|
-
tags?: string[];
|
|
22
17
|
}
|
|
23
18
|
/**
|
|
24
19
|
* Options for ending a span
|
|
@@ -82,19 +77,13 @@ export declare class Tracer {
|
|
|
82
77
|
* @param options - End span options (outputs, error, token usage)
|
|
83
78
|
*/
|
|
84
79
|
endSpan(span: Span, options?: EndSpanOptions): void;
|
|
85
|
-
/**
|
|
86
|
-
* Signal the start of an agent instance execution
|
|
87
|
-
*/
|
|
88
|
-
startAgentInstance(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Signal the completion of an agent instance execution
|
|
91
|
-
*/
|
|
92
|
-
finishAgentInstance(): void;
|
|
93
80
|
/**
|
|
94
81
|
* Close the tracer and flush any pending spans
|
|
95
82
|
*
|
|
96
83
|
* @returns Promise that resolves when the tracer is closed
|
|
97
84
|
*/
|
|
98
85
|
close(): Promise<void>;
|
|
86
|
+
startAgentInstance(): void;
|
|
87
|
+
finishAgentInstance(): void;
|
|
99
88
|
}
|
|
100
89
|
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAc,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,MAAM;IAUf,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,SAAS,CAAY;IAE7B;;;;;OAKG;gBAEO,SAAS,EAAE,SAAS,EAC5B,SAAS,CAAC,EAAE,SAAS;IAKvB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAkC1C;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IA8BnD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,kBAAkB,IAAI,IAAI;IAQ1B,mBAAmB,IAAI,IAAI;CAO5B"}
|
package/dist/tracing/tracer.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { generate, generatePartition } from '@prefactor/pfid';
|
|
2
|
-
import {
|
|
2
|
+
import { SpanContext } from './context.js';
|
|
3
|
+
import { SpanStatus, SpanType } from './span.js';
|
|
3
4
|
/**
|
|
4
5
|
* Tracer manages the lifecycle of spans.
|
|
5
6
|
*
|
|
@@ -47,11 +48,12 @@ export class Tracer {
|
|
|
47
48
|
* @returns The created span
|
|
48
49
|
*/
|
|
49
50
|
startSpan(options) {
|
|
51
|
+
const parentSpan = SpanContext.getCurrent();
|
|
50
52
|
const spanId = generate(this.partition);
|
|
51
|
-
const traceId =
|
|
53
|
+
const traceId = parentSpan?.traceId ?? generate(this.partition);
|
|
52
54
|
const span = {
|
|
53
55
|
spanId,
|
|
54
|
-
parentSpanId:
|
|
56
|
+
parentSpanId: parentSpan?.spanId ?? null,
|
|
55
57
|
traceId,
|
|
56
58
|
name: options.name,
|
|
57
59
|
spanType: options.spanType,
|
|
@@ -63,11 +65,10 @@ export class Tracer {
|
|
|
63
65
|
tokenUsage: null,
|
|
64
66
|
error: null,
|
|
65
67
|
metadata: options.metadata ?? {},
|
|
66
|
-
tags: options.tags ?? [],
|
|
67
68
|
};
|
|
68
69
|
// AGENT spans are emitted immediately for real-time tracking
|
|
69
70
|
// They will be finished later with finishSpan()
|
|
70
|
-
if (options.spanType ===
|
|
71
|
+
if (options.spanType === SpanType.AGENT) {
|
|
71
72
|
try {
|
|
72
73
|
this.transport.emit(span);
|
|
73
74
|
}
|
|
@@ -84,7 +85,8 @@ export class Tracer {
|
|
|
84
85
|
* @param options - End span options (outputs, error, token usage)
|
|
85
86
|
*/
|
|
86
87
|
endSpan(span, options) {
|
|
87
|
-
|
|
88
|
+
const endTime = Date.now();
|
|
89
|
+
span.endTime = endTime;
|
|
88
90
|
span.outputs = options?.outputs ?? null;
|
|
89
91
|
span.tokenUsage = options?.tokenUsage ?? null;
|
|
90
92
|
if (options?.error) {
|
|
@@ -101,20 +103,30 @@ export class Tracer {
|
|
|
101
103
|
try {
|
|
102
104
|
// AGENT spans use finishSpan API (they were already emitted on start)
|
|
103
105
|
// Other span types are emitted here
|
|
104
|
-
if (span.spanType ===
|
|
105
|
-
this.transport.finishSpan(span.spanId,
|
|
106
|
+
if (span.spanType === SpanType.AGENT) {
|
|
107
|
+
this.transport.finishSpan(span.spanId, endTime);
|
|
106
108
|
}
|
|
107
109
|
else {
|
|
108
110
|
this.transport.emit(span);
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
113
|
catch (error) {
|
|
112
|
-
console.error('Failed to emit
|
|
114
|
+
console.error('Failed to emit span action:', error);
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
/**
|
|
116
|
-
*
|
|
118
|
+
* Close the tracer and flush any pending spans
|
|
119
|
+
*
|
|
120
|
+
* @returns Promise that resolves when the tracer is closed
|
|
117
121
|
*/
|
|
122
|
+
async close() {
|
|
123
|
+
try {
|
|
124
|
+
await this.transport.close();
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error('Failed to close transport:', error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
118
130
|
startAgentInstance() {
|
|
119
131
|
try {
|
|
120
132
|
this.transport.startAgentInstance();
|
|
@@ -123,9 +135,6 @@ export class Tracer {
|
|
|
123
135
|
console.error('Failed to start agent instance:', error);
|
|
124
136
|
}
|
|
125
137
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Signal the completion of an agent instance execution
|
|
128
|
-
*/
|
|
129
138
|
finishAgentInstance() {
|
|
130
139
|
try {
|
|
131
140
|
this.transport.finishAgentInstance();
|
|
@@ -134,18 +143,5 @@ export class Tracer {
|
|
|
134
143
|
console.error('Failed to finish agent instance:', error);
|
|
135
144
|
}
|
|
136
145
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Close the tracer and flush any pending spans
|
|
139
|
-
*
|
|
140
|
-
* @returns Promise that resolves when the tracer is closed
|
|
141
|
-
*/
|
|
142
|
-
async close() {
|
|
143
|
-
try {
|
|
144
|
-
await this.transport.close();
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
console.error('Failed to close transport:', error);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
146
|
}
|
|
151
147
|
//# sourceMappingURL=tracer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HttpRequester } from './http-client.js';
|
|
2
|
+
export type AgentInstanceRegisterPayload = {
|
|
3
|
+
agent_id?: string;
|
|
4
|
+
agent_version?: {
|
|
5
|
+
external_identifier: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
};
|
|
9
|
+
agent_schema_version?: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
export type AgentInstanceResponse = {
|
|
12
|
+
details?: {
|
|
13
|
+
id?: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare class AgentInstanceClient {
|
|
17
|
+
private readonly httpClient;
|
|
18
|
+
constructor(httpClient: HttpRequester);
|
|
19
|
+
register(payload: AgentInstanceRegisterPayload): Promise<AgentInstanceResponse>;
|
|
20
|
+
start(agentInstanceId: string): Promise<void>;
|
|
21
|
+
finish(agentInstanceId: string): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=agent-instance-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-instance-client.d.ts","sourceRoot":"","sources":["../../../src/transport/http/agent-instance-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE;QACd,mBAAmB,EAAE,MAAM,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD,QAAQ,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOzE,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMrD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class AgentInstanceClient {
|
|
2
|
+
httpClient;
|
|
3
|
+
constructor(httpClient) {
|
|
4
|
+
this.httpClient = httpClient;
|
|
5
|
+
}
|
|
6
|
+
register(payload) {
|
|
7
|
+
return this.httpClient.request('/api/v1/agent_instance/register', {
|
|
8
|
+
method: 'POST',
|
|
9
|
+
body: payload,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async start(agentInstanceId) {
|
|
13
|
+
await this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/start`, {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
body: {},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async finish(agentInstanceId) {
|
|
19
|
+
await this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/finish`, {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
body: {},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=agent-instance-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-instance-client.js","sourceRoot":"","sources":["../../../src/transport/http/agent-instance-client.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAE1D,QAAQ,CAAC,OAAqC;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iCAAiC,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,eAAuB;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,eAAe,QAAQ,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,eAAuB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,eAAe,SAAS,EAAE;YAChF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type HttpRequester } from './http-client.js';
|
|
2
|
+
export type AgentSpanStatus = 'active' | 'complete' | 'failed';
|
|
3
|
+
export type AgentSpanCreatePayload = {
|
|
4
|
+
details: {
|
|
5
|
+
agent_instance_id: string | null;
|
|
6
|
+
schema_name: string;
|
|
7
|
+
status: AgentSpanStatus;
|
|
8
|
+
payload: Record<string, unknown>;
|
|
9
|
+
parent_span_id: string | null;
|
|
10
|
+
started_at: string;
|
|
11
|
+
finished_at: string | null;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export type AgentSpanResponse = {
|
|
15
|
+
details?: {
|
|
16
|
+
id?: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare class AgentSpanClient {
|
|
20
|
+
private readonly httpClient;
|
|
21
|
+
constructor(httpClient: HttpRequester);
|
|
22
|
+
create(payload: AgentSpanCreatePayload): Promise<AgentSpanResponse>;
|
|
23
|
+
finish(spanId: string, timestamp: string): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=agent-span-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-span-client.d.ts","sourceRoot":"","sources":["../../../src/transport/http/agent-span-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE;QACP,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO7D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB/D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { HttpClientError } from './http-client.js';
|
|
2
|
+
export class AgentSpanClient {
|
|
3
|
+
httpClient;
|
|
4
|
+
constructor(httpClient) {
|
|
5
|
+
this.httpClient = httpClient;
|
|
6
|
+
}
|
|
7
|
+
create(payload) {
|
|
8
|
+
return this.httpClient.request('/api/v1/agent_spans', {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
body: payload,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async finish(spanId, timestamp) {
|
|
14
|
+
try {
|
|
15
|
+
await this.httpClient.request(`/api/v1/agent_spans/${spanId}/finish`, {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
body: { timestamp },
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
if (error instanceof HttpClientError &&
|
|
22
|
+
error.status === 409 &&
|
|
23
|
+
isAlreadyFinishedError(error.responseBody)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function isAlreadyFinishedError(responseBody) {
|
|
31
|
+
if (!responseBody || typeof responseBody !== 'object') {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const payload = responseBody;
|
|
35
|
+
return payload.code === 'invalid_action';
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=agent-span-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-span-client.js","sourceRoot":"","sources":["../../../src/transport/http/agent-span-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AAsBvE,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAE1D,MAAM,CAAC,OAA+B;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,SAAiB;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,MAAM,SAAS,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,eAAe;gBAChC,KAAK,CAAC,MAAM,KAAK,GAAG;gBACpB,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,EAC1C,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,SAAS,sBAAsB,CAAC,YAAqB;IACnD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,YAAuC,CAAC;IACxD,OAAO,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HttpTransportConfig } from '../../config.js';
|
|
2
|
+
export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
3
|
+
export type HttpClientDependencies = {
|
|
4
|
+
fetchFn?: FetchLike;
|
|
5
|
+
sleep?: (delayMs: number) => Promise<void>;
|
|
6
|
+
random?: () => number;
|
|
7
|
+
};
|
|
8
|
+
export type HttpRequestOptions = Omit<RequestInit, 'body' | 'headers' | 'signal'> & {
|
|
9
|
+
body?: unknown;
|
|
10
|
+
headers?: RequestInit['headers'];
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
};
|
|
13
|
+
export interface HttpRequester {
|
|
14
|
+
request<TResponse = unknown>(path: string, options?: HttpRequestOptions): Promise<TResponse>;
|
|
15
|
+
}
|
|
16
|
+
type HttpClientErrorOptions = {
|
|
17
|
+
url: string;
|
|
18
|
+
method: string;
|
|
19
|
+
status?: number;
|
|
20
|
+
statusText?: string;
|
|
21
|
+
responseBody?: unknown;
|
|
22
|
+
retryable: boolean;
|
|
23
|
+
cause?: unknown;
|
|
24
|
+
};
|
|
25
|
+
export declare class HttpClientError extends Error {
|
|
26
|
+
readonly url: string;
|
|
27
|
+
readonly method: string;
|
|
28
|
+
readonly status?: number;
|
|
29
|
+
readonly statusText?: string;
|
|
30
|
+
readonly responseBody?: unknown;
|
|
31
|
+
readonly retryable: boolean;
|
|
32
|
+
constructor(message: string, options: HttpClientErrorOptions);
|
|
33
|
+
}
|
|
34
|
+
export declare class HttpClient {
|
|
35
|
+
private readonly config;
|
|
36
|
+
private readonly fetchFn;
|
|
37
|
+
private readonly sleep;
|
|
38
|
+
private readonly random;
|
|
39
|
+
constructor(config: HttpTransportConfig, dependencies?: HttpClientDependencies);
|
|
40
|
+
request<TResponse = unknown>(path: string, options?: HttpRequestOptions): Promise<TResponse>;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/transport/http/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjG,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,SAAS,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9F;AAED,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;CAU7D;AAED,qBAAa,UAAU;IAMnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAGnB,MAAM,EAAE,mBAAmB,EAC5C,YAAY,GAAE,sBAA2B;IAQrC,OAAO,CAAC,SAAS,GAAG,OAAO,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;CAoEtB"}
|