-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgreeting.ts
68 lines (64 loc) · 1.84 KB
/
greeting.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { engine, EngineNodeData, EngineTask, run } from '../src';
import { writeTrace } from './common/writeTrace';
@engine({ id: 'greetingId' })
class GreetingTask extends EngineTask {
@run({
config: {
traceExecution: {
inputs: ['0.name', '0.age', '0.address.city', '1.name'],
outputs: (out: any) => `the output I want to trace is: '${out.fullGreeting}'`,
errors: true,
narratives: true,
startTime: true,
endTime: false
}
}
})
generateGreeting(person: { [key: string]: any }, greeter: { [key: string]: string }, nodeData?: EngineNodeData) {
this.engine.pushNarratives(nodeData.id, [`here is tracing narrative for greeting ${person.name}`]);
return {
greeting: {
fr: `Hello, ${person.name}`,
es: `¡Hola, ${person.name}!`,
en: `Hello, ${person.name}!`
},
greeter: `I'm ${greeter.name}.`,
hobbies: [`Let's explore the world of ${person.hobbies.join(', ')} together!`],
get fullGreeting() {
return [this.greeting.en, this.greeter, ...this.hobbies].join(' ');
}
};
}
}
export async function generate() {
const myInstance = new GreetingTask();
myInstance.generateGreeting(
{
name: 'John Doe',
age: 30,
isStudent: false,
grades: [85, 90, 78, 95],
address: {
street: '123 Main Street',
city: 'Cityville',
zipcode: '12345'
},
contact: {
email: '[email protected]',
phone: '+1 555-1234'
},
hobbies: ['reading', 'traveling', 'coding'],
isActive: true,
birthday: '1992-05-15',
isMarried: null
},
{
name: 'Akram'
}
);
// Retrieve the trace
const trace = myInstance.engine.getTrace();
const jsonString = JSON.stringify(trace, null, 2);
writeTrace(jsonString);
}
generate().then();