@oxygen-agent/cli 1.45.4
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 +25 -0
- package/dist/browser-login.d.ts +8 -0
- package/dist/browser-login.d.ts.map +1 -0
- package/dist/browser-login.js +181 -0
- package/dist/browser-login.js.map +1 -0
- package/dist/credentials.d.ts +28 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +470 -0
- package/dist/credentials.js.map +1 -0
- package/dist/http-client.d.ts +12 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +218 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3523 -0
- package/dist/index.js.map +1 -0
- package/dist/local-custom-http-column.d.ts +9 -0
- package/dist/local-custom-http-column.d.ts.map +1 -0
- package/dist/local-custom-http-column.js +571 -0
- package/dist/local-custom-http-column.js.map +1 -0
- package/dist/session.d.ts +57 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +194 -0
- package/dist/session.js.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +136 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.js +43 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.js.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/package.json +15 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts +124 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/billing.js +296 -0
- package/node_modules/@oxygen/shared/dist/billing.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/column-types.d.ts +55 -0
- package/node_modules/@oxygen/shared/dist/column-types.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/column-types.js +161 -0
- package/node_modules/@oxygen/shared/dist/column-types.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts +15 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.js +60 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/file-import.d.ts +22 -0
- package/node_modules/@oxygen/shared/dist/file-import.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/file-import.js +232 -0
- package/node_modules/@oxygen/shared/dist/file-import.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/index.d.ts +45 -0
- package/node_modules/@oxygen/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/index.js +49 -0
- package/node_modules/@oxygen/shared/dist/index.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/log.d.ts +22 -0
- package/node_modules/@oxygen/shared/dist/log.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/log.js +58 -0
- package/node_modules/@oxygen/shared/dist/log.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/redaction.d.ts +4 -0
- package/node_modules/@oxygen/shared/dist/redaction.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/redaction.js +106 -0
- package/node_modules/@oxygen/shared/dist/redaction.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/telemetry.d.ts +9 -0
- package/node_modules/@oxygen/shared/dist/telemetry.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/telemetry.js +98 -0
- package/node_modules/@oxygen/shared/dist/telemetry.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/version.d.ts +2 -0
- package/node_modules/@oxygen/shared/dist/version.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/version.js +2 -0
- package/node_modules/@oxygen/shared/dist/version.js.map +1 -0
- package/node_modules/@oxygen/shared/package.json +21 -0
- package/node_modules/@oxygen/workflows/dist/index.d.ts +680 -0
- package/node_modules/@oxygen/workflows/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/workflows/dist/index.js +983 -0
- package/node_modules/@oxygen/workflows/dist/index.js.map +1 -0
- package/node_modules/@oxygen/workflows/package.json +15 -0
- package/package.json +44 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
import { OxygenError } from "@oxygen/shared";
|
|
2
|
+
import { requestOxygen } from "./http-client.js";
|
|
3
|
+
export async function runLocalCustomHttpColumn(table, columnKeyOrId, options) {
|
|
4
|
+
const described = await requestOxygen("/api/cli/tables/describe", {
|
|
5
|
+
method: "POST",
|
|
6
|
+
body: { table },
|
|
7
|
+
});
|
|
8
|
+
const column = findLocalColumn(described.columns ?? [], columnKeyOrId);
|
|
9
|
+
const definition = readLocalCustomHttpDefinition(column);
|
|
10
|
+
const secrets = readLocalSecrets(definition.request.secrets ?? {});
|
|
11
|
+
const queried = await requestOxygen("/api/cli/tables/query", {
|
|
12
|
+
method: "POST",
|
|
13
|
+
body: {
|
|
14
|
+
table,
|
|
15
|
+
...(options.rowId ? { row_id: options.rowId } : { limit: options.limit ?? 10 }),
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
const rows = Array.isArray(queried.rows) ? queried.rows.filter(isRecord) : [];
|
|
19
|
+
const concurrency = normalizeLocalConcurrency(options.concurrency);
|
|
20
|
+
const results = await mapLocalConcurrent(rows, concurrency, async (row) => {
|
|
21
|
+
const rowId = readLocalRowId(row);
|
|
22
|
+
if (!options.force && isNonEmptyLocalValue(row[column.key])) {
|
|
23
|
+
return {
|
|
24
|
+
status: "skipped",
|
|
25
|
+
rowId,
|
|
26
|
+
reason: "existing_value",
|
|
27
|
+
toolId: "custom_http",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const execution = await executeLocalCustomHttpColumn(definition, row, secrets);
|
|
32
|
+
const update = await requestOxygen("/api/cli/tables/rows/update", {
|
|
33
|
+
method: "POST",
|
|
34
|
+
body: {
|
|
35
|
+
table,
|
|
36
|
+
row_id: rowId,
|
|
37
|
+
values: { [column.key]: execution.output },
|
|
38
|
+
metadata: {
|
|
39
|
+
command: "columns run --local",
|
|
40
|
+
column_key: column.key,
|
|
41
|
+
column_kind: "tool",
|
|
42
|
+
tool_mode: "custom_http",
|
|
43
|
+
request: execution.request,
|
|
44
|
+
response: execution.response,
|
|
45
|
+
http_status: execution.response.status,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
status: "completed",
|
|
51
|
+
rowId,
|
|
52
|
+
toolId: "custom_http",
|
|
53
|
+
request: execution.request,
|
|
54
|
+
response: execution.response,
|
|
55
|
+
output: execution.output,
|
|
56
|
+
run: isRecord(update.run) ? update.run : null,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const serialized = serializeLocalColumnError(error, "custom_http_run_failed");
|
|
61
|
+
const update = await requestOxygen("/api/cli/tables/rows/update", {
|
|
62
|
+
method: "POST",
|
|
63
|
+
body: {
|
|
64
|
+
table,
|
|
65
|
+
row_id: rowId,
|
|
66
|
+
values: { [column.key]: serialized },
|
|
67
|
+
metadata: {
|
|
68
|
+
command: "columns run --local",
|
|
69
|
+
column_key: column.key,
|
|
70
|
+
column_kind: "tool",
|
|
71
|
+
tool_mode: "custom_http",
|
|
72
|
+
error: serialized.error,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
status: "failed",
|
|
78
|
+
rowId,
|
|
79
|
+
toolId: "custom_http",
|
|
80
|
+
output: serialized,
|
|
81
|
+
error: serialized.error,
|
|
82
|
+
run: isRecord(update.run) ? update.run : null,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const completedCount = results.filter((result) => result.status === "completed").length;
|
|
87
|
+
const failedCount = results.filter((result) => result.status === "failed").length;
|
|
88
|
+
const skippedCount = results.filter((result) => result.status === "skipped").length;
|
|
89
|
+
const first = results[0];
|
|
90
|
+
return {
|
|
91
|
+
status: failedCount > 0
|
|
92
|
+
? "completed_with_errors"
|
|
93
|
+
: completedCount > 0
|
|
94
|
+
? "completed"
|
|
95
|
+
: "skipped",
|
|
96
|
+
table: described.table ?? queried.table ?? null,
|
|
97
|
+
column,
|
|
98
|
+
toolId: "custom_http",
|
|
99
|
+
requestedRowCount: rows.length,
|
|
100
|
+
rowCount: results.length,
|
|
101
|
+
concurrency,
|
|
102
|
+
completedCount,
|
|
103
|
+
failedCount,
|
|
104
|
+
skippedCount,
|
|
105
|
+
results,
|
|
106
|
+
...(first ? { rowId: first.rowId } : {}),
|
|
107
|
+
...(first && "request" in first ? { request: first.request } : {}),
|
|
108
|
+
...(first && "output" in first ? { output: first.output } : {}),
|
|
109
|
+
...(first && "error" in first ? { error: first.error } : {}),
|
|
110
|
+
...(first && "run" in first ? { run: first.run } : {}),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function findLocalColumn(columns, columnKeyOrId) {
|
|
114
|
+
const column = columns.find((entry) => entry.id === columnKeyOrId || entry.key === columnKeyOrId);
|
|
115
|
+
if (!column) {
|
|
116
|
+
throw new OxygenError("column_not_found", "Workspace column was not found.", {
|
|
117
|
+
details: { column: columnKeyOrId },
|
|
118
|
+
exitCode: 1,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return column;
|
|
122
|
+
}
|
|
123
|
+
function readLocalCustomHttpDefinition(column) {
|
|
124
|
+
if (column.kind !== "tool") {
|
|
125
|
+
throw new OxygenError("unsupported_column_run", "--local currently supports custom HTTP tool columns only.", {
|
|
126
|
+
details: { column_key: column.key, kind: column.kind ?? null },
|
|
127
|
+
exitCode: 1,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (!isRecord(column.definition) || column.definition.mode !== "custom_http") {
|
|
131
|
+
throw new OxygenError("unsupported_column_run", "--local currently supports tool columns with mode custom_http only.", {
|
|
132
|
+
details: {
|
|
133
|
+
column_key: column.key,
|
|
134
|
+
mode: isRecord(column.definition) ? column.definition.mode ?? null : null,
|
|
135
|
+
},
|
|
136
|
+
exitCode: 1,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (column.definition.runCondition !== undefined) {
|
|
140
|
+
throw new OxygenError("unsupported_column_run", "Custom HTTP run conditions are not executable yet.", {
|
|
141
|
+
details: { column_key: column.key },
|
|
142
|
+
exitCode: 1,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (!isRecord(column.definition.request)) {
|
|
146
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP column definition must include request.", {
|
|
147
|
+
details: { column_key: column.key },
|
|
148
|
+
exitCode: 1,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const request = column.definition.request;
|
|
152
|
+
const method = readLocalHttpMethod(request.method, column.key);
|
|
153
|
+
const url = readLocalString(request, "url", "Custom HTTP request url is required.", column.key);
|
|
154
|
+
const headers = readLocalStringRecord(request.headers, "request.headers", column.key);
|
|
155
|
+
const secrets = readLocalSecretRefs(request.secrets, column.key);
|
|
156
|
+
const outputPath = readLocalOutputPath(column.definition.outputPath, column.key);
|
|
157
|
+
return {
|
|
158
|
+
version: 1,
|
|
159
|
+
mode: "custom_http",
|
|
160
|
+
request: {
|
|
161
|
+
method,
|
|
162
|
+
url,
|
|
163
|
+
...(headers ? { headers } : {}),
|
|
164
|
+
...(Object.hasOwn(request, "body") ? { body: request.body } : {}),
|
|
165
|
+
...(secrets ? { secrets } : {}),
|
|
166
|
+
},
|
|
167
|
+
...(outputPath !== undefined ? { outputPath } : {}),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function readLocalHttpMethod(value, columnKey) {
|
|
171
|
+
if (value === "GET"
|
|
172
|
+
|| value === "POST"
|
|
173
|
+
|| value === "PUT"
|
|
174
|
+
|| value === "PATCH"
|
|
175
|
+
|| value === "DELETE") {
|
|
176
|
+
return value;
|
|
177
|
+
}
|
|
178
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request method is invalid.", {
|
|
179
|
+
details: { column_key: columnKey, method: value },
|
|
180
|
+
exitCode: 1,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
function readLocalString(record, key, message, columnKey) {
|
|
184
|
+
const value = record[key];
|
|
185
|
+
if (typeof value === "string" && value.trim())
|
|
186
|
+
return value.trim();
|
|
187
|
+
throw new OxygenError("invalid_column_run", message, {
|
|
188
|
+
details: { column_key: columnKey, field: key },
|
|
189
|
+
exitCode: 1,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function readLocalStringRecord(value, field, columnKey) {
|
|
193
|
+
if (value === undefined)
|
|
194
|
+
return undefined;
|
|
195
|
+
if (!isRecord(value)) {
|
|
196
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request headers must be an object.", {
|
|
197
|
+
details: { column_key: columnKey, field },
|
|
198
|
+
exitCode: 1,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
const result = {};
|
|
202
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
203
|
+
if (!key.trim() || typeof entry !== "string") {
|
|
204
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request headers must be strings.", {
|
|
205
|
+
details: { column_key: columnKey, field, header: key },
|
|
206
|
+
exitCode: 1,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
result[key] = entry;
|
|
210
|
+
}
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
function readLocalSecretRefs(value, columnKey) {
|
|
214
|
+
if (value === undefined)
|
|
215
|
+
return undefined;
|
|
216
|
+
if (!isRecord(value)) {
|
|
217
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request secrets must be an object.", {
|
|
218
|
+
details: { column_key: columnKey, field: "request.secrets" },
|
|
219
|
+
exitCode: 1,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
const result = {};
|
|
223
|
+
for (const [name, ref] of Object.entries(value)) {
|
|
224
|
+
if (!name.trim() || !isRecord(ref) || typeof ref.env !== "string" || !ref.env.trim()) {
|
|
225
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP secret refs must point to env var names.", {
|
|
226
|
+
details: { column_key: columnKey, secret: name },
|
|
227
|
+
exitCode: 1,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
result[name] = { env: ref.env.trim() };
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
function readLocalOutputPath(value, columnKey) {
|
|
235
|
+
if (value === undefined)
|
|
236
|
+
return undefined;
|
|
237
|
+
if (value === null)
|
|
238
|
+
return null;
|
|
239
|
+
if (typeof value === "string")
|
|
240
|
+
return value;
|
|
241
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP outputPath must be a string or null.", {
|
|
242
|
+
details: { column_key: columnKey, field: "outputPath" },
|
|
243
|
+
exitCode: 1,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
function readLocalSecrets(refs) {
|
|
247
|
+
const secrets = {};
|
|
248
|
+
for (const [name, ref] of Object.entries(refs)) {
|
|
249
|
+
const value = process.env[ref.env];
|
|
250
|
+
if (!value) {
|
|
251
|
+
throw new OxygenError("missing_local_env_secret", `Set ${ref.env} in the local environment before running this custom HTTP column.`, {
|
|
252
|
+
details: { secret: name, env: ref.env },
|
|
253
|
+
exitCode: 1,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
secrets[name] = value;
|
|
257
|
+
}
|
|
258
|
+
return secrets;
|
|
259
|
+
}
|
|
260
|
+
function normalizeLocalConcurrency(value) {
|
|
261
|
+
if (value === undefined)
|
|
262
|
+
return 3;
|
|
263
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
264
|
+
throw new OxygenError("invalid_column_run", "Local custom HTTP concurrency must be a positive integer.", {
|
|
265
|
+
details: { concurrency: value },
|
|
266
|
+
exitCode: 1,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
return Math.min(value, 25);
|
|
270
|
+
}
|
|
271
|
+
async function mapLocalConcurrent(values, concurrency, action) {
|
|
272
|
+
const results = new Array(values.length);
|
|
273
|
+
let nextIndex = 0;
|
|
274
|
+
const workerCount = Math.min(values.length, concurrency);
|
|
275
|
+
await Promise.all(Array.from({ length: workerCount }, async () => {
|
|
276
|
+
while (nextIndex < values.length) {
|
|
277
|
+
const index = nextIndex;
|
|
278
|
+
nextIndex += 1;
|
|
279
|
+
const value = values[index];
|
|
280
|
+
if (value !== undefined)
|
|
281
|
+
results[index] = await action(value);
|
|
282
|
+
}
|
|
283
|
+
}));
|
|
284
|
+
return results;
|
|
285
|
+
}
|
|
286
|
+
async function executeLocalCustomHttpColumn(definition, row, secrets) {
|
|
287
|
+
const secretValues = Object.values(secrets);
|
|
288
|
+
const method = definition.request.method;
|
|
289
|
+
const resolvedUrl = resolveLocalTemplateString(definition.request.url, row, secrets, "request.url");
|
|
290
|
+
if (typeof resolvedUrl !== "string" || !resolvedUrl.trim()) {
|
|
291
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request url must resolve to a string.", {
|
|
292
|
+
details: { field: "request.url" },
|
|
293
|
+
exitCode: 1,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
const url = validateLocalHttpUrl(resolvedUrl, secretValues);
|
|
297
|
+
const headers = resolveLocalHeaders(definition.request.headers ?? {}, row, secrets);
|
|
298
|
+
const bodyValue = Object.hasOwn(definition.request, "body")
|
|
299
|
+
? resolveLocalTemplateValue(definition.request.body, row, secrets, "request.body")
|
|
300
|
+
: undefined;
|
|
301
|
+
if (method === "GET" && bodyValue !== undefined) {
|
|
302
|
+
throw new OxygenError("invalid_column_run", "GET custom HTTP requests cannot include a body.", {
|
|
303
|
+
details: { method },
|
|
304
|
+
exitCode: 1,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
const body = bodyValue === undefined ? undefined : serializeLocalHttpBody(bodyValue, headers);
|
|
308
|
+
const response = await fetch(url, {
|
|
309
|
+
method,
|
|
310
|
+
headers,
|
|
311
|
+
...(body !== undefined ? { body } : {}),
|
|
312
|
+
}).catch((error) => {
|
|
313
|
+
throw new OxygenError("custom_http_network_error", "Custom HTTP request failed before receiving a response.", {
|
|
314
|
+
details: {
|
|
315
|
+
reason: redactLocalSecrets(error instanceof Error ? error.message : String(error), secretValues),
|
|
316
|
+
},
|
|
317
|
+
exitCode: 1,
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
const responseBody = await readLocalHttpResponseBody(response);
|
|
321
|
+
const redactedResponseBody = redactLocalSecrets(responseBody, secretValues);
|
|
322
|
+
const responseSummary = {
|
|
323
|
+
status: response.status,
|
|
324
|
+
statusText: response.statusText,
|
|
325
|
+
headers: redactLocalSecrets(localHeadersToObject(response.headers), secretValues),
|
|
326
|
+
};
|
|
327
|
+
if (!response.ok) {
|
|
328
|
+
throw new OxygenError("custom_http_request_failed", "Custom HTTP request returned a non-2xx response.", {
|
|
329
|
+
details: {
|
|
330
|
+
status: response.status,
|
|
331
|
+
status_text: response.statusText,
|
|
332
|
+
body: redactedResponseBody,
|
|
333
|
+
},
|
|
334
|
+
exitCode: 1,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
output: applyLocalOutputPath(redactedResponseBody, definition.outputPath ?? null),
|
|
339
|
+
request: redactLocalSecrets({
|
|
340
|
+
method,
|
|
341
|
+
url,
|
|
342
|
+
...(Object.keys(headers).length > 0 ? { headers } : {}),
|
|
343
|
+
...(bodyValue !== undefined ? { body: bodyValue } : {}),
|
|
344
|
+
}, secretValues),
|
|
345
|
+
response: responseSummary,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
function validateLocalHttpUrl(rawUrl, secretValues) {
|
|
349
|
+
try {
|
|
350
|
+
const parsed = new URL(rawUrl);
|
|
351
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:")
|
|
352
|
+
throw new Error("Unsupported protocol.");
|
|
353
|
+
return parsed.toString();
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
throw new OxygenError("invalid_column_run", "Custom HTTP request url is invalid.", {
|
|
357
|
+
details: {
|
|
358
|
+
url: redactLocalSecrets(rawUrl, secretValues),
|
|
359
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
360
|
+
},
|
|
361
|
+
exitCode: 1,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function resolveLocalHeaders(headers, row, secrets) {
|
|
366
|
+
const resolved = {};
|
|
367
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
368
|
+
const entry = resolveLocalTemplateString(value, row, secrets, `request.headers.${key}`);
|
|
369
|
+
resolved[key] = entry === null || entry === undefined ? "" : String(entry);
|
|
370
|
+
}
|
|
371
|
+
return resolved;
|
|
372
|
+
}
|
|
373
|
+
function serializeLocalHttpBody(value, headers) {
|
|
374
|
+
if (typeof value === "string")
|
|
375
|
+
return value;
|
|
376
|
+
if (!hasLocalHeader(headers, "content-type")) {
|
|
377
|
+
headers["content-type"] = "application/json";
|
|
378
|
+
}
|
|
379
|
+
return JSON.stringify(value);
|
|
380
|
+
}
|
|
381
|
+
function hasLocalHeader(headers, name) {
|
|
382
|
+
const normalized = name.toLowerCase();
|
|
383
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === normalized);
|
|
384
|
+
}
|
|
385
|
+
async function readLocalHttpResponseBody(response) {
|
|
386
|
+
const text = await response.text();
|
|
387
|
+
if (!text)
|
|
388
|
+
return null;
|
|
389
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
390
|
+
const looksJson = contentType.toLowerCase().includes("json") || /^[\s\n\r]*[\[{]/.test(text);
|
|
391
|
+
if (!looksJson)
|
|
392
|
+
return text;
|
|
393
|
+
try {
|
|
394
|
+
return JSON.parse(text);
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
if (contentType.toLowerCase().includes("json")) {
|
|
398
|
+
throw new OxygenError("custom_http_invalid_json_response", "Custom HTTP response declared JSON but could not be parsed.", {
|
|
399
|
+
details: { reason: error instanceof Error ? error.message : String(error) },
|
|
400
|
+
exitCode: 1,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
return text;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
function localHeadersToObject(headers) {
|
|
407
|
+
const result = {};
|
|
408
|
+
headers.forEach((value, key) => {
|
|
409
|
+
result[key] = value;
|
|
410
|
+
});
|
|
411
|
+
return result;
|
|
412
|
+
}
|
|
413
|
+
function resolveLocalTemplateValue(value, row, secrets, inputName) {
|
|
414
|
+
if (typeof value === "string")
|
|
415
|
+
return resolveLocalTemplateString(value, row, secrets, inputName);
|
|
416
|
+
if (Array.isArray(value)) {
|
|
417
|
+
return value.map((entry) => resolveLocalTemplateValue(entry, row, secrets, inputName));
|
|
418
|
+
}
|
|
419
|
+
if (isRecord(value)) {
|
|
420
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
|
|
421
|
+
key,
|
|
422
|
+
resolveLocalTemplateValue(entry, row, secrets, inputName),
|
|
423
|
+
]));
|
|
424
|
+
}
|
|
425
|
+
return value;
|
|
426
|
+
}
|
|
427
|
+
function resolveLocalTemplateString(value, row, secrets, inputName) {
|
|
428
|
+
const exact = /^{{\s*([^{}]+?)\s*}}$/.exec(value);
|
|
429
|
+
if (exact)
|
|
430
|
+
return resolveLocalTemplatePath(exact[1] ?? "", row, secrets, inputName);
|
|
431
|
+
return value.replace(/{{\s*([^{}]+?)\s*}}/g, (_match, rawPath) => {
|
|
432
|
+
const resolved = resolveLocalTemplatePath(rawPath, row, secrets, inputName);
|
|
433
|
+
return resolved === null || resolved === undefined ? "" : String(resolved);
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
function resolveLocalTemplatePath(rawPath, row, secrets, inputName) {
|
|
437
|
+
const segments = rawPath
|
|
438
|
+
.split(".")
|
|
439
|
+
.map((segment) => segment.trim())
|
|
440
|
+
.filter(Boolean);
|
|
441
|
+
const root = segments.shift();
|
|
442
|
+
if (!root) {
|
|
443
|
+
throw new OxygenError("invalid_column_run", "Template reference is empty.", {
|
|
444
|
+
details: { input: inputName, template: rawPath },
|
|
445
|
+
exitCode: 1,
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
let current;
|
|
449
|
+
if (root === "secrets") {
|
|
450
|
+
const secretName = segments.shift();
|
|
451
|
+
if (!secretName || !Object.hasOwn(secrets, secretName)) {
|
|
452
|
+
throw new OxygenError("invalid_column_run", "Template references an unknown custom HTTP secret.", {
|
|
453
|
+
details: { input: inputName, secret: secretName ?? null, template: rawPath },
|
|
454
|
+
exitCode: 1,
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
current = secrets[secretName];
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
if (!Object.hasOwn(row, root)) {
|
|
461
|
+
throw new OxygenError("invalid_column_run", "Template references an unknown row column.", {
|
|
462
|
+
details: { input: inputName, column_key: root, template: rawPath },
|
|
463
|
+
exitCode: 1,
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
current = row[root];
|
|
467
|
+
}
|
|
468
|
+
for (const segment of segments) {
|
|
469
|
+
if (current === null || current === undefined)
|
|
470
|
+
return null;
|
|
471
|
+
if (Array.isArray(current) && /^\d+$/.test(segment)) {
|
|
472
|
+
current = current[Number(segment)] ?? null;
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
if (isRecord(current) && Object.hasOwn(current, segment)) {
|
|
476
|
+
current = current[segment];
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
return null;
|
|
480
|
+
}
|
|
481
|
+
return current ?? null;
|
|
482
|
+
}
|
|
483
|
+
function applyLocalOutputPath(value, outputPath) {
|
|
484
|
+
const path = typeof outputPath === "string" ? outputPath.trim() : "";
|
|
485
|
+
if (!path)
|
|
486
|
+
return value;
|
|
487
|
+
let current = value;
|
|
488
|
+
for (const rawSegment of path.split(".")) {
|
|
489
|
+
const segment = rawSegment.trim();
|
|
490
|
+
if (!segment) {
|
|
491
|
+
throw new OxygenError("invalid_output_path", "Custom HTTP outputPath is invalid.", {
|
|
492
|
+
details: { output_path: outputPath },
|
|
493
|
+
exitCode: 1,
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
if (current === null || current === undefined)
|
|
497
|
+
return null;
|
|
498
|
+
if (Array.isArray(current) && /^\d+$/.test(segment)) {
|
|
499
|
+
current = current[Number(segment)] ?? null;
|
|
500
|
+
continue;
|
|
501
|
+
}
|
|
502
|
+
if (isRecord(current) && Object.hasOwn(current, segment)) {
|
|
503
|
+
current = current[segment];
|
|
504
|
+
continue;
|
|
505
|
+
}
|
|
506
|
+
return null;
|
|
507
|
+
}
|
|
508
|
+
return current ?? null;
|
|
509
|
+
}
|
|
510
|
+
function redactLocalSecrets(value, secretValues) {
|
|
511
|
+
if (typeof value === "string") {
|
|
512
|
+
return secretValues.reduce((current, secret) => secret ? current.split(secret).join("[redacted]") : current, value);
|
|
513
|
+
}
|
|
514
|
+
if (Array.isArray(value))
|
|
515
|
+
return value.map((entry) => redactLocalSecrets(entry, secretValues));
|
|
516
|
+
if (isRecord(value)) {
|
|
517
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, redactLocalSecrets(entry, secretValues)]));
|
|
518
|
+
}
|
|
519
|
+
return value;
|
|
520
|
+
}
|
|
521
|
+
function serializeLocalColumnError(error, fallbackCode) {
|
|
522
|
+
if (error instanceof OxygenError) {
|
|
523
|
+
return {
|
|
524
|
+
ok: false,
|
|
525
|
+
error: {
|
|
526
|
+
code: error.code,
|
|
527
|
+
message: error.message,
|
|
528
|
+
...(error.details !== undefined ? { details: error.details } : {}),
|
|
529
|
+
},
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
if (error instanceof Error) {
|
|
533
|
+
return {
|
|
534
|
+
ok: false,
|
|
535
|
+
error: {
|
|
536
|
+
code: fallbackCode,
|
|
537
|
+
message: error.message,
|
|
538
|
+
},
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
return {
|
|
542
|
+
ok: false,
|
|
543
|
+
error: {
|
|
544
|
+
code: fallbackCode,
|
|
545
|
+
message: "Custom HTTP column run failed.",
|
|
546
|
+
},
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
function readLocalRowId(row) {
|
|
550
|
+
const rowId = row._row_id;
|
|
551
|
+
if (typeof rowId === "string" && rowId.trim())
|
|
552
|
+
return rowId;
|
|
553
|
+
throw new OxygenError("invalid_response", "Oxygen API row response is missing _row_id.", {
|
|
554
|
+
exitCode: 1,
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
function isNonEmptyLocalValue(value) {
|
|
558
|
+
if (value === null || value === undefined)
|
|
559
|
+
return false;
|
|
560
|
+
if (typeof value === "string")
|
|
561
|
+
return value.trim().length > 0;
|
|
562
|
+
if (Array.isArray(value))
|
|
563
|
+
return value.length > 0;
|
|
564
|
+
if (typeof value === "object")
|
|
565
|
+
return Object.keys(value).length > 0;
|
|
566
|
+
return true;
|
|
567
|
+
}
|
|
568
|
+
function isRecord(value) {
|
|
569
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
570
|
+
}
|
|
571
|
+
//# sourceMappingURL=local-custom-http-column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-custom-http-column.js","sourceRoot":"","sources":["../src/local-custom-http-column.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type SessionStepStatus = "pending" | "running" | "completed" | "error" | "skipped";
|
|
2
|
+
export type SessionStep = {
|
|
3
|
+
label: string;
|
|
4
|
+
status: SessionStepStatus;
|
|
5
|
+
startedAt: string | null;
|
|
6
|
+
completedAt: string | null;
|
|
7
|
+
};
|
|
8
|
+
export type SessionStatusMessage = {
|
|
9
|
+
id: string;
|
|
10
|
+
message: string;
|
|
11
|
+
stepIndex: number | null;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
};
|
|
14
|
+
export type SessionOutput = {
|
|
15
|
+
id: string;
|
|
16
|
+
type: "csv" | "file" | "table";
|
|
17
|
+
path: string | null;
|
|
18
|
+
table: string | null;
|
|
19
|
+
label: string | null;
|
|
20
|
+
meta: Record<string, unknown> | null;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
};
|
|
23
|
+
export type OxygenSession = {
|
|
24
|
+
id: string;
|
|
25
|
+
userPrompt: string | null;
|
|
26
|
+
steps: SessionStep[];
|
|
27
|
+
statuses: SessionStatusMessage[];
|
|
28
|
+
outputs: SessionOutput[];
|
|
29
|
+
createdAt: string;
|
|
30
|
+
updatedAt: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function startSession(input: {
|
|
33
|
+
steps: string[];
|
|
34
|
+
userPrompt?: string | null;
|
|
35
|
+
}): OxygenSession;
|
|
36
|
+
export declare function updateSessionStep(input: {
|
|
37
|
+
sessionId?: string | null;
|
|
38
|
+
index: number;
|
|
39
|
+
status: SessionStepStatus;
|
|
40
|
+
}): OxygenSession;
|
|
41
|
+
export declare function addSessionStatus(input: {
|
|
42
|
+
sessionId?: string | null;
|
|
43
|
+
message: string;
|
|
44
|
+
stepIndex?: number | null;
|
|
45
|
+
}): OxygenSession;
|
|
46
|
+
export declare function addSessionOutput(input: {
|
|
47
|
+
sessionId?: string | null;
|
|
48
|
+
csv?: string | null;
|
|
49
|
+
file?: string | null;
|
|
50
|
+
table?: string | null;
|
|
51
|
+
label?: string | null;
|
|
52
|
+
meta?: Record<string, unknown> | null;
|
|
53
|
+
}): OxygenSession;
|
|
54
|
+
export declare function getSessionUsage(input: {
|
|
55
|
+
sessionId?: string | null;
|
|
56
|
+
}): Record<string, unknown>;
|
|
57
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,aAAa,CAoBhB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,aAAa,CAoBhB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,aAAa,CAqBhB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACvC,GAAG,aAAa,CA2BhB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmB1B"}
|