@goreal-ai/echo-pdk 0.6.0 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,qBAAqB,8EAMxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB,8BAE3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,oBAAoB,yIASvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,oBAAoB,+NAIvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAMpE;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB1E;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CA2B3E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAK/F"}
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,qBAAqB,8EAMxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB,8BAE3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,oBAAoB,yIASvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,oBAAoB,+NAIvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAMpE;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB1E;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAoC3E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAK/F"}
@@ -161,9 +161,16 @@ export function normalizeFileValue(value) {
161
161
  if (typeof value === 'object') {
162
162
  const obj = value;
163
163
  if (typeof obj.dataUrl === 'string' && typeof obj.mimeType === 'string') {
164
+ let dataUrl = obj.dataUrl;
165
+ const mimeType = obj.mimeType;
166
+ // Ensure dataUrl is properly formatted with data URL prefix
167
+ // If it's raw base64 (doesn't start with "data:"), construct the full data URL
168
+ if (!dataUrl.startsWith('data:')) {
169
+ dataUrl = `data:${mimeType};base64,${dataUrl}`;
170
+ }
164
171
  return {
165
- dataUrl: obj.dataUrl,
166
- mimeType: obj.mimeType,
172
+ dataUrl,
173
+ mimeType,
167
174
  filename: typeof obj.filename === 'string' ? obj.filename : undefined,
168
175
  };
169
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/utils/file-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goreal-ai/echo-pdk",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "Echo PDK core rendering engine - parser, evaluator, and renderer",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "files": [
19
19
  "dist",
20
+ "scripts",
20
21
  "README.md"
21
22
  ],
22
23
  "repository": {
@@ -34,8 +35,8 @@
34
35
  "yaml": "^2.3.0"
35
36
  },
36
37
  "peerDependencies": {
37
- "openai": "^4.0.0",
38
- "@goreal-ai/plp-client": "^1.2.0"
38
+ "@goreal-ai/plp-client": "^1.2.0",
39
+ "openai": "^4.0.0"
39
40
  },
40
41
  "peerDependenciesMeta": {
41
42
  "openai": {
@@ -47,6 +48,7 @@
47
48
  },
48
49
  "devDependencies": {
49
50
  "@types/node": "^20.10.0",
51
+ "esbuild": "^0.27.2",
50
52
  "openai": "^4.0.0",
51
53
  "typescript": "^5.3.0",
52
54
  "vitest": "^2.0.0"
@@ -62,6 +64,7 @@
62
64
  "license": "MIT",
63
65
  "scripts": {
64
66
  "build": "tsc",
67
+ "build:graaljs": "node scripts/bundle-for-graaljs.mjs",
65
68
  "dev": "tsc --watch",
66
69
  "test": "vitest run",
67
70
  "test:watch": "vitest",
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Bundle echo-pdk for GraalJS (Java) integration.
4
+ * Creates a single IIFE bundle that exposes renderTemplate globally.
5
+ */
6
+
7
+ import * as esbuild from 'esbuild';
8
+ import { writeFileSync } from 'fs';
9
+ import { join, dirname } from 'path';
10
+ import { fileURLToPath } from 'url';
11
+
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ const outfile = join(__dirname, '..', 'dist', 'echo-pdk.graaljs.js');
14
+
15
+ async function bundle() {
16
+ // Bundle the core library
17
+ const result = await esbuild.build({
18
+ entryPoints: [join(__dirname, '..', 'src', 'index.ts')],
19
+ bundle: true,
20
+ format: 'iife',
21
+ globalName: 'EchoPDK',
22
+ platform: 'browser', // Use browser platform to avoid Node.js built-ins
23
+ target: 'es2020',
24
+ write: false,
25
+ minify: false, // Keep readable for debugging
26
+ external: ['openai', '@goreal-ai/plp-client'], // These won't be used in Java
27
+ // Polyfill/ignore Node.js built-ins that won't be used
28
+ define: {
29
+ 'process.env.NODE_ENV': '"production"',
30
+ 'process.env': '{}',
31
+ 'process': '{"env":{}}',
32
+ },
33
+ // Stub out crypto - only used for AI judge caching which we skip in Java
34
+ alias: {
35
+ 'crypto': join(__dirname, 'stubs', 'crypto.mjs'),
36
+ },
37
+ });
38
+
39
+ // Get the bundled code
40
+ let code = result.outputFiles[0].text;
41
+
42
+ // Add a wrapper that exposes a simple render function for Java
43
+ const wrapper = `
44
+ // Echo PDK Bundle for GraalJS
45
+ // Generated: ${new Date().toISOString()}
46
+
47
+ ${code}
48
+
49
+ // Expose simplified API for Java integration
50
+ var echoPdk = {
51
+ /**
52
+ * Render a template (async, returns a Promise).
53
+ * Supports full Echo DSL including conditionals.
54
+ * @param {string} template - The Echo DSL template
55
+ * @param {Object} context - Variables to substitute
56
+ * @param {Object} [config] - Optional configuration
57
+ * @returns {Promise<string>} - Rendered output
58
+ */
59
+ render: function(template, context, config) {
60
+ var echo = EchoPDK.createEcho(config || {});
61
+ // Use the full async render pipeline which includes evaluation
62
+ return echo.render(template, context || {});
63
+ },
64
+
65
+ /**
66
+ * Render a template synchronously (no AI judge support).
67
+ * Uses evaluate + render for full conditional support.
68
+ * @param {string} template - The Echo DSL template
69
+ * @param {Object} context - Variables to substitute
70
+ * @param {Object} [config] - Optional configuration
71
+ * @returns {string} - Rendered output
72
+ */
73
+ renderSync: function(template, context, config) {
74
+ // Parse
75
+ var parseResult = EchoPDK.parse(template);
76
+ if (!parseResult.success || !parseResult.ast) {
77
+ throw new Error('Parse error: ' + JSON.stringify(parseResult.errors));
78
+ }
79
+
80
+ // For sync, we need to block on the evaluate Promise
81
+ // GraalJS supports this via Java.await() or we can use a workaround
82
+ var evaluatedAst = parseResult.ast;
83
+ var evalPromise = EchoPDK.evaluate(parseResult.ast, context || {}, config || {});
84
+
85
+ // Try to get result synchronously if possible
86
+ if (evalPromise && typeof evalPromise.then === 'function') {
87
+ // It's a Promise - we need to use Java interop to block
88
+ // For now, fall back to direct rendering without conditional evaluation
89
+ // This is a limitation - conditionals won't work in sync mode
90
+ // Use render() for full support
91
+ } else if (evalPromise && evalPromise.ast) {
92
+ evaluatedAst = evalPromise.ast;
93
+ }
94
+
95
+ // Render
96
+ var rendered = EchoPDK.render(evaluatedAst, {
97
+ context: context || {},
98
+ config: config || {},
99
+ trim: false,
100
+ collapseNewlines: true
101
+ });
102
+ return rendered;
103
+ },
104
+
105
+ /**
106
+ * Parse a template and return the AST.
107
+ * @param {string} template - The Echo DSL template
108
+ * @returns {Object} - Parse result with ast and errors
109
+ */
110
+ parse: function(template) {
111
+ return EchoPDK.parse(template);
112
+ },
113
+
114
+ /**
115
+ * Extract variables from a template.
116
+ * @param {string} template - The Echo DSL template
117
+ * @returns {Array} - Array of variable info objects
118
+ */
119
+ extractVariables: function(template) {
120
+ var parseResult = EchoPDK.parse(template);
121
+ if (!parseResult.success || !parseResult.ast) {
122
+ return [];
123
+ }
124
+ var variables = [];
125
+ function visit(nodes) {
126
+ for (var i = 0; i < nodes.length; i++) {
127
+ var node = nodes[i];
128
+ if (node.type === 'variable') {
129
+ variables.push({
130
+ name: node.path,
131
+ type: node.varType || 'text',
132
+ defaultValue: node.defaultValue
133
+ });
134
+ } else if (node.type === 'conditional') {
135
+ visit(node.consequent);
136
+ if (node.alternate) {
137
+ if (Array.isArray(node.alternate)) {
138
+ visit(node.alternate);
139
+ } else {
140
+ visit([node.alternate]);
141
+ }
142
+ }
143
+ } else if (node.type === 'section') {
144
+ visit(node.body);
145
+ }
146
+ }
147
+ }
148
+ visit(parseResult.ast);
149
+ return variables;
150
+ },
151
+
152
+ /**
153
+ * Validate a template without rendering.
154
+ * @param {string} template - The Echo DSL template
155
+ * @returns {Object} - { valid: boolean, errors: Array }
156
+ */
157
+ validate: function(template) {
158
+ var parseResult = EchoPDK.parse(template);
159
+ return {
160
+ valid: parseResult.success,
161
+ errors: parseResult.errors || []
162
+ };
163
+ }
164
+ };
165
+ `;
166
+
167
+ writeFileSync(outfile, wrapper);
168
+ console.log(`Bundle created: ${outfile}`);
169
+ console.log(`Size: ${(wrapper.length / 1024).toFixed(1)} KB`);
170
+ }
171
+
172
+ bundle().catch(err => {
173
+ console.error('Bundle failed:', err);
174
+ process.exit(1);
175
+ });
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Crypto stub for GraalJS bundle.
3
+ * The crypto module is only used for AI judge caching, which we skip in Java.
4
+ */
5
+
6
+ export function createHash() {
7
+ return {
8
+ update: () => ({ digest: () => 'stub-hash' }),
9
+ };
10
+ }
11
+
12
+ export default { createHash };