@niadra/sdk 0.11.0 → 0.11.1

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 (56) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ai-sdk.d.cts +3 -3
  3. package/dist/ai-sdk.d.ts +3 -3
  4. package/dist/anthropic.d.cts +4 -4
  5. package/dist/anthropic.d.ts +4 -4
  6. package/dist/bedrock.d.cts +4 -4
  7. package/dist/bedrock.d.ts +4 -4
  8. package/dist/cli.js +32 -10
  9. package/dist/cli.js.map +1 -1
  10. package/dist/{client-CG257pe3.d.cts → client-CdkRzWz6.d.cts} +11 -0
  11. package/dist/{client-CG257pe3.d.ts → client-CdkRzWz6.d.ts} +11 -0
  12. package/dist/cloudflare-agents.d.cts +3 -3
  13. package/dist/cloudflare-agents.d.ts +3 -3
  14. package/dist/elevenlabs.d.cts +5 -5
  15. package/dist/elevenlabs.d.ts +5 -5
  16. package/dist/genkit.d.cts +3 -3
  17. package/dist/genkit.d.ts +3 -3
  18. package/dist/google-adk.d.cts +3 -3
  19. package/dist/google-adk.d.ts +3 -3
  20. package/dist/google-genai.d.cts +4 -4
  21. package/dist/google-genai.d.ts +4 -4
  22. package/dist/index.cjs +32 -10
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +3 -3
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.js +32 -10
  27. package/dist/index.js.map +1 -1
  28. package/dist/{intercept-CvbXtKsU.d.cts → intercept-C_9uxSRY.d.cts} +1 -1
  29. package/dist/{intercept-EqNiV5f2.d.ts → intercept-tVhq4GNK.d.ts} +1 -1
  30. package/dist/langchain.d.cts +3 -3
  31. package/dist/langchain.d.ts +3 -3
  32. package/dist/livekit.d.cts +3 -3
  33. package/dist/livekit.d.ts +3 -3
  34. package/dist/llamaindex.d.cts +3 -3
  35. package/dist/llamaindex.d.ts +3 -3
  36. package/dist/mastra.d.cts +3 -3
  37. package/dist/mastra.d.ts +3 -3
  38. package/dist/openai-agents.d.cts +3 -3
  39. package/dist/openai-agents.d.ts +3 -3
  40. package/dist/retell.d.cts +5 -5
  41. package/dist/retell.d.ts +5 -5
  42. package/dist/{shared-Dmo7pRV5.d.cts → shared-DH_QGnci.d.cts} +1 -1
  43. package/dist/{shared--OTV6MgP.d.ts → shared-SqZSrkls.d.ts} +1 -1
  44. package/dist/strands.d.cts +3 -3
  45. package/dist/strands.d.ts +3 -3
  46. package/dist/twilio.d.cts +4 -4
  47. package/dist/twilio.d.ts +4 -4
  48. package/dist/vapi.d.cts +5 -5
  49. package/dist/vapi.d.ts +5 -5
  50. package/dist/voltagent.d.cts +3 -3
  51. package/dist/voltagent.d.ts +3 -3
  52. package/dist/{webhook-Bcgl38Nz.d.ts → webhook-BNvRGq0g.d.ts} +1 -1
  53. package/dist/{webhook-CPc6wZKf.d.cts → webhook-DIHeQ7DO.d.cts} +1 -1
  54. package/dist/whatsapp.d.cts +2 -2
  55. package/dist/whatsapp.d.ts +2 -2
  56. package/package.json +1 -1
@@ -6512,6 +6512,14 @@ interface Timeouts {
6512
6512
  * people's turns.
6513
6513
  */
6514
6514
  contextVoice: number;
6515
+ /**
6516
+ * The default budget of the first read of a conversation, task or object in this client, before the round
6517
+ * trip: the API compiles its pack on that read. One right after a customer's first message took 410 ms on
6518
+ * the server (05/10/2026: resolving the customer 153 ms, the pack 120 ms), more than `context`, and the
6519
+ * agent answered without memory. Later reads of the same key find the pack compiled. Only when `context`
6520
+ * is left at its default.
6521
+ */
6522
+ contextFirst: number;
6515
6523
  /**
6516
6524
  * The first read of a voice call, made while the phone rings or the inbound webhook runs
6517
6525
  * (`begin()`, `ready()`). A cold connection costs three round trips (TCP, TLS, the request)
@@ -6862,6 +6870,8 @@ declare class Niadra {
6862
6870
  private voiceStarted;
6863
6871
  /** A probe is on its way: until it ends, default read budgets get `timeouts.connect` on top. */
6864
6872
  private measuring;
6873
+ /** The keys whose read answered in this client, oldest first: a first read gets `timeouts.contextFirst`. */
6874
+ private readonly answeredReads;
6865
6875
  private voiceWarned;
6866
6876
  private readonly strict;
6867
6877
  /** Where the client reports what it swallows in fail-open mode. */
@@ -6922,6 +6932,7 @@ declare class Niadra {
6922
6932
  */
6923
6933
  context(params: ContextParams, options?: ContextOptions): Promise<ContextResult>;
6924
6934
  private readContext;
6935
+ private readAnswered;
6925
6936
  /**
6926
6937
  * The SDK profile of this key's space: the features it turned on, the claim contract and the summarized
6927
6938
  * type registry, from the local cache, read again once `valid_for_s` has passed. When Niadra does not
@@ -6512,6 +6512,14 @@ interface Timeouts {
6512
6512
  * people's turns.
6513
6513
  */
6514
6514
  contextVoice: number;
6515
+ /**
6516
+ * The default budget of the first read of a conversation, task or object in this client, before the round
6517
+ * trip: the API compiles its pack on that read. One right after a customer's first message took 410 ms on
6518
+ * the server (05/10/2026: resolving the customer 153 ms, the pack 120 ms), more than `context`, and the
6519
+ * agent answered without memory. Later reads of the same key find the pack compiled. Only when `context`
6520
+ * is left at its default.
6521
+ */
6522
+ contextFirst: number;
6515
6523
  /**
6516
6524
  * The first read of a voice call, made while the phone rings or the inbound webhook runs
6517
6525
  * (`begin()`, `ready()`). A cold connection costs three round trips (TCP, TLS, the request)
@@ -6862,6 +6870,8 @@ declare class Niadra {
6862
6870
  private voiceStarted;
6863
6871
  /** A probe is on its way: until it ends, default read budgets get `timeouts.connect` on top. */
6864
6872
  private measuring;
6873
+ /** The keys whose read answered in this client, oldest first: a first read gets `timeouts.contextFirst`. */
6874
+ private readonly answeredReads;
6865
6875
  private voiceWarned;
6866
6876
  private readonly strict;
6867
6877
  /** Where the client reports what it swallows in fail-open mode. */
@@ -6922,6 +6932,7 @@ declare class Niadra {
6922
6932
  */
6923
6933
  context(params: ContextParams, options?: ContextOptions): Promise<ContextResult>;
6924
6934
  private readContext;
6935
+ private readAnswered;
6925
6936
  /**
6926
6937
  * The SDK profile of this key's space: the features it turned on, the claim contract and the summarized
6927
6938
  * type registry, from the local cache, read again once `valid_for_s` has passed. When Niadra does not
@@ -1,8 +1,8 @@
1
1
  import { ToolSet } from 'ai';
2
- import { c as Niadra, g as Handle, g8 as TurnOptions, f as ModelUsage } from './client-CG257pe3.cjs';
2
+ import { c as Niadra, g as Handle, g8 as TurnOptions, f as ModelUsage } from './client-CdkRzWz6.cjs';
3
3
  import { NiadraMiddleware } from './ai-sdk.cjs';
4
- import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-Dmo7pRV5.cjs';
5
- export { P as Proof, c as attestationProof } from './shared-Dmo7pRV5.cjs';
4
+ import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-DH_QGnci.cjs';
5
+ export { P as Proof, c as attestationProof } from './shared-DH_QGnci.cjs';
6
6
 
7
7
  /**
8
8
  * Niadra for the Cloudflare Agents SDK (`agents` 0.x): one helper per `Agent` instance (a Durable
@@ -1,8 +1,8 @@
1
1
  import { ToolSet } from 'ai';
2
- import { c as Niadra, g as Handle, g8 as TurnOptions, f as ModelUsage } from './client-CG257pe3.js';
2
+ import { c as Niadra, g as Handle, g8 as TurnOptions, f as ModelUsage } from './client-CdkRzWz6.js';
3
3
  import { NiadraMiddleware } from './ai-sdk.js';
4
- import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared--OTV6MgP.js';
5
- export { P as Proof, c as attestationProof } from './shared--OTV6MgP.js';
4
+ import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-SqZSrkls.js';
5
+ export { P as Proof, c as attestationProof } from './shared-SqZSrkls.js';
6
6
 
7
7
  /**
8
8
  * Niadra for the Cloudflare Agents SDK (`agents` 0.x): one helper per `Agent` instance (a Durable
@@ -1,8 +1,8 @@
1
- import { c as Niadra, g as Handle } from './client-CG257pe3.cjs';
2
- import { P as Proof, A as AgentMemoryOption } from './shared-Dmo7pRV5.cjs';
3
- export { c as attestationProof } from './shared-Dmo7pRV5.cjs';
4
- import { H as HeadersLike, W as WebhookResponse, C as CallStore } from './webhook-CPc6wZKf.cjs';
5
- export { a as CallRecord, m as memoryCallStore } from './webhook-CPc6wZKf.cjs';
1
+ import { c as Niadra, g as Handle } from './client-CdkRzWz6.cjs';
2
+ import { P as Proof, A as AgentMemoryOption } from './shared-DH_QGnci.cjs';
3
+ export { c as attestationProof } from './shared-DH_QGnci.cjs';
4
+ import { H as HeadersLike, W as WebhookResponse, C as CallStore } from './webhook-DIHeQ7DO.cjs';
5
+ export { a as CallRecord, m as memoryCallStore } from './webhook-DIHeQ7DO.cjs';
6
6
 
7
7
  /**
8
8
  * Niadra for the ElevenLabs Agents Platform, on the server side: a phone call reaches ElevenLabs,
@@ -1,8 +1,8 @@
1
- import { c as Niadra, g as Handle } from './client-CG257pe3.js';
2
- import { P as Proof, A as AgentMemoryOption } from './shared--OTV6MgP.js';
3
- export { c as attestationProof } from './shared--OTV6MgP.js';
4
- import { H as HeadersLike, W as WebhookResponse, C as CallStore } from './webhook-Bcgl38Nz.js';
5
- export { a as CallRecord, m as memoryCallStore } from './webhook-Bcgl38Nz.js';
1
+ import { c as Niadra, g as Handle } from './client-CdkRzWz6.js';
2
+ import { P as Proof, A as AgentMemoryOption } from './shared-SqZSrkls.js';
3
+ export { c as attestationProof } from './shared-SqZSrkls.js';
4
+ import { H as HeadersLike, W as WebhookResponse, C as CallStore } from './webhook-BNvRGq0g.js';
5
+ export { a as CallRecord, m as memoryCallStore } from './webhook-BNvRGq0g.js';
6
6
 
7
7
  /**
8
8
  * Niadra for the ElevenLabs Agents Platform, on the server side: a phone call reaches ElevenLabs,
package/dist/genkit.d.cts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { ModelMiddleware } from 'genkit/model';
2
2
  import { ToolAction } from 'genkit/tool';
3
- import { f as ModelUsage } from './client-CG257pe3.cjs';
4
- import { a as ProofSource, A as AgentMemoryOption, S as SessionResolver, b as Session } from './shared-Dmo7pRV5.cjs';
5
- export { P as Proof, c as attestationProof } from './shared-Dmo7pRV5.cjs';
3
+ import { f as ModelUsage } from './client-CdkRzWz6.cjs';
4
+ import { a as ProofSource, A as AgentMemoryOption, S as SessionResolver, b as Session } from './shared-DH_QGnci.cjs';
5
+ export { P as Proof, c as attestationProof } from './shared-DH_QGnci.cjs';
6
6
 
7
7
  /**
8
8
  * Niadra for Genkit (`genkit` 1.x, Firebase Genkit for JavaScript): a model middleware for
package/dist/genkit.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { ModelMiddleware } from 'genkit/model';
2
2
  import { ToolAction } from 'genkit/tool';
3
- import { f as ModelUsage } from './client-CG257pe3.js';
4
- import { a as ProofSource, A as AgentMemoryOption, S as SessionResolver, b as Session } from './shared--OTV6MgP.js';
5
- export { P as Proof, c as attestationProof } from './shared--OTV6MgP.js';
3
+ import { f as ModelUsage } from './client-CdkRzWz6.js';
4
+ import { a as ProofSource, A as AgentMemoryOption, S as SessionResolver, b as Session } from './shared-SqZSrkls.js';
5
+ export { P as Proof, c as attestationProof } from './shared-SqZSrkls.js';
6
6
 
7
7
  /**
8
8
  * Niadra for Genkit (`genkit` 1.x, Firebase Genkit for JavaScript): a model middleware for
@@ -1,7 +1,7 @@
1
1
  import { Context, LlmRequest, LlmResponse, BaseTool, ReadonlyContext } from '@google/adk';
2
- import { f as ModelUsage } from './client-CG257pe3.cjs';
3
- import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-Dmo7pRV5.cjs';
4
- export { P as Proof, c as attestationProof } from './shared-Dmo7pRV5.cjs';
2
+ import { f as ModelUsage } from './client-CdkRzWz6.cjs';
3
+ import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-DH_QGnci.cjs';
4
+ export { P as Proof, c as attestationProof } from './shared-DH_QGnci.cjs';
5
5
 
6
6
  /**
7
7
  * Niadra for the Agent Development Kit for TypeScript (`@google/adk` 2.x): model callbacks and the
@@ -1,7 +1,7 @@
1
1
  import { Context, LlmRequest, LlmResponse, BaseTool, ReadonlyContext } from '@google/adk';
2
- import { f as ModelUsage } from './client-CG257pe3.js';
3
- import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared--OTV6MgP.js';
4
- export { P as Proof, c as attestationProof } from './shared--OTV6MgP.js';
2
+ import { f as ModelUsage } from './client-CdkRzWz6.js';
3
+ import { b as Session, a as ProofSource, A as AgentMemoryOption } from './shared-SqZSrkls.js';
4
+ export { P as Proof, c as attestationProof } from './shared-SqZSrkls.js';
5
5
 
6
6
  /**
7
7
  * Niadra for the Agent Development Kit for TypeScript (`@google/adk` 2.x): model callbacks and the
@@ -1,7 +1,7 @@
1
- import { f as ModelUsage } from './client-CG257pe3.cjs';
2
- import { W as WrapOptions } from './intercept-CvbXtKsU.cjs';
3
- import { S as SessionResolver } from './shared-Dmo7pRV5.cjs';
4
- export { A as AgentMemoryOption, P as Proof, a as ProofSource, b as Session, c as attestationProof } from './shared-Dmo7pRV5.cjs';
1
+ import { f as ModelUsage } from './client-CdkRzWz6.cjs';
2
+ import { W as WrapOptions } from './intercept-C_9uxSRY.cjs';
3
+ import { S as SessionResolver } from './shared-DH_QGnci.cjs';
4
+ export { A as AgentMemoryOption, P as Proof, a as ProofSource, b as Session, c as attestationProof } from './shared-DH_QGnci.cjs';
5
5
 
6
6
  /**
7
7
  * Niadra for the Google Gen AI SDK (`@google/genai`), as `wrap()` is for OpenAI.
@@ -1,7 +1,7 @@
1
- import { f as ModelUsage } from './client-CG257pe3.js';
2
- import { W as WrapOptions } from './intercept-EqNiV5f2.js';
3
- import { S as SessionResolver } from './shared--OTV6MgP.js';
4
- export { A as AgentMemoryOption, P as Proof, a as ProofSource, b as Session, c as attestationProof } from './shared--OTV6MgP.js';
1
+ import { f as ModelUsage } from './client-CdkRzWz6.js';
2
+ import { W as WrapOptions } from './intercept-tVhq4GNK.js';
3
+ import { S as SessionResolver } from './shared-SqZSrkls.js';
4
+ export { A as AgentMemoryOption, P as Proof, a as ProofSource, b as Session, c as attestationProof } from './shared-SqZSrkls.js';
5
5
 
6
6
  /**
7
7
  * Niadra for the Google Gen AI SDK (`@google/genai`), as `wrap()` is for OpenAI.
package/dist/index.cjs CHANGED
@@ -525,7 +525,7 @@ function internalRecord(span, ref, act) {
525
525
  }
526
526
 
527
527
  // src/version.ts
528
- var VERSION = "0.11.0";
528
+ var VERSION = "0.11.1";
529
529
 
530
530
  // src/transport.ts
531
531
  var RETRYABLE_WRITE_STATUS = /* @__PURE__ */ new Set([408, 421, 429, 500, 502, 503, 504]);
@@ -7714,6 +7714,7 @@ var silentLogger = { debug: noop, warn: noop, error: noop };
7714
7714
  // src/options.ts
7715
7715
  var DEFAULT_TIMEOUTS = {
7716
7716
  context: 300,
7717
+ contextFirst: 1e3,
7717
7718
  contextVoice: 200,
7718
7719
  contextVoiceStart: 1500,
7719
7720
  navigation: 600,
@@ -8524,6 +8525,7 @@ function rttWarnings(rttMs, timeouts) {
8524
8525
  }
8525
8526
 
8526
8527
  // src/client.ts
8528
+ var READ_KEYS_KEPT = 4096;
8527
8529
  function readEnv(name) {
8528
8530
  try {
8529
8531
  const env = globalThis.process?.env;
@@ -8551,6 +8553,8 @@ var Niadra = class _Niadra {
8551
8553
  voiceStarted = false;
8552
8554
  /** A probe is on its way: until it ends, default read budgets get `timeouts.connect` on top. */
8553
8555
  measuring = false;
8556
+ /** The keys whose read answered in this client, oldest first: a first read gets `timeouts.contextFirst`. */
8557
+ answeredReads = /* @__PURE__ */ new Map();
8554
8558
  voiceWarned = false;
8555
8559
  strict;
8556
8560
  /** Where the client reports what it swallows in fail-open mode. */
@@ -8737,14 +8741,28 @@ var Niadra = class _Niadra {
8737
8741
  if (this.content.registered && result2.state) result2.state = await this.content.fill(result2.state);
8738
8742
  return result2;
8739
8743
  }
8740
- readContext(core, params, request, options) {
8741
- const timeout = options.timeout ?? (request.view === "voice" ? this.timeouts.contextVoice : this.readBudget("context"));
8744
+ async readContext(core, params, request, options) {
8742
8745
  const { query: own3, ...pinned2 } = request;
8743
8746
  const query = turnText(own3 ?? params.turn);
8747
+ const readKey = cacheKey(pinned2);
8748
+ const first = !this.answeredReads.has(readKey);
8749
+ const timeout = options.timeout ?? (request.view === "voice" ? this.timeouts.contextVoice : this.readBudget("context", first));
8744
8750
  const voiceCache = this.voiceCache(core, pinned2, options.cache);
8745
- if (voiceCache) return this.voiceContext(core, voiceCache, pinned2, query, timeout, options);
8746
- if (query !== null) return this.turnContext(core, pinned2, query, timeout, options);
8747
- return this.pinnedContext(core, pinned2, timeout, options);
8751
+ let result2;
8752
+ if (voiceCache) result2 = await this.voiceContext(core, voiceCache, pinned2, query, timeout, options);
8753
+ else if (query !== null) result2 = await this.turnContext(core, pinned2, query, timeout, options);
8754
+ else result2 = await this.pinnedContext(core, pinned2, timeout, options);
8755
+ if (result2.error === null) this.readAnswered(readKey);
8756
+ return result2;
8757
+ }
8758
+ readAnswered(key2) {
8759
+ this.answeredReads.delete(key2);
8760
+ this.answeredReads.set(key2, true);
8761
+ while (this.answeredReads.size > READ_KEYS_KEPT) {
8762
+ const oldest = this.answeredReads.keys().next().value;
8763
+ if (oldest === void 0) break;
8764
+ this.answeredReads.delete(oldest);
8765
+ }
8748
8766
  }
8749
8767
  /**
8750
8768
  * The SDK profile of this key's space: the features it turned on, the claim contract and the summarized
@@ -9152,7 +9170,9 @@ var Niadra = class _Niadra {
9152
9170
  const key2 = AgentMemoryCache.key(params);
9153
9171
  const fresh = cache?.fresh(key2);
9154
9172
  if (fresh) return blockResult(fresh, "cache");
9155
- const timeout = options.timeout ?? (params.view === "voice" ? this.timeouts.contextVoice : this.readBudget("context"));
9173
+ const readKey = `agent-memory:${key2}`;
9174
+ const first = !this.answeredReads.has(readKey);
9175
+ const timeout = options.timeout ?? (params.view === "voice" ? this.timeouts.contextVoice : this.readBudget("context", first));
9156
9176
  const spec = this.readSpec("GET", "/v1/agent-memory/block", void 0, timeout, options);
9157
9177
  spec.query = {
9158
9178
  max_tokens: String(params.max_tokens ?? 300),
@@ -9163,6 +9183,7 @@ var Niadra = class _Niadra {
9163
9183
  if (etag) spec.headers = { ...options.headers, "if-none-match": etag };
9164
9184
  try {
9165
9185
  const response = await core.transport.request(spec);
9186
+ this.readAnswered(readKey);
9166
9187
  cache?.store(key2, response.data);
9167
9188
  return blockResult(response.data, "network");
9168
9189
  } catch (error) {
@@ -9651,12 +9672,13 @@ var Niadra = class _Niadra {
9651
9672
  * to the region goes on top, so an agent far from the region (Sao Paulo, 170 ms from us-east-2) is not
9652
9673
  * timed out by the network; one the caller set is a ceiling.
9653
9674
  */
9654
- readBudget(name) {
9675
+ readBudget(name, first = false) {
9655
9676
  if (!this.defaultReads.has(name)) return this.timeouts[name];
9677
+ const base = first && name === "context" ? Math.max(this.timeouts.context, this.timeouts.contextFirst) : this.timeouts[name];
9656
9678
  const rtt = this.voice.rtt;
9657
- if (rtt !== null) return this.timeouts[name] + rtt;
9679
+ if (rtt !== null) return base + rtt;
9658
9680
  const open = this.core?.transport.connectionOpen() ?? false;
9659
- return this.measuring && open ? this.timeouts[name] + this.timeouts.connect : this.timeouts[name];
9681
+ return this.measuring && open ? base + this.timeouts.connect : base;
9660
9682
  }
9661
9683
  /** The client reads in voice: the voice budgets' warnings matter from now on. */
9662
9684
  startVoice(core) {