@mnemom/aip-otel-exporter 0.1.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 +172 -0
- package/dashboards/README.md +92 -0
- package/dashboards/datadog-aip-overview.json +311 -0
- package/dashboards/grafana-aip-detail.json +403 -0
- package/dashboards/grafana-aip-overview.json +431 -0
- package/dist/attributes.d.ts +70 -0
- package/dist/attributes.d.ts.map +1 -0
- package/dist/attributes.js +81 -0
- package/dist/attributes.js.map +1 -0
- package/dist/auto/aap-instrumentation.d.ts +23 -0
- package/dist/auto/aap-instrumentation.d.ts.map +1 -0
- package/dist/auto/aap-instrumentation.js +112 -0
- package/dist/auto/aap-instrumentation.js.map +1 -0
- package/dist/auto/aip-instrumentation.d.ts +22 -0
- package/dist/auto/aip-instrumentation.d.ts.map +1 -0
- package/dist/auto/aip-instrumentation.js +87 -0
- package/dist/auto/aip-instrumentation.js.map +1 -0
- package/dist/auto/index.d.ts +20 -0
- package/dist/auto/index.d.ts.map +1 -0
- package/dist/auto/index.js +22 -0
- package/dist/auto/index.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/manual/record-coherence.d.ts +12 -0
- package/dist/manual/record-coherence.d.ts.map +1 -0
- package/dist/manual/record-coherence.js +21 -0
- package/dist/manual/record-coherence.js.map +1 -0
- package/dist/manual/record-drift.d.ts +14 -0
- package/dist/manual/record-drift.d.ts.map +1 -0
- package/dist/manual/record-drift.js +48 -0
- package/dist/manual/record-drift.js.map +1 -0
- package/dist/manual/record-integrity-check.d.ts +19 -0
- package/dist/manual/record-integrity-check.d.ts.map +1 -0
- package/dist/manual/record-integrity-check.js +92 -0
- package/dist/manual/record-integrity-check.js.map +1 -0
- package/dist/manual/record-verification.d.ts +14 -0
- package/dist/manual/record-verification.d.ts.map +1 -0
- package/dist/manual/record-verification.js +40 -0
- package/dist/manual/record-verification.js.map +1 -0
- package/dist/manual/span-builder.d.ts +28 -0
- package/dist/manual/span-builder.d.ts.map +1 -0
- package/dist/manual/span-builder.js +42 -0
- package/dist/manual/span-builder.js.map +1 -0
- package/dist/metrics/integrity-metrics.d.ts +44 -0
- package/dist/metrics/integrity-metrics.d.ts.map +1 -0
- package/dist/metrics/integrity-metrics.js +128 -0
- package/dist/metrics/integrity-metrics.js.map +1 -0
- package/dist/types.d.ts +205 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/workers/index.d.ts +8 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +7 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/otlp-serializer.d.ts +90 -0
- package/dist/workers/otlp-serializer.d.ts.map +1 -0
- package/dist/workers/otlp-serializer.js +133 -0
- package/dist/workers/otlp-serializer.js.map +1 -0
- package/dist/workers/workers-exporter.d.ts +26 -0
- package/dist/workers/workers-exporter.d.ts.map +1 -0
- package/dist/workers/workers-exporter.js +228 -0
- package/dist/workers/workers-exporter.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTLP JSON serialization utilities for Cloudflare Workers.
|
|
3
|
+
*
|
|
4
|
+
* Builds OTLP-compatible JSON payloads directly without any dependency on the
|
|
5
|
+
* OpenTelemetry SDK. Uses only `crypto.getRandomValues` (available in CF
|
|
6
|
+
* Workers) for ID generation and `Date.now()` for timestamps.
|
|
7
|
+
*/
|
|
8
|
+
export type OTLPAttributeValue = {
|
|
9
|
+
stringValue: string;
|
|
10
|
+
} | {
|
|
11
|
+
intValue: string;
|
|
12
|
+
} | {
|
|
13
|
+
doubleValue: number;
|
|
14
|
+
} | {
|
|
15
|
+
boolValue: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
arrayValue: {
|
|
18
|
+
values: OTLPAttributeValue[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export interface OTLPAttribute {
|
|
22
|
+
key: string;
|
|
23
|
+
value: OTLPAttributeValue;
|
|
24
|
+
}
|
|
25
|
+
export interface OTLPEvent {
|
|
26
|
+
name: string;
|
|
27
|
+
timeUnixNano: string;
|
|
28
|
+
attributes: OTLPAttribute[];
|
|
29
|
+
}
|
|
30
|
+
export interface OTLPSpan {
|
|
31
|
+
traceId: string;
|
|
32
|
+
spanId: string;
|
|
33
|
+
parentSpanId?: string;
|
|
34
|
+
name: string;
|
|
35
|
+
kind: number;
|
|
36
|
+
startTimeUnixNano: string;
|
|
37
|
+
endTimeUnixNano: string;
|
|
38
|
+
attributes: OTLPAttribute[];
|
|
39
|
+
events: OTLPEvent[];
|
|
40
|
+
status: {
|
|
41
|
+
code: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface OTLPExportPayload {
|
|
45
|
+
resourceSpans: [
|
|
46
|
+
{
|
|
47
|
+
resource: {
|
|
48
|
+
attributes: OTLPAttribute[];
|
|
49
|
+
};
|
|
50
|
+
scopeSpans: [
|
|
51
|
+
{
|
|
52
|
+
scope: {
|
|
53
|
+
name: string;
|
|
54
|
+
version: string;
|
|
55
|
+
};
|
|
56
|
+
spans: OTLPSpan[];
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
/** Generate a 32-character hex trace ID. */
|
|
63
|
+
export declare function generateTraceId(): string;
|
|
64
|
+
/** Generate a 16-character hex span ID. */
|
|
65
|
+
export declare function generateSpanId(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Convert a single JS value to the OTLP attribute wire format.
|
|
68
|
+
* Returns `null` for undefined / null values so callers can filter them out.
|
|
69
|
+
*/
|
|
70
|
+
export declare function toOTLPAttribute(key: string, value: unknown): OTLPAttribute | null;
|
|
71
|
+
/**
|
|
72
|
+
* Batch-convert a record of key/value pairs to OTLP attributes,
|
|
73
|
+
* filtering out any whose value is undefined or null.
|
|
74
|
+
*/
|
|
75
|
+
export declare function toOTLPAttributes(attrs: Record<string, unknown>): OTLPAttribute[];
|
|
76
|
+
/**
|
|
77
|
+
* Create a fully populated OTLPSpan with generated IDs and the current timestamp.
|
|
78
|
+
*
|
|
79
|
+
* The span kind is always 1 (INTERNAL) and the status code is 1 (OK).
|
|
80
|
+
*/
|
|
81
|
+
export declare function createOTLPSpan(name: string, attributes: Record<string, unknown>, events?: Array<{
|
|
82
|
+
name: string;
|
|
83
|
+
attributes: Record<string, unknown>;
|
|
84
|
+
}>): OTLPSpan;
|
|
85
|
+
/**
|
|
86
|
+
* Wrap an array of OTLPSpan objects in the full OTLP ResourceSpans envelope
|
|
87
|
+
* and return the JSON string ready to POST.
|
|
88
|
+
*/
|
|
89
|
+
export declare function serializeExportPayload(spans: OTLPSpan[], serviceName: string): string;
|
|
90
|
+
//# sourceMappingURL=otlp-serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otlp-serializer.d.ts","sourceRoot":"","sources":["../../src/workers/otlp-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GACtB;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE;QACb;YACE,QAAQ,EAAE;gBAAE,UAAU,EAAE,aAAa,EAAE,CAAA;aAAE,CAAC;YAC1C,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE;wBAAE,IAAI,EAAE,MAAM,CAAC;wBAAC,OAAO,EAAE,MAAM,CAAA;qBAAE,CAAC;oBACzC,KAAK,EAAE,QAAQ,EAAE,CAAC;iBACnB;aACF,CAAC;SACH;KACF,CAAC;CACH;AAcD,4CAA4C;AAC5C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,aAAa,GAAG,IAAI,CA0BtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,aAAa,EAAE,CAOjB;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACpE,QAAQ,CAyBV;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,CAqBR"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTLP JSON serialization utilities for Cloudflare Workers.
|
|
3
|
+
*
|
|
4
|
+
* Builds OTLP-compatible JSON payloads directly without any dependency on the
|
|
5
|
+
* OpenTelemetry SDK. Uses only `crypto.getRandomValues` (available in CF
|
|
6
|
+
* Workers) for ID generation and `Date.now()` for timestamps.
|
|
7
|
+
*/
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// ID generation (CF Workers-compatible)
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
function hexFromBytes(bytes) {
|
|
12
|
+
let hex = "";
|
|
13
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
14
|
+
hex += bytes[i].toString(16).padStart(2, "0");
|
|
15
|
+
}
|
|
16
|
+
return hex;
|
|
17
|
+
}
|
|
18
|
+
/** Generate a 32-character hex trace ID. */
|
|
19
|
+
export function generateTraceId() {
|
|
20
|
+
return hexFromBytes(crypto.getRandomValues(new Uint8Array(16)));
|
|
21
|
+
}
|
|
22
|
+
/** Generate a 16-character hex span ID. */
|
|
23
|
+
export function generateSpanId() {
|
|
24
|
+
return hexFromBytes(crypto.getRandomValues(new Uint8Array(8)));
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Attribute conversion
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
/**
|
|
30
|
+
* Convert a single JS value to the OTLP attribute wire format.
|
|
31
|
+
* Returns `null` for undefined / null values so callers can filter them out.
|
|
32
|
+
*/
|
|
33
|
+
export function toOTLPAttribute(key, value) {
|
|
34
|
+
if (value === undefined || value === null)
|
|
35
|
+
return null;
|
|
36
|
+
if (typeof value === "string") {
|
|
37
|
+
return { key, value: { stringValue: value } };
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === "boolean") {
|
|
40
|
+
return { key, value: { boolValue: value } };
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === "number") {
|
|
43
|
+
if (Number.isInteger(value)) {
|
|
44
|
+
return { key, value: { intValue: String(value) } };
|
|
45
|
+
}
|
|
46
|
+
return { key, value: { doubleValue: value } };
|
|
47
|
+
}
|
|
48
|
+
if (Array.isArray(value)) {
|
|
49
|
+
const values = [];
|
|
50
|
+
for (const item of value) {
|
|
51
|
+
const attr = toOTLPAttribute("", item);
|
|
52
|
+
if (attr)
|
|
53
|
+
values.push(attr.value);
|
|
54
|
+
}
|
|
55
|
+
return { key, value: { arrayValue: { values } } };
|
|
56
|
+
}
|
|
57
|
+
// Fallback: coerce to string
|
|
58
|
+
return { key, value: { stringValue: String(value) } };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Batch-convert a record of key/value pairs to OTLP attributes,
|
|
62
|
+
* filtering out any whose value is undefined or null.
|
|
63
|
+
*/
|
|
64
|
+
export function toOTLPAttributes(attrs) {
|
|
65
|
+
const result = [];
|
|
66
|
+
for (const [key, value] of Object.entries(attrs)) {
|
|
67
|
+
const attr = toOTLPAttribute(key, value);
|
|
68
|
+
if (attr)
|
|
69
|
+
result.push(attr);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Span construction
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Create a fully populated OTLPSpan with generated IDs and the current timestamp.
|
|
78
|
+
*
|
|
79
|
+
* The span kind is always 1 (INTERNAL) and the status code is 1 (OK).
|
|
80
|
+
*/
|
|
81
|
+
export function createOTLPSpan(name, attributes, events) {
|
|
82
|
+
const now = String(Date.now() * 1_000_000);
|
|
83
|
+
const otlpEvents = [];
|
|
84
|
+
if (events) {
|
|
85
|
+
for (const event of events) {
|
|
86
|
+
otlpEvents.push({
|
|
87
|
+
name: event.name,
|
|
88
|
+
timeUnixNano: now,
|
|
89
|
+
attributes: toOTLPAttributes(event.attributes),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
traceId: generateTraceId(),
|
|
95
|
+
spanId: generateSpanId(),
|
|
96
|
+
name,
|
|
97
|
+
kind: 1, // INTERNAL
|
|
98
|
+
startTimeUnixNano: now,
|
|
99
|
+
endTimeUnixNano: now,
|
|
100
|
+
attributes: toOTLPAttributes(attributes),
|
|
101
|
+
events: otlpEvents,
|
|
102
|
+
status: { code: 1 }, // OK
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Export payload serialization
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/**
|
|
109
|
+
* Wrap an array of OTLPSpan objects in the full OTLP ResourceSpans envelope
|
|
110
|
+
* and return the JSON string ready to POST.
|
|
111
|
+
*/
|
|
112
|
+
export function serializeExportPayload(spans, serviceName) {
|
|
113
|
+
const payload = {
|
|
114
|
+
resourceSpans: [
|
|
115
|
+
{
|
|
116
|
+
resource: {
|
|
117
|
+
attributes: toOTLPAttributes({ "service.name": serviceName }),
|
|
118
|
+
},
|
|
119
|
+
scopeSpans: [
|
|
120
|
+
{
|
|
121
|
+
scope: {
|
|
122
|
+
name: "@mnemom/aip-otel-exporter",
|
|
123
|
+
version: "0.1.0",
|
|
124
|
+
},
|
|
125
|
+
spans,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
return JSON.stringify(payload);
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=otlp-serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otlp-serializer.js","sourceRoot":"","sources":["../../src/workers/otlp-serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers OTLP exporter for AIP/AAP telemetry.
|
|
3
|
+
*
|
|
4
|
+
* Implements the `WorkersOTelExporter` interface from types.ts using only
|
|
5
|
+
* `fetch()` and the OTLP JSON serializer -- zero dependency on the OTel SDK.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createWorkersExporter } from "@mnemom/aip-otel-exporter/workers";
|
|
10
|
+
*
|
|
11
|
+
* const exporter = createWorkersExporter({
|
|
12
|
+
* endpoint: "https://otel-collector.example.com/v1/traces",
|
|
13
|
+
* authorization: "Bearer <token>",
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* exporter.recordIntegrityCheck(signal);
|
|
17
|
+
* ctx.waitUntil(exporter.flush());
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { WorkersExporterConfig, WorkersOTelExporter } from "../types.js";
|
|
21
|
+
/**
|
|
22
|
+
* Create a CF Workers-compatible OTLP exporter that buffers spans in memory
|
|
23
|
+
* and flushes them via `fetch()`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createWorkersExporter(config: WorkersExporterConfig): WorkersOTelExporter;
|
|
26
|
+
//# sourceMappingURL=workers-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers-exporter.d.ts","sourceRoot":"","sources":["../../src/workers/workers-exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EAKpB,MAAM,aAAa,CAAC;AAwErB;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,CAiOrB"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers OTLP exporter for AIP/AAP telemetry.
|
|
3
|
+
*
|
|
4
|
+
* Implements the `WorkersOTelExporter` interface from types.ts using only
|
|
5
|
+
* `fetch()` and the OTLP JSON serializer -- zero dependency on the OTel SDK.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createWorkersExporter } from "@mnemom/aip-otel-exporter/workers";
|
|
10
|
+
*
|
|
11
|
+
* const exporter = createWorkersExporter({
|
|
12
|
+
* endpoint: "https://otel-collector.example.com/v1/traces",
|
|
13
|
+
* authorization: "Bearer <token>",
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* exporter.recordIntegrityCheck(signal);
|
|
17
|
+
* ctx.waitUntil(exporter.flush());
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import {
|
|
21
|
+
// Span & event names
|
|
22
|
+
SPAN_AIP_INTEGRITY_CHECK, SPAN_AAP_VERIFY_TRACE, SPAN_AAP_CHECK_COHERENCE, SPAN_AAP_DETECT_DRIFT, EVENT_AIP_CONCERN, EVENT_AIP_DRIFT_ALERT, EVENT_AAP_VIOLATION, EVENT_AAP_DRIFT_ALERT,
|
|
23
|
+
// AIP Integrity Check attributes
|
|
24
|
+
AIP_INTEGRITY_CHECKPOINT_ID, AIP_INTEGRITY_VERDICT, AIP_INTEGRITY_AGENT_ID, AIP_INTEGRITY_CARD_ID, AIP_INTEGRITY_SESSION_ID, AIP_INTEGRITY_THINKING_HASH, AIP_INTEGRITY_PROCEED, AIP_INTEGRITY_RECOMMENDED_ACTION, AIP_INTEGRITY_CONCERNS_COUNT, AIP_INTEGRITY_ANALYSIS_MODEL, AIP_INTEGRITY_ANALYSIS_DURATION_MS, AIP_INTEGRITY_THINKING_TOKENS, AIP_INTEGRITY_TRUNCATED, AIP_INTEGRITY_EXTRACTION_CONFIDENCE,
|
|
25
|
+
// Conscience context attributes
|
|
26
|
+
AIP_CONSCIENCE_CONSULTATION_DEPTH, AIP_CONSCIENCE_VALUES_CHECKED_COUNT, AIP_CONSCIENCE_CONFLICTS_COUNT,
|
|
27
|
+
// Window summary attributes
|
|
28
|
+
AIP_WINDOW_SIZE, AIP_WINDOW_INTEGRITY_RATIO, AIP_WINDOW_DRIFT_ALERT_ACTIVE,
|
|
29
|
+
// GenAI SIG forward-compat aliases
|
|
30
|
+
GEN_AI_EVALUATION_VERDICT, GEN_AI_EVALUATION_SCORE,
|
|
31
|
+
// AAP Verification attributes
|
|
32
|
+
AAP_VERIFICATION_RESULT, AAP_VERIFICATION_SIMILARITY_SCORE, AAP_VERIFICATION_VIOLATIONS_COUNT, AAP_VERIFICATION_WARNINGS_COUNT, AAP_VERIFICATION_TRACE_ID, AAP_VERIFICATION_CARD_ID, AAP_VERIFICATION_DURATION_MS, AAP_VERIFICATION_CHECKS_PERFORMED,
|
|
33
|
+
// AAP Coherence attributes
|
|
34
|
+
AAP_COHERENCE_COMPATIBLE, AAP_COHERENCE_SCORE, AAP_COHERENCE_PROCEED, AAP_COHERENCE_MATCHED_COUNT, AAP_COHERENCE_CONFLICT_COUNT,
|
|
35
|
+
// AAP Drift attributes
|
|
36
|
+
AAP_DRIFT_ALERTS_COUNT, AAP_DRIFT_TRACES_ANALYZED, } from "../attributes.js";
|
|
37
|
+
import { createOTLPSpan, serializeExportPayload } from "./otlp-serializer.js";
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Factory
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Create a CF Workers-compatible OTLP exporter that buffers spans in memory
|
|
43
|
+
* and flushes them via `fetch()`.
|
|
44
|
+
*/
|
|
45
|
+
export function createWorkersExporter(config) {
|
|
46
|
+
const serviceName = config.serviceName ?? "aip-otel-exporter";
|
|
47
|
+
const maxBatchSize = config.maxBatchSize ?? 100;
|
|
48
|
+
let buffer = [];
|
|
49
|
+
// -------------------------------------------------------------------
|
|
50
|
+
// Internal helpers
|
|
51
|
+
// -------------------------------------------------------------------
|
|
52
|
+
function pushSpan(span) {
|
|
53
|
+
buffer.push(span);
|
|
54
|
+
if (buffer.length >= maxBatchSize) {
|
|
55
|
+
// Fire-and-forget auto-flush; callers should still use ctx.waitUntil(flush())
|
|
56
|
+
void flush();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// -------------------------------------------------------------------
|
|
60
|
+
// flush()
|
|
61
|
+
// -------------------------------------------------------------------
|
|
62
|
+
async function flush() {
|
|
63
|
+
if (buffer.length === 0)
|
|
64
|
+
return;
|
|
65
|
+
const spans = buffer;
|
|
66
|
+
buffer = [];
|
|
67
|
+
const body = serializeExportPayload(spans, serviceName);
|
|
68
|
+
const headers = {
|
|
69
|
+
"Content-Type": "application/json",
|
|
70
|
+
...config.headers,
|
|
71
|
+
};
|
|
72
|
+
if (config.authorization) {
|
|
73
|
+
headers["Authorization"] = config.authorization;
|
|
74
|
+
}
|
|
75
|
+
await fetch(config.endpoint, {
|
|
76
|
+
method: "POST",
|
|
77
|
+
headers,
|
|
78
|
+
body,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// -------------------------------------------------------------------
|
|
82
|
+
// recordIntegrityCheck
|
|
83
|
+
// -------------------------------------------------------------------
|
|
84
|
+
function recordIntegrityCheck(signal) {
|
|
85
|
+
const cp = signal?.checkpoint;
|
|
86
|
+
const meta = cp?.analysis_metadata;
|
|
87
|
+
const conscience = cp?.conscience_context;
|
|
88
|
+
const win = signal?.window_summary;
|
|
89
|
+
const attributes = {
|
|
90
|
+
// Checkpoint
|
|
91
|
+
[AIP_INTEGRITY_CHECKPOINT_ID]: cp?.checkpoint_id,
|
|
92
|
+
[AIP_INTEGRITY_VERDICT]: cp?.verdict,
|
|
93
|
+
[AIP_INTEGRITY_AGENT_ID]: cp?.agent_id,
|
|
94
|
+
[AIP_INTEGRITY_CARD_ID]: cp?.card_id,
|
|
95
|
+
[AIP_INTEGRITY_SESSION_ID]: cp?.session_id,
|
|
96
|
+
[AIP_INTEGRITY_THINKING_HASH]: cp?.thinking_block_hash,
|
|
97
|
+
// Signal
|
|
98
|
+
[AIP_INTEGRITY_PROCEED]: signal?.proceed,
|
|
99
|
+
[AIP_INTEGRITY_RECOMMENDED_ACTION]: signal?.recommended_action,
|
|
100
|
+
[AIP_INTEGRITY_CONCERNS_COUNT]: cp?.concerns?.length,
|
|
101
|
+
// Analysis metadata
|
|
102
|
+
[AIP_INTEGRITY_ANALYSIS_MODEL]: meta?.analysis_model,
|
|
103
|
+
[AIP_INTEGRITY_ANALYSIS_DURATION_MS]: meta?.analysis_duration_ms,
|
|
104
|
+
[AIP_INTEGRITY_THINKING_TOKENS]: meta?.thinking_tokens_original,
|
|
105
|
+
[AIP_INTEGRITY_TRUNCATED]: meta?.truncated,
|
|
106
|
+
[AIP_INTEGRITY_EXTRACTION_CONFIDENCE]: meta?.extraction_confidence,
|
|
107
|
+
// Conscience context
|
|
108
|
+
[AIP_CONSCIENCE_CONSULTATION_DEPTH]: conscience?.consultation_depth,
|
|
109
|
+
[AIP_CONSCIENCE_VALUES_CHECKED_COUNT]: conscience?.values_checked?.length,
|
|
110
|
+
[AIP_CONSCIENCE_CONFLICTS_COUNT]: conscience?.conflicts?.length,
|
|
111
|
+
// Window summary
|
|
112
|
+
[AIP_WINDOW_SIZE]: win?.size,
|
|
113
|
+
[AIP_WINDOW_INTEGRITY_RATIO]: win?.integrity_ratio,
|
|
114
|
+
[AIP_WINDOW_DRIFT_ALERT_ACTIVE]: win?.drift_alert_active,
|
|
115
|
+
// GenAI SIG forward-compat aliases
|
|
116
|
+
[GEN_AI_EVALUATION_VERDICT]: cp?.verdict,
|
|
117
|
+
[GEN_AI_EVALUATION_SCORE]: win?.integrity_ratio,
|
|
118
|
+
};
|
|
119
|
+
const events = [];
|
|
120
|
+
// One event per concern
|
|
121
|
+
if (cp?.concerns) {
|
|
122
|
+
for (const concern of cp.concerns) {
|
|
123
|
+
events.push({
|
|
124
|
+
name: EVENT_AIP_CONCERN,
|
|
125
|
+
attributes: {
|
|
126
|
+
category: concern.category,
|
|
127
|
+
severity: concern.severity,
|
|
128
|
+
description: concern.description,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Drift alert event when drift is active
|
|
134
|
+
if (win?.drift_alert_active) {
|
|
135
|
+
events.push({
|
|
136
|
+
name: EVENT_AIP_DRIFT_ALERT,
|
|
137
|
+
attributes: {},
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
pushSpan(createOTLPSpan(SPAN_AIP_INTEGRITY_CHECK, attributes, events));
|
|
141
|
+
}
|
|
142
|
+
// -------------------------------------------------------------------
|
|
143
|
+
// recordVerification
|
|
144
|
+
// -------------------------------------------------------------------
|
|
145
|
+
function recordVerification(result) {
|
|
146
|
+
const meta = result?.verification_metadata;
|
|
147
|
+
const attributes = {
|
|
148
|
+
[AAP_VERIFICATION_RESULT]: result?.verified,
|
|
149
|
+
[AAP_VERIFICATION_SIMILARITY_SCORE]: result?.similarity_score,
|
|
150
|
+
[AAP_VERIFICATION_VIOLATIONS_COUNT]: result?.violations?.length,
|
|
151
|
+
[AAP_VERIFICATION_WARNINGS_COUNT]: result?.warnings?.length,
|
|
152
|
+
[AAP_VERIFICATION_TRACE_ID]: result?.trace_id,
|
|
153
|
+
[AAP_VERIFICATION_CARD_ID]: result?.card_id,
|
|
154
|
+
[AAP_VERIFICATION_DURATION_MS]: meta?.duration_ms,
|
|
155
|
+
[AAP_VERIFICATION_CHECKS_PERFORMED]: meta?.checks_performed?.join(", "),
|
|
156
|
+
};
|
|
157
|
+
const events = [];
|
|
158
|
+
if (result?.violations) {
|
|
159
|
+
for (const violation of result.violations) {
|
|
160
|
+
events.push({
|
|
161
|
+
name: EVENT_AAP_VIOLATION,
|
|
162
|
+
attributes: {
|
|
163
|
+
type: violation.type,
|
|
164
|
+
severity: violation.severity,
|
|
165
|
+
description: violation.description,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
pushSpan(createOTLPSpan(SPAN_AAP_VERIFY_TRACE, attributes, events));
|
|
171
|
+
}
|
|
172
|
+
// -------------------------------------------------------------------
|
|
173
|
+
// recordCoherence
|
|
174
|
+
// -------------------------------------------------------------------
|
|
175
|
+
function recordCoherence(result) {
|
|
176
|
+
const attributes = {
|
|
177
|
+
[AAP_COHERENCE_COMPATIBLE]: result?.compatible,
|
|
178
|
+
[AAP_COHERENCE_SCORE]: result?.score,
|
|
179
|
+
[AAP_COHERENCE_PROCEED]: result?.proceed,
|
|
180
|
+
[AAP_COHERENCE_MATCHED_COUNT]: result?.value_alignment?.matched?.length,
|
|
181
|
+
[AAP_COHERENCE_CONFLICT_COUNT]: result?.value_alignment?.conflicts?.length,
|
|
182
|
+
};
|
|
183
|
+
pushSpan(createOTLPSpan(SPAN_AAP_CHECK_COHERENCE, attributes));
|
|
184
|
+
}
|
|
185
|
+
// -------------------------------------------------------------------
|
|
186
|
+
// recordDrift
|
|
187
|
+
// -------------------------------------------------------------------
|
|
188
|
+
function recordDrift(alerts, tracesAnalyzed) {
|
|
189
|
+
const attributes = {
|
|
190
|
+
[AAP_DRIFT_ALERTS_COUNT]: alerts?.length,
|
|
191
|
+
[AAP_DRIFT_TRACES_ANALYZED]: tracesAnalyzed,
|
|
192
|
+
};
|
|
193
|
+
const events = [];
|
|
194
|
+
if (alerts) {
|
|
195
|
+
for (const alert of alerts) {
|
|
196
|
+
const eventAttrs = {};
|
|
197
|
+
if (alert?.alert_type != null)
|
|
198
|
+
eventAttrs.alert_type = alert.alert_type;
|
|
199
|
+
if (alert?.agent_id != null)
|
|
200
|
+
eventAttrs.agent_id = alert.agent_id;
|
|
201
|
+
if (alert?.card_id != null)
|
|
202
|
+
eventAttrs.card_id = alert.card_id;
|
|
203
|
+
if (alert?.analysis?.similarity_score != null)
|
|
204
|
+
eventAttrs.similarity_score = alert.analysis.similarity_score;
|
|
205
|
+
if (alert?.analysis?.drift_direction != null)
|
|
206
|
+
eventAttrs.drift_direction = alert.analysis.drift_direction;
|
|
207
|
+
if (alert?.recommendation != null)
|
|
208
|
+
eventAttrs.recommendation = alert.recommendation;
|
|
209
|
+
events.push({
|
|
210
|
+
name: EVENT_AAP_DRIFT_ALERT,
|
|
211
|
+
attributes: eventAttrs,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
pushSpan(createOTLPSpan(SPAN_AAP_DETECT_DRIFT, attributes, events));
|
|
216
|
+
}
|
|
217
|
+
// -------------------------------------------------------------------
|
|
218
|
+
// Public interface
|
|
219
|
+
// -------------------------------------------------------------------
|
|
220
|
+
return {
|
|
221
|
+
recordIntegrityCheck,
|
|
222
|
+
recordVerification,
|
|
223
|
+
recordCoherence,
|
|
224
|
+
recordDrift,
|
|
225
|
+
flush,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=workers-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers-exporter.js","sourceRoot":"","sources":["../../src/workers/workers-exporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mnemom/aip-otel-exporter",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OpenTelemetry exporter for AIP integrity checkpoints and AAP verification results",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./auto": {
|
|
14
|
+
"import": "./dist/auto/index.js",
|
|
15
|
+
"types": "./dist/auto/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./workers": {
|
|
18
|
+
"import": "./dist/workers/index.js",
|
|
19
|
+
"types": "./dist/workers/index.d.ts"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"dashboards",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"bench": "vitest bench",
|
|
33
|
+
"lint": "tsc --noEmit",
|
|
34
|
+
"prepublishOnly": "npm run build"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18.0.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"@opentelemetry/api": ">=1.4.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"@opentelemetry/api": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@opentelemetry/api": "^1.9.0",
|
|
49
|
+
"@opentelemetry/context-async-hooks": "^2.5.1",
|
|
50
|
+
"@opentelemetry/resources": "^1.30.0",
|
|
51
|
+
"@opentelemetry/sdk-metrics": "^1.30.0",
|
|
52
|
+
"@opentelemetry/sdk-trace-base": "^1.30.0",
|
|
53
|
+
"@types/node": "^25.2.3",
|
|
54
|
+
"typescript": "^5.7.0",
|
|
55
|
+
"vitest": "^3.0.0"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"opentelemetry",
|
|
59
|
+
"otel",
|
|
60
|
+
"aip",
|
|
61
|
+
"aap",
|
|
62
|
+
"integrity",
|
|
63
|
+
"alignment",
|
|
64
|
+
"observability",
|
|
65
|
+
"langfuse",
|
|
66
|
+
"arize",
|
|
67
|
+
"datadog"
|
|
68
|
+
],
|
|
69
|
+
"author": "Mnemom.ai",
|
|
70
|
+
"license": "Apache-2.0",
|
|
71
|
+
"homepage": "https://github.com/mnemom/aip-otel-exporter#readme",
|
|
72
|
+
"bugs": {
|
|
73
|
+
"url": "https://github.com/mnemom/aip-otel-exporter/issues"
|
|
74
|
+
},
|
|
75
|
+
"publishConfig": {
|
|
76
|
+
"access": "public"
|
|
77
|
+
},
|
|
78
|
+
"repository": {
|
|
79
|
+
"type": "git",
|
|
80
|
+
"url": "https://github.com/mnemom/aip-otel-exporter.git",
|
|
81
|
+
"directory": "packages/typescript"
|
|
82
|
+
}
|
|
83
|
+
}
|