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,74 @@
1
+ /**
2
+ * CloudTraceSink - Enterprise Cloud Upload
3
+ *
4
+ * Implements "Local Write, Batch Upload" pattern for cloud tracing
5
+ *
6
+ * PRODUCTION HARDENING:
7
+ * - Uses persistent cache directory (~/.sentience/traces/pending/) to survive crashes
8
+ * - Supports non-blocking close() to avoid hanging user scripts
9
+ * - Preserves traces locally on upload failure
10
+ */
11
+ import { TraceSink } from './sink';
12
+ /**
13
+ * CloudTraceSink writes trace events to a local temp file,
14
+ * then uploads the complete trace to cloud storage on close()
15
+ *
16
+ * Architecture:
17
+ * 1. **Local Buffer**: Writes to temp file (zero latency, non-blocking)
18
+ * 2. **Pre-signed URL**: Uses secure pre-signed PUT URL from backend API
19
+ * 3. **Batch Upload**: Uploads complete file on close() or at intervals
20
+ * 4. **Zero Credential Exposure**: Never embeds cloud credentials in SDK
21
+ *
22
+ * This design ensures:
23
+ * - Fast agent performance (microseconds per emit, not milliseconds)
24
+ * - Security (credentials stay on backend)
25
+ * - Reliability (network issues don't crash the agent)
26
+ *
27
+ * Example:
28
+ * const sink = new CloudTraceSink(uploadUrl);
29
+ * const tracer = new Tracer(runId, sink);
30
+ * tracer.emitRunStart('SentienceAgent');
31
+ * await tracer.close(); // Uploads to cloud
32
+ */
33
+ export declare class CloudTraceSink extends TraceSink {
34
+ private uploadUrl;
35
+ private tempFilePath;
36
+ private runId;
37
+ private writeStream;
38
+ private closed;
39
+ /**
40
+ * Create a new CloudTraceSink
41
+ *
42
+ * @param uploadUrl - Pre-signed PUT URL from Sentience API
43
+ * @param runId - Run ID for persistent cache naming
44
+ */
45
+ constructor(uploadUrl: string, runId?: string);
46
+ /**
47
+ * Emit a trace event to local temp file (fast, non-blocking)
48
+ *
49
+ * @param event - Event dictionary from TraceEvent
50
+ */
51
+ emit(event: Record<string, any>): void;
52
+ /**
53
+ * Upload data to cloud using Node's built-in https module
54
+ */
55
+ private _uploadToCloud;
56
+ /**
57
+ * Upload buffered trace to cloud via pre-signed URL
58
+ *
59
+ * @param blocking - If false, upload happens in background (default: true)
60
+ *
61
+ * PRODUCTION FIX: Non-blocking mode prevents hanging user scripts
62
+ * on slow uploads (Risk #2 from production hardening plan)
63
+ */
64
+ close(blocking?: boolean): Promise<void>;
65
+ /**
66
+ * Internal upload logic (called by both blocking and non-blocking close)
67
+ */
68
+ private _doUpload;
69
+ /**
70
+ * Get unique identifier for this sink
71
+ */
72
+ getSinkType(): string;
73
+ }
74
+ //# sourceMappingURL=cloud-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-sink.d.ts","sourceRoot":"","sources":["../../src/tracing/cloud-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAkBnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;;;OAKG;gBACS,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IA8B7C;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAkBtC;;OAEG;YACW,cAAc;IAwC5B;;;;;;;OAOG;IACG,KAAK,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpD;;OAEG;YACW,SAAS;IA+CvB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ /**
3
+ * CloudTraceSink - Enterprise Cloud Upload
4
+ *
5
+ * Implements "Local Write, Batch Upload" pattern for cloud tracing
6
+ *
7
+ * PRODUCTION HARDENING:
8
+ * - Uses persistent cache directory (~/.sentience/traces/pending/) to survive crashes
9
+ * - Supports non-blocking close() to avoid hanging user scripts
10
+ * - Preserves traces locally on upload failure
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.CloudTraceSink = void 0;
47
+ const fs = __importStar(require("fs"));
48
+ const os = __importStar(require("os"));
49
+ const path = __importStar(require("path"));
50
+ const zlib = __importStar(require("zlib"));
51
+ const https = __importStar(require("https"));
52
+ const http = __importStar(require("http"));
53
+ const url_1 = require("url");
54
+ const sink_1 = require("./sink");
55
+ /**
56
+ * Get persistent cache directory for traces
57
+ * Uses ~/.sentience/traces/pending/ (survives process crashes)
58
+ */
59
+ function getPersistentCacheDir() {
60
+ const homeDir = os.homedir();
61
+ const cacheDir = path.join(homeDir, '.sentience', 'traces', 'pending');
62
+ // Create directory if it doesn't exist
63
+ if (!fs.existsSync(cacheDir)) {
64
+ fs.mkdirSync(cacheDir, { recursive: true });
65
+ }
66
+ return cacheDir;
67
+ }
68
+ /**
69
+ * CloudTraceSink writes trace events to a local temp file,
70
+ * then uploads the complete trace to cloud storage on close()
71
+ *
72
+ * Architecture:
73
+ * 1. **Local Buffer**: Writes to temp file (zero latency, non-blocking)
74
+ * 2. **Pre-signed URL**: Uses secure pre-signed PUT URL from backend API
75
+ * 3. **Batch Upload**: Uploads complete file on close() or at intervals
76
+ * 4. **Zero Credential Exposure**: Never embeds cloud credentials in SDK
77
+ *
78
+ * This design ensures:
79
+ * - Fast agent performance (microseconds per emit, not milliseconds)
80
+ * - Security (credentials stay on backend)
81
+ * - Reliability (network issues don't crash the agent)
82
+ *
83
+ * Example:
84
+ * const sink = new CloudTraceSink(uploadUrl);
85
+ * const tracer = new Tracer(runId, sink);
86
+ * tracer.emitRunStart('SentienceAgent');
87
+ * await tracer.close(); // Uploads to cloud
88
+ */
89
+ class CloudTraceSink extends sink_1.TraceSink {
90
+ /**
91
+ * Create a new CloudTraceSink
92
+ *
93
+ * @param uploadUrl - Pre-signed PUT URL from Sentience API
94
+ * @param runId - Run ID for persistent cache naming
95
+ */
96
+ constructor(uploadUrl, runId) {
97
+ super();
98
+ this.writeStream = null;
99
+ this.closed = false;
100
+ this.uploadUrl = uploadUrl;
101
+ this.runId = runId || `trace-${Date.now()}`;
102
+ // PRODUCTION FIX: Use persistent cache directory instead of /tmp
103
+ // This ensures traces survive process crashes!
104
+ const cacheDir = getPersistentCacheDir();
105
+ this.tempFilePath = path.join(cacheDir, `${this.runId}.jsonl`);
106
+ try {
107
+ // Open file in append mode
108
+ this.writeStream = fs.createWriteStream(this.tempFilePath, {
109
+ flags: 'a',
110
+ encoding: 'utf-8',
111
+ autoClose: true,
112
+ });
113
+ // Handle stream errors (suppress if closed)
114
+ this.writeStream.on('error', (error) => {
115
+ if (!this.closed) {
116
+ console.error('[CloudTraceSink] Stream error:', error);
117
+ }
118
+ });
119
+ }
120
+ catch (error) {
121
+ console.error('[CloudTraceSink] Failed to initialize sink:', error);
122
+ this.writeStream = null;
123
+ }
124
+ }
125
+ /**
126
+ * Emit a trace event to local temp file (fast, non-blocking)
127
+ *
128
+ * @param event - Event dictionary from TraceEvent
129
+ */
130
+ emit(event) {
131
+ if (this.closed) {
132
+ throw new Error('CloudTraceSink is closed');
133
+ }
134
+ if (!this.writeStream) {
135
+ console.error('[CloudTraceSink] Write stream not available');
136
+ return;
137
+ }
138
+ try {
139
+ const jsonStr = JSON.stringify(event);
140
+ this.writeStream.write(jsonStr + '\n');
141
+ }
142
+ catch (error) {
143
+ console.error('[CloudTraceSink] Write error:', error);
144
+ }
145
+ }
146
+ /**
147
+ * Upload data to cloud using Node's built-in https module
148
+ */
149
+ async _uploadToCloud(data) {
150
+ return new Promise((resolve, reject) => {
151
+ const url = new url_1.URL(this.uploadUrl);
152
+ const protocol = url.protocol === 'https:' ? https : http;
153
+ const options = {
154
+ hostname: url.hostname,
155
+ port: url.port || (url.protocol === 'https:' ? 443 : 80),
156
+ path: url.pathname + url.search,
157
+ method: 'PUT',
158
+ headers: {
159
+ 'Content-Type': 'application/x-gzip',
160
+ 'Content-Encoding': 'gzip',
161
+ 'Content-Length': data.length,
162
+ },
163
+ timeout: 60000, // 1 minute timeout
164
+ };
165
+ const req = protocol.request(options, (res) => {
166
+ // Consume response data (even if we don't use it)
167
+ res.on('data', () => { });
168
+ res.on('end', () => {
169
+ resolve(res.statusCode || 500);
170
+ });
171
+ });
172
+ req.on('error', (error) => {
173
+ reject(error);
174
+ });
175
+ req.on('timeout', () => {
176
+ req.destroy();
177
+ reject(new Error('Upload timeout'));
178
+ });
179
+ req.write(data);
180
+ req.end();
181
+ });
182
+ }
183
+ /**
184
+ * Upload buffered trace to cloud via pre-signed URL
185
+ *
186
+ * @param blocking - If false, upload happens in background (default: true)
187
+ *
188
+ * PRODUCTION FIX: Non-blocking mode prevents hanging user scripts
189
+ * on slow uploads (Risk #2 from production hardening plan)
190
+ */
191
+ async close(blocking = true) {
192
+ if (this.closed) {
193
+ return;
194
+ }
195
+ this.closed = true;
196
+ // Non-blocking mode: fire-and-forget background upload
197
+ if (!blocking) {
198
+ // Close the write stream synchronously
199
+ if (this.writeStream && !this.writeStream.destroyed) {
200
+ this.writeStream.end();
201
+ }
202
+ // Upload in background (don't await)
203
+ this._doUpload().catch((error) => {
204
+ console.error(`❌ [Sentience] Background upload failed: ${error.message}`);
205
+ console.error(` Local trace preserved at: ${this.tempFilePath}`);
206
+ });
207
+ console.log('📤 [Sentience] Trace upload started in background');
208
+ return;
209
+ }
210
+ // Blocking mode: wait for upload to complete
211
+ await this._doUpload();
212
+ }
213
+ /**
214
+ * Internal upload logic (called by both blocking and non-blocking close)
215
+ */
216
+ async _doUpload() {
217
+ try {
218
+ // 1. Close write stream
219
+ if (this.writeStream && !this.writeStream.destroyed) {
220
+ const stream = this.writeStream;
221
+ stream.removeAllListeners('error');
222
+ await new Promise((resolve) => {
223
+ stream.end(() => {
224
+ resolve();
225
+ });
226
+ });
227
+ }
228
+ // 2. Read and compress trace data
229
+ if (!fs.existsSync(this.tempFilePath)) {
230
+ console.warn('[CloudTraceSink] Temp file does not exist, skipping upload');
231
+ return;
232
+ }
233
+ const traceData = fs.readFileSync(this.tempFilePath);
234
+ const compressedData = zlib.gzipSync(traceData);
235
+ // 3. Upload to cloud via pre-signed URL
236
+ console.log(`📤 [Sentience] Uploading trace to cloud (${compressedData.length} bytes)...`);
237
+ const statusCode = await this._uploadToCloud(compressedData);
238
+ if (statusCode === 200) {
239
+ console.log('✅ [Sentience] Trace uploaded successfully');
240
+ // 4. Delete temp file on success
241
+ fs.unlinkSync(this.tempFilePath);
242
+ }
243
+ else {
244
+ console.error(`❌ [Sentience] Upload failed: HTTP ${statusCode}`);
245
+ console.error(` Local trace preserved at: ${this.tempFilePath}`);
246
+ }
247
+ }
248
+ catch (error) {
249
+ console.error(`❌ [Sentience] Error uploading trace: ${error.message}`);
250
+ console.error(` Local trace preserved at: ${this.tempFilePath}`);
251
+ // Don't throw - preserve trace locally even if upload fails
252
+ }
253
+ }
254
+ /**
255
+ * Get unique identifier for this sink
256
+ */
257
+ getSinkType() {
258
+ return `CloudTraceSink(${this.uploadUrl.substring(0, 50)}...)`;
259
+ }
260
+ }
261
+ exports.CloudTraceSink = CloudTraceSink;
262
+ //# sourceMappingURL=cloud-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-sink.js","sourceRoot":"","sources":["../../src/tracing/cloud-sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tracing Module
3
+ *
4
+ * Exports all tracing functionality
5
+ */
6
+ export * from './types';
7
+ export * from './sink';
8
+ export * from './jsonl-sink';
9
+ export * from './cloud-sink';
10
+ export * from './tracer';
11
+ export * from './tracer-factory';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Tracing Module
4
+ *
5
+ * Exports all tracing functionality
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./types"), exports);
23
+ __exportStar(require("./sink"), exports);
24
+ __exportStar(require("./jsonl-sink"), exports);
25
+ __exportStar(require("./cloud-sink"), exports);
26
+ __exportStar(require("./tracer"), exports);
27
+ __exportStar(require("./tracer-factory"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,yCAAuB;AACvB,+CAA6B;AAC7B,+CAA6B;AAC7B,2CAAyB;AACzB,mDAAiC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * JSONL Trace Sink
3
+ *
4
+ * Writes trace events to a local JSONL (JSON Lines) file
5
+ */
6
+ import { TraceSink } from './sink';
7
+ /**
8
+ * JsonlTraceSink writes trace events to a JSONL file (one JSON object per line)
9
+ */
10
+ export declare class JsonlTraceSink extends TraceSink {
11
+ private path;
12
+ private writeStream;
13
+ private closed;
14
+ /**
15
+ * Create a new JSONL trace sink
16
+ * @param filePath - Path to the JSONL file (will be created if doesn't exist)
17
+ */
18
+ constructor(filePath: string);
19
+ /**
20
+ * Emit a trace event (write as JSON line)
21
+ * @param event - Event dictionary
22
+ */
23
+ emit(event: Record<string, any>): void;
24
+ /**
25
+ * Close the sink and flush buffered data
26
+ */
27
+ close(): Promise<void>;
28
+ /**
29
+ * Get sink type identifier
30
+ */
31
+ getSinkType(): string;
32
+ /**
33
+ * Get file path
34
+ */
35
+ getPath(): string;
36
+ /**
37
+ * Check if sink is closed
38
+ */
39
+ isClosed(): boolean;
40
+ }
41
+ //# sourceMappingURL=jsonl-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-sink.d.ts","sourceRoot":"","sources":["../../src/tracing/jsonl-sink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;OAGG;gBACS,QAAQ,EAAE,MAAM;IAiC5B;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAoCtC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * JSONL Trace Sink
4
+ *
5
+ * Writes trace events to a local JSONL (JSON Lines) file
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.JsonlTraceSink = void 0;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const sink_1 = require("./sink");
45
+ /**
46
+ * JsonlTraceSink writes trace events to a JSONL file (one JSON object per line)
47
+ */
48
+ class JsonlTraceSink extends sink_1.TraceSink {
49
+ /**
50
+ * Create a new JSONL trace sink
51
+ * @param filePath - Path to the JSONL file (will be created if doesn't exist)
52
+ */
53
+ constructor(filePath) {
54
+ super();
55
+ this.writeStream = null;
56
+ this.closed = false;
57
+ this.path = filePath;
58
+ // Create parent directories if needed (synchronously)
59
+ const dir = path.dirname(filePath);
60
+ try {
61
+ if (!fs.existsSync(dir)) {
62
+ fs.mkdirSync(dir, { recursive: true });
63
+ }
64
+ // Verify directory is writable
65
+ fs.accessSync(dir, fs.constants.W_OK);
66
+ // Open file in append mode with line buffering
67
+ this.writeStream = fs.createWriteStream(filePath, {
68
+ flags: 'a',
69
+ encoding: 'utf-8',
70
+ autoClose: true,
71
+ });
72
+ // Handle stream errors (suppress logging if stream is closed)
73
+ this.writeStream.on('error', (error) => {
74
+ if (!this.closed) {
75
+ console.error('[JsonlTraceSink] Stream error:', error);
76
+ }
77
+ });
78
+ }
79
+ catch (error) {
80
+ console.error('[JsonlTraceSink] Failed to initialize sink:', error);
81
+ this.writeStream = null;
82
+ }
83
+ }
84
+ /**
85
+ * Emit a trace event (write as JSON line)
86
+ * @param event - Event dictionary
87
+ */
88
+ emit(event) {
89
+ if (this.closed) {
90
+ // Only warn in non-test environments to avoid test noise
91
+ const isTestEnv = process.env.CI === 'true' ||
92
+ process.env.NODE_ENV === 'test' ||
93
+ process.env.JEST_WORKER_ID !== undefined ||
94
+ (typeof global !== 'undefined' && global.__JEST__);
95
+ if (!isTestEnv) {
96
+ console.warn('[JsonlTraceSink] Attempted to emit after close()');
97
+ }
98
+ return;
99
+ }
100
+ if (!this.writeStream) {
101
+ console.error('[JsonlTraceSink] Write stream not available');
102
+ return;
103
+ }
104
+ try {
105
+ const jsonLine = JSON.stringify(event) + '\n';
106
+ const written = this.writeStream.write(jsonLine);
107
+ // If write returns false, the stream is backpressured
108
+ // We don't need to wait, but we could add a drain listener if needed
109
+ if (!written) {
110
+ // Stream is backpressured - wait for drain
111
+ this.writeStream.once('drain', () => {
112
+ // Stream is ready again
113
+ });
114
+ }
115
+ }
116
+ catch (error) {
117
+ // Log error but don't crash agent execution
118
+ console.error('[JsonlTraceSink] Failed to write event:', error);
119
+ }
120
+ }
121
+ /**
122
+ * Close the sink and flush buffered data
123
+ */
124
+ async close() {
125
+ if (this.closed) {
126
+ return;
127
+ }
128
+ this.closed = true;
129
+ // Check if stream exists and is writable
130
+ if (!this.writeStream || this.writeStream.destroyed) {
131
+ return;
132
+ }
133
+ // Store reference to satisfy TypeScript null checks
134
+ const stream = this.writeStream;
135
+ // Remove error listener to prevent late errors
136
+ stream.removeAllListeners('error');
137
+ return new Promise((resolve) => {
138
+ stream.end((err) => {
139
+ if (err) {
140
+ // Silently ignore close errors in production
141
+ // (they're logged during stream lifetime if needed)
142
+ }
143
+ // Always resolve, don't reject on close errors
144
+ resolve();
145
+ });
146
+ });
147
+ }
148
+ /**
149
+ * Get sink type identifier
150
+ */
151
+ getSinkType() {
152
+ return `JsonlTraceSink(${this.path})`;
153
+ }
154
+ /**
155
+ * Get file path
156
+ */
157
+ getPath() {
158
+ return this.path;
159
+ }
160
+ /**
161
+ * Check if sink is closed
162
+ */
163
+ isClosed() {
164
+ return this.closed;
165
+ }
166
+ }
167
+ exports.JsonlTraceSink = JsonlTraceSink;
168
+ //# sourceMappingURL=jsonl-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-sink.js","sourceRoot":"","sources":["../../src/tracing/jsonl-sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * TraceSink Abstract Class
3
+ *
4
+ * Defines the interface for trace event sinks (local files, cloud storage, etc.)
5
+ */
6
+ /**
7
+ * Abstract base class for trace sinks
8
+ */
9
+ export declare abstract class TraceSink {
10
+ /**
11
+ * Emit a trace event
12
+ * @param event - Event dictionary to emit
13
+ */
14
+ abstract emit(event: Record<string, any>): void;
15
+ /**
16
+ * Close the sink and flush buffered data
17
+ */
18
+ abstract close(): Promise<void>;
19
+ /**
20
+ * Get unique identifier for this sink (for debugging)
21
+ */
22
+ abstract getSinkType(): string;
23
+ }
24
+ //# sourceMappingURL=sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../../src/tracing/sink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,8BAAsB,SAAS;IAC7B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAE/C;;OAEG;IACH,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,MAAM;CAC/B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * TraceSink Abstract Class
4
+ *
5
+ * Defines the interface for trace event sinks (local files, cloud storage, etc.)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TraceSink = void 0;
9
+ /**
10
+ * Abstract base class for trace sinks
11
+ */
12
+ class TraceSink {
13
+ }
14
+ exports.TraceSink = TraceSink;
15
+ //# sourceMappingURL=sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.js","sourceRoot":"","sources":["../../src/tracing/sink.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;GAEG;AACH,MAAsB,SAAS;CAgB9B;AAhBD,8BAgBC"}