@superatomai/sdk-node 0.0.56-dsp → 0.0.57-dsp

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.
@@ -177,6 +177,12 @@ if (!SCRIPT_ARG) {
177
177
  process.exit(1);
178
178
  }
179
179
  var BRIDGE_URL = process.env.SCRIPT_BRIDGE_URL;
180
+ var CONTEXT_TOKEN = process.env.SA_CONTEXT_TOKEN;
181
+ var observedPolicies = /* @__PURE__ */ new Set();
182
+ var bridgeHeaders = () => ({
183
+ "content-type": "application/json",
184
+ ...CONTEXT_TOKEN ? { "x-sa-context": CONTEXT_TOKEN } : {}
185
+ });
180
186
  var executedQueries = [];
181
187
  var toolIdCallCounts = {};
182
188
  var PREVIEW_MAX_ROWS = 10;
@@ -212,11 +218,12 @@ ${sql}
212
218
  send({ type: "stream", chunk: `__QUERY_TIMER_START_Executing query__` });
213
219
  const res = await fetch(`${BRIDGE_URL}/query`, {
214
220
  method: "POST",
215
- headers: { "content-type": "application/json" },
221
+ headers: bridgeHeaders(),
216
222
  body: JSON.stringify({ toolId, sql, limit: QUERY_ROW_CAP })
217
223
  });
218
224
  const json = await res.json();
219
225
  const executionTimeMs = Date.now() - startedAt;
226
+ for (const p of json?.metadata?.appliedPolicies ?? []) observedPolicies.add(p);
220
227
  send({ type: "stream", chunk: `__QUERY_TIMER_DONE_${(executionTimeMs / 1e3).toFixed(1)}__
221
228
 
222
229
  ` });
@@ -271,7 +278,8 @@ ${sql}
271
278
  sql,
272
279
  data,
273
280
  count,
274
- executionTimeMs
281
+ executionTimeMs,
282
+ ...json?.metadata?.appliedPolicies?.length ? { appliedPolicies: json.metadata.appliedPolicies } : {}
275
283
  });
276
284
  return { data, count, truncated, totalCount };
277
285
  },
@@ -292,7 +300,7 @@ ${sql}
292
300
  if (!BRIDGE_URL) throw new Error("SCRIPT_BRIDGE_URL is not set \u2014 script bridge server is not running");
293
301
  const res = await fetch(`${BRIDGE_URL}/run-tool`, {
294
302
  method: "POST",
295
- headers: { "content-type": "application/json" },
303
+ headers: bridgeHeaders(),
296
304
  body: JSON.stringify({ toolId, params })
297
305
  });
298
306
  const json = await res.json();
@@ -382,7 +390,7 @@ function handleMessage(msg) {
382
390
  if (initResolve) {
383
391
  const now = new Date(msg.now || (/* @__PURE__ */ new Date()).toISOString());
384
392
  const params = restoreParamTypes(msg.params || {}, msg.paramSchema);
385
- initResolve({ params, now, mode: msg.mode, data: msg.data, datasets: msg.datasets, fmt: msg.fmt, entities: msg.entities });
393
+ initResolve({ params, now, mode: msg.mode, data: msg.data, datasets: msg.datasets, fmt: msg.fmt, entities: msg.entities, appliedPolicies: msg.appliedPolicies });
386
394
  initResolve = null;
387
395
  }
388
396
  break;
@@ -398,11 +406,11 @@ function collectDatasets(queries) {
398
406
  }
399
407
  return out;
400
408
  }
401
- async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities = []) {
409
+ async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities = [], scope = []) {
402
410
  const getComponents = mod?.getComponents ?? mod?.default?.getComponents;
403
411
  if (typeof getComponents !== "function") return {};
404
412
  try {
405
- const out = await getComponents(data, params, makeFmt(fmtCfg), datasets, entities);
413
+ const out = await getComponents(data, params, makeFmt(fmtCfg), datasets, entities, scope);
406
414
  if (!Array.isArray(out)) {
407
415
  return { componentsError: "getComponents must return an ARRAY of component specs" };
408
416
  }
@@ -415,11 +423,11 @@ async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities
415
423
  return { componentsError: e?.message || String(err) };
416
424
  }
417
425
  }
418
- async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities = []) {
426
+ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities = [], scope = []) {
419
427
  const getAnalysis = mod?.getAnalysis ?? mod?.default?.getAnalysis;
420
428
  if (typeof getAnalysis !== "function") return {};
421
429
  try {
422
- const out = await getAnalysis(data, params, makeFmt(fmtCfg), datasets, entities);
430
+ const out = await getAnalysis(data, params, makeFmt(fmtCfg), datasets, entities, scope);
423
431
  if (!out || typeof out !== "object") {
424
432
  return { analysisError: "getAnalysis must return an object with { analysis, summary, method }" };
425
433
  }
@@ -452,7 +460,7 @@ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities =
452
460
  const started = Date.now();
453
461
  const rows = Array.isArray(init.data) ? init.data : [];
454
462
  const ds = init.datasets ?? {};
455
- const authored = init.mode === "analysis" ? await runAnalysis(mod, rows, init.params, init.fmt, ds, init.entities) : await runComponents(mod, rows, init.params, init.fmt, ds, init.entities);
463
+ const authored = init.mode === "analysis" ? await runAnalysis(mod, rows, init.params, init.fmt, ds, init.entities, init.appliedPolicies ?? []) : await runComponents(mod, rows, init.params, init.fmt, ds, init.entities, init.appliedPolicies ?? []);
456
464
  const flushedAuthored = send({
457
465
  type: "result",
458
466
  data: [],
@@ -483,8 +491,9 @@ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities =
483
491
  const count = typeof raw?.count === "number" ? raw.count : data.length;
484
492
  const sampleRows = data.slice(0, 5);
485
493
  const ds = collectDatasets(executedQueries);
486
- const { analysis, analysisError } = await runAnalysis(mod, data, init.params, init.fmt, ds, init.entities);
487
- const { components, componentsError } = await runComponents(mod, data, init.params, init.fmt, ds, init.entities);
494
+ const observed = [...observedPolicies];
495
+ const { analysis, analysisError } = await runAnalysis(mod, data, init.params, init.fmt, ds, init.entities, observed);
496
+ const { components, componentsError } = await runComponents(mod, data, init.params, init.fmt, ds, init.entities, observed);
488
497
  const result = {
489
498
  type: "result",
490
499
  data,
@@ -175,6 +175,12 @@ if (!SCRIPT_ARG) {
175
175
  process.exit(1);
176
176
  }
177
177
  var BRIDGE_URL = process.env.SCRIPT_BRIDGE_URL;
178
+ var CONTEXT_TOKEN = process.env.SA_CONTEXT_TOKEN;
179
+ var observedPolicies = /* @__PURE__ */ new Set();
180
+ var bridgeHeaders = () => ({
181
+ "content-type": "application/json",
182
+ ...CONTEXT_TOKEN ? { "x-sa-context": CONTEXT_TOKEN } : {}
183
+ });
178
184
  var executedQueries = [];
179
185
  var toolIdCallCounts = {};
180
186
  var PREVIEW_MAX_ROWS = 10;
@@ -210,11 +216,12 @@ ${sql}
210
216
  send({ type: "stream", chunk: `__QUERY_TIMER_START_Executing query__` });
211
217
  const res = await fetch(`${BRIDGE_URL}/query`, {
212
218
  method: "POST",
213
- headers: { "content-type": "application/json" },
219
+ headers: bridgeHeaders(),
214
220
  body: JSON.stringify({ toolId, sql, limit: QUERY_ROW_CAP })
215
221
  });
216
222
  const json = await res.json();
217
223
  const executionTimeMs = Date.now() - startedAt;
224
+ for (const p of json?.metadata?.appliedPolicies ?? []) observedPolicies.add(p);
218
225
  send({ type: "stream", chunk: `__QUERY_TIMER_DONE_${(executionTimeMs / 1e3).toFixed(1)}__
219
226
 
220
227
  ` });
@@ -269,7 +276,8 @@ ${sql}
269
276
  sql,
270
277
  data,
271
278
  count,
272
- executionTimeMs
279
+ executionTimeMs,
280
+ ...json?.metadata?.appliedPolicies?.length ? { appliedPolicies: json.metadata.appliedPolicies } : {}
273
281
  });
274
282
  return { data, count, truncated, totalCount };
275
283
  },
@@ -290,7 +298,7 @@ ${sql}
290
298
  if (!BRIDGE_URL) throw new Error("SCRIPT_BRIDGE_URL is not set \u2014 script bridge server is not running");
291
299
  const res = await fetch(`${BRIDGE_URL}/run-tool`, {
292
300
  method: "POST",
293
- headers: { "content-type": "application/json" },
301
+ headers: bridgeHeaders(),
294
302
  body: JSON.stringify({ toolId, params })
295
303
  });
296
304
  const json = await res.json();
@@ -380,7 +388,7 @@ function handleMessage(msg) {
380
388
  if (initResolve) {
381
389
  const now = new Date(msg.now || (/* @__PURE__ */ new Date()).toISOString());
382
390
  const params = restoreParamTypes(msg.params || {}, msg.paramSchema);
383
- initResolve({ params, now, mode: msg.mode, data: msg.data, datasets: msg.datasets, fmt: msg.fmt, entities: msg.entities });
391
+ initResolve({ params, now, mode: msg.mode, data: msg.data, datasets: msg.datasets, fmt: msg.fmt, entities: msg.entities, appliedPolicies: msg.appliedPolicies });
384
392
  initResolve = null;
385
393
  }
386
394
  break;
@@ -396,11 +404,11 @@ function collectDatasets(queries) {
396
404
  }
397
405
  return out;
398
406
  }
399
- async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities = []) {
407
+ async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities = [], scope = []) {
400
408
  const getComponents = mod?.getComponents ?? mod?.default?.getComponents;
401
409
  if (typeof getComponents !== "function") return {};
402
410
  try {
403
- const out = await getComponents(data, params, makeFmt(fmtCfg), datasets, entities);
411
+ const out = await getComponents(data, params, makeFmt(fmtCfg), datasets, entities, scope);
404
412
  if (!Array.isArray(out)) {
405
413
  return { componentsError: "getComponents must return an ARRAY of component specs" };
406
414
  }
@@ -413,11 +421,11 @@ async function runComponents(mod, data, params, fmtCfg, datasets = {}, entities
413
421
  return { componentsError: e?.message || String(err) };
414
422
  }
415
423
  }
416
- async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities = []) {
424
+ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities = [], scope = []) {
417
425
  const getAnalysis = mod?.getAnalysis ?? mod?.default?.getAnalysis;
418
426
  if (typeof getAnalysis !== "function") return {};
419
427
  try {
420
- const out = await getAnalysis(data, params, makeFmt(fmtCfg), datasets, entities);
428
+ const out = await getAnalysis(data, params, makeFmt(fmtCfg), datasets, entities, scope);
421
429
  if (!out || typeof out !== "object") {
422
430
  return { analysisError: "getAnalysis must return an object with { analysis, summary, method }" };
423
431
  }
@@ -450,7 +458,7 @@ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities =
450
458
  const started = Date.now();
451
459
  const rows = Array.isArray(init.data) ? init.data : [];
452
460
  const ds = init.datasets ?? {};
453
- const authored = init.mode === "analysis" ? await runAnalysis(mod, rows, init.params, init.fmt, ds, init.entities) : await runComponents(mod, rows, init.params, init.fmt, ds, init.entities);
461
+ const authored = init.mode === "analysis" ? await runAnalysis(mod, rows, init.params, init.fmt, ds, init.entities, init.appliedPolicies ?? []) : await runComponents(mod, rows, init.params, init.fmt, ds, init.entities, init.appliedPolicies ?? []);
454
462
  const flushedAuthored = send({
455
463
  type: "result",
456
464
  data: [],
@@ -481,8 +489,9 @@ async function runAnalysis(mod, data, params, fmtCfg, datasets = {}, entities =
481
489
  const count = typeof raw?.count === "number" ? raw.count : data.length;
482
490
  const sampleRows = data.slice(0, 5);
483
491
  const ds = collectDatasets(executedQueries);
484
- const { analysis, analysisError } = await runAnalysis(mod, data, init.params, init.fmt, ds, init.entities);
485
- const { components, componentsError } = await runComponents(mod, data, init.params, init.fmt, ds, init.entities);
492
+ const observed = [...observedPolicies];
493
+ const { analysis, analysisError } = await runAnalysis(mod, data, init.params, init.fmt, ds, init.entities, observed);
494
+ const { components, componentsError } = await runComponents(mod, data, init.params, init.fmt, ds, init.entities, observed);
486
495
  const result = {
487
496
  type: "result",
488
497
  data,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superatomai/sdk-node",
3
- "version": "0.0.56-dsp",
3
+ "version": "0.0.57-dsp",
4
4
  "description": "Node.js TypeScript SDK for Superatom",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",