@mercuryo-ai/agentbrowse-cli 0.1.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.
Files changed (94) hide show
  1. package/README.md +48 -0
  2. package/dist/agentbrowse-assistive.d.ts +2 -0
  3. package/dist/agentbrowse-assistive.d.ts.map +1 -0
  4. package/dist/agentbrowse-assistive.js +67 -0
  5. package/dist/agentbrowse-assistive.js.map +1 -0
  6. package/dist/assistive-llm-client.d.ts +13 -0
  7. package/dist/assistive-llm-client.d.ts.map +1 -0
  8. package/dist/assistive-llm-client.js +153 -0
  9. package/dist/assistive-llm-client.js.map +1 -0
  10. package/dist/browser-home.d.ts +7 -0
  11. package/dist/browser-home.d.ts.map +1 -0
  12. package/dist/browser-home.js +35 -0
  13. package/dist/browser-home.js.map +1 -0
  14. package/dist/commands/act.d.ts +6 -0
  15. package/dist/commands/act.d.ts.map +1 -0
  16. package/dist/commands/act.js +9 -0
  17. package/dist/commands/act.js.map +1 -0
  18. package/dist/commands/attach.d.ts +4 -0
  19. package/dist/commands/attach.d.ts.map +1 -0
  20. package/dist/commands/attach.js +11 -0
  21. package/dist/commands/attach.js.map +1 -0
  22. package/dist/commands/browser-status.d.ts +5 -0
  23. package/dist/commands/browser-status.d.ts.map +1 -0
  24. package/dist/commands/browser-status.js +6 -0
  25. package/dist/commands/browser-status.js.map +1 -0
  26. package/dist/commands/close.d.ts +4 -0
  27. package/dist/commands/close.d.ts.map +1 -0
  28. package/dist/commands/close.js +12 -0
  29. package/dist/commands/close.js.map +1 -0
  30. package/dist/commands/extract.d.ts +5 -0
  31. package/dist/commands/extract.d.ts.map +1 -0
  32. package/dist/commands/extract.js +15 -0
  33. package/dist/commands/extract.js.map +1 -0
  34. package/dist/commands/init.d.ts +10 -0
  35. package/dist/commands/init.d.ts.map +1 -0
  36. package/dist/commands/init.js +29 -0
  37. package/dist/commands/init.js.map +1 -0
  38. package/dist/commands/launch.d.ts +4 -0
  39. package/dist/commands/launch.d.ts.map +1 -0
  40. package/dist/commands/launch.js +11 -0
  41. package/dist/commands/launch.js.map +1 -0
  42. package/dist/commands/navigate.d.ts +5 -0
  43. package/dist/commands/navigate.d.ts.map +1 -0
  44. package/dist/commands/navigate.js +10 -0
  45. package/dist/commands/navigate.js.map +1 -0
  46. package/dist/commands/observe.d.ts +5 -0
  47. package/dist/commands/observe.d.ts.map +1 -0
  48. package/dist/commands/observe.js +15 -0
  49. package/dist/commands/observe.js.map +1 -0
  50. package/dist/commands/screenshot.d.ts +5 -0
  51. package/dist/commands/screenshot.d.ts.map +1 -0
  52. package/dist/commands/screenshot.js +12 -0
  53. package/dist/commands/screenshot.js.map +1 -0
  54. package/dist/config.d.ts +2 -0
  55. package/dist/config.d.ts.map +1 -0
  56. package/dist/config.js +2 -0
  57. package/dist/config.js.map +1 -0
  58. package/dist/gateway.d.ts +5 -0
  59. package/dist/gateway.d.ts.map +1 -0
  60. package/dist/gateway.js +38 -0
  61. package/dist/gateway.js.map +1 -0
  62. package/dist/generated/build-config.d.ts +2 -0
  63. package/dist/generated/build-config.d.ts.map +1 -0
  64. package/dist/generated/build-config.js +3 -0
  65. package/dist/generated/build-config.js.map +1 -0
  66. package/dist/index.d.ts +4 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +370 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/otel-exporter.d.ts +58 -0
  71. package/dist/otel-exporter.d.ts.map +1 -0
  72. package/dist/otel-exporter.js +242 -0
  73. package/dist/otel-exporter.js.map +1 -0
  74. package/dist/otel-projector.d.ts +59 -0
  75. package/dist/otel-projector.d.ts.map +1 -0
  76. package/dist/otel-projector.js +326 -0
  77. package/dist/otel-projector.js.map +1 -0
  78. package/dist/output.d.ts +9 -0
  79. package/dist/output.d.ts.map +1 -0
  80. package/dist/output.js +27 -0
  81. package/dist/output.js.map +1 -0
  82. package/dist/package-version.d.ts +2 -0
  83. package/dist/package-version.d.ts.map +1 -0
  84. package/dist/package-version.js +15 -0
  85. package/dist/package-version.js.map +1 -0
  86. package/dist/run-store.d.ts +130 -0
  87. package/dist/run-store.d.ts.map +1 -0
  88. package/dist/run-store.js +246 -0
  89. package/dist/run-store.js.map +1 -0
  90. package/dist/workflow-state.d.ts +2 -0
  91. package/dist/workflow-state.d.ts.map +1 -0
  92. package/dist/workflow-state.js +2 -0
  93. package/dist/workflow-state.js.map +1 -0
  94. package/package.json +62 -0
@@ -0,0 +1,242 @@
1
+ import { buildMagicPayTelemetryTracesUrl, tryResolveMagicPayGatewayConfig, } from './gateway.js';
2
+ import { projectRunRootToOtlpTraceRequest, projectStepToOtlpTraceRequest } from './otel-projector.js';
3
+ import { loadRunRecord, loadStepRecord, setRunIngestState } from './run-store.js';
4
+ const DEFAULT_HTTP_TIMEOUT_MS = 5_000;
5
+ const DISABLE_TELEMETRY_ENV = 'MAGICPAY_DISABLE_TELEMETRY';
6
+ function trimEnv(value) {
7
+ const trimmed = value?.trim();
8
+ return trimmed ? trimmed : undefined;
9
+ }
10
+ function telemetryDisabled(env) {
11
+ const value = trimEnv(env[DISABLE_TELEMETRY_ENV]);
12
+ if (!value) {
13
+ return false;
14
+ }
15
+ const normalized = value.toLowerCase();
16
+ return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
17
+ }
18
+ function parseHeaderList(value) {
19
+ if (!value) {
20
+ return {};
21
+ }
22
+ const headers = {};
23
+ for (const chunk of value.split(',')) {
24
+ const separatorIndex = chunk.indexOf('=');
25
+ if (separatorIndex === -1) {
26
+ continue;
27
+ }
28
+ const key = chunk.slice(0, separatorIndex).trim();
29
+ const headerValue = chunk.slice(separatorIndex + 1).trim();
30
+ if (!key || !headerValue) {
31
+ continue;
32
+ }
33
+ headers[key] = headerValue;
34
+ }
35
+ return headers;
36
+ }
37
+ function parseTimeoutMs(value) {
38
+ const parsed = value ? Number(value) : Number.NaN;
39
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_HTTP_TIMEOUT_MS;
40
+ }
41
+ function buildTracesEndpoint(base) {
42
+ return `${base.replace(/\/+$/, '')}/v1/traces`;
43
+ }
44
+ async function postOtlpTraceRequest(params) {
45
+ const controller = new AbortController();
46
+ const timeout = setTimeout(() => controller.abort(), params.config.timeoutMs);
47
+ try {
48
+ return await params.fetchImpl(params.config.tracesEndpoint, {
49
+ method: 'POST',
50
+ headers: {
51
+ 'content-type': 'application/json',
52
+ ...params.config.headers,
53
+ },
54
+ body: JSON.stringify(params.payload),
55
+ signal: controller.signal,
56
+ });
57
+ }
58
+ finally {
59
+ clearTimeout(timeout);
60
+ }
61
+ }
62
+ export function loadOtlpHttpJsonExporterConfig(env = process.env) {
63
+ if (telemetryDisabled(env)) {
64
+ return null;
65
+ }
66
+ const protocol = trimEnv(env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) ??
67
+ trimEnv(env.OTEL_EXPORTER_OTLP_PROTOCOL) ??
68
+ 'http/json';
69
+ if (protocol !== 'http/json') {
70
+ return null;
71
+ }
72
+ const tracesEndpoint = trimEnv(env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT);
73
+ const baseEndpoint = trimEnv(env.OTEL_EXPORTER_OTLP_ENDPOINT);
74
+ const gateway = tryResolveMagicPayGatewayConfig();
75
+ const resolvedEndpoint = tracesEndpoint ??
76
+ (baseEndpoint ? buildTracesEndpoint(baseEndpoint) : null) ??
77
+ (gateway ? buildMagicPayTelemetryTracesUrl(gateway.apiUrl) : null);
78
+ if (!resolvedEndpoint) {
79
+ return null;
80
+ }
81
+ const timeoutMs = parseTimeoutMs(trimEnv(env.OTEL_EXPORTER_OTLP_TRACES_TIMEOUT) ??
82
+ trimEnv(env.OTEL_EXPORTER_OTLP_TIMEOUT));
83
+ const headers = {
84
+ ...parseHeaderList(trimEnv(env.OTEL_EXPORTER_OTLP_HEADERS)),
85
+ ...parseHeaderList(trimEnv(env.OTEL_EXPORTER_OTLP_TRACES_HEADERS)),
86
+ };
87
+ if (!headers.authorization && gateway) {
88
+ headers.authorization = `Bearer ${gateway.apiKey}`;
89
+ }
90
+ return {
91
+ tracesEndpoint: resolvedEndpoint,
92
+ headers,
93
+ timeoutMs,
94
+ protocol: 'http/json',
95
+ };
96
+ }
97
+ export function buildRunStepOtlpTraceRequest(runId, stepId) {
98
+ const run = loadRunRecord(runId);
99
+ if (!run) {
100
+ return null;
101
+ }
102
+ const step = loadStepRecord(runId, stepId);
103
+ if (!step) {
104
+ return null;
105
+ }
106
+ return projectStepToOtlpTraceRequest({
107
+ run,
108
+ step,
109
+ });
110
+ }
111
+ export async function exportRunStepToOtlpHttpJson(params = {
112
+ runId: '',
113
+ stepId: '',
114
+ }) {
115
+ const run = loadRunRecord(params.runId);
116
+ if (!run) {
117
+ return { attempted: false, reason: 'run_missing' };
118
+ }
119
+ const step = loadStepRecord(params.runId, params.stepId);
120
+ if (!step) {
121
+ return { attempted: false, reason: 'step_missing' };
122
+ }
123
+ const payload = buildRunStepOtlpTraceRequest(params.runId, params.stepId);
124
+ if (!payload) {
125
+ return { attempted: false, reason: 'step_missing' };
126
+ }
127
+ const fetchImpl = params.fetchImpl ?? fetch;
128
+ const config = params.config ?? loadOtlpHttpJsonExporterConfig();
129
+ if (!config) {
130
+ return { attempted: false, reason: 'config_missing' };
131
+ }
132
+ try {
133
+ const response = await postOtlpTraceRequest({
134
+ payload,
135
+ config,
136
+ fetchImpl,
137
+ });
138
+ if (!response.ok) {
139
+ setRunIngestState(params.runId, 'export_failed');
140
+ return {
141
+ attempted: true,
142
+ success: false,
143
+ status: response.status,
144
+ reason: `otlp_http_status_${response.status}`,
145
+ payload,
146
+ };
147
+ }
148
+ setRunIngestState(params.runId, 'exported');
149
+ return {
150
+ attempted: true,
151
+ success: true,
152
+ status: response.status,
153
+ payload,
154
+ };
155
+ }
156
+ catch (error) {
157
+ setRunIngestState(params.runId, 'export_failed');
158
+ return {
159
+ attempted: true,
160
+ success: false,
161
+ reason: error instanceof Error ? error.message : String(error),
162
+ payload,
163
+ };
164
+ }
165
+ }
166
+ export function buildRunRootOtlpTraceRequest(runId) {
167
+ const run = loadRunRecord(runId);
168
+ if (!run) {
169
+ return null;
170
+ }
171
+ return projectRunRootToOtlpTraceRequest({ run });
172
+ }
173
+ export async function exportRunRootToOtlpHttpJson(params = {
174
+ runId: '',
175
+ }) {
176
+ const config = params.config ?? loadOtlpHttpJsonExporterConfig();
177
+ if (!config) {
178
+ return { attempted: false, reason: 'config_missing' };
179
+ }
180
+ const run = loadRunRecord(params.runId);
181
+ if (!run) {
182
+ return { attempted: false, reason: 'run_missing' };
183
+ }
184
+ const payload = buildRunRootOtlpTraceRequest(params.runId);
185
+ if (!payload) {
186
+ return { attempted: false, reason: 'run_missing' };
187
+ }
188
+ const fetchImpl = params.fetchImpl ?? fetch;
189
+ try {
190
+ const response = await postOtlpTraceRequest({
191
+ payload,
192
+ config,
193
+ fetchImpl,
194
+ });
195
+ if (!response.ok) {
196
+ setRunIngestState(params.runId, 'export_failed');
197
+ return {
198
+ attempted: true,
199
+ success: false,
200
+ status: response.status,
201
+ reason: `otlp_http_status_${response.status}`,
202
+ payload,
203
+ };
204
+ }
205
+ setRunIngestState(params.runId, 'exported');
206
+ return {
207
+ attempted: true,
208
+ success: true,
209
+ status: response.status,
210
+ payload,
211
+ };
212
+ }
213
+ catch (error) {
214
+ setRunIngestState(params.runId, 'export_failed');
215
+ return {
216
+ attempted: true,
217
+ success: false,
218
+ reason: error instanceof Error ? error.message : String(error),
219
+ payload,
220
+ };
221
+ }
222
+ }
223
+ export async function exportRunStepToOtlpHttpJsonBestEffort(runId, stepId, options = {}) {
224
+ if (!runId || !stepId) {
225
+ return { attempted: false, reason: 'step_missing' };
226
+ }
227
+ return exportRunStepToOtlpHttpJson({
228
+ runId,
229
+ stepId,
230
+ fetchImpl: options.fetchImpl,
231
+ });
232
+ }
233
+ export async function exportRunRootToOtlpHttpJsonBestEffort(runId, options = {}) {
234
+ if (!runId) {
235
+ return { attempted: false, reason: 'run_missing' };
236
+ }
237
+ return exportRunRootToOtlpHttpJson({
238
+ runId,
239
+ fetchImpl: options.fetchImpl,
240
+ });
241
+ }
242
+ //# sourceMappingURL=otel-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-exporter.js","sourceRoot":"","sources":["../src/otel-exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { RunRecord, StepRecord } from './run-store.js';
2
+ type OtlpAnyValue = {
3
+ stringValue: string;
4
+ } | {
5
+ boolValue: boolean;
6
+ } | {
7
+ intValue: string;
8
+ } | {
9
+ doubleValue: number;
10
+ } | {
11
+ arrayValue: {
12
+ values: OtlpAnyValue[];
13
+ };
14
+ } | {
15
+ kvlistValue: {
16
+ values: OtlpKeyValue[];
17
+ };
18
+ };
19
+ type OtlpKeyValue = {
20
+ key: string;
21
+ value: OtlpAnyValue;
22
+ };
23
+ type OtlpSpan = {
24
+ traceId: string;
25
+ spanId: string;
26
+ parentSpanId?: string;
27
+ name: string;
28
+ kind: number;
29
+ startTimeUnixNano: string;
30
+ endTimeUnixNano: string;
31
+ attributes?: OtlpKeyValue[];
32
+ status?: {
33
+ code: number;
34
+ message?: string;
35
+ };
36
+ };
37
+ export type OtlpTraceRequest = {
38
+ resourceSpans: Array<{
39
+ resource: {
40
+ attributes: OtlpKeyValue[];
41
+ };
42
+ scopeSpans: Array<{
43
+ scope: {
44
+ name: string;
45
+ };
46
+ spans: OtlpSpan[];
47
+ }>;
48
+ }>;
49
+ };
50
+ export declare function sanitizeUrlForTelemetry(url: string): string;
51
+ export declare function projectStepToOtlpTraceRequest(params: {
52
+ run: RunRecord;
53
+ step: StepRecord;
54
+ }): OtlpTraceRequest;
55
+ export declare function projectRunRootToOtlpTraceRequest(params: {
56
+ run: RunRecord;
57
+ }): OtlpTraceRequest;
58
+ export {};
59
+ //# sourceMappingURL=otel-projector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-projector.d.ts","sourceRoot":"","sources":["../src/otel-projector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAuB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjF,KAAK,YAAY,GACb;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GACtB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAA;CAAE,GAC1C;IAAE,WAAW,EAAE;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,KAAK,CAAC;QACnB,QAAQ,EAAE;YACR,UAAU,EAAE,YAAY,EAAE,CAAC;SAC5B,CAAC;QACF,UAAU,EAAE,KAAK,CAAC;YAChB,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,KAAK,EAAE,QAAQ,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ,CAAC;AAwBF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW3D;AAgQD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB,GAAG,gBAAgB,CA0CnB;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAAG,gBAAgB,CA2C7F"}
@@ -0,0 +1,326 @@
1
+ const INTERNAL_SPAN_KIND = 1;
2
+ const CLIENT_SPAN_KIND = 3;
3
+ const STATUS_CODE_UNSET = 0;
4
+ const STATUS_CODE_OK = 1;
5
+ const STATUS_CODE_ERROR = 2;
6
+ const MAX_ATTRIBUTE_STRING_LENGTH = 256;
7
+ const MAX_REASON_LENGTH = 512;
8
+ const SENSITIVE_KEY_PATTERN = /(secret|token|password|authorization|cookie|api[-_]?key|raw[-_]?value|raw[-_]?values|resolved[-_]?values|protected[-_]?values)/i;
9
+ function isoToUnixNano(value, fallback) {
10
+ const source = value ?? fallback;
11
+ const millis = new Date(source).getTime();
12
+ const safeMillis = Number.isFinite(millis) ? millis : new Date(fallback).getTime();
13
+ return `${Math.max(0, safeMillis) * 1_000_000}`;
14
+ }
15
+ function truncateString(value, maxLength = MAX_ATTRIBUTE_STRING_LENGTH) {
16
+ return value.length <= maxLength ? value : `${value.slice(0, maxLength)}...`;
17
+ }
18
+ export function sanitizeUrlForTelemetry(url) {
19
+ try {
20
+ const parsed = new URL(url);
21
+ parsed.username = '';
22
+ parsed.password = '';
23
+ parsed.search = '';
24
+ parsed.hash = '';
25
+ return parsed.toString();
26
+ }
27
+ catch {
28
+ return truncateString(url);
29
+ }
30
+ }
31
+ function isSensitiveKey(key) {
32
+ return SENSITIVE_KEY_PATTERN.test(key);
33
+ }
34
+ function normalizePrimitiveForTelemetry(key, value) {
35
+ if (value === null || value === undefined) {
36
+ return undefined;
37
+ }
38
+ if (isSensitiveKey(key)) {
39
+ return '[redacted]';
40
+ }
41
+ if (typeof value === 'string') {
42
+ if (key.toLowerCase().includes('url')) {
43
+ return sanitizeUrlForTelemetry(value);
44
+ }
45
+ if (key.toLowerCase().includes('reason')) {
46
+ return truncateString(value, MAX_REASON_LENGTH);
47
+ }
48
+ if (key.toLowerCase().includes('message')) {
49
+ return truncateString(value, MAX_ATTRIBUTE_STRING_LENGTH);
50
+ }
51
+ return truncateString(value);
52
+ }
53
+ if (typeof value === 'boolean' || typeof value === 'number') {
54
+ return value;
55
+ }
56
+ return undefined;
57
+ }
58
+ function flattenTelemetryAttributes(prefix, value, target) {
59
+ if (value === null || value === undefined) {
60
+ return;
61
+ }
62
+ if (Array.isArray(value)) {
63
+ if (value.length === 0) {
64
+ return;
65
+ }
66
+ const normalized = value
67
+ .map((entry, index) => normalizePrimitiveForTelemetry(`${prefix}[${index}]`, entry))
68
+ .filter((entry) => entry !== undefined);
69
+ if (normalized.length > 0) {
70
+ target[prefix] = normalized;
71
+ }
72
+ return;
73
+ }
74
+ if (typeof value === 'object') {
75
+ for (const [key, nested] of Object.entries(value)) {
76
+ const nextPrefix = prefix.length > 0 ? `${prefix}.${key}` : key;
77
+ flattenTelemetryAttributes(nextPrefix, nested, target);
78
+ }
79
+ return;
80
+ }
81
+ const normalized = normalizePrimitiveForTelemetry(prefix, value);
82
+ if (normalized !== undefined) {
83
+ target[prefix] = normalized;
84
+ }
85
+ }
86
+ function toAnyValue(value) {
87
+ if (typeof value === 'string') {
88
+ return { stringValue: value };
89
+ }
90
+ if (typeof value === 'boolean') {
91
+ return { boolValue: value };
92
+ }
93
+ if (typeof value === 'number') {
94
+ if (Number.isInteger(value)) {
95
+ return { intValue: String(value) };
96
+ }
97
+ return { doubleValue: value };
98
+ }
99
+ if (Array.isArray(value)) {
100
+ const values = value.map(toAnyValue).filter((entry) => entry !== null);
101
+ return { arrayValue: { values } };
102
+ }
103
+ if (value && typeof value === 'object') {
104
+ const values = Object.entries(value)
105
+ .map(([key, nested]) => {
106
+ const nestedValue = toAnyValue(nested);
107
+ return nestedValue ? { key, value: nestedValue } : null;
108
+ })
109
+ .filter((entry) => entry !== null);
110
+ return { kvlistValue: { values } };
111
+ }
112
+ return null;
113
+ }
114
+ function toKeyValues(values) {
115
+ return Object.entries(values)
116
+ .map(([key, value]) => {
117
+ const anyValue = toAnyValue(value);
118
+ return anyValue ? { key, value: anyValue } : null;
119
+ })
120
+ .filter((entry) => entry !== null);
121
+ }
122
+ function getPrimaryRunSiteHost(run) {
123
+ return run.hostHints?.find((entry) => typeof entry === 'string' && entry.length > 0);
124
+ }
125
+ function buildResourceAttributes(run) {
126
+ const siteHost = getPrimaryRunSiteHost(run);
127
+ const values = {
128
+ 'service.name': run.resource.serviceName,
129
+ 'service.version': run.resource.serviceVersion,
130
+ 'service.instance.id': run.resource.serviceInstanceId,
131
+ 'telemetry.sdk.language': run.resource.telemetrySdkLanguage,
132
+ 'agentbrowse.session.id': run.sessionId,
133
+ 'agentbrowse.run.id': run.runId,
134
+ 'agentbrowse.run.source': run.source,
135
+ 'agentbrowse.run.entry_command': run.entryCommand,
136
+ 'agentbrowse.run.display_name': run.displayName,
137
+ 'agentbrowse.run.profile': run.profile,
138
+ 'agentbrowse.run.site_host': siteHost,
139
+ 'agentbrowse.run.started_at': run.startedAt,
140
+ 'agentbrowse.run.ended_at': run.endedAt,
141
+ 'agentbrowse.run.status': run.status,
142
+ 'agentbrowse.run.protected': run.protectedRun,
143
+ 'agentbrowse.run.final_outcome_type': run.finalOutcome?.outcomeType,
144
+ 'agentbrowse.run.final_message': run.finalOutcome?.message,
145
+ 'agentbrowse.run.final_reason': run.finalOutcome?.reason,
146
+ };
147
+ if (run.hostHints && run.hostHints.length > 0) {
148
+ values['agentbrowse.run.host_hints'] = run.hostHints.map((host) => truncateString(host));
149
+ }
150
+ return toKeyValues(values);
151
+ }
152
+ function buildStepAttributes(run, step) {
153
+ const values = {
154
+ 'agentbrowse.run.id': run.runId,
155
+ 'agentbrowse.session.id': run.sessionId,
156
+ 'agentbrowse.step.id': step.stepId,
157
+ 'agentbrowse.step.ordinal': step.ordinal,
158
+ 'agentbrowse.step.command': step.command,
159
+ 'agentbrowse.step.protected': step.protectedStep,
160
+ 'agentbrowse.step.page_ref': step.refs?.pageRef,
161
+ 'agentbrowse.step.target_ref': step.refs?.targetRef,
162
+ 'agentbrowse.step.surface_ref': step.refs?.surfaceRef,
163
+ 'agentbrowse.step.fill_ref': step.refs?.fillRef,
164
+ 'agentbrowse.step.request_id': step.refs?.requestId,
165
+ 'agentbrowse.step.success': step.outputSummary?.success,
166
+ 'agentbrowse.step.outcome_type': step.outputSummary?.outcomeType,
167
+ 'agentbrowse.step.message': step.outputSummary?.message,
168
+ 'agentbrowse.step.reason': step.outputSummary?.reason,
169
+ 'agentbrowse.step.event_count': step.eventIds.length,
170
+ 'agentbrowse.step.child_span_count': step.childSpans.length,
171
+ 'agentbrowse.trace.propagation_mode': run.traceContext.propagationMode,
172
+ };
173
+ const flattenedInput = {};
174
+ flattenTelemetryAttributes('agentbrowse.step.input', step.input, flattenedInput);
175
+ Object.assign(values, flattenedInput);
176
+ return toKeyValues(values);
177
+ }
178
+ function buildRunRootSpanName(run) {
179
+ const siteHost = getPrimaryRunSiteHost(run);
180
+ const displayName = typeof run.displayName === 'string' && run.displayName.trim().length > 0
181
+ ? run.displayName.trim()
182
+ : undefined;
183
+ if (siteHost && displayName) {
184
+ return truncateString(`${siteHost} - ${displayName}`);
185
+ }
186
+ if (displayName) {
187
+ return truncateString(displayName);
188
+ }
189
+ if (siteHost) {
190
+ return truncateString(siteHost);
191
+ }
192
+ if (run.entryCommand) {
193
+ return `agentbrowse.${truncateString(run.entryCommand)}`;
194
+ }
195
+ return 'agentbrowse.run';
196
+ }
197
+ function buildRunRootSpanAttributes(run) {
198
+ const siteHost = getPrimaryRunSiteHost(run);
199
+ const values = {
200
+ 'agentbrowse.run.id': run.runId,
201
+ 'agentbrowse.session.id': run.sessionId,
202
+ 'agentbrowse.run.entry_command': run.entryCommand,
203
+ 'agentbrowse.run.display_name': run.displayName,
204
+ 'agentbrowse.run.site_host': siteHost,
205
+ 'agentbrowse.run.status': run.status,
206
+ 'agentbrowse.run.protected': run.protectedRun,
207
+ 'agentbrowse.run.step_count': run.stepIds.length,
208
+ 'agentbrowse.run.final_outcome_type': run.finalOutcome?.outcomeType,
209
+ 'agentbrowse.run.final_message': run.finalOutcome?.message,
210
+ 'agentbrowse.run.final_reason': run.finalOutcome?.reason,
211
+ };
212
+ if (run.hostHints && run.hostHints.length > 0) {
213
+ values['agentbrowse.run.host_hints'] = run.hostHints.map((host) => truncateString(host));
214
+ }
215
+ return toKeyValues(values);
216
+ }
217
+ function buildStepStatus(step) {
218
+ const code = step.otel.statusCode === 'ok'
219
+ ? STATUS_CODE_OK
220
+ : step.otel.statusCode === 'error'
221
+ ? STATUS_CODE_ERROR
222
+ : STATUS_CODE_UNSET;
223
+ return {
224
+ code,
225
+ ...(step.otel.statusMessage ? { message: truncateString(step.otel.statusMessage) } : {}),
226
+ };
227
+ }
228
+ function buildChildSpanStatus(childSpan) {
229
+ const code = childSpan.statusCode === 'ok'
230
+ ? STATUS_CODE_OK
231
+ : childSpan.statusCode === 'error'
232
+ ? STATUS_CODE_ERROR
233
+ : STATUS_CODE_UNSET;
234
+ return {
235
+ code,
236
+ ...(childSpan.statusMessage ? { message: truncateString(childSpan.statusMessage) } : {}),
237
+ };
238
+ }
239
+ function buildChildSpanAttributes(childSpan) {
240
+ const flattened = {};
241
+ flattenTelemetryAttributes('', childSpan.attributes, flattened);
242
+ return toKeyValues(flattened);
243
+ }
244
+ export function projectStepToOtlpTraceRequest(params) {
245
+ const stepSpan = {
246
+ traceId: params.step.otel.traceId,
247
+ spanId: params.step.otel.spanId,
248
+ ...(params.step.otel.parentSpanId ? { parentSpanId: params.step.otel.parentSpanId } : {}),
249
+ name: params.step.otel.spanName,
250
+ kind: INTERNAL_SPAN_KIND,
251
+ startTimeUnixNano: isoToUnixNano(params.step.startedAt, params.run.startedAt),
252
+ endTimeUnixNano: isoToUnixNano(params.step.endedAt, params.step.startedAt),
253
+ attributes: buildStepAttributes(params.run, params.step),
254
+ status: buildStepStatus(params.step),
255
+ };
256
+ const childSpans = params.step.childSpans.map((childSpan) => ({
257
+ traceId: params.step.otel.traceId,
258
+ spanId: childSpan.spanId,
259
+ parentSpanId: childSpan.parentSpanId,
260
+ name: childSpan.name,
261
+ kind: CLIENT_SPAN_KIND,
262
+ startTimeUnixNano: isoToUnixNano(childSpan.startedAt, params.step.startedAt),
263
+ endTimeUnixNano: isoToUnixNano(childSpan.endedAt, childSpan.startedAt),
264
+ attributes: buildChildSpanAttributes(childSpan),
265
+ status: buildChildSpanStatus(childSpan),
266
+ }));
267
+ return {
268
+ resourceSpans: [
269
+ {
270
+ resource: {
271
+ attributes: buildResourceAttributes(params.run),
272
+ },
273
+ scopeSpans: [
274
+ {
275
+ scope: {
276
+ name: params.step.otel.instrumentationScope,
277
+ },
278
+ spans: [stepSpan, ...childSpans],
279
+ },
280
+ ],
281
+ },
282
+ ],
283
+ };
284
+ }
285
+ export function projectRunRootToOtlpTraceRequest(params) {
286
+ const statusCode = params.run.finalOutcome?.success === true || params.run.status === 'completed'
287
+ ? STATUS_CODE_OK
288
+ : params.run.finalOutcome?.success === false ||
289
+ params.run.status === 'failed' ||
290
+ params.run.status === 'aborted'
291
+ ? STATUS_CODE_ERROR
292
+ : STATUS_CODE_UNSET;
293
+ const span = {
294
+ traceId: params.run.traceContext.traceId,
295
+ spanId: params.run.traceContext.rootSpanId,
296
+ name: buildRunRootSpanName(params.run),
297
+ kind: INTERNAL_SPAN_KIND,
298
+ startTimeUnixNano: isoToUnixNano(params.run.startedAt, params.run.startedAt),
299
+ endTimeUnixNano: isoToUnixNano(params.run.endedAt, params.run.startedAt),
300
+ attributes: buildRunRootSpanAttributes(params.run),
301
+ status: {
302
+ code: statusCode,
303
+ ...(params.run.finalOutcome?.reason
304
+ ? { message: truncateString(params.run.finalOutcome.reason) }
305
+ : {}),
306
+ },
307
+ };
308
+ return {
309
+ resourceSpans: [
310
+ {
311
+ resource: {
312
+ attributes: buildResourceAttributes(params.run),
313
+ },
314
+ scopeSpans: [
315
+ {
316
+ scope: {
317
+ name: 'agentbrowse.local-run-store',
318
+ },
319
+ spans: [span],
320
+ },
321
+ ],
322
+ },
323
+ ],
324
+ };
325
+ }
326
+ //# sourceMappingURL=otel-projector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-projector.js","sourceRoot":"","sources":["../src/otel-projector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface CliResult {
2
+ success: boolean;
3
+ error?: string;
4
+ }
5
+ export declare function outputJSON<T extends CliResult>(result: T): never;
6
+ export declare function outputError(error: string): never;
7
+ export declare function info(message: string): never;
8
+ export declare function fatal(message: string): never;
9
+ //# sourceMappingURL=output.d.ts.map