agentid-sdk 0.1.22 → 0.1.24

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.mjs CHANGED
@@ -6,9 +6,169 @@ import {
6
6
  SecurityBlockError,
7
7
  getInjectionScanner,
8
8
  scanWithRegex
9
- } from "./chunk-FVTL572H.mjs";
9
+ } from "./chunk-JLHAS2EE.mjs";
10
+
11
+ // src/transparency-badge.tsx
12
+ import * as React from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var DEFAULT_MESSAGE = "You are interacting with an AI.";
15
+ var DEFAULT_BASE_URL = "https://api.getagentid.com/v1";
16
+ function resolveBadgeMessage(params) {
17
+ if (typeof params.message === "string" && params.message.trim().length > 0) {
18
+ return params.message.trim();
19
+ }
20
+ if (params.metadata?.disclosure) {
21
+ return params.metadata.disclosure;
22
+ }
23
+ return DEFAULT_MESSAGE;
24
+ }
25
+ function normalizeBaseUrl(baseUrl) {
26
+ const candidate = typeof baseUrl === "string" && baseUrl.trim().length > 0 ? baseUrl.trim() : DEFAULT_BASE_URL;
27
+ return candidate.replace(/\/+$/, "");
28
+ }
29
+ function createEventId() {
30
+ try {
31
+ if (typeof globalThis !== "undefined" && globalThis.crypto?.randomUUID) {
32
+ return globalThis.crypto.randomUUID();
33
+ }
34
+ } catch {
35
+ }
36
+ const seed = Math.random().toString(16).slice(2).padEnd(12, "0").slice(0, 12);
37
+ return `00000000-0000-4000-8000-${seed}`;
38
+ }
39
+ async function sendTransparencyBadgeRenderedTelemetry(params) {
40
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
41
+ const eventId = createEventId();
42
+ const payload = {
43
+ event_id: eventId,
44
+ system_id: params.telemetry.systemId,
45
+ input: "__agentid_transparency_badge_rendered__",
46
+ output: params.disclosureText,
47
+ model: params.telemetry.model ?? "agentid-transparency-badge",
48
+ user_id: params.telemetry.userId,
49
+ event_type: "transparency_badge_rendered",
50
+ severity: "info",
51
+ timestamp,
52
+ metadata: {
53
+ compliance_event: "transparency_badge_rendered",
54
+ rendered_at: timestamp,
55
+ placement: params.placement,
56
+ disclosure_text: params.disclosureText,
57
+ ...params.telemetry.metadata ?? {}
58
+ }
59
+ };
60
+ const targetIngestUrl = typeof params.telemetry.ingestUrl === "string" && params.telemetry.ingestUrl.trim().length > 0 ? params.telemetry.ingestUrl.trim() : `${normalizeBaseUrl(params.telemetry.baseUrl)}/ingest`;
61
+ const headers = {
62
+ "Content-Type": "application/json",
63
+ "X-AgentID-SDK-Version": "js-1.1.0",
64
+ ...params.telemetry.headers ?? {}
65
+ };
66
+ if (typeof params.telemetry.apiKey === "string" && params.telemetry.apiKey.trim().length > 0) {
67
+ headers["x-agentid-api-key"] = params.telemetry.apiKey.trim();
68
+ }
69
+ const response = await fetch(targetIngestUrl, {
70
+ method: "POST",
71
+ headers,
72
+ body: JSON.stringify(payload),
73
+ keepalive: true
74
+ });
75
+ if (!response.ok) {
76
+ throw new Error(
77
+ `AgentID transparency badge telemetry failed (status=${response.status})`
78
+ );
79
+ }
80
+ }
81
+ function AgentIDTransparencyBadge(props) {
82
+ const placement = props.placement ?? "chat-header";
83
+ const fixed = props.fixed ?? true;
84
+ const text = resolveBadgeMessage({
85
+ metadata: props.metadata,
86
+ message: props.message
87
+ });
88
+ const hasLoggedRenderRef = React.useRef(false);
89
+ React.useEffect(() => {
90
+ if (hasLoggedRenderRef.current) {
91
+ return;
92
+ }
93
+ hasLoggedRenderRef.current = true;
94
+ void sendTransparencyBadgeRenderedTelemetry({
95
+ telemetry: props.telemetry,
96
+ disclosureText: text,
97
+ placement
98
+ }).catch((error) => {
99
+ if (typeof props.telemetry.onError === "function") {
100
+ props.telemetry.onError(error);
101
+ return;
102
+ }
103
+ console.warn(error);
104
+ });
105
+ }, [placement, props.telemetry, text]);
106
+ const containerStyle = placement === "watermark-overlay" ? {
107
+ position: fixed ? "fixed" : "absolute",
108
+ right: 16,
109
+ bottom: 16,
110
+ zIndex: 2147483e3,
111
+ pointerEvents: "none",
112
+ opacity: 0.95
113
+ } : {
114
+ position: fixed ? "fixed" : "sticky",
115
+ top: 0,
116
+ left: 0,
117
+ right: 0,
118
+ zIndex: 2147483e3,
119
+ pointerEvents: "none"
120
+ };
121
+ const badgeStyle = placement === "watermark-overlay" ? {
122
+ display: "inline-flex",
123
+ alignItems: "center",
124
+ gap: 8,
125
+ background: "rgba(15, 23, 42, 0.9)",
126
+ color: "#f8fafc",
127
+ borderRadius: 9999,
128
+ padding: "8px 12px",
129
+ fontFamily: "ui-sans-serif, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif",
130
+ fontSize: 12,
131
+ fontWeight: 600,
132
+ boxShadow: "0 8px 24px rgba(15, 23, 42, 0.28)",
133
+ pointerEvents: "none"
134
+ } : {
135
+ display: "flex",
136
+ alignItems: "center",
137
+ justifyContent: "center",
138
+ gap: 8,
139
+ background: "#0f172a",
140
+ color: "#f8fafc",
141
+ borderBottom: "1px solid rgba(148, 163, 184, 0.35)",
142
+ padding: "9px 12px",
143
+ fontFamily: "ui-sans-serif, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif",
144
+ fontSize: 13,
145
+ fontWeight: 600,
146
+ pointerEvents: "none"
147
+ };
148
+ const iconStyle = {
149
+ width: 22,
150
+ height: 22,
151
+ minWidth: 22,
152
+ borderRadius: 9999,
153
+ background: "#2563eb",
154
+ color: "#eff6ff",
155
+ display: "inline-flex",
156
+ alignItems: "center",
157
+ justifyContent: "center",
158
+ fontSize: 10,
159
+ fontWeight: 800,
160
+ letterSpacing: 0.5,
161
+ lineHeight: 1,
162
+ border: "1px solid rgba(191, 219, 254, 0.55)"
163
+ };
164
+ return /* @__PURE__ */ jsx("div", { className: props.className, style: containerStyle, "aria-live": "polite", role: "status", children: /* @__PURE__ */ jsxs("div", { style: badgeStyle, children: [
165
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", style: iconStyle, children: "AI" }),
166
+ /* @__PURE__ */ jsx("span", { children: text })
167
+ ] }) });
168
+ }
10
169
  export {
11
170
  AgentID,
171
+ AgentIDTransparencyBadge,
12
172
  InjectionScanner,
13
173
  OpenAIAdapter,
14
174
  PIIManager,
@@ -1,5 +1,5 @@
1
1
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
2
- import { A as AgentID } from './agentid-BmsXTOCc.mjs';
2
+ import { A as AgentID } from './agentid-BGCUoYV7.mjs';
3
3
 
4
4
  /**
5
5
  * LangChainJS callback handler (dependency-free shape).
@@ -1,5 +1,5 @@
1
1
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
2
- import { A as AgentID } from './agentid-BmsXTOCc.js';
2
+ import { A as AgentID } from './agentid-BGCUoYV7.js';
3
3
 
4
4
  /**
5
5
  * LangChainJS callback handler (dependency-free shape).
package/dist/langchain.js CHANGED
@@ -27,7 +27,7 @@ var import_base = require("@langchain/core/callbacks/base");
27
27
 
28
28
  // src/sdk-version.ts
29
29
  var FALLBACK_SDK_VERSION = "js-0.0.0-dev";
30
- var AGENTID_SDK_VERSION_HEADER = "js-0.1.22".trim().length > 0 ? "js-0.1.22" : FALLBACK_SDK_VERSION;
30
+ var AGENTID_SDK_VERSION_HEADER = "js-0.1.24".trim().length > 0 ? "js-0.1.24" : FALLBACK_SDK_VERSION;
31
31
 
32
32
  // src/pii-national-identifiers.ts
33
33
  var REGION_ANCHORS = {
@@ -215,6 +215,21 @@ var SecurityBlockError = class extends Error {
215
215
  function safeString(val) {
216
216
  return typeof val === "string" ? val : "";
217
217
  }
218
+ function coerceTransparencyMetadata(value) {
219
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
220
+ return void 0;
221
+ }
222
+ const raw = value;
223
+ if (raw.is_ai_generated !== true || raw.disclosure !== "You are interacting with an AI." || raw.article !== "EU_AI_ACT_ARTICLE_50" || raw.injection_mode !== "deterministic") {
224
+ return void 0;
225
+ }
226
+ return {
227
+ is_ai_generated: true,
228
+ disclosure: "You are interacting with an AI.",
229
+ article: "EU_AI_ACT_ARTICLE_50",
230
+ injection_mode: "deterministic"
231
+ };
232
+ }
218
233
  function callbackDebugEnabled() {
219
234
  try {
220
235
  return typeof process !== "undefined" && process?.env?.AGENTID_DEBUG_CALLBACK === "1";
@@ -483,6 +498,7 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
483
498
  }
484
499
  const requestedClientEventId = isUuidLike(id) ? id.trim() : createClientEventId();
485
500
  const modelName = extractModel(serialized, extraParams);
501
+ const pipelineStartedAtMs = Date.now();
486
502
  const verdict = await this.agent.guard({
487
503
  input: sanitizedInput,
488
504
  system_id: this.systemId,
@@ -495,6 +511,8 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
495
511
  }
496
512
  const canonicalClientEventId = isUuidLike(verdict.client_event_id) ? verdict.client_event_id.trim() : requestedClientEventId;
497
513
  const guardEventId = typeof verdict.guard_event_id === "string" && verdict.guard_event_id.length > 0 ? verdict.guard_event_id : void 0;
514
+ const guardLatencyMs = typeof verdict.guard_latency_ms === "number" && Number.isFinite(verdict.guard_latency_ms) ? Math.max(0, Math.trunc(verdict.guard_latency_ms)) : Math.max(0, Date.now() - pipelineStartedAtMs);
515
+ const transparency = coerceTransparencyMetadata(verdict.transparency);
498
516
  let transformedInput = typeof verdict.transformed_input === "string" && verdict.transformed_input.length > 0 ? verdict.transformed_input : sanitizedInput;
499
517
  if (transformedInput !== sanitizedInput) {
500
518
  const mutated = setPromptInPrompts(prompts, transformedInput);
@@ -505,9 +523,12 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
505
523
  this.runs.set(id, {
506
524
  input: transformedInput,
507
525
  startedAtMs: Date.now(),
526
+ pipelineStartedAtMs,
527
+ guardLatencyMs,
508
528
  model: modelName,
509
529
  clientEventId: canonicalClientEventId,
510
- guardEventId
530
+ guardEventId,
531
+ transparency
511
532
  });
512
533
  logCallbackDebug("handleLLMStart state_set", {
513
534
  runId: id,
@@ -534,6 +555,7 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
534
555
  }
535
556
  const requestedClientEventId = isUuidLike(id) ? id.trim() : createClientEventId();
536
557
  const modelName = extractModel(serialized, extraParams);
558
+ const pipelineStartedAtMs = Date.now();
537
559
  const verdict = await this.agent.guard({
538
560
  input: sanitizedInput,
539
561
  system_id: this.systemId,
@@ -546,6 +568,8 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
546
568
  }
547
569
  const canonicalClientEventId = isUuidLike(verdict.client_event_id) ? verdict.client_event_id.trim() : requestedClientEventId;
548
570
  const guardEventId = typeof verdict.guard_event_id === "string" && verdict.guard_event_id.length > 0 ? verdict.guard_event_id : void 0;
571
+ const guardLatencyMs = typeof verdict.guard_latency_ms === "number" && Number.isFinite(verdict.guard_latency_ms) ? Math.max(0, Math.trunc(verdict.guard_latency_ms)) : Math.max(0, Date.now() - pipelineStartedAtMs);
572
+ const transparency = coerceTransparencyMetadata(verdict.transparency);
549
573
  let transformedInput = typeof verdict.transformed_input === "string" && verdict.transformed_input.length > 0 ? verdict.transformed_input : sanitizedInput;
550
574
  if (transformedInput !== sanitizedInput) {
551
575
  const mutated = setPromptInMessages(messages, transformedInput);
@@ -556,9 +580,12 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
556
580
  this.runs.set(id, {
557
581
  input: transformedInput,
558
582
  startedAtMs: Date.now(),
583
+ pipelineStartedAtMs,
584
+ guardLatencyMs,
559
585
  model: modelName,
560
586
  clientEventId: canonicalClientEventId,
561
- guardEventId
587
+ guardEventId,
588
+ transparency
562
589
  });
563
590
  logCallbackDebug("handleChatModelStart state_set", {
564
591
  runId: id,
@@ -575,7 +602,11 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
575
602
  return;
576
603
  }
577
604
  this.runs.delete(id);
578
- const latency = Date.now() - state.startedAtMs;
605
+ const modelLatencyMs = Math.max(0, Date.now() - state.startedAtMs);
606
+ const totalPipelineLatencyMs = Math.max(
607
+ 0,
608
+ Date.now() - (state.pipelineStartedAtMs ?? state.startedAtMs)
609
+ );
579
610
  const outText = extractOutputText(output);
580
611
  const usage = extractTokenUsage(output);
581
612
  const metadata = {};
@@ -585,6 +616,14 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
585
616
  if (state.guardEventId) {
586
617
  metadata.guard_event_id = state.guardEventId;
587
618
  }
619
+ if (typeof state.guardLatencyMs === "number" && Number.isFinite(state.guardLatencyMs)) {
620
+ metadata.guard_latency_ms = state.guardLatencyMs;
621
+ }
622
+ if (state.transparency) {
623
+ metadata.transparency = state.transparency;
624
+ }
625
+ metadata.model_latency_ms = modelLatencyMs;
626
+ metadata.total_pipeline_latency_ms = totalPipelineLatencyMs;
588
627
  const resolvedModel = state.model ?? extractModelFromOutput(output) ?? "unknown";
589
628
  await this.agent.log({
590
629
  system_id: this.systemId,
@@ -593,7 +632,7 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
593
632
  event_id: state.clientEventId,
594
633
  model: resolvedModel,
595
634
  usage,
596
- latency,
635
+ latency: modelLatencyMs,
597
636
  metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
598
637
  client_capabilities: this.getLangchainCapabilities()
599
638
  }, this.requestOptions);
@@ -617,6 +656,12 @@ var AgentIDCallbackHandler = class extends import_base.BaseCallbackHandler {
617
656
  if (state?.guardEventId) {
618
657
  metadata.guard_event_id = state.guardEventId;
619
658
  }
659
+ if (typeof state?.guardLatencyMs === "number" && Number.isFinite(state.guardLatencyMs)) {
660
+ metadata.guard_latency_ms = state.guardLatencyMs;
661
+ }
662
+ if (state?.transparency) {
663
+ metadata.transparency = state.transparency;
664
+ }
620
665
  await this.agent.log({
621
666
  system_id: this.systemId,
622
667
  input: state?.input ?? "",
@@ -1,12 +1,27 @@
1
1
  import {
2
2
  SecurityBlockError
3
- } from "./chunk-FVTL572H.mjs";
3
+ } from "./chunk-JLHAS2EE.mjs";
4
4
 
5
5
  // src/langchain.ts
6
6
  import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
7
7
  function safeString(val) {
8
8
  return typeof val === "string" ? val : "";
9
9
  }
10
+ function coerceTransparencyMetadata(value) {
11
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
12
+ return void 0;
13
+ }
14
+ const raw = value;
15
+ if (raw.is_ai_generated !== true || raw.disclosure !== "You are interacting with an AI." || raw.article !== "EU_AI_ACT_ARTICLE_50" || raw.injection_mode !== "deterministic") {
16
+ return void 0;
17
+ }
18
+ return {
19
+ is_ai_generated: true,
20
+ disclosure: "You are interacting with an AI.",
21
+ article: "EU_AI_ACT_ARTICLE_50",
22
+ injection_mode: "deterministic"
23
+ };
24
+ }
10
25
  function callbackDebugEnabled() {
11
26
  try {
12
27
  return typeof process !== "undefined" && process?.env?.AGENTID_DEBUG_CALLBACK === "1";
@@ -275,6 +290,7 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
275
290
  }
276
291
  const requestedClientEventId = isUuidLike(id) ? id.trim() : createClientEventId();
277
292
  const modelName = extractModel(serialized, extraParams);
293
+ const pipelineStartedAtMs = Date.now();
278
294
  const verdict = await this.agent.guard({
279
295
  input: sanitizedInput,
280
296
  system_id: this.systemId,
@@ -287,6 +303,8 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
287
303
  }
288
304
  const canonicalClientEventId = isUuidLike(verdict.client_event_id) ? verdict.client_event_id.trim() : requestedClientEventId;
289
305
  const guardEventId = typeof verdict.guard_event_id === "string" && verdict.guard_event_id.length > 0 ? verdict.guard_event_id : void 0;
306
+ const guardLatencyMs = typeof verdict.guard_latency_ms === "number" && Number.isFinite(verdict.guard_latency_ms) ? Math.max(0, Math.trunc(verdict.guard_latency_ms)) : Math.max(0, Date.now() - pipelineStartedAtMs);
307
+ const transparency = coerceTransparencyMetadata(verdict.transparency);
290
308
  let transformedInput = typeof verdict.transformed_input === "string" && verdict.transformed_input.length > 0 ? verdict.transformed_input : sanitizedInput;
291
309
  if (transformedInput !== sanitizedInput) {
292
310
  const mutated = setPromptInPrompts(prompts, transformedInput);
@@ -297,9 +315,12 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
297
315
  this.runs.set(id, {
298
316
  input: transformedInput,
299
317
  startedAtMs: Date.now(),
318
+ pipelineStartedAtMs,
319
+ guardLatencyMs,
300
320
  model: modelName,
301
321
  clientEventId: canonicalClientEventId,
302
- guardEventId
322
+ guardEventId,
323
+ transparency
303
324
  });
304
325
  logCallbackDebug("handleLLMStart state_set", {
305
326
  runId: id,
@@ -326,6 +347,7 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
326
347
  }
327
348
  const requestedClientEventId = isUuidLike(id) ? id.trim() : createClientEventId();
328
349
  const modelName = extractModel(serialized, extraParams);
350
+ const pipelineStartedAtMs = Date.now();
329
351
  const verdict = await this.agent.guard({
330
352
  input: sanitizedInput,
331
353
  system_id: this.systemId,
@@ -338,6 +360,8 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
338
360
  }
339
361
  const canonicalClientEventId = isUuidLike(verdict.client_event_id) ? verdict.client_event_id.trim() : requestedClientEventId;
340
362
  const guardEventId = typeof verdict.guard_event_id === "string" && verdict.guard_event_id.length > 0 ? verdict.guard_event_id : void 0;
363
+ const guardLatencyMs = typeof verdict.guard_latency_ms === "number" && Number.isFinite(verdict.guard_latency_ms) ? Math.max(0, Math.trunc(verdict.guard_latency_ms)) : Math.max(0, Date.now() - pipelineStartedAtMs);
364
+ const transparency = coerceTransparencyMetadata(verdict.transparency);
341
365
  let transformedInput = typeof verdict.transformed_input === "string" && verdict.transformed_input.length > 0 ? verdict.transformed_input : sanitizedInput;
342
366
  if (transformedInput !== sanitizedInput) {
343
367
  const mutated = setPromptInMessages(messages, transformedInput);
@@ -348,9 +372,12 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
348
372
  this.runs.set(id, {
349
373
  input: transformedInput,
350
374
  startedAtMs: Date.now(),
375
+ pipelineStartedAtMs,
376
+ guardLatencyMs,
351
377
  model: modelName,
352
378
  clientEventId: canonicalClientEventId,
353
- guardEventId
379
+ guardEventId,
380
+ transparency
354
381
  });
355
382
  logCallbackDebug("handleChatModelStart state_set", {
356
383
  runId: id,
@@ -367,7 +394,11 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
367
394
  return;
368
395
  }
369
396
  this.runs.delete(id);
370
- const latency = Date.now() - state.startedAtMs;
397
+ const modelLatencyMs = Math.max(0, Date.now() - state.startedAtMs);
398
+ const totalPipelineLatencyMs = Math.max(
399
+ 0,
400
+ Date.now() - (state.pipelineStartedAtMs ?? state.startedAtMs)
401
+ );
371
402
  const outText = extractOutputText(output);
372
403
  const usage = extractTokenUsage(output);
373
404
  const metadata = {};
@@ -377,6 +408,14 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
377
408
  if (state.guardEventId) {
378
409
  metadata.guard_event_id = state.guardEventId;
379
410
  }
411
+ if (typeof state.guardLatencyMs === "number" && Number.isFinite(state.guardLatencyMs)) {
412
+ metadata.guard_latency_ms = state.guardLatencyMs;
413
+ }
414
+ if (state.transparency) {
415
+ metadata.transparency = state.transparency;
416
+ }
417
+ metadata.model_latency_ms = modelLatencyMs;
418
+ metadata.total_pipeline_latency_ms = totalPipelineLatencyMs;
380
419
  const resolvedModel = state.model ?? extractModelFromOutput(output) ?? "unknown";
381
420
  await this.agent.log({
382
421
  system_id: this.systemId,
@@ -385,7 +424,7 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
385
424
  event_id: state.clientEventId,
386
425
  model: resolvedModel,
387
426
  usage,
388
- latency,
427
+ latency: modelLatencyMs,
389
428
  metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
390
429
  client_capabilities: this.getLangchainCapabilities()
391
430
  }, this.requestOptions);
@@ -409,6 +448,12 @@ var AgentIDCallbackHandler = class extends BaseCallbackHandler {
409
448
  if (state?.guardEventId) {
410
449
  metadata.guard_event_id = state.guardEventId;
411
450
  }
451
+ if (typeof state?.guardLatencyMs === "number" && Number.isFinite(state.guardLatencyMs)) {
452
+ metadata.guard_latency_ms = state.guardLatencyMs;
453
+ }
454
+ if (state?.transparency) {
455
+ metadata.transparency = state.transparency;
456
+ }
412
457
  await this.agent.log({
413
458
  system_id: this.systemId,
414
459
  input: state?.input ?? "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentid-sdk",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "AgentID JavaScript/TypeScript SDK for guard, ingest, tracing, and analytics.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://agentid.ai",
@@ -40,8 +40,9 @@
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@langchain/core": "^0.3.0 || ^1.0.0",
43
+ "langchain": "^0.1.0",
43
44
  "openai": "^4.0.0 || ^5.0.0 || ^6.0.0",
44
- "langchain": "^0.1.0"
45
+ "react": "^18.0.0 || ^19.0.0"
45
46
  },
46
47
  "peerDependenciesMeta": {
47
48
  "@langchain/core": {
@@ -49,10 +50,17 @@
49
50
  },
50
51
  "langchain": {
51
52
  "optional": true
53
+ },
54
+ "react": {
55
+ "optional": true
52
56
  }
53
57
  },
54
58
  "devDependencies": {
59
+ "@types/react": "^19.2.2",
55
60
  "tsup": "^8.3.5",
56
61
  "typescript": "^5.0.0"
62
+ },
63
+ "dependencies": {
64
+ "agentid-sdk": "^0.1.21"
57
65
  }
58
66
  }