@recombine-ai/engine 0.8.2 → 0.8.5

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 CHANGED
@@ -1,15 +1,21 @@
1
- import { ZodSchema, ZodTypeAny } from 'zod';
1
+ import { ZodTypeAny } from 'zod';
2
2
  import { Logger } from './interfaces';
3
3
  import { SendAction } from './bosun/action';
4
4
  import { PromptFile } from './prompt-fs';
5
5
  import { StepTracer } from './bosun/stepTracer';
6
- import { Tracer } from './bosun';
6
+ import { StepRegistry, Tracer } from './bosun/tracer';
7
7
  /**
8
8
  * Represents a basic model name for LLMs.
9
9
  */
10
10
  export type BasicModel = 'o3-mini-2025-01-31' | 'o1-preview-2024-09-12' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4.1-2025-04-14' | 'o1-2024-12-17' | (string & {});
11
11
  export interface LlmAdapter {
12
- generateResponse: (systemPrompt: string, messages: string, schema?: ZodSchema) => Promise<string>;
12
+ /**
13
+ * @param systemPrompt – rendered system prompt
14
+ * @param messages – stringified {@link Conversation}
15
+ * @param _unusedSchema **DEPRECATED** left for one version to not break types
16
+ * @returns LLM Response
17
+ */
18
+ generateResponse: (systemPrompt: string, messages: string, _unused?: any) => Promise<string>;
13
19
  /** Returns adapter's configuration/options for tracing */
14
20
  getOptions: () => unknown;
15
21
  }
@@ -123,6 +129,7 @@ type WorkflowStep<CTX> = StringLLMStep<CTX> | JsonLLMStep<CTX, any> | Programmat
123
129
  export interface WorkflowConfig<CTX> {
124
130
  onError: (error: string, ctx: CTX) => Promise<unknown>;
125
131
  steps?: WorkflowStep<CTX>[];
132
+ name?: string;
126
133
  beforeEachCallback?: () => Promise<unknown>;
127
134
  }
128
135
  interface StepBuilder<CTX> {
@@ -209,7 +216,8 @@ export interface AIEngine {
209
216
  }
210
217
  /**
211
218
  * Represents a conversation between a user and an AI agent.
212
- * Provides methods to manage the conversation flow, format messages, and convert the conversation to a string representation.
219
+ * Provides methods to manage the conversation flow, format messages, and convert the conversation
220
+ * to a string representation.
213
221
  *
214
222
  * @example
215
223
  * ```typescript
@@ -279,8 +287,9 @@ export interface Conversation {
279
287
  */
280
288
  getProposedReply: () => string | null;
281
289
  /**
282
- * Gets the history of all messages in the conversation.
283
- * Returns {@link Message} rather than {@link ConversationMessage} because none of the {@link ConversationMessage} properties should be accessed outside of the {@link Conversation} context.
290
+ * Gets the history of all messages in the conversation. Returns {@link Message} rather than
291
+ * {@link ConversationMessage} because none of the {@link ConversationMessage} properties should
292
+ * be accessed outside of the {@link Conversation} context.
284
293
  * @returns An array of Message objects representing the conversation history.
285
294
  */
286
295
  getHistory: () => Message[];
@@ -304,8 +313,10 @@ export interface EngineConfig {
304
313
  /**
305
314
  * Optional token storage object that provides access to authentication tokens.
306
315
  * @property {object} tokenStorage - Object containing method to retrieve token.
307
- * @property {() => Promise<string | null>} tokenStorage.getToken - Function that returns a promise resolving to an authentication token or null.
308
- * @deprecated
316
+ * @property {() => Promise<string | null>} tokenStorage.getToken - Function that returns a
317
+ * promise resolving to an authentication token or null.
318
+ *
319
+ * @deprecated use {@link LlmAdapter} (which has its onw storage) in `model` field instead
309
320
  */
310
321
  tokenStorage?: {
311
322
  getToken: () => Promise<string | null>;
@@ -320,8 +331,15 @@ export interface EngineConfig {
320
331
  sendAction?: SendAction;
321
332
  /** traces received prompt, rendered prompt, context and other useful info about LLM execution */
322
333
  stepTracer?: StepTracer;
323
- /** registers steps in workflow */
334
+ /**
335
+ * registers steps in workflow
336
+ * @deprecated use `stepRegistry` instead
337
+ **/
324
338
  tracer?: Tracer;
339
+ /**
340
+ * registers steps in workflow
341
+ */
342
+ stepRegistry?: StepRegistry;
325
343
  }
326
344
  /**
327
345
  * Creates an AI Engine with the given configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/lib/ai.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAc,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKhC;;GAEG;AACH,MAAM,MAAM,UAAU,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,GACf,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEnB,MAAM,WAAW,UAAU;IACvB,gBAAgB,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,SAAS,KACjB,OAAO,CAAC,MAAM,CAAC,CAAA;IACpB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,SAAS,CAAC,GAAG;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IAEZ,kDAAkD;IAClD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAExE;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,gBAAgB,CAAC,GAAG,CAAE,SAAQ,SAAS,CAAC,GAAG,CAAC;IACzD,0BAA0B;IAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9F;AAED,MAAM,WAAW,OAAO,CAAC,GAAG,CAAE,SAAQ,SAAS,CAAC,GAAG,CAAC;IAChD,kDAAkD;IAClD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAExE,wEAAwE;IACxE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAE/B;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAE3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAA;IAErB;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,UAAU,CAAE,SAAQ,OAAO,CAAC,GAAG,CAAC;IAC7E;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;;;;;;;;;;;OAcG;IACH,OAAO,EAAE,CACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EACxB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,GAAG,EACR,gBAAgB,EAAE,gBAAgB,KACjC,OAAO,CAAC,OAAO,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,aAAa,CAAC,GAAG,CAAE,SAAQ,OAAO,CAAC,GAAG,CAAC;IACpD;;;;;;;;;;;;;;OAcG;IACH,OAAO,EAAE,CACL,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,GAAG,EACR,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,OAAO,CAAC,OAAO,CAAC,CAAA;CACxB;AAED,KAAK,cAAc,CAAC,GAAG,IAAI,CACvB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,GAAG,EACR,gBAAgB,CAAC,EAAE,gBAAgB,KAClC,OAAO,CAAC,IAAI,CAAC,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,GAAG;IACzB;;;;;;;OAOG;IACH,GAAG,EAAE,CACD,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,KAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAE3B;;OAEG;IACH,OAAO,CAAC,MAAM,SAAS,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACxE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACvC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;CAC7C;AAED,KAAK,YAAY,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAE3F,MAAM,WAAW,cAAc,CAAC,GAAG;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACtD,KAAK,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9C;AAED,UAAU,WAAW,CAAC,GAAG;IACrB,CAAC,MAAM,SAAS,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACrF,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC9C,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;CACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,WAAW,QAAQ;IACrB;;;;OAIG;IACH,cAAc,EAAE,CAAC,GAAG,SAAS,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAA;IAElF;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,CAAA;IAE1D;;;OAGG;IACH,cAAc,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAA;IAEvC;;;;;OAKG;IACH,YAAY,EAAE,OAAO,YAAY,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAE/B;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC;;;OAGG;IACH,mBAAmB,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,CAAA;IAEtE;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAA;IAEjE;;;OAGG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAE3F;;;OAGG;IACH,2BAA2B,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,CAAA;IAE7E;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAE3C;;;OAGG;IACH,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAErC;;;;OAIG;IACH,UAAU,EAAE,MAAM,OAAO,EAAE,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,iGAAiG;IACjG,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACnC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;KAAE,CAAA;IACzD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,iGAAiG;IACjG,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,YAAiB,GAAG,QAAQ,CAsK/D;AA+ED,iBAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,kBAAkB,CAAC,eAAe,GAAE,OAAO,EAAO,GAAG,YAAY,CAiDhF;AAED,wBAAgB,cAAc,CAAC,GAAG,GAAG,OAAO,KAAK,WAAW,CAAC,GAAG,CAAC,CAEhE"}
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
@@ -6,9 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createAIEngine = createAIEngine;
7
7
  exports.createConversation = createConversation;
8
8
  exports.getStepBuilder = getStepBuilder;
9
+ // cspell:words lstripBlocks
10
+ const crypto_1 = require("crypto");
9
11
  const nunjucks_1 = __importDefault(require("nunjucks"));
10
12
  const zod_1 = require("zod");
11
13
  const action_1 = require("./bosun/action");
14
+ const stepTracer_1 = require("./bosun/stepTracer");
12
15
  const tracer_1 = require("./bosun/tracer");
13
16
  const zod_to_json_schema_1 = require("zod-to-json-schema");
14
17
  const openai_1 = require("./llm-adapters/openai");
@@ -38,11 +41,11 @@ const openai_1 = require("./llm-adapters/openai");
38
41
  * ```
39
42
  */
40
43
  function createAIEngine(cfg = {}) {
41
- const stepTracer = cfg.stepTracer || undefined;
42
44
  const logger = cfg.logger || globalThis.console;
43
- const tracer = cfg.tracer || (0, tracer_1.createConsoleTracer)(logger);
44
- // tokenStorage kept for backward compatibility in config, but API keys are fetched by adapters now
45
- function createWorkflow({ onError, steps = [], }) {
45
+ const stepTracer = cfg.stepTracer || (0, stepTracer_1.createStubStepTracer)(logger);
46
+ const registry = cfg.stepRegistry || cfg.tracer || (0, tracer_1.createStubRegistry)(logger);
47
+ // tokenStorage is used by the default adapter to fetch API keys (backwards compatible)
48
+ function createWorkflow({ onError, steps = [], name = 'workflow', }) {
46
49
  steps.forEach(addStepToTracer);
47
50
  return {
48
51
  run: async (messages, ctx, beforeEach) => {
@@ -51,13 +54,12 @@ function createAIEngine(cfg = {}) {
51
54
  await beforeEach?.(messages, ctx, state);
52
55
  const step = state.getStep();
53
56
  if (state.isTerminated()) {
54
- logger.debug('AI Engine: run terminated');
57
+ logger.log('AI Engine, run terminated');
55
58
  break;
56
59
  }
57
60
  if (!step.runIf || (await step.runIf(messages, ctx))) {
58
61
  const action = (0, action_1.makeAction)(cfg.sendAction, 'AI', step.name);
59
62
  await action('started');
60
- logger.debug(`AI Engine: Step: ${step.name}`);
61
63
  if ('prompt' in step) {
62
64
  await runStep(step, messages, ctx, state);
63
65
  }
@@ -67,6 +69,7 @@ function createAIEngine(cfg = {}) {
67
69
  await action('completed');
68
70
  }
69
71
  } while (state.next());
72
+ await stepTracer.flush();
70
73
  return state.isTerminated() ? null : messages.getProposedReply();
71
74
  },
72
75
  addStep(step) {
@@ -76,7 +79,7 @@ function createAIEngine(cfg = {}) {
76
79
  };
77
80
  function addStepToTracer(step) {
78
81
  if ('prompt' in step) {
79
- tracer.addStep({
82
+ registry.addStep({
80
83
  name: step.name,
81
84
  prompt: (0, tracer_1.stdPrompt)(step.prompt),
82
85
  type: 'text',
@@ -87,6 +90,8 @@ function createAIEngine(cfg = {}) {
87
90
  async function runStep(step, conversation, ctx, state) {
88
91
  const stepTrace = {
89
92
  name: step.name,
93
+ workflowId: name,
94
+ workflowRunId: state.runId,
90
95
  model: typeof step.model === 'string'
91
96
  ? step.model
92
97
  : step.model
@@ -103,16 +108,13 @@ function createAIEngine(cfg = {}) {
103
108
  let response = null;
104
109
  let prompt = typeof step.prompt === 'string' ? step.prompt : await step.prompt.content();
105
110
  stepTrace.receivedPrompt = prompt;
106
- logger.debug('AI Engine: context', ctx);
107
- logger.debug('AI Engine: messages', conversation.toString({ ignoreAddedMessages: step.ignoreAddedMessages }));
108
111
  prompt = renderPrompt(prompt, ctx);
109
112
  stepTrace.renderedPrompt = prompt;
110
113
  const stringifiedMessages = conversation.toString({
111
114
  ignoreAddedMessages: step.ignoreAddedMessages,
112
115
  });
113
- logger.debug('AI Engine stringified: ' + stringifiedMessages);
114
116
  stepTrace.stringifiedConversation = stringifiedMessages;
115
- stepTracer?.addStepTrace(stepTrace);
117
+ stepTracer.addStepTrace(stepTrace);
116
118
  if ('schema' in step) {
117
119
  response = await runLLM(step.model, prompt, stringifiedMessages, step.schema);
118
120
  response = step.schema.parse(JSON.parse(response));
@@ -123,14 +125,14 @@ function createAIEngine(cfg = {}) {
123
125
  if (!response) {
124
126
  throw new Error('No response from OpenAI');
125
127
  }
126
- logger.debug(`AI Engine: executing ${step.name}, LLM response`, response);
128
+ logger.log(`AI Engine, executing ${step.name}`);
127
129
  await step.execute(response, conversation, ctx, state);
128
130
  }
129
131
  catch (error) {
130
132
  await (step.onError
131
133
  ? step.onError(error.message, ctx)
132
134
  : onError(error.message, ctx));
133
- stepTracer?.addStepTrace(stepTrace);
135
+ stepTracer.addStepTrace(stepTrace);
134
136
  state.terminate();
135
137
  }
136
138
  }
@@ -141,7 +143,7 @@ function createAIEngine(cfg = {}) {
141
143
  }
142
144
  }
143
145
  catch (error) {
144
- logger.error(`AI Engine: error in dumb step ${step.name}: ${error.message}`);
146
+ logger.error(`AI Engine, error in dumb step ${step.name}: ${error.message}`);
145
147
  await (step.onError
146
148
  ? step.onError(error.message, ctx)
147
149
  : onError(error.message, ctx));
@@ -150,16 +152,12 @@ function createAIEngine(cfg = {}) {
150
152
  }
151
153
  }
152
154
  async function runLLM(model, systemPrompt, messages, schema) {
153
- logger.debug('AI Engine: model:', typeof model === 'string' || model === undefined
154
- ? model || 'gpt-4o-2024-08-06'
155
- : '[adapter]');
156
- logger.debug('----------- RENDERED PROMPT ---------------');
157
- logger.debug(systemPrompt);
158
- logger.debug('-------------------------------------------');
159
155
  const adapter = typeof model === 'string' || model === undefined
160
- ? (0, openai_1.createOpenAIAdapter)(getOpenAiOptions(model || 'gpt-4o-2024-08-06', schema))
156
+ ? (0, openai_1.createOpenAIAdapter)(getOpenAiOptions(model || 'gpt-4o-2024-08-06', schema), {
157
+ tokenStorage: cfg.tokenStorage || fallBackTokenStorage,
158
+ })
161
159
  : model;
162
- return adapter.generateResponse(systemPrompt, messages, schema);
160
+ return adapter.generateResponse(systemPrompt, messages);
163
161
  }
164
162
  return {
165
163
  createWorkflow,
@@ -170,6 +168,11 @@ function createAIEngine(cfg = {}) {
170
168
  },
171
169
  };
172
170
  }
171
+ const fallBackTokenStorage = {
172
+ async getToken() {
173
+ return process.env.OPENAI_API_KEY ?? null;
174
+ },
175
+ };
173
176
  class WorkflowState {
174
177
  logger;
175
178
  steps;
@@ -179,9 +182,11 @@ class WorkflowState {
179
182
  attempts = new Map();
180
183
  rewinder = 0;
181
184
  lastRewindTo = 0;
185
+ runId;
182
186
  constructor(logger, steps) {
183
187
  this.logger = logger;
184
188
  this.steps = steps;
189
+ this.runId = (0, crypto_1.randomUUID)();
185
190
  }
186
191
  terminate() {
187
192
  this.logger.debug('AI Engine: Terminating conversation...');
@@ -2,7 +2,7 @@ import { Message } from '../ai';
2
2
  import { Logger, Scheduler } from '../interfaces';
3
3
  import { SendAction } from './action';
4
4
  import { Context } from './context';
5
- import { Tracer } from './tracer';
5
+ import { StepRegistry, Tracer } from './tracer';
6
6
  import { StepTracer } from './stepTracer';
7
7
  /**
8
8
  * Bosun is a UI for testing Recombine AI agents. It enables testing complex agent interactions with
@@ -26,7 +26,9 @@ import { StepTracer } from './stepTracer';
26
26
  */
27
27
  type DefaultContext = Record<string, any>;
28
28
  export interface TestAgentFactoryProps<CTX extends DefaultContext = DefaultContext> {
29
+ /** @deprecated */
29
30
  tracer: Tracer;
31
+ stepRegistry: StepRegistry;
30
32
  stepTracer: StepTracer;
31
33
  logger: Logger;
32
34
  scheduler: Scheduler;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACzC,MAAM,WAAW,qBAAqB,CAAC,GAAG,SAAS,cAAc,GAAG,cAAc;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACnD;AACD,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAEhD,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,cAAc,CAAA;AAEtD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CACtE,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAC9B,OAAO,CAAC,SAAS,CAAC,CAAA;AAEvB,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,uBAE5F"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACzC,MAAM,WAAW,qBAAqB,CAAC,GAAG,SAAS,cAAc,GAAG,cAAc;IAC9E,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACnD;AACD,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAEhD,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,cAAc,CAAA;AAEtD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CACtE,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAC9B,OAAO,CAAC,SAAS,CAAC,CAAA;AAEvB,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,uBAE5F"}
@@ -2,6 +2,6 @@ export * from './action';
2
2
  export * from './context';
3
3
  export * from './agent';
4
4
  export * from './mock';
5
- export { PromptString, StepTraceDef, Tracer } from './tracer';
5
+ export { PromptString, StepTraceDef, StepDef, Tracer, StepRegistry } from './tracer';
6
6
  export * from './stepTracer';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC7D,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACpF,cAAc,cAAc,CAAA"}
@@ -1,15 +1,41 @@
1
1
  import { ZodSchema } from 'zod';
2
2
  import { PromptFile } from '../prompt-fs';
3
+ import { Logger } from '../interfaces';
3
4
  export type StepTrace = {
5
+ /** Unique ID for the trace */
6
+ traceId?: string;
7
+ callId?: string;
8
+ /** Optional, to group traces within a broader context */
9
+ scopeId?: string;
10
+ /** Just unique name */
11
+ workflowId: string;
12
+ /** Unique ID for the workflow run */
13
+ workflowRunId: string;
4
14
  name: string;
5
15
  renderedPrompt?: string;
6
- receivedContext?: unknown;
7
- receivedPrompt?: string | PromptFile;
16
+ receivedContext?: Record<string, unknown> | unknown;
17
+ receivedPrompt?: string | PromptFile | File;
8
18
  stringifiedConversation?: string;
9
19
  schema?: ZodSchema;
10
20
  model?: string;
21
+ /** Raw response from LLM or function call result */
22
+ response?: string;
23
+ /** Timestamp in milliseconds */
24
+ createdAt?: number;
11
25
  };
12
26
  export interface StepTracer {
13
- addStepTrace(stepTrace: StepTrace): void;
27
+ /**
28
+ * Add a step trace
29
+ * @param trace The step trace to add
30
+ */
31
+ addStepTrace(trace: StepTrace): void;
32
+ /**
33
+ * Flush any buffered traces to storage
34
+ */
35
+ flush(): Promise<void>;
14
36
  }
37
+ export declare function createStubStepTracer(logger: Logger): {
38
+ addStepTrace(trace: StepTrace): void;
39
+ flush(): Promise<void>;
40
+ };
15
41
  //# sourceMappingURL=stepTracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepTracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/stepTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CAC3C"}
1
+ {"version":3,"file":"stepTracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/stepTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtC,MAAM,MAAM,SAAS,GAAG;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAA;IAErB,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IACnD,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAE3C,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAEpC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM;wBAEvB,SAAS;;EA2BpC"}
@@ -1,2 +1,35 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createStubStepTracer = createStubStepTracer;
7
+ const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
8
+ function createStubStepTracer(logger) {
9
+ return {
10
+ addStepTrace(trace) {
11
+ logger.log(`StepTrace: ${trace.name}, in workflow (${trace.workflowId})`);
12
+ if (trace.model) {
13
+ logger.log(`StepTrace, model: ${trace.model}`);
14
+ }
15
+ if (trace.schema) {
16
+ logger.log('StepTrace, schema:', (0, zod_to_json_schema_1.default)(trace.schema));
17
+ }
18
+ if (trace.receivedContext) {
19
+ logger.log('StepTrace, context:', trace.receivedContext);
20
+ }
21
+ if (trace.stringifiedConversation) {
22
+ logger.log(`StepTrace, messages: \n${trace.stringifiedConversation}`);
23
+ }
24
+ if (trace.renderedPrompt) {
25
+ logger.log('------------ RENDERED PROMPT ----------\n' +
26
+ trace.renderedPrompt +
27
+ '\n---------------------------------------');
28
+ }
29
+ if (trace.response) {
30
+ logger.log(`StepTrace, LLM response:\n${trace.response}`);
31
+ }
32
+ },
33
+ async flush() { },
34
+ };
35
+ }
@@ -5,15 +5,30 @@ export interface PromptString {
5
5
  type: 'string';
6
6
  content: () => Promise<string>;
7
7
  }
8
- export interface StepTraceDef {
8
+ export interface StepDef {
9
9
  name: string;
10
10
  type: 'streaming-response' | 'streaming-detect' | 'text';
11
11
  prompt: PromptFile | PromptString;
12
12
  schema?: ZodSchema;
13
13
  }
14
- export interface Tracer {
15
- addStep(def: StepTraceDef): void;
14
+ /**
15
+ * @deprecated use `StepDef` instead
16
+ */
17
+ export type StepTraceDef = StepDef;
18
+ /**
19
+ * @deprecated use `StepRegistry` instead
20
+ */
21
+ export type Tracer = StepRegistry;
22
+ export interface StepRegistry {
23
+ addStep(def: StepDef): void;
16
24
  }
17
- export declare function createConsoleTracer(logger: Logger): Tracer;
25
+ /**
26
+ * @deprecated use `createStubRegistry` instead
27
+ */
28
+ export declare const createConsoleTracer: typeof createStubRegistry;
29
+ /**
30
+ * a stub registry, that just prints step in logs
31
+ */
32
+ export declare function createStubRegistry(logger: Logger): Tracer;
18
33
  export declare function stdPrompt(prompt: PromptFile | string): PromptFile | PromptString;
19
34
  //# sourceMappingURL=tracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAA;IACxD,MAAM,EAAE,UAAU,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;CACrB;AACD,MAAM,WAAW,MAAM;IACnB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,6BAQpD"}
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/lib/bosun/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAA;IACxD,MAAM,EAAE,UAAU,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,YAAY,CAAA;AAEjC,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,2BAAqB,CAAA;AAErD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,6BAQpD"}
@@ -1,11 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createConsoleTracer = createConsoleTracer;
3
+ exports.createConsoleTracer = void 0;
4
+ exports.createStubRegistry = createStubRegistry;
4
5
  exports.stdPrompt = stdPrompt;
5
- function createConsoleTracer(logger) {
6
+ /**
7
+ * @deprecated use `createStubRegistry` instead
8
+ */
9
+ exports.createConsoleTracer = createStubRegistry;
10
+ /**
11
+ * a stub registry, that just prints step in logs
12
+ */
13
+ function createStubRegistry(logger) {
6
14
  return {
7
15
  addStep(def) {
8
- logger.debug('Tracer, step added:', def);
16
+ logger.debug('Step registry, step added:', def);
9
17
  },
10
18
  };
11
19
  }
@@ -1,5 +1,10 @@
1
1
  import { ChatCompletionCreateParamsBase } from 'openai/resources/chat/completions';
2
2
  import type { LlmAdapter } from '../ai';
3
3
  export type OpenAIChatOptions = Omit<ChatCompletionCreateParamsBase, 'messages' | 'stream'>;
4
- export declare function createOpenAIAdapter(options: OpenAIChatOptions): LlmAdapter;
4
+ export type OpenAIAdapterAuth = {
5
+ tokenStorage: {
6
+ getToken: () => Promise<string | null>;
7
+ };
8
+ };
9
+ export declare function createOpenAIAdapter(options: OpenAIChatOptions, auth: OpenAIAdapterAuth): LlmAdapter;
5
10
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/lib/llm-adapters/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAA;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAA;AAW3F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAiC1E"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/lib/llm-adapters/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAA;AAE3F,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;KAAE,CAAA;CAC3D,CAAA;AAID,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,iBAAiB,GACxB,UAAU,CAgCZ"}
@@ -2,24 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createOpenAIAdapter = createOpenAIAdapter;
4
4
  const openai_1 = require("openai");
5
- function getApiKey() {
6
- if (process.env.OPENAI_API_KEY) {
7
- return process.env.OPENAI_API_KEY;
8
- }
9
- throw new Error('OpenAI API key is not set');
10
- }
11
5
  const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
12
- function createOpenAIAdapter(options) {
6
+ function createOpenAIAdapter(options, auth) {
13
7
  return {
14
8
  getOptions: () => options,
15
- async generateResponse(systemPrompt, messages, _schema) {
16
- const apiKey = getApiKey();
9
+ async generateResponse(systemPrompt, messages) {
10
+ const apiKey = await auth.tokenStorage.getToken();
11
+ if (!apiKey) {
12
+ throw new Error('OpenAI API key is not set');
13
+ }
17
14
  if (apiKey === '__TESTING__') {
18
15
  await delay(100);
19
- if (!_schema) {
20
- return 'canned response';
16
+ if (options.response_format && 'json_schema' in options.response_format) {
17
+ return JSON.stringify({ message: 'canned response', reasons: [] });
21
18
  }
22
- return JSON.stringify({ message: 'canned response', reasons: [] });
19
+ return 'canned response';
23
20
  }
24
21
  const client = new openai_1.OpenAI({ apiKey });
25
22
  const response = await client.chat.completions.create({
@@ -13,7 +13,7 @@ function createLocalFS(cfg) {
13
13
  return {
14
14
  type: 'file',
15
15
  content: async () => {
16
- logger.debug('AI Engine: loading prompt:', path);
16
+ logger.log('Local FS, loading prompt:', path);
17
17
  return fs_1.default.promises.readFile((0, path_1.join)(cfg.basePath, path), 'utf-8');
18
18
  },
19
19
  path,
package/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ### 0.8.4 → 0.8.5 (unstable)
4
+
5
+ - Clean up logging in favor of StepTracer, which logs everything by default,
6
+ - Deprecated `Tracer` in favor of `StepRegistry` – just renaming.
7
+
8
+ ### 0.8.3 → 0.8.4 (unstable)
9
+
10
+ - Enhanced `StepTrace` type with `workflowId` and `workflowRunId` for better trace context.
11
+ - Updated `WorkflowConfig` to include an optional `name` of workflow.
12
+
13
+ ### 0.8.1 → 0.8.3 (unstable)
14
+
15
+ - Fixed missing tokenStorage in `LlmAdapter`.
16
+
3
17
  ### 0.8.1 → 0.8.2 (unstable)
4
18
 
5
19
  - Model now accepts a string or an `LlmAdapter`. Old defaults are used when model is a string.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recombine-ai/engine",
3
- "version": "0.8.2",
3
+ "version": "0.8.5",
4
4
  "description": "Recombine AI engine for creating conversational AI agents",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -44,8 +44,8 @@
44
44
  },
45
45
  "lint-staged": {
46
46
  "*.{ts,tsx,js,jsx,json,md}": [
47
- "pnpm format",
48
- "pnpm lint:fix"
47
+ "npm run format",
48
+ "npm run lint:fix"
49
49
  ]
50
50
  }
51
51
  }