@tenet-ai/sdk 0.1.2 → 0.3.0

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/README.md CHANGED
@@ -15,7 +15,7 @@ When your AI agent approves a $10,000 refund or denies a loan application, can y
15
15
  - **Would it decide the same way** if we ran it again?
16
16
  - **Who overrode** the agent's recommendation?
17
17
 
18
- Tenet AI captures every decision your agent makes with full context, enabling **audit trails**, **replay verification**, and **drift detection**.
18
+ Tenet AI captures every decision your agent makes with full context, enabling **audit trails**, **replay verification**, **drift detection**, and **guardrails enforcement**.
19
19
 
20
20
  ---
21
21
 
@@ -61,21 +61,21 @@ import { Tenet, ResultType, ActorType } from "@tenet-ai/sdk";
61
61
 
62
62
  const tenet = new Tenet({ apiKey: "tnt_your_key" });
63
63
 
64
- // 1. Create an intent
65
- const intent = await tenet.createIntent({
64
+ // 1. Create an intent (fire-and-forget, returns immediately)
65
+ const intent = tenet.createIntent({
66
66
  goal: "Process refund request",
67
67
  agentId: "support-agent",
68
68
  });
69
69
 
70
70
  // 2. Capture what the agent saw
71
- await intent.snapshotContext({
71
+ intent.snapshotContext({
72
72
  customer_tier: "gold",
73
73
  order_amount: 149.99,
74
74
  days_since_delivery: 5,
75
75
  });
76
76
 
77
77
  // 3. Record the decision with options considered
78
- await intent.decide({
78
+ intent.decide({
79
79
  options: [
80
80
  { action: "approve_refund", score: 0.95, reason: "Gold customer, within policy" },
81
81
  { action: "deny_refund", score: 0.05, reason: "N/A" },
@@ -86,11 +86,14 @@ await intent.decide({
86
86
  });
87
87
 
88
88
  // 4. Record execution
89
- const executionId = await intent.execute({
89
+ const executionId = intent.execute({
90
90
  action: "approve_refund",
91
91
  target: { order_id: "ORD-123" },
92
92
  result: ResultType.SUCCESS,
93
93
  });
94
+
95
+ // In tests: wait for all writes to land
96
+ await tenet.flush();
94
97
  ```
95
98
 
96
99
  ---
@@ -102,14 +105,14 @@ const executionId = await intent.execute({
102
105
  Store the prompt and re-run decisions to verify consistency:
103
106
 
104
107
  ```ts
105
- const intent = await tenet.createIntent({
108
+ const intent = tenet.createIntent({
106
109
  goal: "Handle support ticket",
107
110
  agentId: "support-agent",
108
111
  });
109
112
 
110
- await intent.snapshotContext({ ticket_id: "T-123", priority: "high" });
113
+ intent.snapshotContext({ ticket_id: "T-123", priority: "high" });
111
114
 
112
- await intent.decide({
115
+ intent.decide({
113
116
  options: [{ action: "escalate", score: 0.9 }],
114
117
  chosenAction: "escalate",
115
118
  confidence: 0.9,
@@ -118,12 +121,15 @@ await intent.decide({
118
121
  replayConfig: { model: "gpt-4o-mini", temperature: 0.0 },
119
122
  });
120
123
 
121
- const execId = await intent.execute({
124
+ const execId = intent.execute({
122
125
  action: "escalate",
123
126
  target: { ticket_id: "T-123" },
124
127
  result: ResultType.SUCCESS,
125
128
  });
126
129
 
130
+ // Flush writes before reading back
131
+ await tenet.flush();
132
+
127
133
  // Later: verify the decision is still consistent
128
134
  const replay = await tenet.replay({ executionId: execId });
129
135
 
@@ -138,40 +144,40 @@ if (replay.diverged) {
138
144
  Track complex workflows with multiple agents or MCP tool calls:
139
145
 
140
146
  ```ts
141
- const parent = await tenet.createIntent({
147
+ const parent = tenet.createIntent({
142
148
  goal: "Process customer request",
143
149
  agentId: "orchestrator",
144
150
  });
145
151
 
146
- await parent.snapshotContext({ request: "refund for order 123" });
152
+ parent.snapshotContext({ request: "refund for order 123" });
147
153
 
148
154
  // Spawn child intent for sub-agent
149
- const child = await parent.childIntent({
155
+ const child = parent.childIntent({
150
156
  goal: "Search order history",
151
157
  mcpServer: "database",
152
158
  });
153
159
 
154
- await child.snapshotContext({ query: "order 123" });
155
- await child.decide({
160
+ child.snapshotContext({ query: "order 123" });
161
+ child.decide({
156
162
  options: [{ action: "query_db", score: 1.0 }],
157
163
  chosenAction: "query_db",
158
164
  confidence: 1.0,
159
165
  });
160
- await child.execute({
166
+ child.execute({
161
167
  action: "query_db",
162
168
  target: { order_id: "123" },
163
169
  result: ResultType.SUCCESS,
164
170
  });
165
171
 
166
172
  // Parent continues with child's result
167
- await parent.decide({
173
+ parent.decide({
168
174
  options: [
169
175
  { action: "approve_refund", score: 0.9, reason: "Order found, within policy" },
170
176
  ],
171
177
  chosenAction: "approve_refund",
172
178
  confidence: 0.9,
173
179
  });
174
- await parent.execute({
180
+ parent.execute({
175
181
  action: "approve_refund",
176
182
  target: { order_id: "123" },
177
183
  result: ResultType.SUCCESS,
@@ -183,7 +189,7 @@ await parent.execute({
183
189
  When humans override agent decisions:
184
190
 
185
191
  ```ts
186
- await intent.execute({
192
+ intent.execute({
187
193
  action: "deny_refund", // Human chose differently
188
194
  target: { order_id: "123" },
189
195
  result: ResultType.SUCCESS,
@@ -192,6 +198,94 @@ await intent.execute({
192
198
  });
193
199
  ```
194
200
 
201
+ ### Guardrails — Block, Warn, or Log Agent Actions
202
+
203
+ Define rules that are evaluated server-side before decisions are recorded. Rules with `block` enforcement reject the decision with HTTP 403.
204
+
205
+ ```ts
206
+ // Create a guardrail rule via the API
207
+ const response = await fetch(`${endpoint}/api/v1/guardrails`, {
208
+ method: "POST",
209
+ headers: { "X-API-Key": apiKey, "Content-Type": "application/json" },
210
+ body: JSON.stringify({
211
+ name: "Block dangerous actions",
212
+ rule_type: "action_blocklist",
213
+ enforcement_level: "block",
214
+ rule_config: { blocked_actions: ["delete_account", "drop_table"] },
215
+ }),
216
+ });
217
+ ```
218
+
219
+ Supported rule types:
220
+ - `action_allowlist` — only allow specific actions
221
+ - `action_blocklist` — block specific actions
222
+ - `confidence_threshold` — require minimum confidence
223
+ - `context_field_check` — check a context input field (e.g. amount > 10000)
224
+ - `regex_match` — regex on action or field
225
+ - `json_path_check` — dot-path check into context
226
+ - `value_range` — min/max range on any numeric field
227
+
228
+ Enforcement levels: `block` (reject with 403), `warn` (flag but allow), `log` (silent record).
229
+
230
+ ### Ghost SDK — Zero-Impact Observability
231
+
232
+ All write operations (intent, context, decision, execution) generate UUIDs client-side and fire-and-forget via background promises. Your agent never waits for Tenet.
233
+
234
+ **The Ghost SDK Promise:**
235
+ - **Main-thread overhead: <5ms** per full decision lifecycle (4 writes)
236
+ - **Silent failure:** Network errors are caught silently — never thrown to your agent
237
+ - **Client-side UUIDs:** IDs are available immediately, no round-trip needed
238
+ - **100% uptime guarantee** for your primary process
239
+
240
+ ```ts
241
+ import { Tenet } from '@tenet-ai/sdk';
242
+
243
+ // Ghost SDK is enabled by default
244
+ const tenet = new Tenet({ apiKey: 'tnt_your_key' });
245
+
246
+ // All write calls return immediately — no await needed
247
+ const intent = tenet.createIntent({
248
+ goal: 'Process refund',
249
+ agentId: 'support-agent',
250
+ });
251
+ intent.snapshotContext({ customer_tier: 'gold' });
252
+ intent.decide({ options: [...], chosenAction: 'approve', confidence: 0.95 });
253
+ intent.execute({ action: 'approve', target: { order: '123' }, result: ResultType.SUCCESS });
254
+
255
+ // In tests, await flush() to ensure writes have landed
256
+ await tenet.flush();
257
+
258
+ // For graceful shutdown
259
+ await tenet.shutdown();
260
+ ```
261
+
262
+ **Configuration:**
263
+
264
+ | Parameter | Default | Description |
265
+ |-----------|---------|-------------|
266
+ | `asyncWrites` | `true` | Set to `false` for synchronous mode (legacy compat) |
267
+ | `onError` | `undefined` | Callback `(error, payload)` for observability |
268
+ | `maxRetries` | `3` | Retry count before silent drop |
269
+
270
+ ### Capture Health Monitoring
271
+
272
+ Check whether data is actually reaching the Tenet backend:
273
+
274
+ ```ts
275
+ const stats = tenet.getStats();
276
+ // { sent: 42, failed: 0, lastSuccessAt: Date }
277
+
278
+ if (stats.failed > 0) {
279
+ console.warn(`${stats.failed} captures did not reach Tenet — check connectivity and API key`);
280
+ }
281
+ ```
282
+
283
+ - **`sent`** — total successful writes to the backend
284
+ - **`failed`** — writes that exhausted all retries (data NOT in Tenet)
285
+ - **`lastSuccessAt`** — `Date` of the most recent successful write, or `null`
286
+
287
+ Failed captures also emit a `console.warn` with the path, attempt count, and error message so they surface in your production logs automatically.
288
+
195
289
  ---
196
290
 
197
291
  ## Framework Integrations
@@ -267,6 +361,8 @@ const tenet = new Tenet({
267
361
  endpoint: "https://ael-backend.onrender.com", // Optional (default: production)
268
362
  environment: "production", // Optional
269
363
  timeout: 30000, // Optional (ms)
364
+ asyncWrites: true, // Optional (Ghost SDK, default: true)
365
+ onError: (err, payload) => console.error(err), // Optional
270
366
  });
271
367
  ```
272
368
 
@@ -276,12 +372,15 @@ const tenet = new Tenet({
276
372
  |--------|-------------|
277
373
  | `tenet.trace({ agentId, fn, ... })` | Wrap a function call with automatic audit trail |
278
374
  | `tenet.replay({ executionId })` | Replay a past decision and detect drift |
375
+ | `tenet.flush()` | Wait for all background writes to complete |
376
+ | `tenet.shutdown()` | Flush and clean up |
377
+ | `tenet.getStats()` | Return `{ sent, failed, lastSuccessAt }` capture counters |
279
378
 
280
- ### Low-Level Methods
379
+ ### Low-Level Methods (Synchronous — Fire-and-Forget)
281
380
 
282
381
  | Method | Description |
283
382
  |--------|-------------|
284
- | `tenet.createIntent({ goal, agentId })` | Create an intent, returns `IntentHandle` |
383
+ | `tenet.createIntent({ goal, agentId })` | Create an intent, returns `IntentHandle` immediately |
285
384
  | `intent.snapshotContext(inputs)` | Capture what the agent sees |
286
385
  | `intent.decide({ options, chosenAction, confidence })` | Record a decision |
287
386
  | `intent.execute({ action, target, result })` | Record execution |
@@ -300,6 +399,17 @@ const tenet = new Tenet({
300
399
  | `tenet.getExecution(id)` | Get execution details |
301
400
  | `tenet.getSessionTimeline(sessionId)` | Get full session timeline |
302
401
 
402
+ ### Guardrail Endpoints
403
+
404
+ | Method | Description |
405
+ |--------|-------------|
406
+ | `POST /api/v1/guardrails` | Create a guardrail rule |
407
+ | `GET /api/v1/guardrails` | List guardrails (filter by `is_active`, `rule_type`) |
408
+ | `GET /api/v1/guardrails/{id}` | Get guardrail by ID |
409
+ | `PATCH /api/v1/guardrails/{id}` | Update a guardrail |
410
+ | `DELETE /api/v1/guardrails/{id}` | Delete a guardrail |
411
+ | `GET /api/v1/guardrails/{id}/evaluations` | List evaluation history |
412
+
303
413
  ### Advanced
304
414
 
305
415
  | Method | Description |
package/dist/client.d.ts CHANGED
@@ -7,6 +7,9 @@ declare class TenetError extends Error {
7
7
  /**
8
8
  * Handle for an in-progress intent. Provides methods to snapshot context,
9
9
  * record decisions, and record executions.
10
+ *
11
+ * All write methods generate UUIDs client-side and fire-and-forget via
12
+ * the background queue (Ghost SDK). IDs are available immediately.
10
13
  */
11
14
  declare class IntentHandle {
12
15
  private client;
@@ -16,7 +19,7 @@ declare class IntentHandle {
16
19
  decisionId?: string;
17
20
  constructor(client: Tenet, intentId: string, sessionId: string);
18
21
  /** Snapshot the context the agent sees at decision time. */
19
- snapshotContext(inputs: Record<string, unknown>, externalVersions?: Record<string, string>): Promise<string>;
22
+ snapshotContext(inputs: Record<string, unknown>, externalVersions?: Record<string, string>): string;
20
23
  /** Record a decision made by the agent. */
21
24
  decide(params: {
22
25
  options: ActionOption[];
@@ -29,7 +32,7 @@ declare class IntentHandle {
29
32
  metadata?: Record<string, unknown>;
30
33
  replayPrompt?: string;
31
34
  replayConfig?: ReplayConfig;
32
- }): Promise<string>;
35
+ }): string;
33
36
  /** Record an execution — the actual action taken. */
34
37
  execute(params: {
35
38
  action: string;
@@ -40,7 +43,7 @@ declare class IntentHandle {
40
43
  actor?: ActorType;
41
44
  overrideReason?: string;
42
45
  overriddenBy?: string;
43
- }): Promise<string>;
46
+ }): string;
44
47
  /** Create a child intent linked to this one (for multi-agent/MCP). */
45
48
  childIntent(params: {
46
49
  goal: string;
@@ -49,7 +52,7 @@ declare class IntentHandle {
49
52
  constraints?: string[];
50
53
  mcpServer?: string;
51
54
  toolName?: string;
52
- }): Promise<IntentHandle>;
55
+ }): IntentHandle;
53
56
  }
54
57
  /**
55
58
  * Tenet AI SDK client.
@@ -75,13 +78,61 @@ declare class Tenet {
75
78
  private apiKey;
76
79
  private environment;
77
80
  private timeout;
81
+ private asyncWrites;
82
+ private maxRetries;
83
+ private onError?;
84
+ /** In-flight background write promises. */
85
+ private _pending;
86
+ /** Capture stats — incremented by _sendWithRetry. */
87
+ private _sent;
88
+ private _failed;
89
+ private _lastSuccessAt;
78
90
  constructor(config: TenetConfig);
79
91
  private request;
80
92
  private post;
81
93
  private get;
94
+ /**
95
+ * Fire-and-forget POST for write operations.
96
+ * In async mode, the promise is tracked internally and errors are silently caught.
97
+ * In sync mode (asyncWrites=false), this is a no-op queuer — callers must
98
+ * still await the underlying post call themselves via postWriteSync.
99
+ *
100
+ * @internal — used by IntentHandle and createIntent.
101
+ */
102
+ postWrite(path: string, body: Record<string, unknown>): void;
103
+ private _sendWithRetry;
104
+ /**
105
+ * Return capture counters for this client instance.
106
+ *
107
+ * ```ts
108
+ * const stats = tenet.getStats();
109
+ * // { sent: 42, failed: 0, lastSuccessAt: Date }
110
+ * ```
111
+ *
112
+ * `failed > 0` means executions were NOT recorded in Tenet — check
113
+ * backend connectivity and API key.
114
+ */
115
+ getStats(): {
116
+ sent: number;
117
+ failed: number;
118
+ lastSuccessAt: Date | null;
119
+ };
120
+ /**
121
+ * Block until all queued background writes have completed (or failed).
122
+ * Use this in tests to ensure writes have landed before reading back.
123
+ */
124
+ flush(): Promise<void>;
125
+ /**
126
+ * Flush remaining writes. Equivalent to flush() for the JS SDK since
127
+ * there is no background thread to stop — just pending promises.
128
+ */
129
+ shutdown(): Promise<void>;
82
130
  /**
83
131
  * Trace a function call, capturing the decision automatically.
84
132
  *
133
+ * The function is still awaited (blocking), but all audit writes
134
+ * (intent, context, decision, execution) are fire-and-forget.
135
+ *
85
136
  * ```ts
86
137
  * const result = await tenet.trace({
87
138
  * agentId: 'finance-bot-v1',
@@ -101,13 +152,16 @@ declare class Tenet {
101
152
  * ```
102
153
  */
103
154
  replay(params: ReplayParams): Promise<ReplayResult>;
104
- /** Create an intent and return a handle for chaining context/decision/execution. */
105
- createIntent(params: IntentCreateParams): Promise<IntentHandle>;
106
- /** Snapshot context for an intent. */
155
+ /**
156
+ * Create an intent and return a handle for chaining context/decision/execution.
157
+ * UUID is generated client-side; the write is fire-and-forget.
158
+ */
159
+ createIntent(params: IntentCreateParams): IntentHandle;
160
+ /** @deprecated Use intent.snapshotContext() instead. Kept for backward compat. */
107
161
  createContext(params: ContextCreateParams): Promise<ContextResponse>;
108
- /** Record a decision. */
162
+ /** @deprecated Use intent.decide() instead. Kept for backward compat. */
109
163
  createDecision(params: DecisionCreateParams): Promise<DecisionResponse>;
110
- /** Record an execution. */
164
+ /** @deprecated Use intent.execute() instead. Kept for backward compat. */
111
165
  createExecution(params: ExecutionCreateParams): Promise<ExecutionResponse>;
112
166
  /** Get an intent by ID. */
113
167
  getIntent(intentId: string): Promise<IntentResponse>;
package/dist/client.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IntentHandle = exports.TenetError = exports.Tenet = void 0;
4
4
  const crypto_1 = require("crypto");
5
5
  const types_1 = require("./types");
6
+ const SDK_VERSION = "0.2.0";
6
7
  class TenetError extends Error {
7
8
  status;
8
9
  body;
@@ -17,6 +18,9 @@ exports.TenetError = TenetError;
17
18
  /**
18
19
  * Handle for an in-progress intent. Provides methods to snapshot context,
19
20
  * record decisions, and record executions.
21
+ *
22
+ * All write methods generate UUIDs client-side and fire-and-forget via
23
+ * the background queue (Ghost SDK). IDs are available immediately.
20
24
  */
21
25
  class IntentHandle {
22
26
  client;
@@ -30,57 +34,76 @@ class IntentHandle {
30
34
  this.sessionId = sessionId;
31
35
  }
32
36
  /** Snapshot the context the agent sees at decision time. */
33
- async snapshotContext(inputs, externalVersions) {
34
- const response = await this.client.createContext({
35
- intentId: this.intentId,
37
+ snapshotContext(inputs, externalVersions) {
38
+ const contextId = (0, crypto_1.randomUUID)();
39
+ this.client.postWrite("/contexts", {
40
+ id: contextId,
41
+ intent_id: this.intentId,
36
42
  inputs,
37
- externalVersions,
43
+ external_versions: externalVersions ?? {},
38
44
  });
39
- this.contextId = response.id;
45
+ this.contextId = contextId;
40
46
  return this.contextId;
41
47
  }
42
48
  /** Record a decision made by the agent. */
43
- async decide(params) {
49
+ decide(params) {
44
50
  if (!this.contextId) {
45
51
  throw new Error("Must call snapshotContext before decide");
46
52
  }
47
- const response = await this.client.createDecision({
48
- intentId: this.intentId,
49
- contextId: this.contextId,
53
+ const decisionId = (0, crypto_1.randomUUID)();
54
+ const body = {
55
+ id: decisionId,
56
+ intent_id: this.intentId,
57
+ context_id: this.contextId,
50
58
  options: params.options,
51
- chosenAction: params.chosenAction,
59
+ chosen_action: params.chosenAction,
52
60
  confidence: params.confidence,
53
- modelVersion: params.modelVersion ?? "unknown",
54
- rulesEvaluated: params.rulesEvaluated,
61
+ model_version: params.modelVersion ?? "unknown",
62
+ rules_evaluated: params.rulesEvaluated ?? [],
55
63
  reasoning: params.reasoning,
56
- tags: params.tags,
57
- metadata: params.metadata,
58
- replayPrompt: params.replayPrompt,
59
- replayConfig: params.replayConfig,
60
- });
61
- this.decisionId = response.id;
64
+ tags: params.tags ?? [],
65
+ metadata: params.metadata ?? {},
66
+ };
67
+ if (params.replayPrompt)
68
+ body.replay_prompt = params.replayPrompt;
69
+ if (params.replayConfig) {
70
+ body.replay_config = {
71
+ model: params.replayConfig.model,
72
+ temperature: params.replayConfig.temperature,
73
+ max_tokens: params.replayConfig.maxTokens,
74
+ api_base: params.replayConfig.apiBase,
75
+ };
76
+ }
77
+ this.client.postWrite("/decisions", body);
78
+ this.decisionId = decisionId;
62
79
  return this.decisionId;
63
80
  }
64
81
  /** Record an execution — the actual action taken. */
65
- async execute(params) {
82
+ execute(params) {
66
83
  if (!this.decisionId) {
67
84
  throw new Error("Must call decide before execute");
68
85
  }
69
- const response = await this.client.createExecution({
70
- decisionId: this.decisionId,
86
+ const executionId = (0, crypto_1.randomUUID)();
87
+ const body = {
88
+ id: executionId,
89
+ decision_id: this.decisionId,
71
90
  action: params.action,
72
91
  target: params.target,
73
- result: params.result,
74
- sideEffects: params.sideEffects,
75
- revertAction: params.revertAction,
76
- actor: params.actor,
77
- overrideReason: params.overrideReason,
78
- overriddenBy: params.overriddenBy,
79
- });
80
- return response.id;
92
+ result: params.result ?? types_1.ResultType.SUCCESS,
93
+ side_effects: params.sideEffects ?? [],
94
+ actor: params.actor ?? types_1.ActorType.AGENT,
95
+ };
96
+ if (params.revertAction)
97
+ body.revert_action = params.revertAction;
98
+ if (params.overrideReason)
99
+ body.override_reason = params.overrideReason;
100
+ if (params.overriddenBy)
101
+ body.overridden_by = params.overriddenBy;
102
+ this.client.postWrite("/executions", body);
103
+ return executionId;
81
104
  }
82
105
  /** Create a child intent linked to this one (for multi-agent/MCP). */
83
- async childIntent(params) {
106
+ childIntent(params) {
84
107
  return this.client.createIntent({
85
108
  goal: params.goal,
86
109
  agentId: params.agentId,
@@ -118,11 +141,23 @@ class Tenet {
118
141
  apiKey;
119
142
  environment;
120
143
  timeout;
144
+ asyncWrites;
145
+ maxRetries;
146
+ onError;
147
+ /** In-flight background write promises. */
148
+ _pending = [];
149
+ /** Capture stats — incremented by _sendWithRetry. */
150
+ _sent = 0;
151
+ _failed = 0;
152
+ _lastSuccessAt = null;
121
153
  constructor(config) {
122
154
  this.apiKey = config.apiKey;
123
155
  this.endpoint = (config.endpoint ?? "https://ael-backend.onrender.com").replace(/\/+$/, "");
124
156
  this.environment = config.environment ?? "production";
125
157
  this.timeout = config.timeout ?? 30000;
158
+ this.asyncWrites = config.asyncWrites !== false; // default true
159
+ this.maxRetries = config.maxRetries ?? 3;
160
+ this.onError = config.onError;
126
161
  }
127
162
  // --- HTTP helpers ---
128
163
  async request(method, path, body) {
@@ -130,6 +165,7 @@ class Tenet {
130
165
  const headers = {
131
166
  "Content-Type": "application/json",
132
167
  "X-API-Key": this.apiKey,
168
+ "User-Agent": `tenet-sdk-node/${SDK_VERSION}`,
133
169
  };
134
170
  const controller = new AbortController();
135
171
  const timer = setTimeout(() => controller.abort(), this.timeout);
@@ -165,12 +201,93 @@ class Tenet {
165
201
  get(path) {
166
202
  return this.request("GET", path);
167
203
  }
204
+ /**
205
+ * Fire-and-forget POST for write operations.
206
+ * In async mode, the promise is tracked internally and errors are silently caught.
207
+ * In sync mode (asyncWrites=false), this is a no-op queuer — callers must
208
+ * still await the underlying post call themselves via postWriteSync.
209
+ *
210
+ * @internal — used by IntentHandle and createIntent.
211
+ */
212
+ postWrite(path, body) {
213
+ if (!this.asyncWrites) {
214
+ // Synchronous mode: run the request and track the promise so flush() works
215
+ const p = this._sendWithRetry(path, body).catch(() => { });
216
+ this._pending.push(p);
217
+ return;
218
+ }
219
+ // Async (Ghost) mode: fire-and-forget with silent error handling
220
+ const p = this._sendWithRetry(path, body).catch(() => { });
221
+ this._pending.push(p);
222
+ }
223
+ async _sendWithRetry(path, body, attempt = 0) {
224
+ try {
225
+ await this.post(path, body);
226
+ this._sent++;
227
+ this._lastSuccessAt = new Date();
228
+ }
229
+ catch (err) {
230
+ if (attempt + 1 < this.maxRetries) {
231
+ return this._sendWithRetry(path, body, attempt + 1);
232
+ }
233
+ // Final failure — log a visible warning and increment counter
234
+ this._failed++;
235
+ const attempts = attempt + 1;
236
+ const msg = err instanceof Error ? err.message : String(err);
237
+ console.warn(`[tenet] capture FAILED for ${path} after ${attempts} attempt(s): ${msg} — ` +
238
+ `this execution will NOT appear in the Tenet dashboard.`);
239
+ if (this.onError && err instanceof Error) {
240
+ try {
241
+ this.onError(err, { path, body, attempts });
242
+ }
243
+ catch {
244
+ // Never let the callback crash us
245
+ }
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Return capture counters for this client instance.
251
+ *
252
+ * ```ts
253
+ * const stats = tenet.getStats();
254
+ * // { sent: 42, failed: 0, lastSuccessAt: Date }
255
+ * ```
256
+ *
257
+ * `failed > 0` means executions were NOT recorded in Tenet — check
258
+ * backend connectivity and API key.
259
+ */
260
+ getStats() {
261
+ return {
262
+ sent: this._sent,
263
+ failed: this._failed,
264
+ lastSuccessAt: this._lastSuccessAt,
265
+ };
266
+ }
267
+ /**
268
+ * Block until all queued background writes have completed (or failed).
269
+ * Use this in tests to ensure writes have landed before reading back.
270
+ */
271
+ async flush() {
272
+ const pending = this._pending.splice(0);
273
+ await Promise.all(pending);
274
+ }
275
+ /**
276
+ * Flush remaining writes. Equivalent to flush() for the JS SDK since
277
+ * there is no background thread to stop — just pending promises.
278
+ */
279
+ async shutdown() {
280
+ await this.flush();
281
+ }
168
282
  // ============================================================
169
283
  // High-level API (matches docs)
170
284
  // ============================================================
171
285
  /**
172
286
  * Trace a function call, capturing the decision automatically.
173
287
  *
288
+ * The function is still awaited (blocking), but all audit writes
289
+ * (intent, context, decision, execution) are fire-and-forget.
290
+ *
174
291
  * ```ts
175
292
  * const result = await tenet.trace({
176
293
  * agentId: 'finance-bot-v1',
@@ -183,22 +300,19 @@ class Tenet {
183
300
  async trace(params) {
184
301
  const sessionId = params.sessionId ?? (0, crypto_1.randomUUID)();
185
302
  const modelVersion = params.modelVersion ?? "unknown";
186
- // 1. Create intent
187
- const intent = await this.createIntent({
303
+ // 1. Create intent (fire-and-forget)
304
+ const intent = this.createIntent({
188
305
  goal: `trace:${params.agentId}`,
189
306
  agentId: params.agentId,
190
307
  sessionId,
191
308
  origin: types_1.OriginType.AGENT,
192
309
  environment: this.environment,
193
310
  });
194
- // 2. Snapshot context (capture params as inputs)
195
- const context = await this.createContext({
196
- intentId: intent.intentId,
197
- inputs: {
198
- agent_id: params.agentId,
199
- metadata: params.metadata ?? {},
200
- tags: params.tags ?? [],
201
- },
311
+ // 2. Snapshot context (fire-and-forget)
312
+ const contextId = intent.snapshotContext({
313
+ agent_id: params.agentId,
314
+ metadata: params.metadata ?? {},
315
+ tags: params.tags ?? [],
202
316
  });
203
317
  // 3. Execute the wrapped function
204
318
  let output;
@@ -212,10 +326,8 @@ class Tenet {
212
326
  error = e instanceof Error ? e.message : String(e);
213
327
  output = undefined;
214
328
  }
215
- // 4. Record decision
216
- const decision = await this.createDecision({
217
- intentId: intent.intentId,
218
- contextId: context.id,
329
+ // 4. Record decision (fire-and-forget)
330
+ const decisionId = intent.decide({
219
331
  options: [
220
332
  {
221
333
  action: params.agentId,
@@ -229,9 +341,8 @@ class Tenet {
229
341
  tags: params.tags,
230
342
  metadata: params.metadata,
231
343
  });
232
- // 5. Record execution
233
- const execution = await this.createExecution({
234
- decisionId: decision.id,
344
+ // 5. Record execution (fire-and-forget)
345
+ const executionId = intent.execute({
235
346
  action: params.agentId,
236
347
  target: { output: success ? output : null },
237
348
  result: success ? types_1.ResultType.SUCCESS : types_1.ResultType.FAILURE,
@@ -241,12 +352,12 @@ class Tenet {
241
352
  throw new Error(error);
242
353
  }
243
354
  return {
244
- id: decision.id,
355
+ id: decisionId,
245
356
  output,
246
357
  intentId: intent.intentId,
247
- contextId: context.id,
248
- decisionId: decision.id,
249
- executionId: execution.id,
358
+ contextId,
359
+ decisionId,
360
+ executionId,
250
361
  };
251
362
  }
252
363
  /**
@@ -302,10 +413,15 @@ class Tenet {
302
413
  // ============================================================
303
414
  // Low-level API (full control, mirrors Python SDK)
304
415
  // ============================================================
305
- /** Create an intent and return a handle for chaining context/decision/execution. */
306
- async createIntent(params) {
416
+ /**
417
+ * Create an intent and return a handle for chaining context/decision/execution.
418
+ * UUID is generated client-side; the write is fire-and-forget.
419
+ */
420
+ createIntent(params) {
307
421
  const sessionId = params.sessionId ?? (0, crypto_1.randomUUID)();
422
+ const intentId = (0, crypto_1.randomUUID)();
308
423
  const body = {
424
+ id: intentId,
309
425
  goal: params.goal,
310
426
  agent_id: params.agentId ?? "default",
311
427
  session_id: sessionId,
@@ -320,20 +436,29 @@ class Tenet {
320
436
  body.tool_name = params.toolName;
321
437
  if (params.environment)
322
438
  body.environment = params.environment;
323
- const response = await this.post("/intents", body);
324
- return new IntentHandle(this, response.id, sessionId);
439
+ this.postWrite("/intents", body);
440
+ return new IntentHandle(this, intentId, sessionId);
325
441
  }
326
- /** Snapshot context for an intent. */
442
+ /** @deprecated Use intent.snapshotContext() instead. Kept for backward compat. */
327
443
  async createContext(params) {
328
- return this.post("/contexts", {
444
+ const contextId = (0, crypto_1.randomUUID)();
445
+ const body = {
446
+ id: contextId,
329
447
  intent_id: params.intentId,
330
448
  inputs: params.inputs,
331
449
  external_versions: params.externalVersions ?? {},
332
- });
450
+ };
451
+ if (this.asyncWrites) {
452
+ this.postWrite("/contexts", body);
453
+ return { id: contextId, intent_id: params.intentId, inputs: params.inputs, external_versions: params.externalVersions ?? {}, snapshot_hash: "", created_at: "" };
454
+ }
455
+ return this.post("/contexts", body);
333
456
  }
334
- /** Record a decision. */
457
+ /** @deprecated Use intent.decide() instead. Kept for backward compat. */
335
458
  async createDecision(params) {
459
+ const decisionId = (0, crypto_1.randomUUID)();
336
460
  const body = {
461
+ id: decisionId,
337
462
  intent_id: params.intentId,
338
463
  context_id: params.contextId,
339
464
  options: params.options,
@@ -355,11 +480,17 @@ class Tenet {
355
480
  api_base: params.replayConfig.apiBase,
356
481
  };
357
482
  }
483
+ if (this.asyncWrites) {
484
+ this.postWrite("/decisions", body);
485
+ return { id: decisionId, intent_id: params.intentId, context_id: params.contextId, options: params.options, chosen_action: params.chosenAction, confidence: params.confidence, model_version: params.modelVersion, rules_evaluated: params.rulesEvaluated ?? [], tags: params.tags ?? [], metadata: params.metadata ?? {}, created_at: "" };
486
+ }
358
487
  return this.post("/decisions", body);
359
488
  }
360
- /** Record an execution. */
489
+ /** @deprecated Use intent.execute() instead. Kept for backward compat. */
361
490
  async createExecution(params) {
491
+ const executionId = (0, crypto_1.randomUUID)();
362
492
  const body = {
493
+ id: executionId,
363
494
  decision_id: params.decisionId,
364
495
  action: params.action,
365
496
  target: params.target,
@@ -373,6 +504,10 @@ class Tenet {
373
504
  body.override_reason = params.overrideReason;
374
505
  if (params.overriddenBy)
375
506
  body.overridden_by = params.overriddenBy;
507
+ if (this.asyncWrites) {
508
+ this.postWrite("/executions", body);
509
+ return { id: executionId, decision_id: params.decisionId, action: params.action, target: params.target, result: (params.result ?? types_1.ResultType.SUCCESS), side_effects: params.sideEffects ?? [], actor: (params.actor ?? types_1.ActorType.AGENT), created_at: "" };
510
+ }
376
511
  return this.post("/executions", body);
377
512
  }
378
513
  // --- Read endpoints ---
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -17,6 +17,12 @@ export interface TenetConfig {
17
17
  endpoint?: string;
18
18
  environment?: string;
19
19
  timeout?: number;
20
+ /** Enable fire-and-forget writes via background queue. Defaults to true. */
21
+ asyncWrites?: boolean;
22
+ /** Max retries for failed background writes before silent drop. Defaults to 3. */
23
+ maxRetries?: number;
24
+ /** Callback for observability into background write failures. */
25
+ onError?: (error: Error, payload: Record<string, unknown>) => void;
20
26
  }
21
27
  export interface ActionOption {
22
28
  action: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenet-ai/sdk",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "Node.js SDK for Tenet AI - Audit trail and replay for AI agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",