@flutchai/flutch-sdk 0.7.1 → 0.7.3

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/index.cjs CHANGED
@@ -5212,6 +5212,10 @@ exports.EventProcessor = class _EventProcessor {
5212
5212
  attachments: [],
5213
5213
  metadata: {},
5214
5214
  traceEvents: [],
5215
+ traceMessages: {
5216
+ messages: {},
5217
+ keys: /* @__PURE__ */ new WeakMap()
5218
+ },
5215
5219
  traceStartedAt: null,
5216
5220
  traceCompletedAt: null
5217
5221
  };
@@ -5613,6 +5617,7 @@ exports.EventProcessor = class _EventProcessor {
5613
5617
  const completedAt = acc.traceCompletedAt ?? startedAt;
5614
5618
  const trace = acc.traceEvents.length > 0 ? {
5615
5619
  events: acc.traceEvents,
5620
+ messages: acc.traceMessages.messages,
5616
5621
  startedAt,
5617
5622
  completedAt,
5618
5623
  durationMs: Math.max(0, completedAt - startedAt),
@@ -5640,14 +5645,14 @@ exports.EventProcessor = class _EventProcessor {
5640
5645
  };
5641
5646
  }
5642
5647
  captureTraceEvent(acc, event) {
5643
- const normalized = this.normalizeTraceEvent(event);
5648
+ const normalized = this.normalizeTraceEvent(event, acc.traceMessages);
5644
5649
  if (!normalized) {
5645
5650
  return;
5646
5651
  }
5647
5652
  acc.traceEvents.push(normalized);
5648
5653
  this.logger.debug(`[TRACE] Captured trace event ${normalized.type} for node ${normalized.nodeName} (${acc.traceEvents.length} total)`);
5649
5654
  }
5650
- normalizeTraceEvent(event) {
5655
+ normalizeTraceEvent(event, traceMessages) {
5651
5656
  const type = event?.event ?? event?.type;
5652
5657
  if (!type) {
5653
5658
  return null;
@@ -5683,8 +5688,12 @@ exports.EventProcessor = class _EventProcessor {
5683
5688
  if (!hasLangGraphNode && type.startsWith("on_chain")) {
5684
5689
  return null;
5685
5690
  }
5686
- const metadata = sanitizeTraceData(event?.metadata);
5687
- const data = sanitizeTraceData(event?.data);
5691
+ const metadata = sanitizeTraceData(event?.metadata, 0, /* @__PURE__ */ new WeakSet(), {
5692
+ maxStringLength: TRACE_MAX_STRING
5693
+ });
5694
+ const data = sanitizeTraceData(refTraceMessages(event?.data, traceMessages), 0, /* @__PURE__ */ new WeakSet(), {
5695
+ maxStringLength: TRACE_MAX_STRING
5696
+ });
5688
5697
  const timestampSource = event?.timestamp ?? event?.time ?? event?.data?.timestamp ?? event?.data?.ts ?? Date.now();
5689
5698
  const timestamp = Number(timestampSource) || Date.now();
5690
5699
  const streamChannel = typeof event?.metadata?.stream_channel === "string" ? event.metadata.stream_channel : typeof metadata?.stream_channel === "string" ? metadata.stream_channel : void 0;
@@ -5704,6 +5713,39 @@ exports.EventProcessor = class _EventProcessor {
5704
5713
  exports.EventProcessor = _ts_decorate21([
5705
5714
  common.Injectable()
5706
5715
  ], exports.EventProcessor);
5716
+ var TRACE_MAX_STRING = 1e5;
5717
+ function refTraceMessages(value, store, depth = 0) {
5718
+ if (depth > 6 || value === null || typeof value !== "object") return value;
5719
+ if (Array.isArray(value)) {
5720
+ if (isHistory(value)) {
5721
+ return value.map((message) => ({
5722
+ _traceMsg: messageKey(message, store)
5723
+ }));
5724
+ }
5725
+ return value.map((item) => refTraceMessages(item, store, depth + 1));
5726
+ }
5727
+ const out = {};
5728
+ for (const [key, item] of Object.entries(value)) {
5729
+ out[key] = refTraceMessages(item, store, depth + 1);
5730
+ }
5731
+ return out;
5732
+ }
5733
+ __name(refTraceMessages, "refTraceMessages");
5734
+ function messageKey(message, store) {
5735
+ const known = store.keys.get(message);
5736
+ if (known) return known;
5737
+ const key = `m${Object.keys(store.messages).length + 1}`;
5738
+ store.keys.set(message, key);
5739
+ store.messages[key] = sanitizeTraceData(message, 0, /* @__PURE__ */ new WeakSet(), {
5740
+ maxStringLength: TRACE_MAX_STRING
5741
+ });
5742
+ return key;
5743
+ }
5744
+ __name(messageKey, "messageKey");
5745
+ function isHistory(items) {
5746
+ return items.length > 0 && items.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && ("lc_kwargs" in item || "content" in item && ("type" in item || "role" in item)));
5747
+ }
5748
+ __name(isHistory, "isHistory");
5707
5749
  var als = new async_hooks.AsyncLocalStorage();
5708
5750
  function withFlutchContext(ctx, fn) {
5709
5751
  return als.run(ctx, fn);
@@ -5977,6 +6019,7 @@ exports.LangGraphEngine = class _LangGraphEngine {
5977
6019
  agentId: context.agentId || "unknown",
5978
6020
  companyId: context.companyId || "unknown",
5979
6021
  events: trace.events,
6022
+ messages: trace.messages,
5980
6023
  totalEvents: trace.totalEvents,
5981
6024
  startedAt: trace.startedAt,
5982
6025
  completedAt: trace.completedAt || Date.now(),
@@ -6063,6 +6106,7 @@ exports.LangGraphEngine = class _LangGraphEngine {
6063
6106
  durationMs: payload.durationMs,
6064
6107
  status: payload.status || "success",
6065
6108
  error: payload.error,
6109
+ messages: payload.messages,
6066
6110
  events: payload.events.map((event) => ({
6067
6111
  timestamp: event.timestamp ? new Date(event.timestamp).toISOString() : (/* @__PURE__ */ new Date()).toISOString(),
6068
6112
  meta: {
@@ -9137,6 +9181,7 @@ exports.modelSupportsPromptCache = modelSupportsPromptCache;
9137
9181
  exports.normalizeToolConfigs = normalizeToolConfigs;
9138
9182
  exports.parseToolSearchResult = parseToolSearchResult;
9139
9183
  exports.redactConnectionString = redactConnectionString;
9184
+ exports.refTraceMessages = refTraceMessages;
9140
9185
  exports.registerFinanceExampleCallback = registerFinanceExampleCallback;
9141
9186
  exports.registerUIEndpointsFromClass = registerUIEndpointsFromClass;
9142
9187
  exports.resolveOAuthProviderConfig = resolveOAuthProviderConfig;