@traceroot-ai/traceroot 0.1.5 → 0.1.7
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/attributes.d.ts +14 -0
- package/dist/attributes.d.ts.map +1 -0
- package/dist/attributes.js +110 -0
- package/dist/attributes.js.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +8 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +15 -34
- package/dist/context.js.map +1 -1
- package/dist/git_context.d.ts +19 -0
- package/dist/git_context.d.ts.map +1 -1
- package/dist/git_context.js +97 -1
- package/dist/git_context.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/instrumentation.d.ts +7 -4
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +44 -36
- package/dist/instrumentation.js.map +1 -1
- package/dist/observe.d.ts.map +1 -1
- package/dist/observe.js +5 -63
- package/dist/observe.js.map +1 -1
- package/dist/spans.d.ts +18 -0
- package/dist/spans.d.ts.map +1 -0
- package/dist/spans.js +104 -0
- package/dist/spans.js.map +1 -0
- package/dist/traceroot.d.ts.map +1 -1
- package/dist/traceroot.js +28 -6
- package/dist/traceroot.js.map +1 -1
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Span } from '@opentelemetry/api';
|
|
2
|
+
import { ObserveOptions, SpanType, TokenUsage } from './types';
|
|
3
|
+
export declare const SPAN_KIND_MAP: Record<SpanType, string>;
|
|
4
|
+
export declare function trySerialize(value: unknown): string | undefined;
|
|
5
|
+
export declare function applyModel(span: Span, model?: string, modelParameters?: Record<string, unknown>): void;
|
|
6
|
+
export declare function applyUsage(span: Span, usage: TokenUsage): void;
|
|
7
|
+
export declare function applyIO(span: Span, io: {
|
|
8
|
+
input?: unknown;
|
|
9
|
+
output?: unknown;
|
|
10
|
+
}): void;
|
|
11
|
+
/** Moved verbatim from observe.ts:_applyCommonAttributes (kind, ambient ctx,
|
|
12
|
+
* session/user, input-from-args, metadata, tags, git source). */
|
|
13
|
+
export declare function applyCommonAttributes(span: Span, options: ObserveOptions, args: unknown[]): void;
|
|
14
|
+
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAW,MAAM,oBAAoB,CAAC;AAsBnD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK/D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKlD,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAM/D;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,KAAK,CAAC,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,IAAI,CASN;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAe9D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CASnF;AAED;kEACkE;AAClE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CA4BhG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SPAN_KIND_MAP = void 0;
|
|
4
|
+
exports.trySerialize = trySerialize;
|
|
5
|
+
exports.applyModel = applyModel;
|
|
6
|
+
exports.applyUsage = applyUsage;
|
|
7
|
+
exports.applyIO = applyIO;
|
|
8
|
+
exports.applyCommonAttributes = applyCommonAttributes;
|
|
9
|
+
// src/attributes.ts — native field → OTel attribute mapping (single source of truth)
|
|
10
|
+
const api_1 = require("@opentelemetry/api");
|
|
11
|
+
const openinference_core_1 = require("@arizeai/openinference-core");
|
|
12
|
+
const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const git_context_1 = require("./git_context");
|
|
15
|
+
const OPENINFERENCE_SPAN_KIND = openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND;
|
|
16
|
+
exports.SPAN_KIND_MAP = {
|
|
17
|
+
agent: 'AGENT',
|
|
18
|
+
tool: 'TOOL',
|
|
19
|
+
llm: 'LLM',
|
|
20
|
+
span: 'CHAIN',
|
|
21
|
+
};
|
|
22
|
+
function trySerialize(value) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.stringify(value);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function applyModel(span, model, modelParameters) {
|
|
31
|
+
if (model !== undefined) {
|
|
32
|
+
span.setAttribute(constants_1.OI_LLM_MODEL_NAME, model); // read by backend
|
|
33
|
+
span.setAttribute(constants_1.LLM_MODEL, model); // back-compat
|
|
34
|
+
}
|
|
35
|
+
if (modelParameters !== undefined) {
|
|
36
|
+
const s = trySerialize(modelParameters);
|
|
37
|
+
if (s !== undefined)
|
|
38
|
+
span.setAttribute(constants_1.LLM_MODEL_PARAMETERS, s);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function applyUsage(span, usage) {
|
|
42
|
+
const input = usage.input ?? 0;
|
|
43
|
+
const cacheRead = usage.cacheRead ?? 0;
|
|
44
|
+
const cacheWrite = usage.cacheWrite ?? 0;
|
|
45
|
+
const output = usage.output ?? 0;
|
|
46
|
+
const prompt = input + cacheRead + cacheWrite; // GROSS
|
|
47
|
+
if (prompt > 0)
|
|
48
|
+
span.setAttribute(constants_1.OI_LLM_TOKEN_COUNT_PROMPT, prompt);
|
|
49
|
+
if (output > 0)
|
|
50
|
+
span.setAttribute(constants_1.OI_LLM_TOKEN_COUNT_COMPLETION, output);
|
|
51
|
+
const total = usage.total ?? prompt + output;
|
|
52
|
+
if (total > 0)
|
|
53
|
+
span.setAttribute(constants_1.OI_LLM_TOKEN_COUNT_TOTAL, total);
|
|
54
|
+
if (cacheRead > 0)
|
|
55
|
+
span.setAttribute(constants_1.OI_LLM_TOKEN_COUNT_CACHE_READ, cacheRead);
|
|
56
|
+
if (cacheWrite > 0)
|
|
57
|
+
span.setAttribute(constants_1.OI_LLM_TOKEN_COUNT_CACHE_WRITE, cacheWrite);
|
|
58
|
+
// Preserve the full object (incl. any custom keys) as a blob for completeness.
|
|
59
|
+
const blob = trySerialize(usage);
|
|
60
|
+
if (blob !== undefined)
|
|
61
|
+
span.setAttribute(constants_1.LLM_USAGE, blob);
|
|
62
|
+
}
|
|
63
|
+
function applyIO(span, io) {
|
|
64
|
+
if (io.input !== undefined) {
|
|
65
|
+
const s = trySerialize(io.input);
|
|
66
|
+
if (s !== undefined)
|
|
67
|
+
span.setAttribute(openinference_semantic_conventions_1.INPUT_VALUE, s);
|
|
68
|
+
}
|
|
69
|
+
if (io.output !== undefined) {
|
|
70
|
+
const s = trySerialize(io.output);
|
|
71
|
+
if (s !== undefined)
|
|
72
|
+
span.setAttribute(openinference_semantic_conventions_1.OUTPUT_VALUE, s);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Moved verbatim from observe.ts:_applyCommonAttributes (kind, ambient ctx,
|
|
76
|
+
* session/user, input-from-args, metadata, tags, git source). */
|
|
77
|
+
function applyCommonAttributes(span, options, args) {
|
|
78
|
+
span.setAttribute(OPENINFERENCE_SPAN_KIND, exports.SPAN_KIND_MAP[options.type ?? 'span']);
|
|
79
|
+
const ctxAttrs = (0, openinference_core_1.getAttributesFromContext)(api_1.context.active());
|
|
80
|
+
if (ctxAttrs && Object.keys(ctxAttrs).length > 0)
|
|
81
|
+
span.setAttributes(ctxAttrs);
|
|
82
|
+
if (options.sessionId !== undefined)
|
|
83
|
+
span.setAttribute(openinference_semantic_conventions_1.SESSION_ID, options.sessionId);
|
|
84
|
+
if (options.userId !== undefined)
|
|
85
|
+
span.setAttribute(openinference_semantic_conventions_1.USER_ID, options.userId);
|
|
86
|
+
if (options.captureInput !== false && args.length > 0) {
|
|
87
|
+
const inputValue = args.length === 1 ? args[0] : args;
|
|
88
|
+
const s = trySerialize(inputValue);
|
|
89
|
+
if (s !== undefined)
|
|
90
|
+
span.setAttribute(openinference_semantic_conventions_1.INPUT_VALUE, s);
|
|
91
|
+
}
|
|
92
|
+
if (options.metadata !== undefined) {
|
|
93
|
+
const s = trySerialize(options.metadata);
|
|
94
|
+
if (s !== undefined)
|
|
95
|
+
span.setAttribute(constants_1.SPAN_METADATA, s);
|
|
96
|
+
}
|
|
97
|
+
if (options.tags !== undefined) {
|
|
98
|
+
const s = trySerialize(options.tags);
|
|
99
|
+
if (s !== undefined)
|
|
100
|
+
span.setAttribute(constants_1.SPAN_TAGS, s);
|
|
101
|
+
}
|
|
102
|
+
const loc = (0, git_context_1.captureSourceLocation)();
|
|
103
|
+
if (loc.file !== undefined)
|
|
104
|
+
span.setAttribute('traceroot.git.source_file', loc.file);
|
|
105
|
+
if (loc.line !== undefined)
|
|
106
|
+
span.setAttribute('traceroot.git.source_line', loc.line);
|
|
107
|
+
if (loc.functionName !== undefined)
|
|
108
|
+
span.setAttribute('traceroot.git.source_function', loc.functionName);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=attributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export declare const GITHUB_REPOSITORY = "GITHUB_REPOSITORY";
|
|
2
|
+
export declare const GITHUB_SHA = "GITHUB_SHA";
|
|
1
3
|
export declare const DEFAULT_FLUSH_INTERVAL_SEC = 5;
|
|
2
4
|
export declare const DEFAULT_FLUSH_AT = 100;
|
|
3
5
|
export declare const DEFAULT_TIMEOUT_SEC = 30;
|
|
@@ -11,6 +13,9 @@ export declare const TOOL_NAME = "tool.name";
|
|
|
11
13
|
export declare const OI_LLM_MODEL_NAME = "llm.model_name";
|
|
12
14
|
export declare const OI_LLM_TOKEN_COUNT_PROMPT = "llm.token_count.prompt";
|
|
13
15
|
export declare const OI_LLM_TOKEN_COUNT_COMPLETION = "llm.token_count.completion";
|
|
16
|
+
export declare const OI_LLM_TOKEN_COUNT_TOTAL = "llm.token_count.total";
|
|
17
|
+
export declare const OI_LLM_TOKEN_COUNT_CACHE_READ = "llm.token_count.prompt_details.cache_read";
|
|
18
|
+
export declare const OI_LLM_TOKEN_COUNT_CACHE_WRITE = "llm.token_count.prompt_details.cache_write";
|
|
14
19
|
export declare const LLM_MODEL = "traceroot.llm.model";
|
|
15
20
|
export declare const LLM_MODEL_PARAMETERS = "traceroot.llm.model_parameters";
|
|
16
21
|
export declare const LLM_USAGE = "traceroot.llm.usage";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,YAAY,4BAA4B,CAAC;AACtD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAC9C,eAAO,MAAM,aAAa,4BAA4B,CAAC;AACvD,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AAGrC,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAClE,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAC1E,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,mCAAmC,CAAC;AACrE,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,UAAU,yBAAyB,CAAC;AAGjD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,cAAc,6BAA6B,CAAC;AACzD,eAAO,MAAM,UAAU,yBAAyB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA6BjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,UAAU,eAAe,CAAC;AAGvC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,YAAY,4BAA4B,CAAC;AACtD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAC9C,eAAO,MAAM,aAAa,4BAA4B,CAAC;AACvD,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,SAAS,cAAc,CAAC;AAGrC,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAClE,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAC1E,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAChE,eAAO,MAAM,6BAA6B,8CAA8C,CAAC;AACzF,eAAO,MAAM,8BAA8B,+CAA+C,CAAC;AAC3F,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,mCAAmC,CAAC;AACrE,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,UAAU,yBAAyB,CAAC;AAGjD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,cAAc,6BAA6B,CAAC;AACzD,eAAO,MAAM,UAAU,yBAAyB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA6BjB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// src/constants.ts — TraceRoot-specific span attribute keys and SDK defaults
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.SpanAttributes = exports.TRACE_TAGS = exports.TRACE_METADATA = exports.OI_TRACE_SESSION_ID = exports.OI_TRACE_USER_ID = exports.LLM_PROMPT = exports.LLM_USAGE = exports.LLM_MODEL_PARAMETERS = exports.LLM_MODEL = exports.OI_LLM_TOKEN_COUNT_COMPLETION = exports.OI_LLM_TOKEN_COUNT_PROMPT = exports.OI_LLM_MODEL_NAME = exports.TOOL_NAME = exports.AGENT_NAME = exports.SPAN_TAGS = exports.SPAN_METADATA = exports.OI_OUTPUT_VALUE = exports.OI_INPUT_VALUE = exports.OI_SPAN_KIND = exports.DEFAULT_TIMEOUT_SEC = exports.DEFAULT_FLUSH_AT = exports.DEFAULT_FLUSH_INTERVAL_SEC = void 0;
|
|
4
|
+
exports.SpanAttributes = exports.TRACE_TAGS = exports.TRACE_METADATA = exports.OI_TRACE_SESSION_ID = exports.OI_TRACE_USER_ID = exports.LLM_PROMPT = exports.LLM_USAGE = exports.LLM_MODEL_PARAMETERS = exports.LLM_MODEL = exports.OI_LLM_TOKEN_COUNT_CACHE_WRITE = exports.OI_LLM_TOKEN_COUNT_CACHE_READ = exports.OI_LLM_TOKEN_COUNT_TOTAL = exports.OI_LLM_TOKEN_COUNT_COMPLETION = exports.OI_LLM_TOKEN_COUNT_PROMPT = exports.OI_LLM_MODEL_NAME = exports.TOOL_NAME = exports.AGENT_NAME = exports.SPAN_TAGS = exports.SPAN_METADATA = exports.OI_OUTPUT_VALUE = exports.OI_INPUT_VALUE = exports.OI_SPAN_KIND = exports.DEFAULT_TIMEOUT_SEC = exports.DEFAULT_FLUSH_AT = exports.DEFAULT_FLUSH_INTERVAL_SEC = exports.GITHUB_SHA = exports.GITHUB_REPOSITORY = void 0;
|
|
5
|
+
// GitHub Actions environment variable names used for git-context harvesting.
|
|
6
|
+
exports.GITHUB_REPOSITORY = 'GITHUB_REPOSITORY';
|
|
7
|
+
exports.GITHUB_SHA = 'GITHUB_SHA';
|
|
5
8
|
// Flush/batch defaults — mirror traceroot-py/traceroot/constants.py
|
|
6
9
|
exports.DEFAULT_FLUSH_INTERVAL_SEC = 5; // seconds → BatchSpanProcessor scheduledDelayMillis (×1000)
|
|
7
10
|
exports.DEFAULT_FLUSH_AT = 100; // BatchSpanProcessor maxExportBatchSize
|
|
@@ -18,6 +21,9 @@ exports.TOOL_NAME = 'tool.name';
|
|
|
18
21
|
exports.OI_LLM_MODEL_NAME = 'llm.model_name';
|
|
19
22
|
exports.OI_LLM_TOKEN_COUNT_PROMPT = 'llm.token_count.prompt';
|
|
20
23
|
exports.OI_LLM_TOKEN_COUNT_COMPLETION = 'llm.token_count.completion';
|
|
24
|
+
exports.OI_LLM_TOKEN_COUNT_TOTAL = 'llm.token_count.total';
|
|
25
|
+
exports.OI_LLM_TOKEN_COUNT_CACHE_READ = 'llm.token_count.prompt_details.cache_read';
|
|
26
|
+
exports.OI_LLM_TOKEN_COUNT_CACHE_WRITE = 'llm.token_count.prompt_details.cache_write';
|
|
21
27
|
exports.LLM_MODEL = 'traceroot.llm.model';
|
|
22
28
|
exports.LLM_MODEL_PARAMETERS = 'traceroot.llm.model_parameters';
|
|
23
29
|
exports.LLM_USAGE = 'traceroot.llm.usage';
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA,6EAA6E;;;AAE7E,oEAAoE;AACvD,QAAA,0BAA0B,GAAG,CAAC,CAAC,CAAC,4DAA4D;AAC5F,QAAA,gBAAgB,GAAG,GAAG,CAAC,CAAC,wCAAwC;AAChE,QAAA,mBAAmB,GAAG,EAAE,CAAC,CAAC,2DAA2D;AAElG,aAAa;AACA,QAAA,YAAY,GAAG,yBAAyB,CAAC;AACzC,QAAA,cAAc,GAAG,aAAa,CAAC;AAC/B,QAAA,eAAe,GAAG,cAAc,CAAC;AACjC,QAAA,aAAa,GAAG,yBAAyB,CAAC;AAC1C,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,SAAS,GAAG,WAAW,CAAC;AAErC,eAAe;AACF,QAAA,iBAAiB,GAAG,gBAAgB,CAAC;AACrC,QAAA,yBAAyB,GAAG,wBAAwB,CAAC;AACrD,QAAA,6BAA6B,GAAG,4BAA4B,CAAC;AAC7D,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,oBAAoB,GAAG,gCAAgC,CAAC;AACxD,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,UAAU,GAAG,sBAAsB,CAAC;AAEjD,cAAc;AACD,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAC5C,QAAA,UAAU,GAAG,sBAAsB,CAAC;AAEjD;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG;IAC5B,aAAa;IACb,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,sBAAc,EAAE,gBAAgB;IAC5C,WAAW,EAAE,uBAAe,EAAE,gBAAgB;IAC9C,aAAa,EADiB,gBAAgB;IAC9C,qBAAa;IACb,SAAS,EAAT,iBAAS;IAET,eAAe;IACf,SAAS,EAAT,iBAAS;IACT,oBAAoB,EAApB,4BAAoB;IACpB,SAAS,EAAT,iBAAS;IACT,UAAU,EAAV,kBAAU;IAEV,cAAc;IACd,aAAa,EAAE,wBAAgB,EAAE,gBAAgB;IACjD,gBAAgB,EAAE,2BAAmB,EAAE,gBAAgB;IACvD,cAAc,EADyB,gBAAgB;IACvD,sBAAc;IACd,UAAU,EAAV,kBAAU;IAEV,cAAc;IACd,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,mBAAmB;IAC5B,eAAe,EAAE,2BAA2B;IAC5C,eAAe,EAAE,2BAA2B;IAC5C,mBAAmB,EAAE,+BAA+B;IAEpD,aAAa;IACb,WAAW,EAAE,wBAAwB;CAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA,6EAA6E;;;AAE7E,6EAA6E;AAChE,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,UAAU,GAAG,YAAY,CAAC;AAEvC,oEAAoE;AACvD,QAAA,0BAA0B,GAAG,CAAC,CAAC,CAAC,4DAA4D;AAC5F,QAAA,gBAAgB,GAAG,GAAG,CAAC,CAAC,wCAAwC;AAChE,QAAA,mBAAmB,GAAG,EAAE,CAAC,CAAC,2DAA2D;AAElG,aAAa;AACA,QAAA,YAAY,GAAG,yBAAyB,CAAC;AACzC,QAAA,cAAc,GAAG,aAAa,CAAC;AAC/B,QAAA,eAAe,GAAG,cAAc,CAAC;AACjC,QAAA,aAAa,GAAG,yBAAyB,CAAC;AAC1C,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,SAAS,GAAG,WAAW,CAAC;AAErC,eAAe;AACF,QAAA,iBAAiB,GAAG,gBAAgB,CAAC;AACrC,QAAA,yBAAyB,GAAG,wBAAwB,CAAC;AACrD,QAAA,6BAA6B,GAAG,4BAA4B,CAAC;AAC7D,QAAA,wBAAwB,GAAG,uBAAuB,CAAC;AACnD,QAAA,6BAA6B,GAAG,2CAA2C,CAAC;AAC5E,QAAA,8BAA8B,GAAG,4CAA4C,CAAC;AAC9E,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,oBAAoB,GAAG,gCAAgC,CAAC;AACxD,QAAA,SAAS,GAAG,qBAAqB,CAAC;AAClC,QAAA,UAAU,GAAG,sBAAsB,CAAC;AAEjD,cAAc;AACD,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,cAAc,GAAG,0BAA0B,CAAC;AAC5C,QAAA,UAAU,GAAG,sBAAsB,CAAC;AAEjD;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG;IAC5B,aAAa;IACb,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,sBAAc,EAAE,gBAAgB;IAC5C,WAAW,EAAE,uBAAe,EAAE,gBAAgB;IAC9C,aAAa,EADiB,gBAAgB;IAC9C,qBAAa;IACb,SAAS,EAAT,iBAAS;IAET,eAAe;IACf,SAAS,EAAT,iBAAS;IACT,oBAAoB,EAApB,4BAAoB;IACpB,SAAS,EAAT,iBAAS;IACT,UAAU,EAAV,kBAAU;IAEV,cAAc;IACd,aAAa,EAAE,wBAAgB,EAAE,gBAAgB;IACjD,gBAAgB,EAAE,2BAAmB,EAAE,gBAAgB;IACvD,cAAc,EADyB,gBAAgB;IACvD,sBAAc;IACd,UAAU,EAAV,kBAAU;IAEV,cAAc;IACd,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,mBAAmB;IAC5B,eAAe,EAAE,2BAA2B;IAC5C,eAAe,EAAE,2BAA2B;IAC5C,mBAAmB,EAAE,+BAA+B;IAEpD,aAAa;IACb,WAAW,EAAE,wBAAwB;CAC7B,CAAC"}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type Span } from './spans';
|
|
2
|
+
import type { TokenUsage } from './types';
|
|
1
3
|
/**
|
|
2
4
|
* Sets attributes on the currently active span.
|
|
3
5
|
* No-op when called outside an active span.
|
|
@@ -15,10 +17,12 @@ export declare function updateCurrentSpan(attrs: {
|
|
|
15
17
|
model?: string;
|
|
16
18
|
/** LLM model parameters (e.g. { temperature: 0.7, max_tokens: 1024 }). */
|
|
17
19
|
modelParameters?: Record<string, unknown>;
|
|
18
|
-
/** Token usage (e.g. {
|
|
19
|
-
usage?:
|
|
20
|
+
/** Token usage (e.g. { input: 100, output: 50 }). */
|
|
21
|
+
usage?: TokenUsage;
|
|
20
22
|
/** Prompt / messages sent to the LLM. */
|
|
21
23
|
prompt?: unknown;
|
|
24
|
+
/** Arbitrary span attributes for keys the typed fields don't cover. */
|
|
25
|
+
attributes?: Record<string, string | number | boolean>;
|
|
22
26
|
}): void;
|
|
23
27
|
/**
|
|
24
28
|
* Sets trace-level association attributes (user, session, tags, metadata) on the
|
|
@@ -30,6 +34,8 @@ export declare function updateCurrentTrace(attrs: {
|
|
|
30
34
|
tags?: string[];
|
|
31
35
|
metadata?: Record<string, unknown>;
|
|
32
36
|
}): void;
|
|
37
|
+
/** The active span as a TraceRoot handle, or undefined outside a span. */
|
|
38
|
+
export declare function getCurrentSpan(): Span | undefined;
|
|
33
39
|
/**
|
|
34
40
|
* Returns the trace ID of the currently active span, or undefined if no span is active.
|
|
35
41
|
*/
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,qDAAqD;IACrD,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACxD,GAAG,IAAI,CA2BP;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,IAAI,CAwBP;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,IAAI,IAAI,GAAG,SAAS,CAGjD;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD"}
|
package/dist/context.js
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateCurrentSpan = updateCurrentSpan;
|
|
4
4
|
exports.updateCurrentTrace = updateCurrentTrace;
|
|
5
|
+
exports.getCurrentSpan = getCurrentSpan;
|
|
5
6
|
exports.getCurrentTraceId = getCurrentTraceId;
|
|
6
7
|
exports.getCurrentSpanId = getCurrentSpanId;
|
|
7
8
|
// src/context.ts
|
|
8
9
|
const api_1 = require("@opentelemetry/api");
|
|
9
10
|
const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
10
11
|
const constants_1 = require("./constants");
|
|
12
|
+
const spans_1 = require("./spans");
|
|
13
|
+
const attributes_1 = require("./attributes");
|
|
11
14
|
/**
|
|
12
15
|
* Sets attributes on the currently active span.
|
|
13
16
|
* No-op when called outside an active span.
|
|
@@ -22,22 +25,7 @@ function updateCurrentSpan(attrs) {
|
|
|
22
25
|
if (attrs.name !== undefined) {
|
|
23
26
|
span.updateName(attrs.name);
|
|
24
27
|
}
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
span.setAttribute(openinference_semantic_conventions_1.INPUT_VALUE, JSON.stringify(attrs.input));
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
/* non-serializable */
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (attrs.output !== undefined) {
|
|
34
|
-
try {
|
|
35
|
-
span.setAttribute(openinference_semantic_conventions_1.OUTPUT_VALUE, JSON.stringify(attrs.output));
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
/* non-serializable */
|
|
39
|
-
}
|
|
40
|
-
}
|
|
28
|
+
(0, attributes_1.applyIO)(span, { input: attrs.input, output: attrs.output });
|
|
41
29
|
if (attrs.metadata !== undefined) {
|
|
42
30
|
try {
|
|
43
31
|
span.setAttribute(constants_1.SPAN_METADATA, JSON.stringify(attrs.metadata));
|
|
@@ -46,25 +34,11 @@ function updateCurrentSpan(attrs) {
|
|
|
46
34
|
/* non-serializable */
|
|
47
35
|
}
|
|
48
36
|
}
|
|
49
|
-
if (attrs.model !== undefined) {
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
if (attrs.modelParameters !== undefined) {
|
|
53
|
-
try {
|
|
54
|
-
span.setAttribute(constants_1.LLM_MODEL_PARAMETERS, JSON.stringify(attrs.modelParameters));
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
/* non-serializable */
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (attrs.usage !== undefined) {
|
|
61
|
-
try {
|
|
62
|
-
span.setAttribute(constants_1.LLM_USAGE, JSON.stringify(attrs.usage));
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
/* non-serializable */
|
|
66
|
-
}
|
|
37
|
+
if (attrs.model !== undefined || attrs.modelParameters !== undefined) {
|
|
38
|
+
(0, attributes_1.applyModel)(span, attrs.model, attrs.modelParameters);
|
|
67
39
|
}
|
|
40
|
+
if (attrs.usage !== undefined)
|
|
41
|
+
(0, attributes_1.applyUsage)(span, attrs.usage);
|
|
68
42
|
if (attrs.prompt !== undefined) {
|
|
69
43
|
try {
|
|
70
44
|
span.setAttribute(constants_1.LLM_PROMPT, JSON.stringify(attrs.prompt));
|
|
@@ -73,6 +47,8 @@ function updateCurrentSpan(attrs) {
|
|
|
73
47
|
/* non-serializable */
|
|
74
48
|
}
|
|
75
49
|
}
|
|
50
|
+
if (attrs.attributes !== undefined)
|
|
51
|
+
span.setAttributes(attrs.attributes);
|
|
76
52
|
}
|
|
77
53
|
/**
|
|
78
54
|
* Sets trace-level association attributes (user, session, tags, metadata) on the
|
|
@@ -105,6 +81,11 @@ function updateCurrentTrace(attrs) {
|
|
|
105
81
|
}
|
|
106
82
|
}
|
|
107
83
|
}
|
|
84
|
+
/** The active span as a TraceRoot handle, or undefined outside a span. */
|
|
85
|
+
function getCurrentSpan() {
|
|
86
|
+
const otel = api_1.trace.getActiveSpan();
|
|
87
|
+
return otel ? (0, spans_1.wrapSpan)(otel) : undefined;
|
|
88
|
+
}
|
|
108
89
|
function activeSpanContext() {
|
|
109
90
|
const span = api_1.trace.getActiveSpan();
|
|
110
91
|
return span ? span.spanContext() : undefined;
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/git_context.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
export declare function getGitRoot(): string | undefined;
|
|
2
|
+
/**
|
|
3
|
+
* Read git context directly from `.git` files (no `git` subprocess).
|
|
4
|
+
* Works in containers that ship a `.git` dir but no `git` binary.
|
|
5
|
+
* Only inspects `<cwd>/.git` (does not walk parent directories).
|
|
6
|
+
*/
|
|
7
|
+
export declare function gitContextFromFiles(cwd?: string): {
|
|
8
|
+
gitRepo?: string;
|
|
9
|
+
gitRef?: string;
|
|
10
|
+
};
|
|
2
11
|
/**
|
|
3
12
|
* Auto-detects git repo (as "owner/repo") and current commit ref.
|
|
4
13
|
* Returns an empty object if git is unavailable or any command fails.
|
|
@@ -7,6 +16,16 @@ export declare function autoDetectGitContext(): {
|
|
|
7
16
|
gitRepo?: string;
|
|
8
17
|
gitRef?: string;
|
|
9
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Resolve git context from GitHub Actions environment variables —
|
|
21
|
+
* `GITHUB_REPOSITORY` (owner/repo) and `GITHUB_SHA`.
|
|
22
|
+
*
|
|
23
|
+
* repo and ref are resolved independently (a build may provide one, not both).
|
|
24
|
+
*/
|
|
25
|
+
export declare function harvestCiGitContext(env?: NodeJS.ProcessEnv): {
|
|
26
|
+
gitRepo?: string;
|
|
27
|
+
gitRef?: string;
|
|
28
|
+
};
|
|
10
29
|
/** @internal — reset cached git root between tests */
|
|
11
30
|
export declare function _resetGitContextCache(): void;
|
|
12
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git_context.d.ts","sourceRoot":"","sources":["../src/git_context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git_context.d.ts","sourceRoot":"","sources":["../src/git_context.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAW/C;AAWD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAsB,GAAG;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAiEA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiC5E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAKA;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAsB/F"}
|
package/dist/git_context.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getGitRoot = getGitRoot;
|
|
4
|
+
exports.gitContextFromFiles = gitContextFromFiles;
|
|
4
5
|
exports.autoDetectGitContext = autoDetectGitContext;
|
|
6
|
+
exports.harvestCiGitContext = harvestCiGitContext;
|
|
5
7
|
exports._resetGitContextCache = _resetGitContextCache;
|
|
6
8
|
exports.captureSourceLocation = captureSourceLocation;
|
|
7
9
|
// src/git_context.ts
|
|
8
10
|
const node_child_process_1 = require("node:child_process");
|
|
11
|
+
const node_fs_1 = require("node:fs");
|
|
12
|
+
const node_path_1 = require("node:path");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const REPO_URL_RE = /(?:https?:\/\/|ssh:\/\/git@|git@)github\.com[:/](.+?)(?:\.git)?$/;
|
|
15
|
+
const SHA_RE = /^[0-9a-f]{40}$/;
|
|
9
16
|
let _gitRootCache = null; // null = not yet detected, '' = failed
|
|
10
17
|
function getGitRoot() {
|
|
11
18
|
if (_gitRootCache !== null)
|
|
@@ -29,6 +36,83 @@ function relativePath(filepath) {
|
|
|
29
36
|
// If we can't make the path relative, don't stamp it — avoid leaking absolute paths.
|
|
30
37
|
return undefined;
|
|
31
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Read git context directly from `.git` files (no `git` subprocess).
|
|
41
|
+
* Works in containers that ship a `.git` dir but no `git` binary.
|
|
42
|
+
* Only inspects `<cwd>/.git` (does not walk parent directories).
|
|
43
|
+
*/
|
|
44
|
+
function gitContextFromFiles(cwd = process.cwd()) {
|
|
45
|
+
const gitDir = (0, node_path_1.join)(cwd, '.git');
|
|
46
|
+
let gitRepo;
|
|
47
|
+
let gitRef;
|
|
48
|
+
try {
|
|
49
|
+
const config = (0, node_fs_1.readFileSync)((0, node_path_1.join)(gitDir, 'config'), 'utf8');
|
|
50
|
+
let seenOrigin = false;
|
|
51
|
+
for (const line of config.split(/\r?\n/)) {
|
|
52
|
+
if (/^\[remote "origin"\]/.test(line)) {
|
|
53
|
+
seenOrigin = true;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (seenOrigin && line.startsWith('['))
|
|
57
|
+
break; // left the origin section
|
|
58
|
+
if (seenOrigin) {
|
|
59
|
+
const m = line.match(/\burl\s*=\s*(.+)$/);
|
|
60
|
+
if (m) {
|
|
61
|
+
const rm = m[1].trim().match(REPO_URL_RE);
|
|
62
|
+
if (rm)
|
|
63
|
+
gitRepo = rm[1].replace(/\/$/, '');
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
/* no .git/config */
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const head = (0, node_fs_1.readFileSync)((0, node_path_1.join)(gitDir, 'HEAD'), 'utf8').trim();
|
|
74
|
+
if (SHA_RE.test(head)) {
|
|
75
|
+
gitRef = head;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const rm = head.match(/ref:\s+(\S+)/);
|
|
79
|
+
if (rm) {
|
|
80
|
+
const refPath = rm[1]; // e.g. refs/heads/main
|
|
81
|
+
try {
|
|
82
|
+
const loose = (0, node_fs_1.readFileSync)((0, node_path_1.join)(gitDir, refPath), 'utf8').trim();
|
|
83
|
+
if (SHA_RE.test(loose))
|
|
84
|
+
gitRef = loose;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* loose ref missing — the ref may be packed */
|
|
88
|
+
}
|
|
89
|
+
if (gitRef === undefined) {
|
|
90
|
+
try {
|
|
91
|
+
// Packed refs (after `git gc`/fresh clone): `<sha> refs/heads/main`.
|
|
92
|
+
const packed = (0, node_fs_1.readFileSync)((0, node_path_1.join)(gitDir, 'packed-refs'), 'utf8');
|
|
93
|
+
for (const line of packed.split(/\r?\n/)) {
|
|
94
|
+
if (!line || line[0] === '#' || line[0] === '^')
|
|
95
|
+
continue;
|
|
96
|
+
// Object IDs are exactly 40 (SHA-1) or 64 (SHA-256) hex chars.
|
|
97
|
+
const m = line.match(/^([0-9a-f]{40}|[0-9a-f]{64})\s+(.+)$/);
|
|
98
|
+
if (m && m[2] === refPath) {
|
|
99
|
+
gitRef = m[1];
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
/* no packed-refs */
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
/* no .git/HEAD */
|
|
113
|
+
}
|
|
114
|
+
return { gitRepo, gitRef };
|
|
115
|
+
}
|
|
32
116
|
/**
|
|
33
117
|
* Auto-detects git repo (as "owner/repo") and current commit ref.
|
|
34
118
|
* Returns an empty object if git is unavailable or any command fails.
|
|
@@ -42,7 +126,7 @@ function autoDetectGitContext() {
|
|
|
42
126
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
43
127
|
}).trim();
|
|
44
128
|
// Normalize to "owner/repo" — handles https, git@, ssh:// formats
|
|
45
|
-
const match = remote.match(
|
|
129
|
+
const match = remote.match(REPO_URL_RE);
|
|
46
130
|
if (match) {
|
|
47
131
|
gitRepo = match[1].replace(/\/$/, '');
|
|
48
132
|
}
|
|
@@ -64,6 +148,18 @@ function autoDetectGitContext() {
|
|
|
64
148
|
getGitRoot();
|
|
65
149
|
return { gitRepo, gitRef };
|
|
66
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Resolve git context from GitHub Actions environment variables —
|
|
153
|
+
* `GITHUB_REPOSITORY` (owner/repo) and `GITHUB_SHA`.
|
|
154
|
+
*
|
|
155
|
+
* repo and ref are resolved independently (a build may provide one, not both).
|
|
156
|
+
*/
|
|
157
|
+
function harvestCiGitContext(env = process.env) {
|
|
158
|
+
return {
|
|
159
|
+
gitRepo: env[constants_1.GITHUB_REPOSITORY] || undefined,
|
|
160
|
+
gitRef: env[constants_1.GITHUB_SHA] || undefined,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
67
163
|
/** @internal — reset cached git root between tests */
|
|
68
164
|
function _resetGitContextCache() {
|
|
69
165
|
_gitRootCache = null;
|
package/dist/git_context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git_context.js","sourceRoot":"","sources":["../src/git_context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"git_context.js","sourceRoot":"","sources":["../src/git_context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export { TraceRoot } from './traceroot';
|
|
2
2
|
export { observe } from './observe';
|
|
3
|
-
export { updateCurrentSpan, updateCurrentTrace, getCurrentTraceId, getCurrentSpanId, } from './context';
|
|
3
|
+
export { updateCurrentSpan, updateCurrentTrace, getCurrentTraceId, getCurrentSpanId, getCurrentSpan, } from './context';
|
|
4
4
|
export { usingAttributes } from './usingAttributes';
|
|
5
5
|
export { SpanAttributes } from './constants';
|
|
6
6
|
export type { SpanType, ObserveOptions, InitializeOptions } from './types';
|
|
7
7
|
export type { UsingAttributesOptions } from './usingAttributes';
|
|
8
8
|
export { OpenAIAgentsProcessor } from './openai-agents';
|
|
9
|
+
export { startSpan, usingSpan } from './spans';
|
|
10
|
+
export type { Span } from './spans';
|
|
11
|
+
export type { StartSpanOptions, SpanUpdate, TokenUsage } from './types';
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenAIAgentsProcessor = exports.SpanAttributes = exports.usingAttributes = exports.getCurrentSpanId = exports.getCurrentTraceId = exports.updateCurrentTrace = exports.updateCurrentSpan = exports.observe = exports.TraceRoot = void 0;
|
|
3
|
+
exports.usingSpan = exports.startSpan = exports.OpenAIAgentsProcessor = exports.SpanAttributes = exports.usingAttributes = exports.getCurrentSpan = exports.getCurrentSpanId = exports.getCurrentTraceId = exports.updateCurrentTrace = exports.updateCurrentSpan = exports.observe = exports.TraceRoot = void 0;
|
|
4
4
|
// src/index.ts
|
|
5
5
|
var traceroot_1 = require("./traceroot");
|
|
6
6
|
Object.defineProperty(exports, "TraceRoot", { enumerable: true, get: function () { return traceroot_1.TraceRoot; } });
|
|
@@ -11,10 +11,14 @@ Object.defineProperty(exports, "updateCurrentSpan", { enumerable: true, get: fun
|
|
|
11
11
|
Object.defineProperty(exports, "updateCurrentTrace", { enumerable: true, get: function () { return context_1.updateCurrentTrace; } });
|
|
12
12
|
Object.defineProperty(exports, "getCurrentTraceId", { enumerable: true, get: function () { return context_1.getCurrentTraceId; } });
|
|
13
13
|
Object.defineProperty(exports, "getCurrentSpanId", { enumerable: true, get: function () { return context_1.getCurrentSpanId; } });
|
|
14
|
+
Object.defineProperty(exports, "getCurrentSpan", { enumerable: true, get: function () { return context_1.getCurrentSpan; } });
|
|
14
15
|
var usingAttributes_1 = require("./usingAttributes");
|
|
15
16
|
Object.defineProperty(exports, "usingAttributes", { enumerable: true, get: function () { return usingAttributes_1.usingAttributes; } });
|
|
16
17
|
var constants_1 = require("./constants");
|
|
17
18
|
Object.defineProperty(exports, "SpanAttributes", { enumerable: true, get: function () { return constants_1.SpanAttributes; } });
|
|
18
19
|
var openai_agents_1 = require("./openai-agents");
|
|
19
20
|
Object.defineProperty(exports, "OpenAIAgentsProcessor", { enumerable: true, get: function () { return openai_agents_1.OpenAIAgentsProcessor; } });
|
|
21
|
+
var spans_1 = require("./spans");
|
|
22
|
+
Object.defineProperty(exports, "startSpan", { enumerable: true, get: function () { return spans_1.startSpan; } });
|
|
23
|
+
Object.defineProperty(exports, "usingSpan", { enumerable: true, get: function () { return spans_1.usingSpan; } });
|
|
20
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,qCAMmB;AALjB,4GAAA,iBAAiB,OAAA;AACjB,6GAAA,kBAAkB,OAAA;AAClB,4GAAA,iBAAiB,OAAA;AACjB,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AAEhB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AAGvB,iDAAwD;AAA/C,sHAAA,qBAAqB,OAAA;AAC9B,iCAA+C;AAAtC,kGAAA,SAAS,OAAA;AAAE,kGAAA,SAAS,OAAA"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { InitializeOptions } from './types';
|
|
1
|
+
import type { InitializeOptions } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Wires OpenInference instrumentations based on the instrumentModules option:
|
|
4
4
|
*
|
|
5
|
-
* - undefined
|
|
6
|
-
* - {}
|
|
7
|
-
* - { openAI }
|
|
5
|
+
* - undefined -> RITM auto-instrumentation for all supported modules (CJS only)
|
|
6
|
+
* - {} -> no instrumentation
|
|
7
|
+
* - { openAI } -> manual patch only the provided module refs
|
|
8
8
|
*
|
|
9
9
|
* Called once by TraceRoot.initialize().
|
|
10
|
+
*
|
|
11
|
+
* All OpenInference instrumentations are lazy-loaded via require() so that
|
|
12
|
+
* missing peer dependencies don't crash initialization.
|
|
10
13
|
*/
|
|
11
14
|
export declare function wireInstrumentations(instrumentModules: InitializeOptions['instrumentModules']): void;
|
|
12
15
|
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA6BjD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,GACxD,IAAI,CAuCN"}
|
package/dist/instrumentation.js
CHANGED
|
@@ -3,62 +3,70 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.wireInstrumentations = wireInstrumentations;
|
|
4
4
|
// src/instrumentation.ts
|
|
5
5
|
const instrumentation_1 = require("@opentelemetry/instrumentation");
|
|
6
|
-
const openinference_instrumentation_anthropic_1 = require("@arizeai/openinference-instrumentation-anthropic");
|
|
7
|
-
const openinference_instrumentation_bedrock_1 = require("@arizeai/openinference-instrumentation-bedrock");
|
|
8
|
-
const openinference_instrumentation_langchain_1 = require("@arizeai/openinference-instrumentation-langchain");
|
|
9
|
-
const openinference_instrumentation_openai_1 = require("@arizeai/openinference-instrumentation-openai");
|
|
10
6
|
const openai_agents_1 = require("./openai-agents");
|
|
11
7
|
const claude_agent_sdk_1 = require("./claude-agent-sdk");
|
|
8
|
+
const OPENINFERENCE_PACKAGES = {
|
|
9
|
+
openAI: ['@arizeai/openinference-instrumentation-openai', 'OpenAIInstrumentation'],
|
|
10
|
+
anthropic: ['@arizeai/openinference-instrumentation-anthropic', 'AnthropicInstrumentation'],
|
|
11
|
+
langchain: ['@arizeai/openinference-instrumentation-langchain', 'LangChainInstrumentation'],
|
|
12
|
+
bedrock: ['@arizeai/openinference-instrumentation-bedrock', 'BedrockInstrumentation'],
|
|
13
|
+
};
|
|
14
|
+
function loadInstrumentation(pkg, exportName) {
|
|
15
|
+
try {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
17
|
+
const mod = require(pkg);
|
|
18
|
+
const ctor = mod[exportName];
|
|
19
|
+
if (typeof ctor !== 'function')
|
|
20
|
+
return null;
|
|
21
|
+
return ctor;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
12
27
|
/**
|
|
13
28
|
* Wires OpenInference instrumentations based on the instrumentModules option:
|
|
14
29
|
*
|
|
15
|
-
* - undefined
|
|
16
|
-
* - {}
|
|
17
|
-
* - { openAI }
|
|
30
|
+
* - undefined -> RITM auto-instrumentation for all supported modules (CJS only)
|
|
31
|
+
* - {} -> no instrumentation
|
|
32
|
+
* - { openAI } -> manual patch only the provided module refs
|
|
18
33
|
*
|
|
19
34
|
* Called once by TraceRoot.initialize().
|
|
35
|
+
*
|
|
36
|
+
* All OpenInference instrumentations are lazy-loaded via require() so that
|
|
37
|
+
* missing peer dependencies don't crash initialization.
|
|
20
38
|
*/
|
|
21
39
|
function wireInstrumentations(instrumentModules) {
|
|
22
40
|
if (instrumentModules === undefined) {
|
|
23
41
|
// Auto-instrumentation via require-in-the-middle (CJS only).
|
|
24
42
|
// ESM users must pass explicit module refs.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
new
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
const instrs = [];
|
|
44
|
+
for (const [pkg, exportName] of Object.values(OPENINFERENCE_PACKAGES)) {
|
|
45
|
+
const Ctor = loadInstrumentation(pkg, exportName);
|
|
46
|
+
if (Ctor)
|
|
47
|
+
instrs.push(new Ctor());
|
|
48
|
+
}
|
|
49
|
+
if (instrs.length > 0) {
|
|
50
|
+
(0, instrumentation_1.registerInstrumentations)({ instrumentations: instrs });
|
|
51
|
+
}
|
|
33
52
|
return;
|
|
34
53
|
}
|
|
35
54
|
const instrs = [];
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
instr
|
|
45
|
-
}
|
|
46
|
-
if (instrumentModules.langchain) {
|
|
47
|
-
// langchain must be: import * as lcCallbackManager from '@langchain/core/callbacks/manager'
|
|
48
|
-
const instr = new openinference_instrumentation_langchain_1.LangChainInstrumentation();
|
|
55
|
+
for (const [key, [pkg, exportName]] of Object.entries(OPENINFERENCE_PACKAGES)) {
|
|
56
|
+
const moduleRef = instrumentModules[key];
|
|
57
|
+
if (!moduleRef)
|
|
58
|
+
continue;
|
|
59
|
+
const Ctor = loadInstrumentation(pkg, exportName);
|
|
60
|
+
if (!Ctor) {
|
|
61
|
+
throw new Error(`[TraceRoot] Failed to load ${pkg}. Install it: npm install ${pkg}`);
|
|
62
|
+
}
|
|
63
|
+
const instr = new Ctor();
|
|
49
64
|
instrs.push(instr);
|
|
50
|
-
instr.manuallyInstrument(
|
|
65
|
+
instr.manuallyInstrument(moduleRef);
|
|
51
66
|
}
|
|
52
67
|
if (instrumentModules.claudeAgentSDK) {
|
|
53
|
-
// Claude Agent SDK uses TraceRoot's in-house wrapper for stable agent/tool/LLM structure.
|
|
54
|
-
// Auto RITM is intentionally not enabled for it until this wrapper has its own loader hook.
|
|
55
68
|
(0, claude_agent_sdk_1.wireClaudeAgentSDKInstrumentation)(instrumentModules.claudeAgentSDK);
|
|
56
69
|
}
|
|
57
|
-
if (instrumentModules.bedrock) {
|
|
58
|
-
const instr = new openinference_instrumentation_bedrock_1.BedrockInstrumentation();
|
|
59
|
-
instrs.push(instr);
|
|
60
|
-
instr.manuallyInstrument(instrumentModules.bedrock);
|
|
61
|
-
}
|
|
62
70
|
if (instrumentModules.openaiAgents) {
|
|
63
71
|
(0, openai_agents_1.wireOpenAIAgentsProcessor)(instrumentModules.openaiAgents);
|
|
64
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":";;AA2CA,oDAyCC;AApFD,yBAAyB;AACzB,oEAAgG;AAEhG,mDAA4D;AAC5D,yDAAuE;AAQvE,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,CAAC,+CAA+C,EAAE,uBAAuB,CAAC;IAClF,SAAS,EAAE,CAAC,kDAAkD,EAAE,0BAA0B,CAAC;IAC3F,SAAS,EAAE,CAAC,kDAAkD,EAAE,0BAA0B,CAAC;IAC3F,OAAO,EAAE,CAAC,gDAAgD,EAAE,wBAAwB,CAAC;CAC7E,CAAC;AAEX,SAAS,mBAAmB,CAAC,GAAW,EAAE,UAAkB;IAC1D,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAA4B,CAAC;QACpD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,IAA2B,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAClC,iBAAyD;IAEzD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,6DAA6D;QAC7D,4CAA4C;QAC5C,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAA,0CAAwB,EAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC9E,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAA0C,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,6BAA6B,GAAG,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACrC,IAAA,oDAAiC,EAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACnC,IAAA,yCAAyB,EAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAA,0CAAwB,EAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
|
package/dist/observe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAczC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC5C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EACrC,GAAG,IAAI,EAAE,CAAC,GACT,cAAc,CAAC,CAAC,CAAC,CAAC;AAGrB,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC5C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAClC,GAAG,IAAI,EAAE,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAAC;AA6Hd,mDAAmD;AACnD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
|
package/dist/observe.js
CHANGED
|
@@ -37,17 +37,8 @@ exports.observe = observe;
|
|
|
37
37
|
exports._resetObserveState = _resetObserveState;
|
|
38
38
|
// src/observe.ts
|
|
39
39
|
const api_1 = require("@opentelemetry/api");
|
|
40
|
-
const openinference_core_1 = require("@arizeai/openinference-core");
|
|
41
40
|
const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
42
|
-
const
|
|
43
|
-
const git_context_1 = require("./git_context");
|
|
44
|
-
const OPENINFERENCE_SPAN_KIND = openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND;
|
|
45
|
-
const SPAN_KIND_MAP = {
|
|
46
|
-
agent: 'AGENT',
|
|
47
|
-
tool: 'TOOL',
|
|
48
|
-
llm: 'LLM',
|
|
49
|
-
span: 'CHAIN',
|
|
50
|
-
};
|
|
41
|
+
const attributes_1 = require("./attributes");
|
|
51
42
|
// Cached once after the first call; the tracer name never changes.
|
|
52
43
|
let _tracer;
|
|
53
44
|
let _hasWarnedUninit = false;
|
|
@@ -57,15 +48,6 @@ const AsyncGeneratorFunction = Object.getPrototypeOf(async function* () { })
|
|
|
57
48
|
function isAsyncGeneratorFunction(fn) {
|
|
58
49
|
return typeof fn === 'function' && fn instanceof AsyncGeneratorFunction;
|
|
59
50
|
}
|
|
60
|
-
/** Serialize a value for a span attribute, returning undefined on failure. */
|
|
61
|
-
function trySerialize(value) {
|
|
62
|
-
try {
|
|
63
|
-
return JSON.stringify(value);
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return undefined;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
51
|
// Implementation
|
|
70
52
|
function observe(options, fn, ...args) {
|
|
71
53
|
const name = options.name ?? (fn.name || 'anonymous');
|
|
@@ -97,10 +79,10 @@ async function _observeRegular(name, options, fn, args) {
|
|
|
97
79
|
}
|
|
98
80
|
}
|
|
99
81
|
try {
|
|
100
|
-
|
|
82
|
+
(0, attributes_1.applyCommonAttributes)(span, options, args);
|
|
101
83
|
const result = await fn(...args);
|
|
102
84
|
if (options.captureOutput !== false) {
|
|
103
|
-
const serialized = trySerialize(result);
|
|
85
|
+
const serialized = (0, attributes_1.trySerialize)(result);
|
|
104
86
|
if (serialized !== undefined)
|
|
105
87
|
span.setAttribute(openinference_semantic_conventions_1.OUTPUT_VALUE, serialized);
|
|
106
88
|
}
|
|
@@ -136,7 +118,7 @@ async function* _observeAsyncGenerator(name, options, fn, args) {
|
|
|
136
118
|
yield* fn(...args);
|
|
137
119
|
return;
|
|
138
120
|
}
|
|
139
|
-
|
|
121
|
+
(0, attributes_1.applyCommonAttributes)(span, options, args);
|
|
140
122
|
// Activate the span in the OTel context so that updateCurrentSpan() and
|
|
141
123
|
// nested observe() calls inside the generator body target the correct span.
|
|
142
124
|
// We must wrap each .next() call in context.with() because AsyncLocalStorage
|
|
@@ -154,7 +136,7 @@ async function* _observeAsyncGenerator(name, options, fn, args) {
|
|
|
154
136
|
yield value;
|
|
155
137
|
}
|
|
156
138
|
if (options.captureOutput !== false && collected.length > 0) {
|
|
157
|
-
const serialized = trySerialize(collected);
|
|
139
|
+
const serialized = (0, attributes_1.trySerialize)(collected);
|
|
158
140
|
if (serialized !== undefined)
|
|
159
141
|
span.setAttribute(openinference_semantic_conventions_1.OUTPUT_VALUE, serialized);
|
|
160
142
|
}
|
|
@@ -168,46 +150,6 @@ async function* _observeAsyncGenerator(name, options, fn, args) {
|
|
|
168
150
|
span.end();
|
|
169
151
|
}
|
|
170
152
|
}
|
|
171
|
-
/**
|
|
172
|
-
* Apply attributes common to all span types: kind, ambient context, session/user,
|
|
173
|
-
* input from args, metadata, tags, git source location.
|
|
174
|
-
*/
|
|
175
|
-
function _applyCommonAttributes(span, options, args) {
|
|
176
|
-
span.setAttribute(OPENINFERENCE_SPAN_KIND, SPAN_KIND_MAP[options.type ?? 'span']);
|
|
177
|
-
// Propagate any ambient attributes set by usingAttributes() in the call stack.
|
|
178
|
-
const ctxAttrs = (0, openinference_core_1.getAttributesFromContext)(api_1.context.active());
|
|
179
|
-
if (ctxAttrs && Object.keys(ctxAttrs).length > 0) {
|
|
180
|
-
span.setAttributes(ctxAttrs);
|
|
181
|
-
}
|
|
182
|
-
if (options.sessionId !== undefined)
|
|
183
|
-
span.setAttribute(openinference_semantic_conventions_1.SESSION_ID, options.sessionId);
|
|
184
|
-
if (options.userId !== undefined)
|
|
185
|
-
span.setAttribute(openinference_semantic_conventions_1.USER_ID, options.userId);
|
|
186
|
-
// Auto-capture input from args. Single arg → use directly; multiple → array.
|
|
187
|
-
if (options.captureInput !== false && args.length > 0) {
|
|
188
|
-
const inputValue = args.length === 1 ? args[0] : args;
|
|
189
|
-
const serialized = trySerialize(inputValue);
|
|
190
|
-
if (serialized !== undefined)
|
|
191
|
-
span.setAttribute(openinference_semantic_conventions_1.INPUT_VALUE, serialized);
|
|
192
|
-
}
|
|
193
|
-
if (options.metadata !== undefined) {
|
|
194
|
-
const s = trySerialize(options.metadata);
|
|
195
|
-
if (s !== undefined)
|
|
196
|
-
span.setAttribute(constants_1.SPAN_METADATA, s);
|
|
197
|
-
}
|
|
198
|
-
if (options.tags !== undefined) {
|
|
199
|
-
const s = trySerialize(options.tags);
|
|
200
|
-
if (s !== undefined)
|
|
201
|
-
span.setAttribute(constants_1.SPAN_TAGS, s);
|
|
202
|
-
}
|
|
203
|
-
const loc = (0, git_context_1.captureSourceLocation)();
|
|
204
|
-
if (loc.file !== undefined)
|
|
205
|
-
span.setAttribute('traceroot.git.source_file', loc.file);
|
|
206
|
-
if (loc.line !== undefined)
|
|
207
|
-
span.setAttribute('traceroot.git.source_line', loc.line);
|
|
208
|
-
if (loc.functionName !== undefined)
|
|
209
|
-
span.setAttribute('traceroot.git.source_function', loc.functionName);
|
|
210
|
-
}
|
|
211
153
|
/** @internal — reset module state between tests */
|
|
212
154
|
function _resetObserveState() {
|
|
213
155
|
_tracer = undefined;
|
package/dist/observe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":"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"}
|
package/dist/spans.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Span as OtelSpan } from '@opentelemetry/api';
|
|
2
|
+
import { StartSpanOptions, SpanUpdate } from './types';
|
|
3
|
+
export interface Span {
|
|
4
|
+
readonly spanId: string;
|
|
5
|
+
readonly traceId: string;
|
|
6
|
+
update(attrs: SpanUpdate): this;
|
|
7
|
+
end(): void;
|
|
8
|
+
startSpan(options: Omit<StartSpanOptions, 'parent'>): Span;
|
|
9
|
+
setError(err: unknown): this;
|
|
10
|
+
}
|
|
11
|
+
/** Wrap an existing OTel span (e.g. the active one) as a Span handle. */
|
|
12
|
+
export declare function wrapSpan(otel: OtelSpan): Span;
|
|
13
|
+
export declare function startSpan(options: StartSpanOptions): Span;
|
|
14
|
+
/** Run fn with `span` as the active span so inner observe()/startSpan() nest under it. */
|
|
15
|
+
export declare function usingSpan<T>(span: Span, fn: () => T): T;
|
|
16
|
+
/** @internal test reset */
|
|
17
|
+
export declare function _resetSpansState(): void;
|
|
18
|
+
//# sourceMappingURL=spans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGvD,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,GAAG,IAAI,IAAI,CAAC;IACZ,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAwCD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAE7C;AAKD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAsCzD;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAGvD;AAED,2BAA2B;AAC3B,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
package/dist/spans.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapSpan = wrapSpan;
|
|
4
|
+
exports.startSpan = startSpan;
|
|
5
|
+
exports.usingSpan = usingSpan;
|
|
6
|
+
exports._resetSpansState = _resetSpansState;
|
|
7
|
+
// src/spans.ts — imperative span handle API
|
|
8
|
+
const api_1 = require("@opentelemetry/api");
|
|
9
|
+
const attributes_1 = require("./attributes");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const traceroot_1 = require("./traceroot");
|
|
12
|
+
class TracerootSpan {
|
|
13
|
+
otelSpan;
|
|
14
|
+
constructor(otelSpan) {
|
|
15
|
+
this.otelSpan = otelSpan;
|
|
16
|
+
}
|
|
17
|
+
get spanId() {
|
|
18
|
+
return this.otelSpan.spanContext().spanId;
|
|
19
|
+
}
|
|
20
|
+
get traceId() {
|
|
21
|
+
return this.otelSpan.spanContext().traceId;
|
|
22
|
+
}
|
|
23
|
+
update(attrs) {
|
|
24
|
+
if (attrs.name !== undefined)
|
|
25
|
+
this.otelSpan.updateName(attrs.name);
|
|
26
|
+
(0, attributes_1.applyIO)(this.otelSpan, { input: attrs.input, output: attrs.output });
|
|
27
|
+
if (attrs.metadata !== undefined) {
|
|
28
|
+
const s = (0, attributes_1.trySerialize)(attrs.metadata);
|
|
29
|
+
if (s !== undefined)
|
|
30
|
+
this.otelSpan.setAttribute(constants_1.SPAN_METADATA, s);
|
|
31
|
+
}
|
|
32
|
+
if (attrs.model !== undefined || attrs.modelParameters !== undefined) {
|
|
33
|
+
(0, attributes_1.applyModel)(this.otelSpan, attrs.model, attrs.modelParameters);
|
|
34
|
+
}
|
|
35
|
+
if (attrs.usage !== undefined)
|
|
36
|
+
(0, attributes_1.applyUsage)(this.otelSpan, attrs.usage);
|
|
37
|
+
if (attrs.attributes !== undefined)
|
|
38
|
+
this.otelSpan.setAttributes(attrs.attributes);
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
end() {
|
|
42
|
+
this.otelSpan.end();
|
|
43
|
+
}
|
|
44
|
+
startSpan(options) {
|
|
45
|
+
return startSpan({ ...options, parent: this });
|
|
46
|
+
}
|
|
47
|
+
setError(err) {
|
|
48
|
+
this.otelSpan.recordException(err instanceof Error ? err : new Error(String(err)));
|
|
49
|
+
this.otelSpan.setStatus({
|
|
50
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
51
|
+
message: err instanceof Error ? err.message : String(err),
|
|
52
|
+
});
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Wrap an existing OTel span (e.g. the active one) as a Span handle. */
|
|
57
|
+
function wrapSpan(otel) {
|
|
58
|
+
return new TracerootSpan(otel);
|
|
59
|
+
}
|
|
60
|
+
let _tracer;
|
|
61
|
+
let _hasWarnedUninit = false;
|
|
62
|
+
function startSpan(options) {
|
|
63
|
+
// Synchronous init guard — mirrors observe(). Unlike observe() (which is async
|
|
64
|
+
// and can await a dynamic import), startSpan() is synchronous, so it must init
|
|
65
|
+
// BEFORE creating the span or the first span would be dropped. initialize() is
|
|
66
|
+
// synchronous and safe to call repeatedly.
|
|
67
|
+
if (process.env['TRACEROOT_API_KEY'] && !traceroot_1.TraceRoot.isInitialized()) {
|
|
68
|
+
traceroot_1.TraceRoot.initialize();
|
|
69
|
+
}
|
|
70
|
+
_tracer ??= api_1.trace.getTracer('traceroot-ts');
|
|
71
|
+
const parentOtel = options.parent ? options.parent.otelSpan : undefined;
|
|
72
|
+
const ctx = parentOtel ? api_1.trace.setSpan(api_1.context.active(), parentOtel) : api_1.context.active();
|
|
73
|
+
const otel = _tracer.startSpan(options.name, undefined, ctx);
|
|
74
|
+
if (!otel.isRecording() && !_hasWarnedUninit) {
|
|
75
|
+
_hasWarnedUninit = true;
|
|
76
|
+
console.warn('[TraceRoot] startSpan() called but TraceRoot.initialize() was not called. Spans will not be recorded.');
|
|
77
|
+
}
|
|
78
|
+
if (otel.isRecording()) {
|
|
79
|
+
(0, attributes_1.applyCommonAttributes)(otel, {
|
|
80
|
+
type: options.type,
|
|
81
|
+
metadata: options.metadata,
|
|
82
|
+
tags: options.tags,
|
|
83
|
+
sessionId: options.sessionId,
|
|
84
|
+
userId: options.userId,
|
|
85
|
+
}, options.input !== undefined ? [options.input] : []);
|
|
86
|
+
if (options.model !== undefined || options.modelParameters !== undefined) {
|
|
87
|
+
(0, attributes_1.applyModel)(otel, options.model, options.modelParameters);
|
|
88
|
+
}
|
|
89
|
+
if (options.attributes !== undefined)
|
|
90
|
+
otel.setAttributes(options.attributes);
|
|
91
|
+
}
|
|
92
|
+
return new TracerootSpan(otel);
|
|
93
|
+
}
|
|
94
|
+
/** Run fn with `span` as the active span so inner observe()/startSpan() nest under it. */
|
|
95
|
+
function usingSpan(span, fn) {
|
|
96
|
+
const otel = span.otelSpan;
|
|
97
|
+
return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), otel), fn);
|
|
98
|
+
}
|
|
99
|
+
/** @internal test reset */
|
|
100
|
+
function _resetSpansState() {
|
|
101
|
+
_tracer = undefined;
|
|
102
|
+
_hasWarnedUninit = false;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=spans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spans.js","sourceRoot":"","sources":["../src/spans.ts"],"names":[],"mappings":"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"}
|
package/dist/traceroot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceroot.d.ts","sourceRoot":"","sources":["../src/traceroot.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"traceroot.d.ts","sourceRoot":"","sources":["../src/traceroot.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAkB5C,qBAAa,SAAS;IACpB,OAAO;IAEP,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B,MAAM,CAAC,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,IAAI;WAiI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMvC;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC"}
|
package/dist/traceroot.js
CHANGED
|
@@ -57,17 +57,39 @@ class TraceRoot {
|
|
|
57
57
|
compression: 'gzip',
|
|
58
58
|
});
|
|
59
59
|
const environment = options.environment ?? process.env['TRACEROOT_ENVIRONMENT'];
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
let gitRepo =
|
|
63
|
-
let gitRef =
|
|
60
|
+
// `|| undefined` so an empty option/env var ('') is treated as unset —
|
|
61
|
+
// otherwise it would block fallback detection and suppress the warning.
|
|
62
|
+
let gitRepo = options.gitRepo || process.env['TRACEROOT_GIT_REPO'] || undefined;
|
|
63
|
+
let gitRef = options.gitRef || process.env['TRACEROOT_GIT_REF'] || undefined;
|
|
64
|
+
// CI/platform env vars — production path (no .git needed).
|
|
65
|
+
if (gitRepo === undefined || gitRef === undefined) {
|
|
66
|
+
const ci = (0, git_context_1.harvestCiGitContext)();
|
|
67
|
+
gitRepo ??= ci.gitRepo;
|
|
68
|
+
gitRef ??= ci.gitRef;
|
|
69
|
+
}
|
|
70
|
+
// .git read as files — dev fallback, no git binary required.
|
|
71
|
+
if (gitRepo === undefined || gitRef === undefined) {
|
|
72
|
+
const fromFiles = (0, git_context_1.gitContextFromFiles)();
|
|
73
|
+
gitRepo ??= fromFiles.gitRepo;
|
|
74
|
+
gitRef ??= fromFiles.gitRef;
|
|
75
|
+
}
|
|
76
|
+
// git subprocess — last resort (handles run-from-subdirectory).
|
|
64
77
|
if (gitRepo === undefined || gitRef === undefined) {
|
|
65
78
|
const autoGit = (0, git_context_1.autoDetectGitContext)();
|
|
66
79
|
gitRepo ??= autoGit.gitRepo;
|
|
67
80
|
gitRef ??= autoGit.gitRef;
|
|
68
81
|
}
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
// Warm git-root cache for per-span source paths (cached/idempotent).
|
|
83
|
+
(0, git_context_1.getGitRoot)();
|
|
84
|
+
// Honest absence: warn once, never fabricate.
|
|
85
|
+
if (gitRepo === undefined || gitRef === undefined) {
|
|
86
|
+
console.warn('[TraceRoot] git context incomplete (repo=' +
|
|
87
|
+
(gitRepo ?? 'unset') +
|
|
88
|
+
', ref=' +
|
|
89
|
+
(gitRef ?? 'unset') +
|
|
90
|
+
'). The AI agent needs both to correlate traces to source. ' +
|
|
91
|
+
'Set TRACEROOT_GIT_REPO / TRACEROOT_GIT_REF (see ' +
|
|
92
|
+
'https://docs.traceroot.ai/tracing/git-context).');
|
|
71
93
|
}
|
|
72
94
|
// Flush/batch tuning — env vars take precedence over SDK defaults.
|
|
73
95
|
const flushIntervalSec = Number(process.env['TRACEROOT_FLUSH_INTERVAL'] || constants_1.DEFAULT_FLUSH_INTERVAL_SEC);
|
package/dist/traceroot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceroot.js","sourceRoot":"","sources":["../src/traceroot.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"traceroot.js","sourceRoot":"","sources":["../src/traceroot.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -86,4 +86,50 @@ export interface InitializeOptions {
|
|
|
86
86
|
*/
|
|
87
87
|
gitRef?: string;
|
|
88
88
|
}
|
|
89
|
+
/** LLM token usage. Known fields map to OpenInference token-count keys;
|
|
90
|
+
* extra keys are preserved in the traceroot.llm.usage blob. */
|
|
91
|
+
export interface TokenUsage {
|
|
92
|
+
/** Uncached prompt tokens. */
|
|
93
|
+
input?: number;
|
|
94
|
+
/** Completion tokens. */
|
|
95
|
+
output?: number;
|
|
96
|
+
/** Cache-read (Anthropic cache_read_input_tokens). */
|
|
97
|
+
cacheRead?: number;
|
|
98
|
+
/** Cache-write / creation (Anthropic cache_creation_input_tokens). */
|
|
99
|
+
cacheWrite?: number;
|
|
100
|
+
/** Total; derived from prompt+completion if omitted. */
|
|
101
|
+
total?: number;
|
|
102
|
+
[key: string]: number | undefined;
|
|
103
|
+
}
|
|
104
|
+
export interface StartSpanOptions {
|
|
105
|
+
name: string;
|
|
106
|
+
type?: SpanType;
|
|
107
|
+
input?: unknown;
|
|
108
|
+
metadata?: Record<string, unknown>;
|
|
109
|
+
tags?: string[];
|
|
110
|
+
sessionId?: string;
|
|
111
|
+
userId?: string;
|
|
112
|
+
model?: string;
|
|
113
|
+
modelParameters?: Record<string, unknown>;
|
|
114
|
+
/** Arbitrary span attributes (see {@link SpanUpdate.attributes}). */
|
|
115
|
+
attributes?: Record<string, string | number | boolean>;
|
|
116
|
+
/** Explicit parent handle. Default: the current active span. */
|
|
117
|
+
parent?: import('./spans').Span;
|
|
118
|
+
}
|
|
119
|
+
export interface SpanUpdate {
|
|
120
|
+
name?: string;
|
|
121
|
+
input?: unknown;
|
|
122
|
+
output?: unknown;
|
|
123
|
+
metadata?: Record<string, unknown>;
|
|
124
|
+
model?: string;
|
|
125
|
+
modelParameters?: Record<string, unknown>;
|
|
126
|
+
usage?: TokenUsage;
|
|
127
|
+
/**
|
|
128
|
+
* Arbitrary span attributes for keys the typed fields above don't cover
|
|
129
|
+
* (e.g. `gen_ai.*` semconv keys, domain-specific tags). Set through to the
|
|
130
|
+
* underlying span verbatim — the escape hatch so callers never need raw
|
|
131
|
+
* OpenTelemetry for a one-off attribute.
|
|
132
|
+
*/
|
|
133
|
+
attributes?: Record<string, string | number | boolean>;
|
|
134
|
+
}
|
|
89
135
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;;;;;WAOG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,uFAAuF;IACvF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|