@recombine-ai/engine 0.11.0 → 0.11.1-beta
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/.github/workflows/publish.yml +13 -1
- package/build/lib/ai.d.ts +24 -64
- package/build/lib/ai.d.ts.map +1 -1
- package/build/lib/ai.js +12 -1
- package/package.json +2 -2
|
@@ -39,5 +39,17 @@ jobs:
|
|
|
39
39
|
- name: 'Build'
|
|
40
40
|
run: npm run build
|
|
41
41
|
|
|
42
|
+
- name: 'Compute npm publish args'
|
|
43
|
+
id: publish_meta
|
|
44
|
+
run: |
|
|
45
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
46
|
+
if [[ "$VERSION" == *-* ]]; then
|
|
47
|
+
PRERELEASE="${VERSION#*-}"
|
|
48
|
+
DIST_TAG="${PRERELEASE%%.*}"
|
|
49
|
+
echo "publish_args=--access public --tag ${DIST_TAG}" >> "$GITHUB_OUTPUT"
|
|
50
|
+
else
|
|
51
|
+
echo "publish_args=--access public" >> "$GITHUB_OUTPUT"
|
|
52
|
+
fi
|
|
53
|
+
|
|
42
54
|
- name: 'Publish to npm'
|
|
43
|
-
run: npm publish
|
|
55
|
+
run: npm publish ${{ steps.publish_meta.outputs.publish_args }}
|
package/build/lib/ai.d.ts
CHANGED
|
@@ -118,17 +118,27 @@ export interface Workflow<CTX> {
|
|
|
118
118
|
run: (conversation: Conversation, contextProvider: (() => CTX) | (() => Promise<CTX>), beforeEach?: BeforeEachStep<CTX>) => Promise<string | null>;
|
|
119
119
|
/**
|
|
120
120
|
* Add a step to workflow
|
|
121
|
+
* @deprecated use {@link WorkflowConfig#steps} instead
|
|
121
122
|
*/
|
|
122
123
|
addStep<Schema extends Zod.ZodTypeAny>(step: JsonLLMStep<CTX, Schema>): void;
|
|
123
124
|
addStep(step: StringLLMStep<CTX>): void;
|
|
124
125
|
addStep(step: ProgrammaticStep<CTX>): void;
|
|
125
126
|
}
|
|
126
127
|
type WorkflowStep<CTX> = StringLLMStep<CTX> | JsonLLMStep<CTX, any> | ProgrammaticStep<CTX>;
|
|
128
|
+
/**
|
|
129
|
+
* Config object to be used in {@link AIEngine#createWorkflow}
|
|
130
|
+
*/
|
|
127
131
|
export interface WorkflowConfig<CTX> {
|
|
132
|
+
/** workflow name, to use in traces, defaults to 'workflow' */
|
|
133
|
+
name?: string;
|
|
134
|
+
/** a function that will run once, if any of the steps going to be executed */
|
|
135
|
+
beforeExecute?: (ctx: CTX) => Promise<void>;
|
|
136
|
+
/** a function that will run once, if any of the steps was executed */
|
|
137
|
+
afterExecute?: (ctx: CTX) => Promise<void>;
|
|
138
|
+
/** common error handler for workflow */
|
|
128
139
|
onError: (error: string, ctx: CTX) => Promise<unknown>;
|
|
140
|
+
/** workflow steps {@link ProgrammaticStep}, {@link StringLLMStep} or {@link JsonLLMStep} */
|
|
129
141
|
steps?: WorkflowStep<CTX>[];
|
|
130
|
-
name?: string;
|
|
131
|
-
beforeEachCallback?: () => Promise<unknown>;
|
|
132
142
|
}
|
|
133
143
|
interface StepBuilder<CTX> {
|
|
134
144
|
<Schema extends Zod.ZodTypeAny>(step: JsonLLMStep<CTX, Schema>): JsonLLMStep<CTX, Schema>;
|
|
@@ -140,57 +150,25 @@ interface StepBuilder<CTX> {
|
|
|
140
150
|
*
|
|
141
151
|
* @example
|
|
142
152
|
* ```typescript
|
|
143
|
-
* import {
|
|
144
|
-
*
|
|
145
|
-
* // Create a new AI engine instance
|
|
146
|
-
* const ai = AIEngine.createAIEngine()
|
|
153
|
+
* import { createAIEngine } from '@recombine-ai/engine'
|
|
147
154
|
*
|
|
148
|
-
*
|
|
149
|
-
* const
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* // Define workflow steps
|
|
153
|
-
* const killswitch = ai.createStep({
|
|
154
|
-
* name: 'killswitch',
|
|
155
|
-
* prompt: ai.loadFile('prompts/killswitch.njk'),
|
|
156
|
-
* execute: async (reply) => {
|
|
157
|
-
* const result = JSON.parse(reply)
|
|
158
|
-
* if (result.terminate) {
|
|
159
|
-
* conversation.addDirective(`Terminating workflow: ${result.reason}`)
|
|
160
|
-
* return workflow.terminate()
|
|
161
|
-
* }
|
|
162
|
-
* },
|
|
163
|
-
* onError: async (error) => conversation.addDirective(`Error in killswitch: ${error}`)
|
|
164
|
-
* })
|
|
165
|
-
*
|
|
166
|
-
* const analyzeIntent = ai.createStep({
|
|
167
|
-
* name: 'analyze-intent',
|
|
168
|
-
* prompt: ai.loadFile('prompts/analyze-intent.njk'),
|
|
169
|
-
* execute: async (reply) => {
|
|
170
|
-
* const intent = JSON.parse(reply)
|
|
171
|
-
* conversation.addDirective(`User intent is: ${intent.category}`)
|
|
172
|
-
* },
|
|
173
|
-
* onError: async (error) => conversation.addDirective(`Error analyzing intent: ${error}`)
|
|
155
|
+
* Create a new AI engine instance
|
|
156
|
+
* const ai = createAIEngine({
|
|
157
|
+
* // engine configuration, see EngineConfig
|
|
174
158
|
* })
|
|
175
159
|
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
* })
|
|
182
|
-
*
|
|
183
|
-
* // Create and run the workflow
|
|
184
|
-
* const workflow = await ai.createWorkflow(killswitch, analyzeIntent, mainReply)
|
|
185
|
-
* const response = await workflow.run(conversation)
|
|
186
|
-
* console.log(response)
|
|
160
|
+
* // create a conversation to be used in workflow.run(), see Conversation
|
|
161
|
+
* const conversation = ai.createConversation(messages)
|
|
162
|
+
* // create a workflow, see WorkflowConfig
|
|
163
|
+
* const workflow = ai.createWorkflow({steps})
|
|
164
|
+
* workflow.run(conversation)
|
|
187
165
|
* ```
|
|
188
166
|
*/
|
|
189
167
|
export interface AIEngine {
|
|
190
168
|
/**
|
|
191
169
|
* Creates a workflow from a sequence of steps.
|
|
192
170
|
* @param config - common parameters for a workflow
|
|
193
|
-
* @returns
|
|
171
|
+
* @returns AI workflow Workflow.
|
|
194
172
|
*/
|
|
195
173
|
createWorkflow: <CTX extends object>(config: WorkflowConfig<CTX>) => Workflow<CTX>;
|
|
196
174
|
/**
|
|
@@ -216,36 +194,18 @@ export interface AIEngine {
|
|
|
216
194
|
* Represents a conversation between a user and an AI agent.
|
|
217
195
|
* Provides methods to manage the conversation flow, format messages, and convert the conversation
|
|
218
196
|
* to a string representation.
|
|
219
|
-
*
|
|
220
|
-
* @example
|
|
221
|
-
* ```typescript
|
|
222
|
-
* // Create a new conversation instance
|
|
223
|
-
* const conversation = new Conversation();
|
|
224
|
-
*
|
|
225
|
-
* // Set names for the participants
|
|
226
|
-
* conversation.setUserName("Client");
|
|
227
|
-
* conversation.setAgentName("Support");
|
|
228
|
-
*
|
|
229
|
-
* // Add messages to the conversation
|
|
230
|
-
* conversation.addMessage("user", "I need help with my account");
|
|
231
|
-
* conversation.addDirective("Ask for account details");
|
|
232
|
-
*
|
|
233
|
-
* // Get the conversation as a string to feed to an LLM
|
|
234
|
-
* const conversationText = conversation.toString();
|
|
235
|
-
* // Output:
|
|
236
|
-
* // Client: I need help with my account
|
|
237
|
-
* // System: Ask for account details
|
|
238
|
-
* ```
|
|
239
197
|
*/
|
|
240
198
|
export interface Conversation {
|
|
241
199
|
/**
|
|
242
200
|
* Sets the name of the user in the conversation to be used in {@link toString}.
|
|
243
201
|
* @param name - The name to set for the user.
|
|
202
|
+
* @deprecated
|
|
244
203
|
*/
|
|
245
204
|
setUserName(name: string): void;
|
|
246
205
|
/**
|
|
247
206
|
* Sets the name of the AI agent in the conversation to be used in {@link toString}.
|
|
248
207
|
* @param name - The name to set for the agent.
|
|
208
|
+
* @deprecated
|
|
249
209
|
*/
|
|
250
210
|
setAgentName(name: string): void;
|
|
251
211
|
/**
|
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":"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
|
|
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
|
@@ -78,11 +78,13 @@ function createAIEngine(cfg = {}) {
|
|
|
78
78
|
const stepTracer = cfg.stepTracer || (0, stepTracer_1.createStubStepTracer)(logger);
|
|
79
79
|
const registry = cfg.stepRegistry || cfg.tracer || (0, tracer_1.createStubRegistry)(logger);
|
|
80
80
|
// tokenStorage is used by the default adapter to fetch API keys (backwards compatible)
|
|
81
|
-
function createWorkflow({ onError, steps = [], name = 'workflow', }) {
|
|
81
|
+
function createWorkflow({ onError, beforeExecute, afterExecute, steps = [], name = 'workflow', }) {
|
|
82
82
|
steps.forEach(addStepToTracer);
|
|
83
83
|
return {
|
|
84
84
|
run: async (messages, contextProvider, beforeEach) => {
|
|
85
85
|
const state = new WorkflowState(logger, steps);
|
|
86
|
+
let beforeHookExecuted = false;
|
|
87
|
+
let afterHookExecuted = false;
|
|
86
88
|
do {
|
|
87
89
|
const ctx = await contextProvider();
|
|
88
90
|
await beforeEach?.(messages, ctx, state);
|
|
@@ -92,14 +94,23 @@ function createAIEngine(cfg = {}) {
|
|
|
92
94
|
break;
|
|
93
95
|
}
|
|
94
96
|
if (!step.runIf || (await step.runIf(messages, ctx))) {
|
|
97
|
+
// TODO: drop actions, they are replaced by traces
|
|
95
98
|
const action = (0, action_1.makeAction)(cfg.sendAction, 'AI', step.name);
|
|
96
99
|
await action('started');
|
|
100
|
+
if (beforeExecute && !beforeHookExecuted) {
|
|
101
|
+
await beforeExecute(ctx);
|
|
102
|
+
beforeHookExecuted = true;
|
|
103
|
+
}
|
|
97
104
|
if ('prompt' in step) {
|
|
98
105
|
await runStep(step, messages, ctx, state);
|
|
99
106
|
}
|
|
100
107
|
else {
|
|
101
108
|
await runProgrammaticStep(step, messages, ctx, state);
|
|
102
109
|
}
|
|
110
|
+
if (afterExecute && !afterHookExecuted) {
|
|
111
|
+
await afterExecute(ctx);
|
|
112
|
+
afterHookExecuted = true;
|
|
113
|
+
}
|
|
103
114
|
await action('completed');
|
|
104
115
|
}
|
|
105
116
|
} while (state.next());
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recombine-ai/engine",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1-beta",
|
|
4
4
|
"description": "Recombine AI engine for creating conversational AI agents",
|
|
5
5
|
"repository": {
|
|
6
|
-
"url": "https://github.com/recombine-ai/engine"
|
|
6
|
+
"url": "git+https://github.com/recombine-ai/engine.git"
|
|
7
7
|
},
|
|
8
8
|
"main": "build/index.js",
|
|
9
9
|
"types": "build/index.d.ts",
|