@recombine-ai/engine 0.3.2 → 0.4.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.
- package/build/lib/ai.d.ts +14 -1
- package/build/lib/ai.d.ts.map +1 -1
- package/build/lib/ai.js +24 -10
- package/changelog.md +6 -0
- package/package.json +1 -1
- package/readme.md +1 -1
package/build/lib/ai.d.ts
CHANGED
|
@@ -75,6 +75,14 @@ export declare namespace AIEngine {
|
|
|
75
75
|
/** Error handler called if an error occurred during LLM API call or in `execute` function */
|
|
76
76
|
onError: (error: string) => Promise<unknown>;
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* A useful trace of a step execution. It's properties are filled during the execution. There is no guarantee that any of them will be filled.
|
|
80
|
+
*/
|
|
81
|
+
type StepTrace = {
|
|
82
|
+
renderedPrompt?: string;
|
|
83
|
+
receivedContext?: Record<string, unknown>;
|
|
84
|
+
receivedPrompt?: string;
|
|
85
|
+
};
|
|
78
86
|
/**
|
|
79
87
|
* An AI workflow composed of steps.
|
|
80
88
|
*/
|
|
@@ -89,7 +97,12 @@ export declare namespace AIEngine {
|
|
|
89
97
|
* @param messages - The conversation context for the workflow
|
|
90
98
|
* @returns The proposed reply if workflow completes, or null if terminated
|
|
91
99
|
*/
|
|
92
|
-
run: (messages: Conversation) => Promise<
|
|
100
|
+
run: (messages: Conversation) => Promise<{
|
|
101
|
+
reply: string | null;
|
|
102
|
+
trace: {
|
|
103
|
+
steps: Record<string, StepTrace>;
|
|
104
|
+
};
|
|
105
|
+
}>;
|
|
93
106
|
/**
|
|
94
107
|
* Rewinds the workflow execution to a specific step.
|
|
95
108
|
* @param step - The step to rewind to
|
package/build/lib/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/lib/ai.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAc,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGvD,yBAAiB,QAAQ,CAAC;IACtB;;OAEG;IACH,KAAY,UAAU,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,mBAAmB,GACnB,eAAe,GACf,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAEnB,UAAiB,gBAAgB;QAC7B,8BAA8B;QAC9B,IAAI,EAAE,MAAM,CAAA;QAEZ,kDAAkD;QAClD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAE9D,0BAA0B;QAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QAE/B,6EAA6E;QAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC/C;IAED,UAAiB,OAAO;QACpB,8BAA8B;QAC9B,IAAI,EAAE,MAAM,CAAA;QAEZ,kDAAkD;QAClD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAE9D,qCAAqC;QACrC,KAAK,CAAC,EAAE,UAAU,CAAA;QAElB;;;WAGG;QACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QAErB;;;WAGG;QACH,MAAM,CAAC,EAAE,SAAS,CAAA;QAElB,8EAA8E;QAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAE1B;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAEjC;;;;;;;;;;;;;;WAcG;QACH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAE5C;;;;YAII;QACJ,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAE7D;;;;WAIG;QACH,WAAW,CAAC,EAAE,MAAM,CAAA;QAEpB,6FAA6F;QAC7F,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC/C;IAED;;OAEG;IACH,UAAiB,QAAQ;QACrB;;WAEG;QACH,SAAS,EAAE,MAAM,IAAI,CAAA;QAErB;;;;;WAKG;QACH,GAAG,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/lib/ai.ts"],"names":[],"mappings":"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"}
|
package/build/lib/ai.js
CHANGED
|
@@ -102,6 +102,12 @@ var AIEngine;
|
|
|
102
102
|
let currentStep = 0;
|
|
103
103
|
let beforeEachCallback = async () => Promise.resolve(null);
|
|
104
104
|
const attempts = new Map();
|
|
105
|
+
const trace = {
|
|
106
|
+
steps: steps.reduce((acc, step) => {
|
|
107
|
+
acc[step.name] = {};
|
|
108
|
+
return acc;
|
|
109
|
+
}, {})
|
|
110
|
+
};
|
|
105
111
|
return {
|
|
106
112
|
terminate: () => {
|
|
107
113
|
logger.debug('AI Engine: Terminating conversation...');
|
|
@@ -119,7 +125,8 @@ var AIEngine;
|
|
|
119
125
|
await action('started');
|
|
120
126
|
logger.debug(`AI Engine: Step: ${step.name}`);
|
|
121
127
|
if ('prompt' in step) {
|
|
122
|
-
await runStep(step, messages);
|
|
128
|
+
const stepTrace = await runStep(step, messages);
|
|
129
|
+
trace.steps[step.name] = stepTrace;
|
|
123
130
|
}
|
|
124
131
|
else {
|
|
125
132
|
await runDumbStep(step, messages);
|
|
@@ -127,7 +134,10 @@ var AIEngine;
|
|
|
127
134
|
await action('completed');
|
|
128
135
|
}
|
|
129
136
|
}
|
|
130
|
-
return
|
|
137
|
+
return {
|
|
138
|
+
reply: shouldRun ? messages.getProposedReply() : null,
|
|
139
|
+
trace
|
|
140
|
+
};
|
|
131
141
|
},
|
|
132
142
|
rewindTo: (step) => {
|
|
133
143
|
const index = steps.indexOf(step);
|
|
@@ -147,19 +157,21 @@ var AIEngine;
|
|
|
147
157
|
if (!apiKey) {
|
|
148
158
|
throw new Error('OpenAI API key is not set');
|
|
149
159
|
}
|
|
160
|
+
const stepTrace = {};
|
|
150
161
|
try {
|
|
162
|
+
stepTrace.receivedContext = step.context;
|
|
151
163
|
let response = null;
|
|
152
164
|
let prompt = typeof step.prompt === 'string' ? step.prompt : await step.prompt.content();
|
|
165
|
+
stepTrace.receivedPrompt = prompt;
|
|
153
166
|
logger.debug('AI Engine: context', step.context);
|
|
154
167
|
logger.debug('AI Engine: messages', messages.toString(step.ignoreDirectives || false));
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
168
|
+
nunjucks_1.default.configure({
|
|
169
|
+
autoescape: true,
|
|
170
|
+
trimBlocks: true,
|
|
171
|
+
lstripBlocks: true,
|
|
172
|
+
});
|
|
173
|
+
prompt = nunjucks_1.default.renderString(prompt, step.context || {});
|
|
174
|
+
stepTrace.renderedPrompt = prompt;
|
|
163
175
|
response = await runLLM(apiKey, prompt, messages.toString(step.ignoreDirectives || false), step.schema, step.model);
|
|
164
176
|
if (!response) {
|
|
165
177
|
throw new Error('No response from OpenAI');
|
|
@@ -180,11 +192,13 @@ var AIEngine;
|
|
|
180
192
|
logger.debug(`AI Engine: replying`);
|
|
181
193
|
await step.execute(response);
|
|
182
194
|
}
|
|
195
|
+
return stepTrace;
|
|
183
196
|
}
|
|
184
197
|
catch (error) {
|
|
185
198
|
// FIXME: this doesn't terminate the workflow
|
|
186
199
|
await step.onError(error.message);
|
|
187
200
|
shouldRun = false;
|
|
201
|
+
return stepTrace;
|
|
188
202
|
}
|
|
189
203
|
}
|
|
190
204
|
async function runDumbStep(step, messages) {
|
package/changelog.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
### 0.3.2 → 0.4.o (unstable)
|
|
4
|
+
|
|
5
|
+
Breaking changes:
|
|
6
|
+
|
|
7
|
+
- `await workflow.run()` now returns an object with `reply: string` and `trace` object
|
|
8
|
+
|
|
3
9
|
### 0.3.1 → 0.3.2 (unstable)
|
|
4
10
|
|
|
5
11
|
- add `ScheduleQuery` class that provides three additional capabilities compared to `delayFactory`:
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -60,7 +60,7 @@ const myCoordinator = engine.createStep({
|
|
|
60
60
|
|
|
61
61
|
// Create and run workflow
|
|
62
62
|
const workflow = await engine.createWorkflow(mainStep, myReviewer, myCoordinator)
|
|
63
|
-
const
|
|
63
|
+
const { reply, trace } = await workflow.run(messages)
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
## Main concepts
|