@friskai/frisk-js 0.3.0 → 0.3.2

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.
Files changed (32) hide show
  1. package/dist/adapters/langchain/frisk-callback-handler.d.ts +80 -3
  2. package/dist/adapters/langchain/frisk-callback-handler.d.ts.map +1 -1
  3. package/dist/adapters/langchain/index.js +564 -238
  4. package/dist/adapters/langchain/index.js.map +1 -453
  5. package/dist/core/frisk-session.d.ts +43 -10
  6. package/dist/core/frisk-session.d.ts.map +1 -1
  7. package/dist/core/llm-reasoning/extractLlmReasoning.d.ts +8 -0
  8. package/dist/core/llm-reasoning/extractLlmReasoning.d.ts.map +1 -0
  9. package/dist/core/spans/frisk-span.d.ts +38 -0
  10. package/dist/core/spans/frisk-span.d.ts.map +1 -0
  11. package/dist/core/spans/index.d.ts +7 -0
  12. package/dist/core/spans/index.d.ts.map +1 -0
  13. package/dist/core/spans/llm-call-span.d.ts +23 -0
  14. package/dist/core/spans/llm-call-span.d.ts.map +1 -0
  15. package/dist/core/spans/operation-span.d.ts +13 -0
  16. package/dist/core/spans/operation-span.d.ts.map +1 -0
  17. package/dist/core/spans/session-span.d.ts +20 -0
  18. package/dist/core/spans/session-span.d.ts.map +1 -0
  19. package/dist/core/spans/tool-call-decision-span.d.ts +27 -0
  20. package/dist/core/spans/tool-call-decision-span.d.ts.map +1 -0
  21. package/dist/core/spans/tool-call-observation-span.d.ts +28 -0
  22. package/dist/core/spans/tool-call-observation-span.d.ts.map +1 -0
  23. package/dist/generated/sdk-meta.d.ts +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +318 -171
  27. package/dist/index.js.map +1 -439
  28. package/dist/telemetry/constants.d.ts +24 -0
  29. package/dist/telemetry/constants.d.ts.map +1 -1
  30. package/package.json +2 -1
  31. package/dist/core/tool-call-span.d.ts +0 -102
  32. package/dist/core/tool-call-span.d.ts.map +0 -1
@@ -3,11 +3,12 @@
3
3
  *
4
4
  * FriskSession represents a single session for tracking tool calls and tracing.
5
5
  */
6
- import { Span, Tracer } from '@opentelemetry/api';
6
+ import { type Tracer } from '@opentelemetry/api';
7
7
  import { FriskSDKLoggingOptions, SDKLogger } from '../logging';
8
8
  import type { DecideToolCallOptions } from './extensions';
9
9
  import type { Frisk } from './frisk';
10
10
  import { type ResolvedRedactionOptions } from './redaction-options';
11
+ import { FriskSpan, LlmCallSpan, OperationSpan, SessionSpan, ToolCallObservationSpan } from './spans';
11
12
  import { ToolCallDecision } from './types';
12
13
  type AnyFrisk = Frisk<any, any, any, any>;
13
14
  export interface FriskSessionOptions<FriskClass extends AnyFrisk = AnyFrisk> {
@@ -45,23 +46,40 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
45
46
  private toolCallSequenceNumber;
46
47
  private toolCallSequenceGenerator;
47
48
  private toolCallErrorCount;
49
+ private tokenUsageInput;
50
+ private tokenUsageOutput;
51
+ private tokenUsageTotal;
48
52
  constructor({ frisk, redact, tracer, logging }: FriskSessionOptions<TFrisk>);
49
- get rootSpan(): Span | null;
53
+ get rootSpan(): SessionSpan | null;
50
54
  getTracer(): Tracer;
51
55
  /**
52
56
  * Check if tracing is active
53
57
  */
54
58
  get isTracing(): boolean;
55
59
  get rootRunId(): string | null;
56
- createToolCallSpan({ name, args: toolArgsInput, agentState, }: {
60
+ /**
61
+ * Open a span for a single LLM invocation, parented under `parent` (or the
62
+ * session root span).
63
+ */
64
+ createLlmCallSpan({ parent, }?: {
65
+ parent?: FriskSpan | null;
66
+ }): LlmCallSpan;
67
+ /**
68
+ * Open a span for a single operation (e.g. a nested LangChain run), parented
69
+ * under `parent` (or the session root span).
70
+ */
71
+ createOperationSpan({ parent, }?: {
72
+ parent?: FriskSpan | null;
73
+ }): OperationSpan;
74
+ createToolCallSpan({ name, args: toolArgsInput, agentState, parent, }: {
57
75
  name: string;
58
76
  args: object | any;
59
77
  agentState?: Record<string, unknown> | null;
60
- }): Promise<Span>;
61
- closeToolCallSpan({ toolCallId, // todo! Make this a method on toolcallspan
62
- span, err, status, }: {
78
+ parent?: FriskSpan | null;
79
+ }): Promise<ToolCallObservationSpan>;
80
+ closeToolCallSpan({ toolCallId, span, err, status, }: {
63
81
  toolCallId: string | null;
64
- span: Span;
82
+ span: ToolCallObservationSpan;
65
83
  status: ToolCallStatus | null;
66
84
  err: Error | null;
67
85
  }): void;
@@ -71,17 +89,32 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
71
89
  *
72
90
  * This method wraps the tool call evaluation in an OpenTelemetry span,
73
91
  * handling redaction of sensitive data, latency recording, and trace
74
- * context propagation.
92
+ * context propagation. Serialization/redaction and decision/error
93
+ * translation live here; the span is a pure typed-attribute wrapper.
75
94
  */
76
95
  decideToolCall({ toolCall, agentState, }: DecideToolCallOptions): ToolCallDecision;
77
96
  private createToolCallSequenceGenerator;
78
97
  getToolCallCount(): number;
79
98
  incrementToolCallErrors(): void;
80
99
  getToolCallErrorCount(): number;
100
+ /**
101
+ * Add one LLM call's token usage to the session running totals and mirror the
102
+ * cumulative values onto the root session span. Missing counts default to 0.
103
+ */
104
+ recordTokenUsage({ inputTokens, outputTokens, totalTokens, }: {
105
+ inputTokens?: number;
106
+ outputTokens?: number;
107
+ totalTokens?: number;
108
+ }): void;
109
+ getTokenUsage(): {
110
+ inputTokens: number;
111
+ outputTokens: number;
112
+ totalTokens: number;
113
+ };
81
114
  /**
82
115
  * Initialize tracing for this session
83
116
  */
84
- initTracing({ runId, agentState }: InitTracingOptions): Span;
117
+ initTracing({ runId, agentState }: InitTracingOptions): SessionSpan;
85
118
  /**
86
119
  * End tracing for this session
87
120
  */
@@ -89,7 +122,7 @@ export declare class FriskSession<TFrisk extends AnyFrisk = AnyFrisk> {
89
122
  /**
90
123
  * Set the root span for the session
91
124
  */
92
- setRootSpan(span: Span): void;
125
+ setRootSpan(span: SessionSpan): void;
93
126
  private static generateSessionId;
94
127
  }
95
128
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"frisk-session.d.ts","sourceRoot":"","sources":["../../src/core/frisk-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frisk-session.d.ts","sourceRoot":"","sources":["../../src/core/frisk-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Return the synthetic LLM reasoning argument as a string, if present.
3
+ *
4
+ * Returns `null` when `toolArgs` is not a plain object or the reasoning arg is
5
+ * absent or nullish.
6
+ */
7
+ export declare function extractLlmReasoning(toolArgs: unknown): string | null;
8
+ //# sourceMappingURL=extractLlmReasoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractLlmReasoning.d.ts","sourceRoot":"","sources":["../../../src/core/llm-reasoning/extractLlmReasoning.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAepE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * FriskSpan — typed wrapper around an OpenTelemetry span with an in-memory
3
+ * attribute mirror.
4
+ *
5
+ * Subclasses pass their `spanName` and `attributeFields` (public camelCase
6
+ * field name -> telemetry attribute constant) to `super()` and expose a typed
7
+ * `setAttributes({...})` API. Every write is validated against the field map,
8
+ * mirrored into an in-memory record (keyed by constant), and written verbatim
9
+ * to the underlying otel span. Span classes never format or transform values.
10
+ */
11
+ import { type AttributeValue, type Span, type Tracer } from '@opentelemetry/api';
12
+ export declare abstract class FriskSpan {
13
+ private readonly _spanName;
14
+ private readonly _attributeFields;
15
+ private readonly _otelSpan;
16
+ private readonly _attributes;
17
+ private _ended;
18
+ protected constructor({ tracer, parent, spanName, attributeFields, }: {
19
+ tracer: Tracer;
20
+ parent?: FriskSpan | null;
21
+ spanName: string;
22
+ attributeFields: Readonly<Record<string, string>>;
23
+ });
24
+ /** The wrapped otel span. Internal to `core` (trace-context propagation). */
25
+ get otelSpan(): Span;
26
+ /** The otel span id — for cross-span linkage without leaking otel types. */
27
+ get spanId(): string;
28
+ /** Set a single attribute by field name, e.g. `setAttribute('prompt', x)`. */
29
+ setAttribute(field: string, value: AttributeValue): void;
30
+ /** Read the in-memory value for `field`, or undefined if not set. */
31
+ getAttribute(field: string): AttributeValue | undefined;
32
+ /** End the underlying otel span. Subsequent calls are no-ops. */
33
+ end(): void;
34
+ /** Worker for subclasses' typed `setAttributes`. Skips null/undefined. */
35
+ protected setAttributesByField(values: Record<string, AttributeValue | null | undefined>): void;
36
+ private constantFor;
37
+ }
38
+ //# sourceMappingURL=frisk-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frisk-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/frisk-span.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,IAAI,EACT,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAA;AAE3B,8BAAsB,SAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,MAAM,CAAQ;IAEtB,SAAS,aAAa,EACpB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;QACzB,QAAQ,EAAE,MAAM,CAAA;QAChB,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAClD;IASD,6EAA6E;IAC7E,IAAI,QAAQ,IAAI,IAAI,CAEnB;IAED,4EAA4E;IAC5E,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,8EAA8E;IAC9E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI;IAIxD,qEAAqE;IACrE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIvD,iEAAiE;IACjE,GAAG,IAAI,IAAI;IAQX,0EAA0E;IAC1E,SAAS,CAAC,oBAAoB,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,GACxD,IAAI;IAWP,OAAO,CAAC,WAAW;CASpB"}
@@ -0,0 +1,7 @@
1
+ export { FriskSpan } from './frisk-span';
2
+ export { LlmCallSpan } from './llm-call-span';
3
+ export { OperationSpan } from './operation-span';
4
+ export { SessionSpan } from './session-span';
5
+ export { ToolCallDecisionSpan } from './tool-call-decision-span';
6
+ export { ToolCallObservationSpan } from './tool-call-observation-span';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/spans/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,23 @@
1
+ import type { Tracer } from '@opentelemetry/api';
2
+ import { FriskSpan } from './frisk-span';
3
+ /** Typed span for a single LLM invocation. */
4
+ export declare class LlmCallSpan extends FriskSpan {
5
+ constructor(args: {
6
+ tracer: Tracer;
7
+ parent?: FriskSpan | null;
8
+ });
9
+ setAttributes(values: {
10
+ sessionId?: string;
11
+ promptsJson?: string;
12
+ responsesJson?: string;
13
+ toolCallsJson?: string;
14
+ modelName?: string;
15
+ modelProvider?: string;
16
+ inputTokens?: number;
17
+ outputTokens?: number;
18
+ totalTokens?: number;
19
+ errorType?: string;
20
+ errorMessage?: string;
21
+ }): void;
22
+ }
23
+ //# sourceMappingURL=llm-call-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-call-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/llm-call-span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAehE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAgBxC,8CAA8C;AAC9C,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE;IAI/D,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,GAAG,IAAI;CAKT"}
@@ -0,0 +1,13 @@
1
+ import type { Tracer } from '@opentelemetry/api';
2
+ import { FriskSpan } from './frisk-span';
3
+ /** Typed span for a single operation (e.g. a nested LangChain run). */
4
+ export declare class OperationSpan extends FriskSpan {
5
+ constructor(args: {
6
+ tracer: Tracer;
7
+ parent?: FriskSpan | null;
8
+ });
9
+ setAttributes(values: {
10
+ sessionId?: string;
11
+ }): void;
12
+ }
13
+ //# sourceMappingURL=operation-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/operation-span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAKhE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMxC,uEAAuE;AACvE,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE;IAI/D,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,20 @@
1
+ import type { Tracer } from '@opentelemetry/api';
2
+ import { FriskSpan } from './frisk-span';
3
+ /** Typed span for the Frisk session root. */
4
+ export declare class SessionSpan extends FriskSpan {
5
+ constructor(args: {
6
+ tracer: Tracer;
7
+ parent?: FriskSpan | null;
8
+ });
9
+ setAttributes(values: {
10
+ sessionId?: string;
11
+ remoteSessionId?: string;
12
+ prompt?: string;
13
+ toolCallCount?: number;
14
+ toolCallErrorCount?: number;
15
+ inputTokens?: number;
16
+ outputTokens?: number;
17
+ totalTokens?: number;
18
+ }): void;
19
+ }
20
+ //# sourceMappingURL=session-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/session-span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAYhE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAcxC,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE;IAQ/D,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,GAAG,IAAI;CAKT"}
@@ -0,0 +1,27 @@
1
+ import type { Tracer } from '@opentelemetry/api';
2
+ import { FriskSpan } from './frisk-span';
3
+ /** Typed span for a tool-call policy decision. */
4
+ export declare class ToolCallDecisionSpan extends FriskSpan {
5
+ constructor(args: {
6
+ tracer: Tracer;
7
+ parent?: FriskSpan | null;
8
+ });
9
+ setAttributes(values: {
10
+ sessionId?: string;
11
+ toolName?: string;
12
+ toolCallId?: string;
13
+ toolArgsJson?: string;
14
+ toolArgsRedactedPathsJson?: string;
15
+ agentStateJson?: string;
16
+ agentStateRedactedPathsJson?: string;
17
+ friskToolId?: string;
18
+ friskToolVersionId?: string;
19
+ llmReasoning?: string;
20
+ decisionOutcome?: string;
21
+ decisionMatchedRuleCount?: number;
22
+ decisionReason?: string;
23
+ errorType?: string;
24
+ errorMessage?: string;
25
+ }): void;
26
+ }
27
+ //# sourceMappingURL=tool-call-decision-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-decision-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/tool-call-decision-span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAmBhE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAoBxC,kDAAkD;AAClD,qBAAa,oBAAqB,SAAQ,SAAS;gBACrC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE;IAQ/D,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,yBAAyB,CAAC,EAAE,MAAM,CAAA;QAClC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,2BAA2B,CAAC,EAAE,MAAM,CAAA;QACpC,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,wBAAwB,CAAC,EAAE,MAAM,CAAA;QACjC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,GAAG,IAAI;CAKT"}
@@ -0,0 +1,28 @@
1
+ import type { Tracer } from '@opentelemetry/api';
2
+ import { FriskSpan } from './frisk-span';
3
+ /** Typed span for observing an executed tool call. */
4
+ export declare class ToolCallObservationSpan extends FriskSpan {
5
+ constructor(args: {
6
+ tracer: Tracer;
7
+ parent?: FriskSpan | null;
8
+ });
9
+ setAttributes(values: {
10
+ sessionId?: string;
11
+ toolName?: string;
12
+ toolCallId?: string;
13
+ toolArgsJson?: string;
14
+ toolArgsRedactedPathsJson?: string;
15
+ agentStateJson?: string;
16
+ agentStateRedactedPathsJson?: string;
17
+ toolCallSequenceNumber?: number;
18
+ friskToolId?: string;
19
+ friskToolVersionId?: string;
20
+ llmReasoning?: string;
21
+ isSuccess?: boolean;
22
+ isError?: boolean;
23
+ errorMessage?: string;
24
+ errorType?: string;
25
+ llmCallSpanId?: string;
26
+ }): void;
27
+ }
28
+ //# sourceMappingURL=tool-call-observation-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-observation-span.d.ts","sourceRoot":"","sources":["../../../src/core/spans/tool-call-observation-span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAoBhE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAqBxC,sDAAsD;AACtD,qBAAa,uBAAwB,SAAQ,SAAS;gBACxC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE;IAQ/D,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,yBAAyB,CAAC,EAAE,MAAM,CAAA;QAClC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,2BAA2B,CAAC,EAAE,MAAM,CAAA;QACpC,sBAAsB,CAAC,EAAE,MAAM,CAAA;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,GAAG,IAAI;CAKT"}
@@ -1,3 +1,3 @@
1
1
  export declare const SDK_NAME: "@friskai/frisk-js";
2
- export declare const SDK_VERSION: "0.3.0";
2
+ export declare const SDK_VERSION: "0.3.2";
3
3
  //# sourceMappingURL=sdk-meta.d.ts.map
package/dist/index.d.ts CHANGED
@@ -36,8 +36,8 @@ export { Frisk } from './core/frisk';
36
36
  export { FriskSession } from './core/frisk-session';
37
37
  export { type RedactionOptions, type ResolvedRedactionOptions, } from './core/redaction-options';
38
38
  export { SessionRegistry } from './core/session-registry';
39
+ export { FriskSpan, LlmCallSpan, OperationSpan, SessionSpan, ToolCallDecisionSpan, ToolCallObservationSpan, } from './core/spans';
39
40
  export { type ToolApprovalRequest, type ToolApprovalRequestInput, type ToolApprovalRequestStatusUpdateResult, ToolApprovalStatus, } from './core/tool-approval-request';
40
- export { ToolCallSpan } from './core/tool-call-span';
41
41
  export { DecisionOutcome, type FriskOptions, type NormalizedToolCall, type RedactionResult, type ToolCallDecision, type TraceContextCarrier, } from './core/types';
42
42
  export { FRISK_API_KEY, FRISK_BASE_URL, FRISK_BASE_URL_DEFAULT, FRISK_TELEMETRY_ENDPOINT, FRISK_TELEMETRY_ENDPOINT_DEFAULT, getEnv, requireEnv, } from './env';
43
43
  export { FriskBaseURLNotFoundError, FriskError, FriskInvalidAPIKeyError, InvalidAccessTokenError, InvalidFriskSessionError, MissingAPIKeyError, MissingBaseURLError, MissingFriskSessionContextError, MissingOtlpEndpointError, SessionNotFoundError, UnexpectedFriskServerResponseError, } from './errors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,qCAAqC,EAC1C,kBAAkB,GACnB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,MAAM,EACN,UAAU,GACX,MAAM,OAAO,CAAA;AAEd,OAAO,EACL,yBAAyB,EACzB,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,GACnC,MAAM,UAAU,CAAA;AAEjB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,YAAY,IAAI,qBAAqB,GAC3C,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,qCAAqC,EAC1C,kBAAkB,GACnB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,MAAM,EACN,UAAU,GACX,MAAM,OAAO,CAAA;AAEd,OAAO,EACL,yBAAyB,EACzB,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,+BAA+B,EAC/B,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,GACnC,MAAM,UAAU,CAAA;AAEjB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,YAAY,IAAI,qBAAqB,GAC3C,MAAM,qBAAqB,CAAA"}