@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,
|
|
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"}
|
package/dist/utils/file-utils.js
CHANGED
|
@@ -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
|
|
166
|
-
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.
|
|
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
|
-
"
|
|
38
|
-
"
|
|
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 };
|