@ekairos/dataset 1.22.76-beta.development.0 → 1.22.77-beta.development.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.
@@ -6,5 +6,6 @@ interface PreviewOptions {
6
6
  midLines?: number;
7
7
  }
8
8
  export declare function resolveFilePreviewScriptPath(scriptName: string): string;
9
+ export declare function getEmbeddedFilePreviewScriptBase64(scriptName: string): string;
9
10
  export declare function ensurePreviewScriptsAvailable(runtime: any, sandboxId: string): Promise<void>;
10
11
  export declare function generateFilePreview(runtime: any, sandboxId: string, sandboxFilePath: string, datasetId: string, options?: PreviewOptions): Promise<FilePreviewContext>;
@@ -2,6 +2,7 @@ import { existsSync, readFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { runDatasetSandboxCommandStep, writeDatasetSandboxFilesStep } from "../sandbox/steps.js";
5
+ import { PYTHON_SCRIPT_BASE64_BY_NAME } from "./scripts.generated.js";
5
6
  const DEFAULT_HEAD_LINES = 50;
6
7
  const DEFAULT_TAIL_LINES = 20;
7
8
  const DEFAULT_MID_LINES = 20;
@@ -34,6 +35,36 @@ export function resolveFilePreviewScriptPath(scriptName) {
34
35
  }
35
36
  throw new Error(`dataset_preview_script_not_found:${scriptName}; searched=${candidates.join(",")}`);
36
37
  }
38
+ export function getEmbeddedFilePreviewScriptBase64(scriptName) {
39
+ const embedded = PYTHON_SCRIPT_BASE64_BY_NAME[scriptName];
40
+ if (!embedded) {
41
+ throw new Error(`dataset_preview_script_not_embedded:${scriptName}`);
42
+ }
43
+ return embedded;
44
+ }
45
+ function readFilePreviewScriptBase64(scriptName) {
46
+ try {
47
+ const scriptPath = resolveFilePreviewScriptPath(scriptName);
48
+ return Buffer.from(readFileSync(scriptPath)).toString("base64");
49
+ }
50
+ catch (error) {
51
+ try {
52
+ return getEmbeddedFilePreviewScriptBase64(scriptName);
53
+ }
54
+ catch {
55
+ throw error;
56
+ }
57
+ }
58
+ }
59
+ function readFilePreviewScriptText(scriptName) {
60
+ try {
61
+ const scriptPath = resolveFilePreviewScriptPath(scriptName);
62
+ return readFileSync(scriptPath, "utf-8");
63
+ }
64
+ catch {
65
+ return Buffer.from(getEmbeddedFilePreviewScriptBase64(scriptName), "base64").toString("utf-8");
66
+ }
67
+ }
37
68
  const preparedSandboxIds = new Set();
38
69
  const sandboxSetupPromises = new Map();
39
70
  function sanitizePreviewText(value) {
@@ -92,11 +123,9 @@ export async function ensurePreviewScriptsAvailable(runtime, sandboxId) {
92
123
  const filesToWrite = [];
93
124
  for (const scriptName of PYTHON_SCRIPT_FILES) {
94
125
  try {
95
- const scriptPath = resolveFilePreviewScriptPath(scriptName);
96
- const fileBuffer = readFileSync(scriptPath);
97
126
  filesToWrite.push({
98
127
  path: `${SANDBOX_SCRIPT_DIRECTORY}/${scriptName}`,
99
- contentBase64: Buffer.from(fileBuffer).toString("base64"),
128
+ contentBase64: readFilePreviewScriptBase64(scriptName),
100
129
  });
101
130
  }
102
131
  catch (error) {
@@ -198,8 +227,7 @@ async function runScript(runtime, sandboxId, scriptName, args, description) {
198
227
  const command = `python ${scriptPath} ${args.join(" ")}`;
199
228
  let scriptContent = "";
200
229
  try {
201
- const localScriptPath = resolveFilePreviewScriptPath(scriptName);
202
- scriptContent = readFileSync(localScriptPath, 'utf-8');
230
+ scriptContent = readFilePreviewScriptText(scriptName);
203
231
  }
204
232
  catch (error) {
205
233
  console.warn(`Failed to read script ${scriptName}:`, error);
@@ -0,0 +1 @@
1
+ export declare const PYTHON_SCRIPT_BASE64_BY_NAME: Readonly<Record<string, string>>;
@@ -0,0 +1,11 @@
1
+ // Generated by packages/dataset/scripts/generate-python-scripts-module.js.
2
+ // Do not edit by hand.
3
+ export const PYTHON_SCRIPT_BASE64_BY_NAME = Object.freeze({
4
+ "file_metadata.py": "aW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IGpzb24KaW1wb3J0IGNzdgoKZmlsZV9wYXRoID0gc3lzLmFyZ3ZbMV0KCmluZm8gPSB7CiAgICAiZmlsZV9uYW1lIjogb3MucGF0aC5iYXNlbmFtZShmaWxlX3BhdGgpLAogICAgImV4dGVuc2lvbiI6IG9zLnBhdGguc3BsaXRleHQoZmlsZV9wYXRoKVsxXS5sb3dlcigpLAogICAgInNpemVfYnl0ZXMiOiBvcy5wYXRoLmdldHNpemUoZmlsZV9wYXRoKSBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpIGVsc2UgTm9uZQp9CgppZiBpbmZvWyJzaXplX2J5dGVzIl0gaXMgbm90IE5vbmU6CiAgICB1bml0cyA9IFsiQiIsICJLQiIsICJNQiIsICJHQiIsICJUQiIsICJQQiJdCiAgICBzaXplID0gZmxvYXQoaW5mb1sic2l6ZV9ieXRlcyJdKQogICAgaWR4ID0gMAogICAgd2hpbGUgc2l6ZSA+PSAxMDI0IGFuZCBpZHggPCBsZW4odW5pdHMpIC0gMToKICAgICAgICBzaXplIC89IDEwMjQKICAgICAgICBpZHggKz0gMQogICAgaW5mb1sic2l6ZV9odW1hbiJdID0gZiJ7c2l6ZTouMmZ9IHt1bml0c1tpZHhdfSIKCnJvd19lc3RpbWF0ZSA9IE5vbmUKY29sdW1uX2VzdGltYXRlID0gTm9uZQpoZWFkZXJfcHJldmlldyA9IE5vbmUKCnRyeToKICAgIGlmIGluZm9bImV4dGVuc2lvbiJdIGluIFsiLnhsc3giLCAiLnhscyJdOgogICAgICAgIGltcG9ydCBvcGVucHl4bAogICAgICAgIHdiID0gb3BlbnB5eGwubG9hZF93b3JrYm9vayhmaWxlX3BhdGgsIHJlYWRfb25seT1UcnVlLCBkYXRhX29ubHk9RmFsc2UpCiAgICAgICAgc2hlZXRzID0gW10KICAgICAgICBmaXJzdF9zaGVldF9yb3dzID0gMAogICAgICAgIGZpcnN0X3NoZWV0X2NvbHVtbnMgPSAwCiAgICAgICAgZm9yIGlkeCwgd3MgaW4gZW51bWVyYXRlKHdiLndvcmtzaGVldHMpOgogICAgICAgICAgICByb3dzID0gd3MubWF4X3JvdyBvciAwCiAgICAgICAgICAgIGNvbHMgPSB3cy5tYXhfY29sdW1uIG9yIDAKICAgICAgICAgICAgaWYgaWR4ID09IDA6CiAgICAgICAgICAgICAgICBmaXJzdF9zaGVldF9yb3dzID0gcm93cwogICAgICAgICAgICAgICAgZmlyc3Rfc2hlZXRfY29sdW1ucyA9IGNvbHMKICAgICAgICAgICAgc2hlZXRfaW5mbyA9IHsibmFtZSI6IHdzLnRpdGxlLCAicm93cyI6IHJvd3MsICJjb2x1bW5zIjogY29sc30KICAgICAgICAgICAgc2hlZXRzLmFwcGVuZChzaGVldF9pbmZvKQogICAgICAgIGluZm9bInNoZWV0X3N0YXRzIl0gPSBzaGVldHMKICAgICAgICByb3dfZXN0aW1hdGUgPSBmaXJzdF9zaGVldF9yb3dzCiAgICAgICAgY29sdW1uX2VzdGltYXRlID0gZmlyc3Rfc2hlZXRfY29sdW1ucyBpZiBmaXJzdF9zaGVldF9jb2x1bW5zID4gMCBlbHNlIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpcnN0X3NoZWV0ID0gd2Iud29ya3NoZWV0c1swXQogICAgICAgICAgICBoZWFkZXJfcHJldmlldyA9IFtzdHIoY2VsbC52YWx1ZSkgaWYgY2VsbC52YWx1ZSBpcyBub3QgTm9uZSBlbHNlICIiIGZvciBjZWxsIGluIG5leHQoZmlyc3Rfc2hlZXQuaXRlcl9yb3dzKG1pbl9yb3c9MSwgbWF4X3Jvdz0xKSldCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgaGVhZGVyX3ByZXZpZXcgPSBOb25lCiAgICBlbHNlOgogICAgICAgIHJvd19jb3VudCA9IDAKICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAicmIiKSBhcyBmaDoKICAgICAgICAgICAgZm9yIF8gaW4gZmg6CiAgICAgICAgICAgICAgICByb3dfY291bnQgKz0gMQogICAgICAgIHJvd19lc3RpbWF0ZSA9IHJvd19jb3VudCAtIDEgaWYgcm93X2NvdW50ID4gMCBlbHNlIDAKICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAiciIsIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0iaWdub3JlIikgYXMgZmg6CiAgICAgICAgICAgIHJlYWRlciA9IGNzdi5yZWFkZXIoZmgpCiAgICAgICAgICAgIGhlYWRlcl9wcmV2aWV3ID0gbmV4dChyZWFkZXIsIFtdKQogICAgICAgIGNvbHVtbl9lc3RpbWF0ZSA9IGxlbihoZWFkZXJfcHJldmlldykgaWYgaGVhZGVyX3ByZXZpZXcgZWxzZSBOb25lCmV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6CiAgICBpbmZvWyJtZXRhZGF0YV9lcnJvciJdID0gc3RyKGVycm9yKQoKaWYgcm93X2VzdGltYXRlIGlzIG5vdCBOb25lOgogICAgaW5mb1sicm93X2NvdW50X2VzdGltYXRlIl0gPSByb3dfZXN0aW1hdGUKaWYgY29sdW1uX2VzdGltYXRlIGlzIG5vdCBOb25lOgogICAgaW5mb1siY29sdW1uX2NvdW50X2VzdGltYXRlIl0gPSBjb2x1bW5fZXN0aW1hdGUKaWYgaGVhZGVyX3ByZXZpZXcgaXMgbm90IE5vbmU6CiAgICBpbmZvWyJoZWFkZXJfcHJldmlldyJdID0gaGVhZGVyX3ByZXZpZXcKCnByaW50KGpzb24uZHVtcHMoaW5mbywgZW5zdXJlX2FzY2lpPUZhbHNlKSkKCg==",
5
+ "preview_head_csv.py": "aW1wb3J0IHN5cwppbXBvcnQgY3N2CmltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKCmZpbGVfcGF0aCA9IHN5cy5hcmd2WzFdCm5fcm93cyA9IGludChzeXMuYXJndlsyXSkgaWYgbGVuKHN5cy5hcmd2KSA+IDIgZWxzZSAxMAoKcm9vdCA9IEVULkVsZW1lbnQoInJvd3MiKQoKd2l0aCBvcGVuKGZpbGVfcGF0aCwgInIiLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9Imlnbm9yZSIpIGFzIGZoOgogICAgcmVhZGVyID0gY3N2LnJlYWRlcihmaCkKICAgIGZvciByb3dfaWR4LCByb3dfZGF0YSBpbiBlbnVtZXJhdGUocmVhZGVyKToKICAgICAgICBpZiByb3dfaWR4ID49IG5fcm93czoKICAgICAgICAgICAgYnJlYWsKICAgICAgICByb3dfZWxlbSA9IEVULlN1YkVsZW1lbnQocm9vdCwgInJvdyIsIGluZGV4PXN0cihyb3dfaWR4KSkKICAgICAgICBmb3IgY29sX2lkeCwgY2VsbF92YWx1ZSBpbiBlbnVtZXJhdGUocm93X2RhdGEpOgogICAgICAgICAgICBjZWxsX2VsZW0gPSBFVC5TdWJFbGVtZW50KHJvd19lbGVtLCAiY2VsbCIsIGNvbHVtbj1zdHIoY29sX2lkeCkpCiAgICAgICAgICAgIGNlbGxfZWxlbS50ZXh0ID0gY2VsbF92YWx1ZSBpZiBjZWxsX3ZhbHVlIGVsc2UgIiIKCnRyZWUgPSBFVC5FbGVtZW50VHJlZShyb290KQpFVC5pbmRlbnQodHJlZSwgc3BhY2U9IiAgIikKcHJpbnQoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+JykKcHJpbnQoRVQudG9zdHJpbmcocm9vdCwgZW5jb2Rpbmc9InVuaWNvZGUiKSkKCg==",
6
+ "preview_head_excel.py": "aW1wb3J0IHN5cwppbXBvcnQgb3BlbnB5eGwKaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAoKZmlsZV9wYXRoID0gc3lzLmFyZ3ZbMV0Kbl9yb3dzID0gaW50KHN5cy5hcmd2WzJdKSBpZiBsZW4oc3lzLmFyZ3YpID4gMiBlbHNlIDEwCgp3YiA9IG9wZW5weXhsLmxvYWRfd29ya2Jvb2soZmlsZV9wYXRoLCByZWFkX29ubHk9VHJ1ZSwgZGF0YV9vbmx5PVRydWUpCndzID0gd2Iud29ya3NoZWV0c1swXQoKcm9vdCA9IEVULkVsZW1lbnQoInJvd3MiKQoKcm93c19wcmludGVkID0gMApmb3Igcm93X2lkeCwgcm93IGluIGVudW1lcmF0ZSh3cy5pdGVyX3Jvd3MoKSk6CiAgICBpZiByb3dzX3ByaW50ZWQgPj0gbl9yb3dzOgogICAgICAgIGJyZWFrCiAgICByb3dfZWxlbSA9IEVULlN1YkVsZW1lbnQocm9vdCwgInJvdyIsIGluZGV4PXN0cihyb3dfaWR4KSkKICAgIAogICAgZm9yIGNvbF9pZHgsIGNlbGwgaW4gZW51bWVyYXRlKHJvdyk6CiAgICAgICAgY2VsbF9lbGVtID0gRVQuU3ViRWxlbWVudChyb3dfZWxlbSwgImNlbGwiLCBjb2x1bW49c3RyKGNvbF9pZHgpKQogICAgICAgIGNlbGxfdmFsdWUgPSBjZWxsLnZhbHVlCiAgICAgICAgY2VsbF9lbGVtLnRleHQgPSBzdHIoY2VsbF92YWx1ZSkgaWYgY2VsbF92YWx1ZSBpcyBub3QgTm9uZSBlbHNlICIiCiAgICAKICAgIHJvd3NfcHJpbnRlZCArPSAxCgp0cmVlID0gRVQuRWxlbWVudFRyZWUocm9vdCkKRVQuaW5kZW50KHRyZWUsIHNwYWNlPSIgICIpCnByaW50KCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicpCnByaW50KEVULnRvc3RyaW5nKHJvb3QsIGVuY29kaW5nPSJ1bmljb2RlIikpCgo=",
7
+ "preview_mid_csv.py": "aW1wb3J0IHN5cwppbXBvcnQgY3N2CmltcG9ydCByYW5kb20KaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAoKZmlsZV9wYXRoID0gc3lzLmFyZ3ZbMV0Kc3RhcnRfcm93ID0gaW50KHN5cy5hcmd2WzJdKQplbmRfcm93ID0gaW50KHN5cy5hcmd2WzNdKQpuX3NhbXBsZXMgPSBpbnQoc3lzLmFyZ3ZbNF0pIGlmIGxlbihzeXMuYXJndikgPiA0IGVsc2UgMTAKCnJvb3QgPSBFVC5FbGVtZW50KCJyb3dzIikKCndpdGggb3BlbihmaWxlX3BhdGgsICJyIiwgZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJpZ25vcmUiKSBhcyBmaDoKICAgIHJlYWRlciA9IGNzdi5yZWFkZXIoZmgpCiAgICBhbGxfcm93cyA9IGxpc3QocmVhZGVyKQoKbWlkX3NlY3Rpb24gPSBhbGxfcm93c1tzdGFydF9yb3c6ZW5kX3Jvd10KCmlmIGxlbihtaWRfc2VjdGlvbikgPD0gbl9zYW1wbGVzOgogICAgc2FtcGxlZF93aXRoX2lkeCA9IFsoaSwgcm93KSBmb3IgaSwgcm93IGluIGVudW1lcmF0ZShtaWRfc2VjdGlvbildCmVsc2U6CiAgICByYW5kb20uc2VlZCg0MikKICAgIHNhbXBsZWRfd2l0aF9pZHggPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShsaXN0KGVudW1lcmF0ZShtaWRfc2VjdGlvbikpLCBuX3NhbXBsZXMpLCBrZXk9bGFtYmRhIHg6IHhbMF0pCgpmb3IgcmVsYXRpdmVfaWR4LCByb3dfZGF0YSBpbiBzYW1wbGVkX3dpdGhfaWR4OgogICAgYWN0dWFsX2lkeCA9IHN0YXJ0X3JvdyArIHJlbGF0aXZlX2lkeAogICAgcm93X2VsZW0gPSBFVC5TdWJFbGVtZW50KHJvb3QsICJyb3ciLCBpbmRleD1zdHIoYWN0dWFsX2lkeCkpCiAgICBmb3IgY29sX2lkeCwgY2VsbF92YWx1ZSBpbiBlbnVtZXJhdGUocm93X2RhdGEpOgogICAgICAgIGNlbGxfZWxlbSA9IEVULlN1YkVsZW1lbnQocm93X2VsZW0sICJjZWxsIiwgY29sdW1uPXN0cihjb2xfaWR4KSkKICAgICAgICBjZWxsX2VsZW0udGV4dCA9IGNlbGxfdmFsdWUgaWYgY2VsbF92YWx1ZSBlbHNlICIiCgp0cmVlID0gRVQuRWxlbWVudFRyZWUocm9vdCkKRVQuaW5kZW50KHRyZWUsIHNwYWNlPSIgICIpCnByaW50KCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicpCnByaW50KEVULnRvc3RyaW5nKHJvb3QsIGVuY29kaW5nPSJ1bmljb2RlIikpCgo=",
8
+ "preview_mid_excel.py": "aW1wb3J0IHN5cwppbXBvcnQgcmFuZG9tCmltcG9ydCBvcGVucHl4bAppbXBvcnQgeG1sLmV0cmVlLkVsZW1lbnRUcmVlIGFzIEVUCgpmaWxlX3BhdGggPSBzeXMuYXJndlsxXQpzdGFydF9yb3cgPSBpbnQoc3lzLmFyZ3ZbMl0pCmVuZF9yb3cgPSBpbnQoc3lzLmFyZ3ZbM10pCm5fc2FtcGxlcyA9IGludChzeXMuYXJndls0XSkgaWYgbGVuKHN5cy5hcmd2KSA+IDQgZWxzZSAxMAoKd2IgPSBvcGVucHl4bC5sb2FkX3dvcmtib29rKGZpbGVfcGF0aCwgcmVhZF9vbmx5PVRydWUsIGRhdGFfb25seT1UcnVlKQp3cyA9IHdiLndvcmtzaGVldHNbMF0KCnJvb3QgPSBFVC5FbGVtZW50KCJyb3dzIikKCmFsbF9yb3dzID0gbGlzdCh3cy5pdGVyX3Jvd3MoKSkKbWlkX3NlY3Rpb24gPSBhbGxfcm93c1tzdGFydF9yb3c6ZW5kX3Jvd10KCmlmIGxlbihtaWRfc2VjdGlvbikgPD0gbl9zYW1wbGVzOgogICAgc2FtcGxlZF93aXRoX2lkeCA9IFsoaSwgcm93KSBmb3IgaSwgcm93IGluIGVudW1lcmF0ZShtaWRfc2VjdGlvbildCmVsc2U6CiAgICByYW5kb20uc2VlZCg0MikKICAgIGluZGljZXMgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZShsZW4obWlkX3NlY3Rpb24pKSwgbl9zYW1wbGVzKSkKICAgIHNhbXBsZWRfd2l0aF9pZHggPSBbKGksIG1pZF9zZWN0aW9uW2ldKSBmb3IgaSBpbiBpbmRpY2VzXQoKZm9yIHJlbGF0aXZlX2lkeCwgcm93IGluIHNhbXBsZWRfd2l0aF9pZHg6CiAgICBhY3R1YWxfaWR4ID0gc3RhcnRfcm93ICsgcmVsYXRpdmVfaWR4CiAgICByb3dfZWxlbSA9IEVULlN1YkVsZW1lbnQocm9vdCwgInJvdyIsIGluZGV4PXN0cihhY3R1YWxfaWR4KSkKICAgIAogICAgZm9yIGNvbF9pZHgsIGNlbGwgaW4gZW51bWVyYXRlKHJvdyk6CiAgICAgICAgY2VsbF9lbGVtID0gRVQuU3ViRWxlbWVudChyb3dfZWxlbSwgImNlbGwiLCBjb2x1bW49c3RyKGNvbF9pZHgpKQogICAgICAgIGNlbGxfdmFsdWUgPSBjZWxsLnZhbHVlCiAgICAgICAgY2VsbF9lbGVtLnRleHQgPSBzdHIoY2VsbF92YWx1ZSkgaWYgY2VsbF92YWx1ZSBpcyBub3QgTm9uZSBlbHNlICIiCgp0cmVlID0gRVQuRWxlbWVudFRyZWUocm9vdCkKRVQuaW5kZW50KHRyZWUsIHNwYWNlPSIgICIpCnByaW50KCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicpCnByaW50KEVULnRvc3RyaW5nKHJvb3QsIGVuY29kaW5nPSJ1bmljb2RlIikpCgo=",
9
+ "preview_tail_csv.py": "aW1wb3J0IHN5cwppbXBvcnQgY3N2CmltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKCmZpbGVfcGF0aCA9IHN5cy5hcmd2WzFdCm5fcm93cyA9IGludChzeXMuYXJndlsyXSkgaWYgbGVuKHN5cy5hcmd2KSA+IDIgZWxzZSAxMAoKcm9vdCA9IEVULkVsZW1lbnQoInJvd3MiKQoKd2l0aCBvcGVuKGZpbGVfcGF0aCwgInIiLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9Imlnbm9yZSIpIGFzIGZoOgogICAgcmVhZGVyID0gY3N2LnJlYWRlcihmaCkKICAgIGFsbF9yb3dzID0gbGlzdChyZWFkZXIpCiAgICB0YWlsX3Jvd3MgPSBhbGxfcm93c1stbl9yb3dzOl0gaWYgbGVuKGFsbF9yb3dzKSA+IG5fcm93cyBlbHNlIGFsbF9yb3dzCiAgICBzdGFydF9pbmRleCA9IGxlbihhbGxfcm93cykgLSBsZW4odGFpbF9yb3dzKQogICAgCiAgICBmb3IgaWR4LCByb3dfZGF0YSBpbiBlbnVtZXJhdGUodGFpbF9yb3dzKToKICAgICAgICByb3dfZWxlbSA9IEVULlN1YkVsZW1lbnQocm9vdCwgInJvdyIsIGluZGV4PXN0cihzdGFydF9pbmRleCArIGlkeCkpCiAgICAgICAgZm9yIGNvbF9pZHgsIGNlbGxfdmFsdWUgaW4gZW51bWVyYXRlKHJvd19kYXRhKToKICAgICAgICAgICAgY2VsbF9lbGVtID0gRVQuU3ViRWxlbWVudChyb3dfZWxlbSwgImNlbGwiLCBjb2x1bW49c3RyKGNvbF9pZHgpKQogICAgICAgICAgICBjZWxsX2VsZW0udGV4dCA9IGNlbGxfdmFsdWUgaWYgY2VsbF92YWx1ZSBlbHNlICIiCgp0cmVlID0gRVQuRWxlbWVudFRyZWUocm9vdCkKRVQuaW5kZW50KHRyZWUsIHNwYWNlPSIgICIpCnByaW50KCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicpCnByaW50KEVULnRvc3RyaW5nKHJvb3QsIGVuY29kaW5nPSJ1bmljb2RlIikpCgo=",
10
+ "preview_tail_excel.py": "aW1wb3J0IHN5cwppbXBvcnQgb3BlbnB5eGwKaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAoKZmlsZV9wYXRoID0gc3lzLmFyZ3ZbMV0Kbl9yb3dzID0gaW50KHN5cy5hcmd2WzJdKSBpZiBsZW4oc3lzLmFyZ3YpID4gMiBlbHNlIDEwCgp3YiA9IG9wZW5weXhsLmxvYWRfd29ya2Jvb2soZmlsZV9wYXRoLCByZWFkX29ubHk9VHJ1ZSwgZGF0YV9vbmx5PVRydWUpCndzID0gd2Iud29ya3NoZWV0c1swXQoKcm9vdCA9IEVULkVsZW1lbnQoInJvd3MiKQoKYWxsX3Jvd3MgPSBsaXN0KHdzLml0ZXJfcm93cygpKQp0YWlsX3Jvd3MgPSBhbGxfcm93c1stbl9yb3dzOl0gaWYgbGVuKGFsbF9yb3dzKSA+IG5fcm93cyBlbHNlIGFsbF9yb3dzCnN0YXJ0X2luZGV4ID0gbGVuKGFsbF9yb3dzKSAtIGxlbih0YWlsX3Jvd3MpCgpmb3IgaWR4LCByb3cgaW4gZW51bWVyYXRlKHRhaWxfcm93cyk6CiAgICByb3dfZWxlbSA9IEVULlN1YkVsZW1lbnQocm9vdCwgInJvdyIsIGluZGV4PXN0cihzdGFydF9pbmRleCArIGlkeCkpCiAgICAKICAgIGZvciBjb2xfaWR4LCBjZWxsIGluIGVudW1lcmF0ZShyb3cpOgogICAgICAgIGNlbGxfZWxlbSA9IEVULlN1YkVsZW1lbnQocm93X2VsZW0sICJjZWxsIiwgY29sdW1uPXN0cihjb2xfaWR4KSkKICAgICAgICBjZWxsX3ZhbHVlID0gY2VsbC52YWx1ZQogICAgICAgIGNlbGxfZWxlbS50ZXh0ID0gc3RyKGNlbGxfdmFsdWUpIGlmIGNlbGxfdmFsdWUgaXMgbm90IE5vbmUgZWxzZSAiIgoKdHJlZSA9IEVULkVsZW1lbnRUcmVlKHJvb3QpCkVULmluZGVudCh0cmVlLCBzcGFjZT0iICAiKQpwcmludCgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nKQpwcmludChFVC50b3N0cmluZyhyb290LCBlbmNvZGluZz0idW5pY29kZSIpKQoK"
11
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekairos/dataset",
3
- "version": "1.22.76-beta.development.0",
3
+ "version": "1.22.77-beta.development.0",
4
4
  "description": "Pulzar Dataset Tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -53,7 +53,7 @@
53
53
  }
54
54
  },
55
55
  "scripts": {
56
- "build": "tsc -p tsconfig.json && node scripts/copy-python-scripts.js",
56
+ "build": "node scripts/generate-python-scripts-module.js && tsc -p tsconfig.json && node scripts/copy-python-scripts.js",
57
57
  "dev": "tsc -p tsconfig.json --watch",
58
58
  "clean": "node -e \"require('fs').rmSync('dist', {recursive:true, force:true})\"",
59
59
  "typecheck": "tsc --noEmit",
@@ -65,9 +65,9 @@
65
65
  "test:ai-sdk:instant": "vitest run -c vitest.codex.config.mts src/tests/materializeDataset.ai-sdk.instant.test.ts"
66
66
  },
67
67
  "dependencies": {
68
- "@ekairos/domain": "^1.22.76-beta.development.0",
69
- "@ekairos/events": "^1.22.76-beta.development.0",
70
- "@ekairos/sandbox": "^1.22.76-beta.development.0",
68
+ "@ekairos/domain": "^1.22.77-beta.development.0",
69
+ "@ekairos/events": "^1.22.77-beta.development.0",
70
+ "@ekairos/sandbox": "^1.22.77-beta.development.0",
71
71
  "@instantdb/admin": "0.22.158",
72
72
  "@instantdb/core": "0.22.142",
73
73
  "ai": "^5.0.44",