sentienceapi 0.90.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 (107) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +946 -0
  3. package/dist/actions.d.ts +54 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +349 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/agent.d.ts +157 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +437 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/browser.d.ts +46 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +622 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +5 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/conversational-agent.d.ts +123 -0
  20. package/dist/conversational-agent.d.ts.map +1 -0
  21. package/dist/conversational-agent.js +327 -0
  22. package/dist/conversational-agent.js.map +1 -0
  23. package/dist/expect.d.ts +16 -0
  24. package/dist/expect.d.ts.map +1 -0
  25. package/dist/expect.js +66 -0
  26. package/dist/expect.js.map +1 -0
  27. package/dist/generator.d.ts +16 -0
  28. package/dist/generator.d.ts.map +1 -0
  29. package/dist/generator.js +205 -0
  30. package/dist/generator.js.map +1 -0
  31. package/dist/index.d.ts +21 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +70 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/inspector.d.ts +13 -0
  36. package/dist/inspector.d.ts.map +1 -0
  37. package/dist/inspector.js +147 -0
  38. package/dist/inspector.js.map +1 -0
  39. package/dist/llm-provider.d.ts +60 -0
  40. package/dist/llm-provider.d.ts.map +1 -0
  41. package/dist/llm-provider.js +106 -0
  42. package/dist/llm-provider.js.map +1 -0
  43. package/dist/query.d.ts +8 -0
  44. package/dist/query.d.ts.map +1 -0
  45. package/dist/query.js +337 -0
  46. package/dist/query.js.map +1 -0
  47. package/dist/read.d.ts +40 -0
  48. package/dist/read.d.ts.map +1 -0
  49. package/dist/read.js +86 -0
  50. package/dist/read.js.map +1 -0
  51. package/dist/recorder.d.ts +44 -0
  52. package/dist/recorder.d.ts.map +1 -0
  53. package/dist/recorder.js +256 -0
  54. package/dist/recorder.js.map +1 -0
  55. package/dist/screenshot.d.ts +17 -0
  56. package/dist/screenshot.d.ts.map +1 -0
  57. package/dist/screenshot.js +37 -0
  58. package/dist/screenshot.js.map +1 -0
  59. package/dist/snapshot.d.ts +23 -0
  60. package/dist/snapshot.d.ts.map +1 -0
  61. package/dist/snapshot.js +187 -0
  62. package/dist/snapshot.js.map +1 -0
  63. package/dist/tracing/cloud-sink.d.ts +74 -0
  64. package/dist/tracing/cloud-sink.d.ts.map +1 -0
  65. package/dist/tracing/cloud-sink.js +262 -0
  66. package/dist/tracing/cloud-sink.js.map +1 -0
  67. package/dist/tracing/index.d.ts +12 -0
  68. package/dist/tracing/index.d.ts.map +1 -0
  69. package/dist/tracing/index.js +28 -0
  70. package/dist/tracing/index.js.map +1 -0
  71. package/dist/tracing/jsonl-sink.d.ts +41 -0
  72. package/dist/tracing/jsonl-sink.d.ts.map +1 -0
  73. package/dist/tracing/jsonl-sink.js +168 -0
  74. package/dist/tracing/jsonl-sink.js.map +1 -0
  75. package/dist/tracing/sink.d.ts +24 -0
  76. package/dist/tracing/sink.d.ts.map +1 -0
  77. package/dist/tracing/sink.js +15 -0
  78. package/dist/tracing/sink.js.map +1 -0
  79. package/dist/tracing/tracer-factory.d.ts +57 -0
  80. package/dist/tracing/tracer-factory.d.ts.map +1 -0
  81. package/dist/tracing/tracer-factory.js +274 -0
  82. package/dist/tracing/tracer-factory.js.map +1 -0
  83. package/dist/tracing/tracer.d.ts +74 -0
  84. package/dist/tracing/tracer.d.ts.map +1 -0
  85. package/dist/tracing/tracer.js +131 -0
  86. package/dist/tracing/tracer.js.map +1 -0
  87. package/dist/tracing/types.d.ts +63 -0
  88. package/dist/tracing/types.d.ts.map +1 -0
  89. package/dist/tracing/types.js +8 -0
  90. package/dist/tracing/types.js.map +1 -0
  91. package/dist/types.d.ts +110 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils.d.ts +29 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +74 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/wait.d.ts +20 -0
  100. package/dist/wait.d.ts.map +1 -0
  101. package/dist/wait.js +63 -0
  102. package/dist/wait.js.map +1 -0
  103. package/package.json +72 -0
  104. package/spec/README.md +72 -0
  105. package/spec/SNAPSHOT_V1.md +208 -0
  106. package/spec/sdk-types.md +259 -0
  107. package/spec/snapshot.schema.json +148 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Tracer Factory with Automatic Tier Detection
3
+ *
4
+ * Provides convenient factory function for creating tracers with cloud upload support
5
+ *
6
+ * PRODUCTION HARDENING:
7
+ * - Recovers orphaned traces from previous crashes on SDK init (Risk #3)
8
+ * - Passes runId to CloudTraceSink for persistent cache naming (Risk #1)
9
+ */
10
+ import { Tracer } from './tracer';
11
+ /**
12
+ * Sentience API base URL (constant)
13
+ */
14
+ export declare const SENTIENCE_API_URL = "https://api.sentienceapi.com";
15
+ /**
16
+ * Create tracer with automatic tier detection
17
+ *
18
+ * Tier Detection:
19
+ * - If apiKey is provided: Try to initialize CloudTraceSink (Pro/Enterprise)
20
+ * - If cloud init fails or no apiKey: Fall back to JsonlTraceSink (Free tier)
21
+ *
22
+ * @param options - Configuration options
23
+ * @param options.apiKey - Sentience API key (e.g., "sk_pro_xxxxx")
24
+ * @param options.runId - Unique identifier for this agent run (generates UUID if not provided)
25
+ * @param options.apiUrl - Sentience API base URL (default: https://api.sentienceapi.com)
26
+ * @returns Tracer configured with appropriate sink
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Pro tier user
31
+ * const tracer = await createTracer({ apiKey: "sk_pro_xyz", runId: "demo" });
32
+ * // Returns: Tracer with CloudTraceSink
33
+ *
34
+ * // Free tier user
35
+ * const tracer = await createTracer({ runId: "demo" });
36
+ * // Returns: Tracer with JsonlTraceSink (local-only)
37
+ *
38
+ * // Use with agent
39
+ * const agent = new SentienceAgent(browser, llm, 50, true, tracer);
40
+ * await agent.act("Click search");
41
+ * await tracer.close(); // Uploads to cloud if Pro tier
42
+ * ```
43
+ */
44
+ export declare function createTracer(options: {
45
+ apiKey?: string;
46
+ runId?: string;
47
+ apiUrl?: string;
48
+ }): Promise<Tracer>;
49
+ /**
50
+ * Synchronous version of createTracer for non-async contexts
51
+ * Always returns local JsonlTraceSink (no cloud upload)
52
+ *
53
+ * @param runId - Unique identifier for this agent run (generates UUID if not provided)
54
+ * @returns Tracer with JsonlTraceSink
55
+ */
56
+ export declare function createLocalTracer(runId?: string): Tracer;
57
+ //# sourceMappingURL=tracer-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer-factory.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AACH,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AA2IhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DlB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxD"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ /**
3
+ * Tracer Factory with Automatic Tier Detection
4
+ *
5
+ * Provides convenient factory function for creating tracers with cloud upload support
6
+ *
7
+ * PRODUCTION HARDENING:
8
+ * - Recovers orphaned traces from previous crashes on SDK init (Risk #3)
9
+ * - Passes runId to CloudTraceSink for persistent cache naming (Risk #1)
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.SENTIENCE_API_URL = void 0;
46
+ exports.createTracer = createTracer;
47
+ exports.createLocalTracer = createLocalTracer;
48
+ const path = __importStar(require("path"));
49
+ const fs = __importStar(require("fs"));
50
+ const os = __importStar(require("os"));
51
+ const https = __importStar(require("https"));
52
+ const http = __importStar(require("http"));
53
+ const url_1 = require("url");
54
+ const crypto_1 = require("crypto");
55
+ const tracer_1 = require("./tracer");
56
+ const cloud_sink_1 = require("./cloud-sink");
57
+ const jsonl_sink_1 = require("./jsonl-sink");
58
+ /**
59
+ * Sentience API base URL (constant)
60
+ */
61
+ exports.SENTIENCE_API_URL = 'https://api.sentienceapi.com';
62
+ /**
63
+ * Get persistent cache directory for traces
64
+ */
65
+ function getPersistentCacheDir() {
66
+ const homeDir = os.homedir();
67
+ return path.join(homeDir, '.sentience', 'traces', 'pending');
68
+ }
69
+ /**
70
+ * Recover orphaned traces from previous crashes
71
+ * PRODUCTION FIX: Risk #3 - Upload traces from crashed sessions
72
+ *
73
+ * Note: Silently skips in test environments to avoid test noise
74
+ */
75
+ async function recoverOrphanedTraces(apiKey, apiUrl = exports.SENTIENCE_API_URL) {
76
+ // Skip orphan recovery in test environments (CI, Jest, etc.)
77
+ // This prevents test failures from orphan recovery attempts
78
+ const isTestEnv = process.env.CI === 'true' ||
79
+ process.env.NODE_ENV === 'test' ||
80
+ process.env.JEST_WORKER_ID !== undefined ||
81
+ (typeof global !== 'undefined' && global.__JEST__);
82
+ if (isTestEnv) {
83
+ return;
84
+ }
85
+ const cacheDir = getPersistentCacheDir();
86
+ if (!fs.existsSync(cacheDir)) {
87
+ return;
88
+ }
89
+ let orphanedFiles;
90
+ try {
91
+ orphanedFiles = fs.readdirSync(cacheDir).filter(f => f.endsWith('.jsonl'));
92
+ }
93
+ catch (error) {
94
+ // Silently fail if directory read fails (permissions, etc.)
95
+ return;
96
+ }
97
+ if (orphanedFiles.length === 0) {
98
+ return;
99
+ }
100
+ console.log(`⚠️ [Sentience] Found ${orphanedFiles.length} un-uploaded trace(s) from previous run(s)`);
101
+ console.log(' Attempting to upload now...');
102
+ for (const file of orphanedFiles) {
103
+ const filePath = path.join(cacheDir, file);
104
+ const runId = path.basename(file, '.jsonl');
105
+ try {
106
+ // Request upload URL for this orphaned trace
107
+ // Use a shorter timeout for orphan recovery to avoid blocking
108
+ const response = await Promise.race([
109
+ httpPost(`${apiUrl}/v1/traces/init`, { run_id: runId }, { Authorization: `Bearer ${apiKey}` }),
110
+ new Promise((resolve) => setTimeout(() => resolve({ status: 500, data: {} }), 5000))
111
+ ]);
112
+ if (response.status === 200 && response.data.upload_url) {
113
+ // Create a temporary CloudTraceSink to upload this orphaned trace
114
+ const sink = new cloud_sink_1.CloudTraceSink(response.data.upload_url, runId);
115
+ await sink.close(); // This will upload the existing file
116
+ console.log(`✅ [Sentience] Uploaded orphaned trace: ${runId}`);
117
+ }
118
+ // Silently skip failures - don't log errors for orphan recovery
119
+ // These are expected in many scenarios (network issues, invalid API keys, etc.)
120
+ }
121
+ catch (error) {
122
+ // Silently skip failures - don't log errors for orphan recovery
123
+ // These are expected in many scenarios (network issues, invalid API keys, etc.)
124
+ }
125
+ }
126
+ }
127
+ /**
128
+ * Make HTTP/HTTPS POST request using built-in Node modules
129
+ */
130
+ function httpPost(url, data, headers) {
131
+ return new Promise((resolve, reject) => {
132
+ const urlObj = new url_1.URL(url);
133
+ const protocol = urlObj.protocol === 'https:' ? https : http;
134
+ const body = JSON.stringify(data);
135
+ const options = {
136
+ hostname: urlObj.hostname,
137
+ port: urlObj.port || (urlObj.protocol === 'https:' ? 443 : 80),
138
+ path: urlObj.pathname + urlObj.search,
139
+ method: 'POST',
140
+ headers: {
141
+ 'Content-Type': 'application/json',
142
+ 'Content-Length': Buffer.byteLength(body),
143
+ ...headers,
144
+ },
145
+ timeout: 10000, // 10 second timeout
146
+ };
147
+ const req = protocol.request(options, (res) => {
148
+ let responseBody = '';
149
+ res.on('data', (chunk) => {
150
+ responseBody += chunk;
151
+ });
152
+ res.on('end', () => {
153
+ try {
154
+ const parsed = responseBody ? JSON.parse(responseBody) : {};
155
+ resolve({ status: res.statusCode || 500, data: parsed });
156
+ }
157
+ catch (error) {
158
+ resolve({ status: res.statusCode || 500, data: {} });
159
+ }
160
+ });
161
+ });
162
+ req.on('error', (error) => {
163
+ reject(error);
164
+ });
165
+ req.on('timeout', () => {
166
+ req.destroy();
167
+ reject(new Error('Request timeout'));
168
+ });
169
+ req.write(body);
170
+ req.end();
171
+ });
172
+ }
173
+ /**
174
+ * Create tracer with automatic tier detection
175
+ *
176
+ * Tier Detection:
177
+ * - If apiKey is provided: Try to initialize CloudTraceSink (Pro/Enterprise)
178
+ * - If cloud init fails or no apiKey: Fall back to JsonlTraceSink (Free tier)
179
+ *
180
+ * @param options - Configuration options
181
+ * @param options.apiKey - Sentience API key (e.g., "sk_pro_xxxxx")
182
+ * @param options.runId - Unique identifier for this agent run (generates UUID if not provided)
183
+ * @param options.apiUrl - Sentience API base URL (default: https://api.sentienceapi.com)
184
+ * @returns Tracer configured with appropriate sink
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * // Pro tier user
189
+ * const tracer = await createTracer({ apiKey: "sk_pro_xyz", runId: "demo" });
190
+ * // Returns: Tracer with CloudTraceSink
191
+ *
192
+ * // Free tier user
193
+ * const tracer = await createTracer({ runId: "demo" });
194
+ * // Returns: Tracer with JsonlTraceSink (local-only)
195
+ *
196
+ * // Use with agent
197
+ * const agent = new SentienceAgent(browser, llm, 50, true, tracer);
198
+ * await agent.act("Click search");
199
+ * await tracer.close(); // Uploads to cloud if Pro tier
200
+ * ```
201
+ */
202
+ async function createTracer(options) {
203
+ const runId = options.runId || (0, crypto_1.randomUUID)();
204
+ const apiUrl = options.apiUrl || exports.SENTIENCE_API_URL;
205
+ // PRODUCTION FIX: Recover orphaned traces from previous crashes
206
+ // Note: This is skipped in test environments (see recoverOrphanedTraces function)
207
+ // Run in background to avoid blocking tracer creation
208
+ if (options.apiKey) {
209
+ // Don't await - run in background to avoid blocking
210
+ recoverOrphanedTraces(options.apiKey, apiUrl).catch(() => {
211
+ // Silently fail - orphan recovery should not block tracer creation
212
+ });
213
+ }
214
+ // 1. Try to initialize Cloud Sink (Pro/Enterprise tier)
215
+ if (options.apiKey) {
216
+ try {
217
+ // Request pre-signed upload URL from backend
218
+ const response = await httpPost(`${apiUrl}/v1/traces/init`, { run_id: runId }, { Authorization: `Bearer ${options.apiKey}` });
219
+ if (response.status === 200 && response.data.upload_url) {
220
+ const uploadUrl = response.data.upload_url;
221
+ console.log('☁️ [Sentience] Cloud tracing enabled (Pro tier)');
222
+ // PRODUCTION FIX: Pass runId for persistent cache naming
223
+ return new tracer_1.Tracer(runId, new cloud_sink_1.CloudTraceSink(uploadUrl, runId));
224
+ }
225
+ else if (response.status === 403) {
226
+ console.log('⚠️ [Sentience] Cloud tracing requires Pro tier');
227
+ console.log(' Falling back to local-only tracing');
228
+ }
229
+ else {
230
+ console.log(`⚠️ [Sentience] Cloud init failed: HTTP ${response.status}`);
231
+ console.log(' Falling back to local-only tracing');
232
+ }
233
+ }
234
+ catch (error) {
235
+ if (error.message?.includes('timeout')) {
236
+ console.log('⚠️ [Sentience] Cloud init timeout');
237
+ }
238
+ else if (error.code === 'ECONNREFUSED' || error.message?.includes('connect')) {
239
+ console.log('⚠️ [Sentience] Cloud init connection error');
240
+ }
241
+ else {
242
+ console.log(`⚠️ [Sentience] Cloud init error: ${error.message}`);
243
+ }
244
+ console.log(' Falling back to local-only tracing');
245
+ }
246
+ }
247
+ // 2. Fallback to Local Sink (Free tier / Offline mode)
248
+ const tracesDir = path.join(process.cwd(), 'traces');
249
+ // Create traces directory if it doesn't exist
250
+ if (!fs.existsSync(tracesDir)) {
251
+ fs.mkdirSync(tracesDir, { recursive: true });
252
+ }
253
+ const localPath = path.join(tracesDir, `${runId}.jsonl`);
254
+ console.log(`💾 [Sentience] Local tracing: ${localPath}`);
255
+ return new tracer_1.Tracer(runId, new jsonl_sink_1.JsonlTraceSink(localPath));
256
+ }
257
+ /**
258
+ * Synchronous version of createTracer for non-async contexts
259
+ * Always returns local JsonlTraceSink (no cloud upload)
260
+ *
261
+ * @param runId - Unique identifier for this agent run (generates UUID if not provided)
262
+ * @returns Tracer with JsonlTraceSink
263
+ */
264
+ function createLocalTracer(runId) {
265
+ const traceRunId = runId || (0, crypto_1.randomUUID)();
266
+ const tracesDir = path.join(process.cwd(), 'traces');
267
+ if (!fs.existsSync(tracesDir)) {
268
+ fs.mkdirSync(tracesDir, { recursive: true });
269
+ }
270
+ const localPath = path.join(tracesDir, `${traceRunId}.jsonl`);
271
+ console.log(`💾 [Sentience] Local tracing: ${localPath}`);
272
+ return new tracer_1.Tracer(traceRunId, new jsonl_sink_1.JsonlTraceSink(localPath));
273
+ }
274
+ //# sourceMappingURL=tracer-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer-factory.js","sourceRoot":"","sources":["../../src/tracing/tracer-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Tracer Class
3
+ *
4
+ * High-level API for emitting trace events with automatic sequencing and timestamps
5
+ */
6
+ import { TraceSink } from './sink';
7
+ import { TraceEventData } from './types';
8
+ /**
9
+ * Tracer provides a high-level API for recording agent execution traces
10
+ */
11
+ export declare class Tracer {
12
+ private runId;
13
+ private sink;
14
+ private seq;
15
+ /**
16
+ * Create a new Tracer
17
+ * @param runId - Unique run identifier (UUID)
18
+ * @param sink - TraceSink implementation (e.g., JsonlTraceSink)
19
+ */
20
+ constructor(runId: string, sink: TraceSink);
21
+ /**
22
+ * Emit a trace event
23
+ * @param eventType - Type of event (e.g., 'run_start', 'snapshot')
24
+ * @param data - Event-specific payload
25
+ * @param stepId - Optional step UUID
26
+ */
27
+ emit(eventType: string, data: TraceEventData, stepId?: string): void;
28
+ /**
29
+ * Emit run_start event
30
+ * @param agent - Agent type (e.g., 'SentienceAgent')
31
+ * @param llmModel - Optional LLM model name
32
+ * @param config - Optional configuration
33
+ */
34
+ emitRunStart(agent: string, llmModel?: string, config?: Record<string, any>): void;
35
+ /**
36
+ * Emit step_start event
37
+ * @param stepId - Step UUID
38
+ * @param stepIndex - Step number (1-indexed)
39
+ * @param goal - Goal description
40
+ * @param attempt - Retry attempt number (0 = first try)
41
+ * @param preUrl - Optional URL before step execution
42
+ */
43
+ emitStepStart(stepId: string, stepIndex: number, goal: string, attempt?: number, preUrl?: string): void;
44
+ /**
45
+ * Emit run_end event
46
+ * @param steps - Total number of steps executed
47
+ */
48
+ emitRunEnd(steps: number): void;
49
+ /**
50
+ * Emit error event
51
+ * @param stepId - Step UUID where error occurred
52
+ * @param error - Error message
53
+ * @param attempt - Retry attempt number
54
+ */
55
+ emitError(stepId: string, error: string, attempt?: number): void;
56
+ /**
57
+ * Close the underlying sink (flush buffered data)
58
+ * @param blocking - If false, upload happens in background (default: true). Only applies to CloudTraceSink.
59
+ */
60
+ close(blocking?: boolean): Promise<void>;
61
+ /**
62
+ * Get run ID
63
+ */
64
+ getRunId(): string;
65
+ /**
66
+ * Get current sequence number
67
+ */
68
+ getSeq(): number;
69
+ /**
70
+ * Get sink type (for debugging)
71
+ */
72
+ getSinkType(): string;
73
+ }
74
+ //# sourceMappingURL=tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,GAAG,CAAS;IAEpB;;;;OAIG;gBACS,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAM1C;;;;;OAKG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAwBP;;;;;OAKG;IACH,YAAY,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,IAAI;IAQP;;;;;;;OAOG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAU,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAeP;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,IAAI;IAInE;;;OAGG;IACG,KAAK,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * Tracer Class
4
+ *
5
+ * High-level API for emitting trace events with automatic sequencing and timestamps
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Tracer = void 0;
9
+ /**
10
+ * Tracer provides a high-level API for recording agent execution traces
11
+ */
12
+ class Tracer {
13
+ /**
14
+ * Create a new Tracer
15
+ * @param runId - Unique run identifier (UUID)
16
+ * @param sink - TraceSink implementation (e.g., JsonlTraceSink)
17
+ */
18
+ constructor(runId, sink) {
19
+ this.runId = runId;
20
+ this.sink = sink;
21
+ this.seq = 0;
22
+ }
23
+ /**
24
+ * Emit a trace event
25
+ * @param eventType - Type of event (e.g., 'run_start', 'snapshot')
26
+ * @param data - Event-specific payload
27
+ * @param stepId - Optional step UUID
28
+ */
29
+ emit(eventType, data, stepId) {
30
+ this.seq += 1;
31
+ // Generate timestamps
32
+ const tsMs = Date.now();
33
+ const ts = new Date(tsMs).toISOString();
34
+ const event = {
35
+ v: 1,
36
+ type: eventType,
37
+ ts,
38
+ ts_ms: tsMs,
39
+ run_id: this.runId,
40
+ seq: this.seq,
41
+ data,
42
+ };
43
+ if (stepId) {
44
+ event.step_id = stepId;
45
+ }
46
+ this.sink.emit(event);
47
+ }
48
+ /**
49
+ * Emit run_start event
50
+ * @param agent - Agent type (e.g., 'SentienceAgent')
51
+ * @param llmModel - Optional LLM model name
52
+ * @param config - Optional configuration
53
+ */
54
+ emitRunStart(agent, llmModel, config) {
55
+ const data = { agent };
56
+ if (llmModel)
57
+ data.llm_model = llmModel;
58
+ if (config)
59
+ data.config = config;
60
+ this.emit('run_start', data);
61
+ }
62
+ /**
63
+ * Emit step_start event
64
+ * @param stepId - Step UUID
65
+ * @param stepIndex - Step number (1-indexed)
66
+ * @param goal - Goal description
67
+ * @param attempt - Retry attempt number (0 = first try)
68
+ * @param preUrl - Optional URL before step execution
69
+ */
70
+ emitStepStart(stepId, stepIndex, goal, attempt = 0, preUrl) {
71
+ const data = {
72
+ step_id: stepId,
73
+ step_index: stepIndex,
74
+ goal,
75
+ attempt,
76
+ };
77
+ if (preUrl) {
78
+ data.url = preUrl;
79
+ }
80
+ this.emit('step_start', data, stepId);
81
+ }
82
+ /**
83
+ * Emit run_end event
84
+ * @param steps - Total number of steps executed
85
+ */
86
+ emitRunEnd(steps) {
87
+ this.emit('run_end', { steps });
88
+ }
89
+ /**
90
+ * Emit error event
91
+ * @param stepId - Step UUID where error occurred
92
+ * @param error - Error message
93
+ * @param attempt - Retry attempt number
94
+ */
95
+ emitError(stepId, error, attempt = 0) {
96
+ this.emit('error', { step_id: stepId, error, attempt }, stepId);
97
+ }
98
+ /**
99
+ * Close the underlying sink (flush buffered data)
100
+ * @param blocking - If false, upload happens in background (default: true). Only applies to CloudTraceSink.
101
+ */
102
+ async close(blocking = true) {
103
+ // Check if sink has a close method that accepts blocking parameter
104
+ if (typeof this.sink.close === 'function' && this.sink.close.length > 0) {
105
+ await this.sink.close(blocking);
106
+ }
107
+ else {
108
+ await this.sink.close();
109
+ }
110
+ }
111
+ /**
112
+ * Get run ID
113
+ */
114
+ getRunId() {
115
+ return this.runId;
116
+ }
117
+ /**
118
+ * Get current sequence number
119
+ */
120
+ getSeq() {
121
+ return this.seq;
122
+ }
123
+ /**
124
+ * Get sink type (for debugging)
125
+ */
126
+ getSinkType() {
127
+ return this.sink.getSinkType();
128
+ }
129
+ }
130
+ exports.Tracer = Tracer;
131
+ //# sourceMappingURL=tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Tracing Types
3
+ *
4
+ * Schema v1 - Compatible with Python SDK
5
+ */
6
+ /**
7
+ * TraceEvent represents a single event in an agent execution trace
8
+ */
9
+ export interface TraceEvent {
10
+ /** Schema version (always 1 for now) */
11
+ v: number;
12
+ /** Event type (e.g., 'run_start', 'snapshot', 'action') */
13
+ type: string;
14
+ /** ISO 8601 timestamp */
15
+ ts: string;
16
+ /** Run UUID */
17
+ run_id: string;
18
+ /** Sequence number (monotonically increasing) */
19
+ seq: number;
20
+ /** Event-specific payload */
21
+ data: Record<string, any>;
22
+ /** Optional step UUID (for step-scoped events) */
23
+ step_id?: string;
24
+ /** Optional Unix timestamp in milliseconds */
25
+ ts_ms?: number;
26
+ }
27
+ /**
28
+ * TraceEventData contains common fields for event payloads
29
+ */
30
+ export interface TraceEventData {
31
+ goal?: string;
32
+ step_index?: number;
33
+ attempt?: number;
34
+ step_id?: string;
35
+ url?: string;
36
+ elements?: Array<{
37
+ id: number;
38
+ bbox: {
39
+ x: number;
40
+ y: number;
41
+ width: number;
42
+ height: number;
43
+ };
44
+ role: string;
45
+ text?: string;
46
+ }>;
47
+ model?: string;
48
+ prompt_tokens?: number;
49
+ completion_tokens?: number;
50
+ response_text?: string;
51
+ action_type?: string;
52
+ element_id?: number;
53
+ text?: string;
54
+ key?: string;
55
+ success?: boolean;
56
+ error?: string;
57
+ agent?: string;
58
+ llm_model?: string;
59
+ config?: Record<string, any>;
60
+ steps?: number;
61
+ [key: string]: any;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IAEV,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IAEX,eAAe;IACf,MAAM,EAAE,MAAM,CAAC;IAEf,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IAEZ,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9D,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IAGH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Tracing Types
4
+ *
5
+ * Schema v1 - Compatible with Python SDK
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracing/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}