@kheleshikhi/studio-agent 0.6.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
package/dist/zip.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export interface ZipEntry {
2
+ name: string;
3
+ data: Buffer;
4
+ }
5
+ export declare function sha256(data: Buffer): string;
6
+ export declare function makeZip(entries: ZipEntry[]): Buffer;
7
+ export declare function verifyZip(data: Buffer): boolean;
package/dist/zip.js ADDED
@@ -0,0 +1,76 @@
1
+ /** Small dependency-free ZIP writer for bounded Attempt evidence. */
2
+ import { createHash } from "node:crypto";
3
+ const crcTable = Array.from({ length: 256 }, (_, index) => {
4
+ let value = index;
5
+ for (let bit = 0; bit < 8; bit += 1)
6
+ value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
7
+ return value >>> 0;
8
+ });
9
+ function crc32(data) {
10
+ let result = 0xffffffff;
11
+ for (const byte of data)
12
+ result = crcTable[(result ^ byte) & 255] ^ (result >>> 8);
13
+ return (result ^ 0xffffffff) >>> 0;
14
+ }
15
+ export function sha256(data) {
16
+ return createHash("sha256").update(data).digest("hex");
17
+ }
18
+ export function makeZip(entries) {
19
+ const local = [];
20
+ const central = [];
21
+ let offset = 0;
22
+ for (const { name, data } of entries) {
23
+ if (!name || name.startsWith("/") || name.includes("..") || name.includes("\\"))
24
+ throw new Error("Unsafe ZIP entry");
25
+ const filename = Buffer.from(name, "utf8");
26
+ const crc = crc32(data);
27
+ const file = Buffer.alloc(30);
28
+ file.writeUInt32LE(0x04034b50, 0);
29
+ file.writeUInt16LE(20, 4);
30
+ file.writeUInt16LE(0x0800, 6);
31
+ file.writeUInt32LE(crc, 14);
32
+ file.writeUInt32LE(data.length, 18);
33
+ file.writeUInt32LE(data.length, 22);
34
+ file.writeUInt16LE(filename.length, 26);
35
+ local.push(file, filename, data);
36
+ const directory = Buffer.alloc(46);
37
+ directory.writeUInt32LE(0x02014b50, 0);
38
+ directory.writeUInt16LE(20, 4);
39
+ directory.writeUInt16LE(20, 6);
40
+ directory.writeUInt16LE(0x0800, 8);
41
+ directory.writeUInt32LE(crc, 16);
42
+ directory.writeUInt32LE(data.length, 20);
43
+ directory.writeUInt32LE(data.length, 24);
44
+ directory.writeUInt16LE(filename.length, 28);
45
+ directory.writeUInt32LE(offset, 42);
46
+ central.push(directory, filename);
47
+ offset += file.length + filename.length + data.length;
48
+ }
49
+ const centralSize = central.reduce((size, part) => size + part.length, 0);
50
+ const end = Buffer.alloc(22);
51
+ end.writeUInt32LE(0x06054b50, 0);
52
+ end.writeUInt16LE(entries.length, 8);
53
+ end.writeUInt16LE(entries.length, 10);
54
+ end.writeUInt32LE(centralSize, 12);
55
+ end.writeUInt32LE(offset, 16);
56
+ return Buffer.concat([...local, ...central, end]);
57
+ }
58
+ export function verifyZip(data) {
59
+ let offset = 0;
60
+ let count = 0;
61
+ while (offset + 4 <= data.length && data.readUInt32LE(offset) === 0x04034b50) {
62
+ if (offset + 30 > data.length)
63
+ return false;
64
+ const size = data.readUInt32LE(offset + 18);
65
+ const nameLength = data.readUInt16LE(offset + 26);
66
+ const extraLength = data.readUInt16LE(offset + 28);
67
+ const start = offset + 30 + nameLength + extraLength;
68
+ if (start + size > data.length || crc32(data.subarray(start, start + size)) !== data.readUInt32LE(offset + 14))
69
+ return false;
70
+ offset = start + size;
71
+ count += 1;
72
+ }
73
+ const end = data.length - 22;
74
+ return offset < end && data.readUInt32LE(end) === 0x06054b50 && data.readUInt16LE(end + 10) === count;
75
+ }
76
+ //# sourceMappingURL=zip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@kheleshikhi/studio-agent",
3
+ "version": "0.6.1",
4
+ "description": "Provider-neutral external agent workflow for KheleShikhi Interactive Studio",
5
+ "type": "module",
6
+ "bin": {
7
+ "nerdbro": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist/*.js",
11
+ "dist/*.js.map",
12
+ "dist/*.d.ts",
13
+ "README.md"
14
+ ],
15
+ "scripts": {
16
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
17
+ "prepack": "npm run build",
18
+ "typecheck": "tsc -p tsconfig.json --noEmit",
19
+ "test": "npm run build && node --test dist/test/*.test.js",
20
+ "pack:smoke": "npm pack --dry-run"
21
+ },
22
+ "engines": {
23
+ "node": ">=20"
24
+ },
25
+ "dependencies": {
26
+ "playwright": "^1.55.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^22.15.0",
30
+ "typescript": "^5.9.0"
31
+ },
32
+ "license": "UNLICENSED",
33
+ "publishConfig": {
34
+ "access": "public"
35
+ }
36
+ }