UNPKG

@maximai/maxim-js

Version:

Maxim AI JS SDK. Visit https://getmaxim.ai for more info.

291 lines 11.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogLine = void 0; const logs_1 = require("../apis/logs"); const captureWriter_1 = require("./captureWriter"); const generation_1 = require("./components/generation"); const retrieval_1 = require("./components/retrieval"); const session_1 = require("./components/session"); const span_1 = require("./components/span"); const toolCall_1 = require("./components/toolCall"); const trace_1 = require("./components/trace"); const types_1 = require("./components/types"); const utils_1 = require("./utils"); /** * A logger class for creating log lines without initializing a Maxim instance. * * This class implements MaximLogger but captures logs internally instead of sending them. * Use `drain()` to get captured logs and `LogLine.push()` to send them. * * @example * const logLine = new LogLine(); * * // add logs * logLine.trace({ id: 'trace-1', name: 'My trace' }); * logLine.traceInput('trace-1', 'user input'); * logLine.traceEnd('trace-1'); * * // fetch all the commit logs * const logs = logLine.drain(); * * // send the logs to server * await LogLine.push({ * apiKey: process.env.MAXIM_API_KEY, * repositoryId: 'my-repo-id', * logs, * }); */ class LogLine { constructor() { this._captureWriter = new captureWriter_1.CaptureWriter(); } /** * Drains all captured logs and returns them. Clears the internal buffer. */ drain() { return this._captureWriter.drain(); } /** * Returns all captured logs without clearing the buffer. */ get logs() { return [...this._captureWriter.logs]; } static async push(config) { const { apiKey, repositoryId, logs, debug } = config; const baseUrl = config.baseUrl || "https://app.getmaxim.ai"; if (logs.length === 0) { return; } const serializedLogs = logs.map((log) => log.serialize()).join("\n"); const api = new logs_1.MaximLogsAPI(baseUrl, apiKey, debug); try { await api.pushLogs(repositoryId, serializedLogs); } finally { api.destroyAgents(); } } // ============================================ // Session methods // ============================================ session(config) { return new session_1.Session(config, this._captureWriter); } sessionTag(sessionId, key, value) { session_1.Session.addTag_(this._captureWriter, types_1.Entity.SESSION, sessionId, key, value); } sessionEnd(sessionId, data) { session_1.Session.end_(this._captureWriter, types_1.Entity.SESSION, sessionId, data); } sessionFeedback(sessionId, feedback) { session_1.Session.feedback_(this._captureWriter, sessionId, feedback); } sessionAddMetric(sessionId, name, value) { session_1.Session.addMetric_(this._captureWriter, sessionId, name, value); } sessionTrace(sessionId, config) { return session_1.Session.trace_(this._captureWriter, sessionId, config); } sessionEvaluate(sessionId) { return session_1.Session.evaluate_(this._captureWriter, types_1.Entity.SESSION, sessionId); } // ============================================ // Trace methods // ============================================ trace(config) { return new trace_1.Trace(config, this._captureWriter); } traceGeneration(traceId, config) { return trace_1.Trace.generation_(this._captureWriter, traceId, config); } traceToolCall(traceId, config) { return trace_1.Trace.toolCall_(this._captureWriter, traceId, config); } traceRetrieval(traceId, config) { return trace_1.Trace.retrieval_(this._captureWriter, traceId, config); } traceOutput(traceId, output) { trace_1.Trace.output_(this._captureWriter, traceId, output); } traceError(traceId, config) { return trace_1.Trace.error_(this._captureWriter, traceId, config); } traceInput(traceId, input) { trace_1.Trace.input_(this._captureWriter, traceId, input); } traceSpan(traceId, config) { return trace_1.Trace.span_(this._captureWriter, traceId, config); } traceAddToSession(traceId, sessionId) { trace_1.Trace.addToSession_(this._captureWriter, traceId, sessionId); } traceAddMetric(traceId, name, value) { trace_1.Trace.addMetric_(this._captureWriter, traceId, name, value); } traceAddAttachment(traceId, attachment) { trace_1.Trace.addAttachment_(this._captureWriter, traceId, attachment); } traceTag(traceId, key, value) { trace_1.Trace.addTag_(this._captureWriter, types_1.Entity.TRACE, traceId, key, value); } traceEvent(traceId, eventIdOrName, eventNameOrTags, tagsOrMetadata, metadata) { if (typeof eventNameOrTags === "string") { trace_1.Trace.event_(this._captureWriter, types_1.Entity.TRACE, traceId, eventIdOrName, eventNameOrTags, tagsOrMetadata, metadata); } else { trace_1.Trace.event_(this._captureWriter, types_1.Entity.TRACE, traceId, (0, utils_1.uniqueId)(), eventIdOrName, eventNameOrTags, tagsOrMetadata); } } traceFeedback(traceId, feedback) { trace_1.Trace.feedback_(this._captureWriter, traceId, feedback); } traceMetadata(traceId, metadata) { trace_1.Trace.addMetadata_(this._captureWriter, types_1.Entity.TRACE, traceId, metadata); } traceEvaluate(traceId) { return trace_1.Trace.evaluate_(this._captureWriter, types_1.Entity.TRACE, traceId); } traceEnd(traceId, data) { trace_1.Trace.end_(this._captureWriter, types_1.Entity.TRACE, traceId, data); } // ============================================ // Generation methods // ============================================ generationSetModel(generationId, model) { generation_1.Generation.setModel_(this._captureWriter, generationId, model); } generationAddTag(generationId, key, value) { generation_1.Generation.addTag_(this._captureWriter, types_1.Entity.GENERATION, generationId, key, value); } generationAddMessage(generationId, messages) { generation_1.Generation.addMessages_(this._captureWriter, generationId, messages); } generationSetModelParameters(generationId, modelParameters) { generation_1.Generation.setModelParameters_(this._captureWriter, generationId, modelParameters); } generationAddMetric(generationId, name, value) { generation_1.Generation.addMetric_(this._captureWriter, generationId, name, value); } generationResult(generationId, result) { generation_1.Generation.result_(this._captureWriter, generationId, result); } generationError(generationId, error) { generation_1.Generation.error_(this._captureWriter, generationId, error); } generationMetadata(generationId, metadata) { generation_1.Generation.addMetadata_(this._captureWriter, types_1.Entity.GENERATION, generationId, metadata); } generationEvaluate(generationId) { return generation_1.Generation.evaluate_(this._captureWriter, types_1.Entity.GENERATION, generationId); } generationEnd(generationId, data) { generation_1.Generation.end_(this._captureWriter, types_1.Entity.GENERATION, generationId, data); } generationSetName(generationId, name) { generation_1.Generation.setName_(this._captureWriter, generationId, name); } generationAddAttachment(generationId, attachment) { generation_1.Generation.addAttachment_(this._captureWriter, generationId, attachment); } // ============================================ // Span methods // ============================================ spanGeneration(spanId, config) { return span_1.Span.generation_(this._captureWriter, spanId, config); } spanRetrieval(spanId, config) { return span_1.Span.retrieval_(this._captureWriter, spanId, config); } spanToolCall(spanId, config) { return span_1.Span.toolCall_(this._captureWriter, spanId, config); } spanSpan(spanId, config) { return span_1.Span.span_(this._captureWriter, spanId, config); } spanTag(spanId, key, value) { span_1.Span.addTag_(this._captureWriter, types_1.Entity.SPAN, spanId, key, value); } spanError(spanId, config) { return span_1.Span.error_(this._captureWriter, spanId, config); } spanEvent(spanId, eventIdOrName, eventNameOrTags, tagsOrMetadata, metadata) { if (typeof eventNameOrTags === "string") { span_1.Span.event_(this._captureWriter, types_1.Entity.SPAN, spanId, eventIdOrName, eventNameOrTags, tagsOrMetadata, metadata); } else { span_1.Span.event_(this._captureWriter, types_1.Entity.SPAN, spanId, (0, utils_1.uniqueId)(), eventIdOrName, eventNameOrTags, tagsOrMetadata); } } spanMetadata(spanId, metadata) { span_1.Span.addMetadata_(this._captureWriter, types_1.Entity.SPAN, spanId, metadata); } spanEvaluate(spanId) { return span_1.Span.evaluate_(this._captureWriter, types_1.Entity.SPAN, spanId); } spanEnd(spanId, data) { span_1.Span.end_(this._captureWriter, types_1.Entity.SPAN, spanId, data); } spanAddAttachment(spanId, attachment) { span_1.Span.addAttachment_(this._captureWriter, spanId, attachment); } // ============================================ // Retrieval methods // ============================================ retrievalEnd(retrievalId) { retrieval_1.Retrieval.end_(this._captureWriter, types_1.Entity.RETRIEVAL, retrievalId); } retrievalAddTag(retrievalId, key, value) { retrieval_1.Retrieval.addTag_(this._captureWriter, types_1.Entity.RETRIEVAL, retrievalId, key, value); } retrievalInput(retrievalId, input) { retrieval_1.Retrieval.input_(this._captureWriter, retrievalId, input); } retrievalAddMetric(retrievalId, name, value) { retrieval_1.Retrieval.addMetric_(this._captureWriter, retrievalId, name, value); } retrievalOutput(retrievalId, output) { retrieval_1.Retrieval.output_(this._captureWriter, retrievalId, output); } retrievalMetadata(retrievalId, metadata) { retrieval_1.Retrieval.addMetadata_(this._captureWriter, types_1.Entity.RETRIEVAL, retrievalId, metadata); } retrievalEvaluate(retrievalId) { return retrieval_1.Retrieval.evaluate_(this._captureWriter, types_1.Entity.RETRIEVAL, retrievalId); } // ============================================ // Tool call methods // ============================================ toolCallResult(toolCallId, result) { toolCall_1.ToolCall.result_(this._captureWriter, toolCallId, result); } toolCallError(toolCallId, error) { toolCall_1.ToolCall.error_(this._captureWriter, toolCallId, error); } toolCallAddTag(toolCallId, key, value) { toolCall_1.ToolCall.addTag_(this._captureWriter, types_1.Entity.TOOL_CALL, toolCallId, key, value); } toolCallMetadata(toolCallId, metadata) { toolCall_1.ToolCall.addMetadata_(this._captureWriter, types_1.Entity.TOOL_CALL, toolCallId, metadata); } /** * @deprecated **DO NOT USE.** */ get id() { return "log-line"; } /** * @deprecated **DO NOT USE.** Use `LogLine.push()` instead. */ async cleanup() { throw new Error("LogLine.cleanup() is not supported. Use LogLine.push() to send logs."); } /** * @deprecated **DO NOT USE.** Use `LogLine.push()` instead. */ async flush() { throw new Error("LogLine.flush() is not supported. Use LogLine.push() to send logs."); } } exports.LogLine = LogLine; //# sourceMappingURL=logLine.js.map