@friskai/frisk-js 0.2.8 → 0.2.10

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.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * FriskSession represents a single session for tracking tool calls and tracing.
5
5
  */
6
- import type { Span, Tracer } from '@opentelemetry/api';
6
+ import { Span, Tracer } from '@opentelemetry/api';
7
7
  import { FriskSDKLoggingOptions, SDKLogger } from '../logging';
8
8
  import type { DecideToolCallOptions, Frisk } from './frisk';
9
9
  import { type ResolvedRedactionOptions } from './redaction-options';
@@ -19,6 +19,10 @@ interface InitTracingOptions {
19
19
  runId: string;
20
20
  inputs: Record<string, unknown>;
21
21
  }
22
+ export declare enum ToolCallStatus {
23
+ Success = "success",
24
+ Error = "error"
25
+ }
22
26
  /**
23
27
  * A Frisk session for tracking a sequence of tool calls
24
28
  *
@@ -36,6 +40,9 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
36
40
  protected logger: SDKLogger;
37
41
  protected _rootRunId: string | null;
38
42
  protected _isTracing: boolean;
43
+ private toolCallSequenceNumber;
44
+ private toolCallSequenceGenerator;
45
+ private toolCallErrorCount;
39
46
  constructor({ frisk, redact, tracer, logging }: FriskSessionOptions<TFrisk>);
40
47
  get rootSpan(): Span | null;
41
48
  getTracer(): Tracer;
@@ -44,6 +51,18 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
44
51
  */
45
52
  get isTracing(): boolean;
46
53
  get rootRunId(): string | null;
54
+ createToolCallSpan({ name, args: toolArgsInput, }: {
55
+ name: string;
56
+ args: object | any;
57
+ }): Promise<Span>;
58
+ closeToolCallSpan({ toolCallId, // todo! Make this a method on toolcallspan
59
+ span, err, status, }: {
60
+ toolCallId: string | null;
61
+ span: Span;
62
+ status: ToolCallStatus | null;
63
+ err: Error | null;
64
+ }): void;
65
+ private validateToolArgs;
47
66
  /**
48
67
  * Evaluate a tool call against policies
49
68
  *
@@ -52,6 +71,10 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
52
71
  * context propagation.
53
72
  */
54
73
  decideToolCall({ toolCall, agentState, }: DecideToolCallOptions): ToolCallDecision;
74
+ private createToolCallSequenceGenerator;
75
+ getToolCallCount(): number;
76
+ incrementToolCallErrors(): void;
77
+ getToolCallErrorCount(): number;
55
78
  /**
56
79
  * Initialize tracing for this session
57
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"frisk-session.d.ts","sourceRoot":"","sources":["../../src/core/frisk-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAItD,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAS9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAG3D,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAGnE,OAAO,EAAmB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE3D,KAAK,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEzC,MAAM,WAAW,mBAAmB,CAAC,UAAU,SAAS,QAAQ,GAAG,QAAQ;IACzE,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,wBAAwB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IAC1D,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,EAAE,EAAE,MAAM,CAAA;IAE1B,OAAO,CAAC,SAAS,CAAoB;IACrC,SAAS,CAAC,SAAS,EAAE,wBAAwB,CAAA;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,MAAM,EAAE,SAAS,CAAA;IAC3B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;IAC1C,SAAS,CAAC,UAAU,EAAE,OAAO,CAAQ;gBAEzB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAc3E,IAAW,QAAQ,IAAI,IAAI,GAAG,IAAI,CAEjC;IAEM,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED;;;;;;OAMG;IACH,cAAc,CAAC,EACb,QAAQ,EACR,UAAU,GACX,EAAE,qBAAqB,GAAG,gBAAgB;IA+D3C;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAkBxD;;OAEG;IACH,UAAU,IAAI,IAAI;IAWlB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAGjC"}
1
+ {"version":3,"file":"frisk-session.d.ts","sourceRoot":"","sources":["../../src/core/frisk-session.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,6 @@ export declare class ToolCallSpan {
53
53
  private tracer;
54
54
  private redaction;
55
55
  private _span;
56
- private _startTimeNs;
57
56
  private _traceContextCarrier;
58
57
  private sessionId;
59
58
  private friskToolVersionId;
@@ -95,7 +94,7 @@ export declare class ToolCallSpan {
95
94
  */
96
95
  private enter;
97
96
  /**
98
- * Exit the span context - records latency and ends the span
97
+ * Exit the span context
99
98
  */
100
99
  private exit;
101
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-span.d.ts","sourceRoot":"","sources":["../../src/core/tool-call-span.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EACV,cAAc,EAGd,KAAK,IAAI,EACT,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAoB5D,OAAO,EACL,gBAAgB,EAGjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAEhB,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,kBAAkB,CAAe;gBAE7B,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,mBAAmB;IAYtB;;OAEG;IACH,OAAO,KAAK,IAAI,GAKf;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,GAAG,IAAI,CAEpD;IAED;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC;IAS9C;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS3E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAItD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAiB5C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAe/B;;OAEG;IACH,OAAO,CAAC,KAAK;IA0Db;;OAEG;IACH,OAAO,CAAC,IAAI;CAcb"}
1
+ {"version":3,"file":"tool-call-span.d.ts","sourceRoot":"","sources":["../../src/core/tool-call-span.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EACV,cAAc,EAGd,KAAK,IAAI,EACT,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAmB5D,OAAO,EACL,gBAAgB,EAGjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAEhB,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,kBAAkB,CAAe;gBAE7B,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,mBAAmB;IAYtB;;OAEG;IACH,OAAO,KAAK,IAAI,GAKf;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,GAAG,IAAI,CAEpD;IAED;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC;IAS9C;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS3E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAItD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAiB5C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAe/B;;OAEG;IACH,OAAO,CAAC,KAAK;IAwDb;;OAEG;IACH,OAAO,CAAC,IAAI;CAOb"}
@@ -1,3 +1,3 @@
1
1
  export declare const SDK_NAME: "@friskai/frisk-js";
2
- export declare const SDK_VERSION: "0.2.8";
2
+ export declare const SDK_VERSION: "0.2.10";
3
3
  //# sourceMappingURL=sdk-meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-meta.d.ts","sourceRoot":"","sources":["../../src/generated/sdk-meta.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,EAAG,mBAA4B,CAAC;AACrD,eAAO,MAAM,WAAW,EAAG,OAAgB,CAAC"}
1
+ {"version":3,"file":"sdk-meta.d.ts","sourceRoot":"","sources":["../../src/generated/sdk-meta.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,EAAG,mBAA4B,CAAC;AACrD,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -44103,9 +44103,11 @@ var ATTRIBUTE_NAME_DECISION_OUTCOME = "frisk.decision.outcome";
44103
44103
  var ATTRIBUTE_NAME_DECISION_REASON = "frisk.decision.reason";
44104
44104
  var ATTRIBUTE_NAME_ERROR_TYPE = "error.type";
44105
44105
  var ATTRIBUTE_NAME_ERROR_MESSAGE = "error.message";
44106
- var ATTRIBUTE_NAME_LATENCY_NS = "latency_ns";
44107
44106
  var ATTRIBUTE_NAME_TOOL_CALL_IS_SUCCESS = "frisk.tool_call.is_success";
44108
44107
  var ATTRIBUTE_NAME_TOOL_CALL_IS_ERROR = "frisk.tool_call.is_error";
44108
+ var ATTRIBUTE_NAME_TOOL_CALL_COUNT = "frisk.tool_calls.count";
44109
+ var ATTRIBUTE_NAME_TOOL_CALL_ERROR_COUNT = "frisk.tool_calls.error_count";
44110
+ var ATTRIBUTE_NAME_TOOL_CALL_SEQUENCE_NUMBER = "frisk.tool_call.sequence_number";
44109
44111
  // src/telemetry/tracing-manager.ts
44110
44112
  var import_grpc_js = __toESM(require_src3(), 1);
44111
44113
  var import_exporter_trace_otlp_grpc = __toESM(require_src12(), 1);
@@ -44161,6 +44163,9 @@ class TracingManager {
44161
44163
  }
44162
44164
  }
44163
44165
 
44166
+ // src/core/frisk-session.ts
44167
+ var import_api2 = __toESM(require_src4(), 1);
44168
+
44164
44169
  // ../../node_modules/zod/v4/core/core.js
44165
44170
  var NEVER = Object.freeze({
44166
44171
  status: "aborted"
@@ -48510,7 +48515,6 @@ class ToolCallSpan {
48510
48515
  tracer;
48511
48516
  redaction;
48512
48517
  _span = null;
48513
- _startTimeNs = null;
48514
48518
  _traceContextCarrier = null;
48515
48519
  sessionId;
48516
48520
  friskToolVersionId;
@@ -48591,7 +48595,6 @@ class ToolCallSpan {
48591
48595
  }
48592
48596
  enter() {
48593
48597
  const parentContext = this.parent ? import_api.trace.setSpan(import_api.context.active(), this.parent) : import_api.context.active();
48594
- this._startTimeNs = process.hrtime.bigint();
48595
48598
  const redactedToolArgsResult = this.adapter.serializeToolArgs(removeLlmReasoningArg(this.toolCall.args), { redact: this.redaction.redactToolArgs });
48596
48599
  const redactedAgentStateResult = this.adapter.serializeAgentState(this.agentState, { redact: this.redaction.redactAgentState });
48597
48600
  this._span = this.tracer.startSpan(SPAN_NAME_DECIDE_TOOL_CALL, {
@@ -48617,11 +48620,6 @@ class ToolCallSpan {
48617
48620
  if (!this.span) {
48618
48621
  return;
48619
48622
  }
48620
- if (this._startTimeNs !== null) {
48621
- const endTimeNs = process.hrtime.bigint();
48622
- const latencyNs = endTimeNs - this._startTimeNs;
48623
- this.setAttribute(ATTRIBUTE_NAME_LATENCY_NS, Number(latencyNs));
48624
- }
48625
48623
  this.span.end();
48626
48624
  }
48627
48625
  }
@@ -48645,6 +48643,9 @@ class FriskSession {
48645
48643
  logger;
48646
48644
  _rootRunId = null;
48647
48645
  _isTracing = false;
48646
+ toolCallSequenceNumber = 0;
48647
+ toolCallSequenceGenerator = this.createToolCallSequenceGenerator();
48648
+ toolCallErrorCount = 0;
48648
48649
  constructor({ frisk, redact, tracer, logging }) {
48649
48650
  const sessionId = this.constructor.generateSessionId();
48650
48651
  this.logger = deriveSdkLogger(logging, {
@@ -48667,6 +48668,63 @@ class FriskSession {
48667
48668
  get rootRunId() {
48668
48669
  return this._rootRunId;
48669
48670
  }
48671
+ async createToolCallSpan({
48672
+ name,
48673
+ args: toolArgsInput
48674
+ }) {
48675
+ const toolArgs = this.validateToolArgs(toolArgsInput);
48676
+ const redactedToolArgsResult = this.frisk.adapter?.serializeToolArgs(removeLlmReasoningArg(toolArgs), { redact: this.redaction.redactToolArgs }) ?? {
48677
+ value: "{}",
48678
+ redactedPaths: []
48679
+ };
48680
+ const sessionSpan = this.rootSpan;
48681
+ const parentContext = sessionSpan ? import_api2.trace.setSpan(import_api2.context.active(), sessionSpan) : import_api2.context.active();
48682
+ const spanAttributes = {
48683
+ [ATTRIBUTE_NAME_SESSION_ID]: this.id,
48684
+ [ATTRIBUTE_NAME_TOOL_NAME]: name,
48685
+ [ATTRIBUTE_NAME_TOOL_ARGS_JSON]: redactedToolArgsResult.value,
48686
+ [ATTRIBUTE_NAME_TOOL_ARGS_REDACTED_PATHS_JSON]: JSON.stringify(redactedToolArgsResult.redactedPaths),
48687
+ [ATTRIBUTE_NAME_TOOL_CALL_SEQUENCE_NUMBER]: this.toolCallSequenceGenerator.next().value
48688
+ };
48689
+ await this.frisk.toolRegistrationComplete;
48690
+ const registeredTool = this.frisk.getRegisteredTool(name);
48691
+ if (registeredTool) {
48692
+ spanAttributes[ATTRIBUTE_NAME_FRISK_TOOL_ID] = registeredTool.id;
48693
+ spanAttributes[ATTRIBUTE_NAME_FRISK_TOOL_VERSION_ID] = registeredTool.versionId;
48694
+ }
48695
+ const span = this.getTracer().startSpan(SPAN_NAME_OBSERVE_TOOL_CALL, {
48696
+ attributes: spanAttributes
48697
+ }, parentContext);
48698
+ return span;
48699
+ }
48700
+ closeToolCallSpan({
48701
+ toolCallId,
48702
+ span,
48703
+ err,
48704
+ status
48705
+ }) {
48706
+ if (toolCallId) {
48707
+ span.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_ID, toolCallId);
48708
+ }
48709
+ if (status === "error" /* Error */ || !!err) {
48710
+ this.incrementToolCallErrors();
48711
+ span.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_IS_ERROR, true);
48712
+ span.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_IS_SUCCESS, false);
48713
+ } else if (status === "success" /* Success */) {
48714
+ span.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_IS_SUCCESS, true);
48715
+ span.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_IS_ERROR, false);
48716
+ }
48717
+ if (err && err instanceof Error) {
48718
+ span.setAttribute(ATTRIBUTE_NAME_ERROR_MESSAGE, `${err}`);
48719
+ span.setAttribute(ATTRIBUTE_NAME_ERROR_TYPE, `${err.constructor.name}`);
48720
+ }
48721
+ span.end();
48722
+ }
48723
+ validateToolArgs(parsedToolArgs) {
48724
+ const isPlainObject2 = typeof parsedToolArgs === "object" && parsedToolArgs !== null && !Array.isArray(parsedToolArgs) && (Object.getPrototypeOf(parsedToolArgs) === Object.prototype || Object.getPrototypeOf(parsedToolArgs) === null);
48725
+ const toolArgs = isPlainObject2 ? parsedToolArgs : {};
48726
+ return toolArgs;
48727
+ }
48670
48728
  decideToolCall({
48671
48729
  toolCall,
48672
48730
  agentState
@@ -48723,6 +48781,20 @@ class FriskSession {
48723
48781
  }
48724
48782
  });
48725
48783
  }
48784
+ *createToolCallSequenceGenerator() {
48785
+ while (true) {
48786
+ yield this.toolCallSequenceNumber++;
48787
+ }
48788
+ }
48789
+ getToolCallCount() {
48790
+ return this.toolCallSequenceNumber;
48791
+ }
48792
+ incrementToolCallErrors() {
48793
+ this.toolCallErrorCount += 1;
48794
+ }
48795
+ getToolCallErrorCount() {
48796
+ return this.toolCallErrorCount;
48797
+ }
48726
48798
  initTracing({ runId, inputs }) {
48727
48799
  this._rootRunId = runId;
48728
48800
  this._isTracing = true;
@@ -48738,6 +48810,8 @@ class FriskSession {
48738
48810
  }
48739
48811
  endTracing() {
48740
48812
  if (this._rootSpan) {
48813
+ this._rootSpan.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_COUNT, this.getToolCallCount());
48814
+ this._rootSpan.setAttribute(ATTRIBUTE_NAME_TOOL_CALL_ERROR_COUNT, this.getToolCallErrorCount());
48741
48815
  this._rootSpan.end();
48742
48816
  }
48743
48817
  this._isTracing = false;
@@ -48792,7 +48866,7 @@ import { fileURLToPath } from "node:url";
48792
48866
 
48793
48867
  // src/generated/sdk-meta.ts
48794
48868
  var SDK_NAME = "@friskai/frisk-js";
48795
- var SDK_VERSION = "0.2.8";
48869
+ var SDK_VERSION = "0.2.10";
48796
48870
 
48797
48871
  // src/core/sdk-attributes/read-sdk-meta.ts
48798
48872
  function getSdkMeta() {
@@ -49466,5 +49540,5 @@ export {
49466
49540
  AccessTokenProvider
49467
49541
  };
49468
49542
 
49469
- //# debugId=59297CD6351BA8FC64756E2164756E21
49543
+ //# debugId=40ACC90B60961E6C64756E2164756E21
49470
49544
  //# sourceMappingURL=index.js.map