UNPKG

@maximai/maxim-js-langchain

Version:

This is the langchain wrapper built for (Maxim JS SDK)[https://www.npmjs.com/package/@maximai/maxim-js].

168 lines (167 loc) 5.61 kB
"use strict"; /** * Models for LangChain logging and tracing functionality. * This module contains data models used for tracking and logging LangChain operations, * including metadata storage and run information. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SpanContainer = exports.TraceContainer = exports.Container = exports.Metadata = exports.MetadataKeys = void 0; exports.MetadataKeys = [ "sessionId", "traceId", "spanId", "chainName", "spanName", "traceName", "generationName", "retrievalName", "generationTags", "retrievalTags", "traceTags", "chainTags", ]; class Metadata { constructor(metadata) { var _a, _b, _c, _d; if (!metadata) return; this.sessionId = typeof metadata["sessionId"] === "string" ? metadata["sessionId"] : undefined; this.traceId = typeof metadata["traceId"] === "string" ? metadata["traceId"] : undefined; this.spanId = typeof metadata["spanId"] === "string" ? metadata["spanId"] : undefined; this.spanName = typeof metadata["spanName"] === "string" ? metadata["spanName"] : undefined; this.chainName = typeof metadata["chainName"] === "string" ? metadata["chainName"] : undefined; this.traceName = typeof metadata["traceName"] === "string" ? metadata["traceName"] : undefined; this.generationName = typeof metadata["generationName"] === "string" ? metadata["generationName"] : undefined; this.retrievalName = typeof metadata["retrievalName"] === "string" ? metadata["retrievalName"] : undefined; this.generationTags = (_a = metadata["generationTags"]) !== null && _a !== void 0 ? _a : {}; this.retrievalTags = (_b = metadata["retrievalTags"]) !== null && _b !== void 0 ? _b : {}; this.traceTags = (_c = metadata["traceTags"]) !== null && _c !== void 0 ? _c : {}; this.chainTags = (_d = metadata["chainTags"]) !== null && _d !== void 0 ? _d : {}; } toJSON() { return { sessionId: this.sessionId, traceId: this.traceId, spanId: this.spanId, chainName: this.chainName, spanName: this.spanName, traceName: this.traceName, generationName: this.generationName, retrievalName: this.retrievalName, generationTags: this.generationTags, retrievalTags: this.retrievalTags, traceTags: this.traceTags, chainTags: this.chainTags, }; } } exports.Metadata = Metadata; class Container { constructor(logger, _id, _type, _name, _parentId, markCreated = false) { this.logger = logger; this._id = _id; this._type = _type; this._name = _name; this._parentId = _parentId; this._created = false; this._created = markCreated; } get id() { return this._id; } get type() { return this._type; } get parentId() { return this._parentId; } set parentId(id) { this._parentId = id; } isCreated() { return this._created; } } exports.Container = Container; class TraceContainer extends Container { constructor(logger, traceId, traceName, parentId, markCreated = false) { super(logger, traceId, "trace", traceName, parentId, markCreated); } create(tags) { const config = { id: this.id, name: this._name, tags, }; if (this.parentId) { config.sessionId = this.parentId; } this.logger.trace(config); this._created = true; } addGeneration(config) { return this.logger.traceGeneration(this.id, config); } addRetrieval(config) { return this.logger.traceRetrieval(this.id, config); } addEvent(eventId, name, tags) { this.logger.traceEvent(this.id, eventId, name, tags); } addSpan(config) { return this.logger.traceSpan(this.id, config); } addTags(tags) { Object.entries(tags).forEach(([key, value]) => { this.logger.traceTag(this.id, key, value); }); } addToolCall(config) { return this.logger.traceToolCall(this.id, config); } end() { this.logger.traceEnd(this.id); } } exports.TraceContainer = TraceContainer; class SpanContainer extends Container { constructor(logger, spanId, spanName, parentId, markCreated = false) { super(logger, spanId, "span", spanName, parentId, markCreated); } create(tags) { if (!this.parentId) { throw new Error("[MaximSDK] Span without a parent is invalid"); } const config = { id: this.id, name: this._name, tags, }; this.logger.traceSpan(this.parentId, config); this._created = true; } addGeneration(config) { return this.logger.spanGeneration(this.id, config); } addRetrieval(config) { return this.logger.spanRetrieval(this.id, config); } addEvent(eventId, name, tags) { this.logger.spanEvent(this.id, eventId, name, tags); } addSpan(config) { return this.logger.spanSpan(this.id, config); } addTags(tags) { Object.entries(tags).forEach(([key, value]) => { this.logger.spanTag(this.id, key, value); }); } addToolCall(config) { return this.logger.spanToolCall(this.id, config); } end() { this.logger.spanEnd(this.id); } } exports.SpanContainer = SpanContainer;