@agents-eco/reasoning 0.1.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.
@@ -0,0 +1,83 @@
1
+ /**
2
+ * OpenAI-compatible LLM backend.
3
+ * Works with OpenAI, Venice, Groq, Ollama, agents.eco, or any compatible API.
4
+ */
5
+ export class OpenAIBackend {
6
+ name;
7
+ apiKey;
8
+ baseUrl;
9
+ model;
10
+ constructor(config) {
11
+ this.name = config.name ?? "openai";
12
+ this.apiKey = config.apiKey;
13
+ this.baseUrl = config.baseUrl.replace(/\/$/, "");
14
+ this.model = config.model;
15
+ }
16
+ async complete(messages, options) {
17
+ const body = {
18
+ model: this.model,
19
+ messages: messages.map((m) => {
20
+ const msg = { role: m.role, content: m.content };
21
+ if (m.name)
22
+ msg.name = m.name;
23
+ if (m.tool_calls)
24
+ msg.tool_calls = m.tool_calls;
25
+ if (m.tool_call_id)
26
+ msg.tool_call_id = m.tool_call_id;
27
+ return msg;
28
+ }),
29
+ temperature: options?.temperature ?? 0.3,
30
+ max_tokens: options?.maxTokens ?? 2048,
31
+ };
32
+ if (options?.stop)
33
+ body.stop = options.stop;
34
+ const res = await fetch(`${this.baseUrl}/chat/completions`, {
35
+ method: "POST",
36
+ headers: {
37
+ "Content-Type": "application/json",
38
+ ...(this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}),
39
+ },
40
+ body: JSON.stringify(body),
41
+ });
42
+ if (!res.ok) {
43
+ const errText = await res.text();
44
+ throw new Error(`LLM API error (${res.status}): ${errText}`);
45
+ }
46
+ const data = await res.json();
47
+ const choice = data.choices[0];
48
+ const toolCalls = choice.message.tool_calls?.map((tc) => ({
49
+ name: tc.function.name,
50
+ arguments: JSON.parse(tc.function.arguments),
51
+ }));
52
+ return {
53
+ content: choice.message.content ?? "",
54
+ toolCalls,
55
+ tokens: data.usage
56
+ ? { prompt: data.usage.prompt_tokens, completion: data.usage.completion_tokens }
57
+ : undefined,
58
+ finishReason: choice.finish_reason,
59
+ };
60
+ }
61
+ }
62
+ // ── Pre-configured backends ─────────────────────────────
63
+ export function openaiBackend(apiKey, model = "gpt-4o") {
64
+ return new OpenAIBackend({ name: "openai", apiKey, baseUrl: "https://api.openai.com/v1", model });
65
+ }
66
+ export function veniceBackend(apiKey, model = "qwen3-4b") {
67
+ return new OpenAIBackend({ name: "venice", apiKey, baseUrl: "https://api.venice.ai/api/v1", model });
68
+ }
69
+ export function groqBackend(apiKey, model = "llama-3.3-70b-versatile") {
70
+ return new OpenAIBackend({ name: "groq", apiKey, baseUrl: "https://api.groq.com/openai/v1", model });
71
+ }
72
+ export function ollamaBackend(model = "llama3.2", baseUrl = "http://localhost:11434/v1") {
73
+ return new OpenAIBackend({ name: "ollama", apiKey: "", baseUrl, model });
74
+ }
75
+ export function agentsEcoBackend(apiKey, model = "qwen3-4b") {
76
+ return new OpenAIBackend({
77
+ name: "agents.eco",
78
+ apiKey,
79
+ baseUrl: "https://agents-eco-dfc6baa9f955.herokuapp.com/v1",
80
+ model,
81
+ });
82
+ }
83
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/backends/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { ReasoningConfig, ReasoningResult, ReasoningStrategy, StrategyType, ToolDef, ToolHandler, LLMBackend, ReasoningHooks, ToTConfig } from "./types.js";
2
+ /**
3
+ * ReasoningEngine — the main entry point for agent reasoning.
4
+ *
5
+ * Supports multiple strategies:
6
+ * - ReAct: multi-step reason-act loop with tool calling
7
+ * - CoT: chain-of-thought with optional self-reflection
8
+ * - ToT: tree-of-thought with beam search and branch scoring
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * const engine = new ReasoningEngine(backend, { strategy: "react", maxSteps: 10 });
13
+ * engine.tool("search", { name: "search", description: "...", parameters: {} }, handler);
14
+ * const result = await engine.reason("What is the capital of France?");
15
+ * ```
16
+ */
17
+ export declare class ReasoningEngine {
18
+ private backend;
19
+ private config;
20
+ private tools;
21
+ private strategies;
22
+ private systemPrompt;
23
+ constructor(backend: LLMBackend, config?: Partial<ReasoningConfig>, systemPrompt?: string);
24
+ /** Set the system prompt */
25
+ setSystemPrompt(prompt: string): this;
26
+ /** Set the LLM backend */
27
+ setBackend(backend: LLMBackend): this;
28
+ /** Update configuration */
29
+ configure(config: Partial<ReasoningConfig>): this;
30
+ /** Set event hooks */
31
+ hooks(hooks: ReasoningHooks): this;
32
+ /** Register a tool */
33
+ tool(name: string, def: ToolDef, handler: ToolHandler): this;
34
+ /** Register multiple tools */
35
+ addTools(toolMap: Record<string, {
36
+ def: ToolDef;
37
+ handler: ToolHandler;
38
+ }>): this;
39
+ /** Remove a tool */
40
+ removeTool(name: string): this;
41
+ /**
42
+ * Run reasoning on a task.
43
+ * Uses the configured strategy (ReAct, CoT, or ToT).
44
+ */
45
+ reason(task: string, overrides?: Partial<ReasoningConfig>): Promise<ReasoningResult>;
46
+ /**
47
+ * Run ReAct reasoning (convenience method).
48
+ */
49
+ react(task: string, overrides?: Partial<ReasoningConfig>): Promise<ReasoningResult>;
50
+ /**
51
+ * Run Chain-of-Thought reasoning (convenience method).
52
+ */
53
+ chainOfThought(task: string, overrides?: Partial<ReasoningConfig>): Promise<ReasoningResult>;
54
+ /**
55
+ * Run Tree-of-Thought reasoning (convenience method).
56
+ */
57
+ treeOfThought(task: string, overrides?: Partial<ToTConfig>): Promise<ReasoningResult>;
58
+ /** Register a custom reasoning strategy */
59
+ registerStrategy(strategy: ReasoningStrategy): this;
60
+ /** Get available strategy names */
61
+ getStrategies(): StrategyType[];
62
+ }
63
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAapB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAkE;IAC/E,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,YAAY,CAAS;gBAG3B,OAAO,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,YAAY,CAAC,EAAE,MAAM;IAcvB,4BAA4B;IAC5B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKrC,0BAA0B;IAC1B,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAKrC,2BAA2B;IAC3B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAKjD,sBAAsB;IACtB,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAOlC,sBAAsB;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAK5D,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,GAAG,IAAI;IAO/E,oBAAoB;IACpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAW1F;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAIzF;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAIlG;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAa3F,2CAA2C;IAC3C,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAKnD,mCAAmC;IACnC,aAAa,IAAI,YAAY,EAAE;CAGhC"}
package/dist/engine.js ADDED
@@ -0,0 +1,132 @@
1
+ import { ReActStrategy } from "./strategies/react.js";
2
+ import { ChainOfThoughtStrategy } from "./strategies/cot.js";
3
+ import { TreeOfThoughtStrategy } from "./strategies/tot.js";
4
+ const DEFAULT_CONFIG = {
5
+ strategy: "react",
6
+ maxSteps: 10,
7
+ temperature: 0.3,
8
+ reflection: false,
9
+ planning: false,
10
+ planInterval: 3,
11
+ minConfidence: 0.5,
12
+ verbose: false,
13
+ };
14
+ /**
15
+ * ReasoningEngine — the main entry point for agent reasoning.
16
+ *
17
+ * Supports multiple strategies:
18
+ * - ReAct: multi-step reason-act loop with tool calling
19
+ * - CoT: chain-of-thought with optional self-reflection
20
+ * - ToT: tree-of-thought with beam search and branch scoring
21
+ *
22
+ * Usage:
23
+ * ```ts
24
+ * const engine = new ReasoningEngine(backend, { strategy: "react", maxSteps: 10 });
25
+ * engine.tool("search", { name: "search", description: "...", parameters: {} }, handler);
26
+ * const result = await engine.reason("What is the capital of France?");
27
+ * ```
28
+ */
29
+ export class ReasoningEngine {
30
+ backend;
31
+ config;
32
+ tools = new Map();
33
+ strategies = new Map();
34
+ systemPrompt;
35
+ constructor(backend, config, systemPrompt) {
36
+ this.backend = backend;
37
+ this.config = { ...DEFAULT_CONFIG, ...config };
38
+ this.systemPrompt = systemPrompt ?? "You are a helpful reasoning agent.";
39
+ // Register built-in strategies
40
+ this.strategies.set("react", new ReActStrategy());
41
+ this.strategies.set("cot", new ChainOfThoughtStrategy());
42
+ this.strategies.set("tot", new TreeOfThoughtStrategy());
43
+ }
44
+ // ── Configuration ───────────────────────────────────
45
+ /** Set the system prompt */
46
+ setSystemPrompt(prompt) {
47
+ this.systemPrompt = prompt;
48
+ return this;
49
+ }
50
+ /** Set the LLM backend */
51
+ setBackend(backend) {
52
+ this.backend = backend;
53
+ return this;
54
+ }
55
+ /** Update configuration */
56
+ configure(config) {
57
+ this.config = { ...this.config, ...config };
58
+ return this;
59
+ }
60
+ /** Set event hooks */
61
+ hooks(hooks) {
62
+ this.config.hooks = hooks;
63
+ return this;
64
+ }
65
+ // ── Tools ───────────────────────────────────────────
66
+ /** Register a tool */
67
+ tool(name, def, handler) {
68
+ this.tools.set(name, { def, handler });
69
+ return this;
70
+ }
71
+ /** Register multiple tools */
72
+ addTools(toolMap) {
73
+ for (const [name, entry] of Object.entries(toolMap)) {
74
+ this.tools.set(name, entry);
75
+ }
76
+ return this;
77
+ }
78
+ /** Remove a tool */
79
+ removeTool(name) {
80
+ this.tools.delete(name);
81
+ return this;
82
+ }
83
+ // ── Reasoning ───────────────────────────────────────
84
+ /**
85
+ * Run reasoning on a task.
86
+ * Uses the configured strategy (ReAct, CoT, or ToT).
87
+ */
88
+ async reason(task, overrides) {
89
+ const config = { ...this.config, ...overrides };
90
+ const strategy = this.strategies.get(config.strategy);
91
+ if (!strategy) {
92
+ throw new Error(`Unknown strategy: ${config.strategy}. Available: ${Array.from(this.strategies.keys()).join(", ")}`);
93
+ }
94
+ return strategy.reason(task, this.systemPrompt, this.tools, config, this.backend);
95
+ }
96
+ /**
97
+ * Run ReAct reasoning (convenience method).
98
+ */
99
+ async react(task, overrides) {
100
+ return this.reason(task, { ...overrides, strategy: "react" });
101
+ }
102
+ /**
103
+ * Run Chain-of-Thought reasoning (convenience method).
104
+ */
105
+ async chainOfThought(task, overrides) {
106
+ return this.reason(task, { ...overrides, strategy: "cot" });
107
+ }
108
+ /**
109
+ * Run Tree-of-Thought reasoning (convenience method).
110
+ */
111
+ async treeOfThought(task, overrides) {
112
+ return this.reason(task, {
113
+ ...overrides,
114
+ strategy: "tot",
115
+ branchFactor: overrides?.branchFactor ?? 3,
116
+ maxDepth: overrides?.maxDepth ?? 4,
117
+ beamWidth: overrides?.beamWidth ?? 2,
118
+ scoringMethod: overrides?.scoringMethod ?? "llm",
119
+ });
120
+ }
121
+ // ── Custom Strategies ───────────────────────────────
122
+ /** Register a custom reasoning strategy */
123
+ registerStrategy(strategy) {
124
+ this.strategies.set(strategy.name, strategy);
125
+ return this;
126
+ }
127
+ /** Get available strategy names */
128
+ getStrategies() {
129
+ return Array.from(this.strategies.keys());
130
+ }
131
+ }
132
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAa5D,MAAM,cAAc,GAAoB;IACtC,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,GAAG;IAClB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAe;IAClB,OAAO,CAAa;IACpB,MAAM,CAAkB;IACxB,KAAK,GAAwD,IAAI,GAAG,EAAE,CAAC;IACvE,UAAU,GAAyC,IAAI,GAAG,EAAE,CAAC;IAC7D,YAAY,CAAS;IAE7B,YACE,OAAmB,EACnB,MAAiC,EACjC,YAAqB;QAErB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,oCAAoC,CAAC;QAEzE,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,uDAAuD;IAEvD,4BAA4B;IAC5B,eAAe,CAAC,MAAc;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,OAAmB;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,SAAS,CAAC,MAAgC;QACxC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,KAAqB;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuD;IAEvD,sBAAsB;IACtB,IAAI,CAAC,IAAY,EAAE,GAAY,EAAE,OAAoB;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,QAAQ,CAAC,OAA+D;QACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;IACpB,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uDAAuD;IAEvD;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,SAAoC;QAC7D,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvH,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,SAAoC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,SAAoC;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,SAA8B;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACvB,GAAG,SAAS;YACZ,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,SAAS,EAAE,YAAY,IAAI,CAAC;YAC1C,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;YAClC,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;YACpC,aAAa,EAAE,SAAS,EAAE,aAAa,IAAI,KAAK;SACrB,CAAC,CAAC;IACjC,CAAC;IAED,uDAAuD;IAEvD,2CAA2C;IAC3C,gBAAgB,CAAC,QAA2B;QAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export { ReasoningEngine } from "./engine.js";
2
+ export { ReActStrategy } from "./strategies/react.js";
3
+ export { ChainOfThoughtStrategy } from "./strategies/cot.js";
4
+ export { TreeOfThoughtStrategy } from "./strategies/tot.js";
5
+ export { OpenAIBackend, openaiBackend, veniceBackend, groqBackend, ollamaBackend, agentsEcoBackend, } from "./backends/openai.js";
6
+ export { HuggingFaceBackend, hfInferenceBackend, hfEndpointBackend, tgiBackend, SMOLAGENTS_MODELS, } from "./backends/huggingface.js";
7
+ export type { ReasoningStep, StepType, ToolCall, ToolResult, ToolDef, ToolHandler, ReasoningConfig, ReasoningHooks, StrategyType, ReasoningResult, ThoughtBranch, ToTConfig, LLMBackend, ChatMessage, CompletionOptions, LLMResponse, ReasoningStrategy, } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAEV,aAAa,EACb,QAAQ,EAER,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EAEX,eAAe,EACf,cAAc,EACd,YAAY,EAEZ,eAAe,EAEf,aAAa,EACb,SAAS,EAET,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EAEX,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ // ── Core ────────────────────────────────────────────────
2
+ export { ReasoningEngine } from "./engine.js";
3
+ // ── Strategies ──────────────────────────────────────────
4
+ export { ReActStrategy } from "./strategies/react.js";
5
+ export { ChainOfThoughtStrategy } from "./strategies/cot.js";
6
+ export { TreeOfThoughtStrategy } from "./strategies/tot.js";
7
+ // ── Backends ────────────────────────────────────────────
8
+ export { OpenAIBackend, openaiBackend, veniceBackend, groqBackend, ollamaBackend, agentsEcoBackend, } from "./backends/openai.js";
9
+ export { HuggingFaceBackend, hfInferenceBackend, hfEndpointBackend, tgiBackend, SMOLAGENTS_MODELS, } from "./backends/huggingface.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,2DAA2D;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,2DAA2D;AAC3D,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ReasoningStrategy, ReasoningConfig, ReasoningResult, ToolDef, ToolHandler, LLMBackend } from "../types.js";
2
+ /**
3
+ * Chain-of-Thought (CoT) strategy.
4
+ *
5
+ * Prompts the LLM to break down reasoning into explicit sequential steps.
6
+ * Supports optional self-reflection where the model reviews its own chain.
7
+ */
8
+ export declare class ChainOfThoughtStrategy implements ReasoningStrategy {
9
+ readonly name: "cot";
10
+ reason(task: string, systemPrompt: string, tools: Map<string, {
11
+ def: ToolDef;
12
+ handler: ToolHandler;
13
+ }>, config: ReasoningConfig, backend: LLMBackend): Promise<ReasoningResult>;
14
+ private parseChain;
15
+ private selfReflect;
16
+ private buildResult;
17
+ }
18
+ //# sourceMappingURL=cot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cot.d.ts","sourceRoot":"","sources":["../../src/strategies/cot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEf,OAAO,EACP,WAAW,EACX,UAAU,EAEX,MAAM,aAAa,CAAC;AAwBrB;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAEzB,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,EAC1D,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC;IAmG3B,OAAO,CAAC,UAAU;YAyBJ,WAAW;IA4DzB,OAAO,CAAC,WAAW;CAoBpB"}
@@ -0,0 +1,198 @@
1
+ import { randomUUID } from "node:crypto";
2
+ const COT_SYSTEM_SUFFIX = `
3
+
4
+ You are a reasoning agent that solves tasks using Chain-of-Thought reasoning.
5
+
6
+ Break down the problem into clear, logical steps. Think through each step carefully before moving to the next.
7
+
8
+ Format your response as a series of numbered reasoning steps:
9
+
10
+ Step 1: <reasoning>
11
+ Step 2: <reasoning>
12
+ ...
13
+ Step N: <reasoning>
14
+
15
+ Final Answer: <your answer>
16
+
17
+ Rules:
18
+ - Show your work. Each step should build on the previous one.
19
+ - If you realize a step was wrong, explicitly correct it.
20
+ - Be precise and avoid skipping logical steps.
21
+ - State assumptions clearly.
22
+ `;
23
+ /**
24
+ * Chain-of-Thought (CoT) strategy.
25
+ *
26
+ * Prompts the LLM to break down reasoning into explicit sequential steps.
27
+ * Supports optional self-reflection where the model reviews its own chain.
28
+ */
29
+ export class ChainOfThoughtStrategy {
30
+ name = "cot";
31
+ async reason(task, systemPrompt, tools, config, backend) {
32
+ const startTime = Date.now();
33
+ const steps = [];
34
+ let totalPromptTokens = 0;
35
+ let totalCompletionTokens = 0;
36
+ let llmCalls = 0;
37
+ const fullSystemPrompt = systemPrompt + COT_SYSTEM_SUFFIX;
38
+ const messages = [
39
+ { role: "system", content: fullSystemPrompt },
40
+ { role: "user", content: task },
41
+ ];
42
+ // Initial CoT generation
43
+ const stepStart = Date.now();
44
+ let response;
45
+ try {
46
+ response = await backend.complete(messages, {
47
+ temperature: config.temperature ?? 0.3,
48
+ maxTokens: 4096,
49
+ });
50
+ }
51
+ catch (err) {
52
+ const errorStep = {
53
+ id: randomUUID(),
54
+ index: 0,
55
+ type: "error",
56
+ content: `LLM call failed: ${err}`,
57
+ confidence: 0,
58
+ durationMs: Date.now() - stepStart,
59
+ timestamp: new Date().toISOString(),
60
+ metadata: {},
61
+ };
62
+ steps.push(errorStep);
63
+ return this.buildResult("", steps, startTime, 0, 0, 1, false);
64
+ }
65
+ llmCalls++;
66
+ totalPromptTokens += response.tokens?.prompt ?? 0;
67
+ totalCompletionTokens += response.tokens?.completion ?? 0;
68
+ // Parse the chain of thought into individual steps
69
+ const parsedSteps = this.parseChain(response.content);
70
+ for (const parsed of parsedSteps) {
71
+ const step = {
72
+ id: randomUUID(),
73
+ index: steps.length,
74
+ type: parsed.type,
75
+ content: parsed.content,
76
+ confidence: parsed.type === "answer" ? 0.85 : 0.7,
77
+ durationMs: Date.now() - stepStart,
78
+ timestamp: new Date().toISOString(),
79
+ metadata: {},
80
+ };
81
+ steps.push(step);
82
+ if (parsed.type === "thought")
83
+ await config.hooks?.onThought?.(parsed.content);
84
+ if (parsed.type === "answer")
85
+ await config.hooks?.onAnswer?.(parsed.content);
86
+ await config.hooks?.onStep?.(step);
87
+ }
88
+ messages.push({ role: "assistant", content: response.content });
89
+ // Optional self-reflection pass
90
+ if (config.reflection) {
91
+ const reflectionResult = await this.selfReflect(messages, backend, config, steps);
92
+ llmCalls += reflectionResult.llmCalls;
93
+ totalPromptTokens += reflectionResult.promptTokens;
94
+ totalCompletionTokens += reflectionResult.completionTokens;
95
+ // If reflection produced a revised answer, use it
96
+ if (reflectionResult.revisedAnswer) {
97
+ const revisionStep = {
98
+ id: randomUUID(),
99
+ index: steps.length,
100
+ type: "revision",
101
+ content: reflectionResult.revisedAnswer,
102
+ confidence: 0.9,
103
+ durationMs: Date.now() - stepStart,
104
+ timestamp: new Date().toISOString(),
105
+ metadata: { reflectionTriggered: true },
106
+ };
107
+ steps.push(revisionStep);
108
+ await config.hooks?.onStep?.(revisionStep);
109
+ return this.buildResult(reflectionResult.revisedAnswer, steps, startTime, totalPromptTokens, totalCompletionTokens, llmCalls, true);
110
+ }
111
+ }
112
+ // Extract final answer
113
+ const answerStep = steps.find((s) => s.type === "answer");
114
+ const answer = answerStep?.content ?? response.content;
115
+ return this.buildResult(answer, steps, startTime, totalPromptTokens, totalCompletionTokens, llmCalls, true);
116
+ }
117
+ // ── Helpers ─────────────────────────────────────────
118
+ parseChain(content) {
119
+ const results = [];
120
+ // Extract numbered steps
121
+ const stepPattern = /Step\s+\d+:\s*([\s\S]*?)(?=Step\s+\d+:|Final Answer:|$)/gi;
122
+ let match;
123
+ while ((match = stepPattern.exec(content)) !== null) {
124
+ const text = match[1].trim();
125
+ if (text)
126
+ results.push({ type: "thought", content: text });
127
+ }
128
+ // Extract final answer
129
+ const answerMatch = content.match(/Final Answer:\s*([\s\S]*?)$/i);
130
+ if (answerMatch) {
131
+ results.push({ type: "answer", content: answerMatch[1].trim() });
132
+ }
133
+ // If no structured format found, treat the whole thing as one thought
134
+ if (results.length === 0) {
135
+ results.push({ type: "thought", content: content.trim() });
136
+ }
137
+ return results;
138
+ }
139
+ async selfReflect(messages, backend, config, steps) {
140
+ const reflectionMessages = [
141
+ ...messages,
142
+ {
143
+ role: "user",
144
+ content: `Review your reasoning chain above. Check for:
145
+ 1. Logical errors or gaps
146
+ 2. Incorrect assumptions
147
+ 3. Missing considerations
148
+ 4. Whether the final answer follows from the reasoning
149
+
150
+ If you find issues, provide a corrected answer prefixed with "Revised Answer:".
151
+ If the reasoning is sound, respond with "Reasoning verified. No changes needed."`,
152
+ },
153
+ ];
154
+ try {
155
+ const response = await backend.complete(reflectionMessages, {
156
+ temperature: 0.2,
157
+ maxTokens: 1024,
158
+ });
159
+ const reflectionStep = {
160
+ id: randomUUID(),
161
+ index: steps.length,
162
+ type: "reflection",
163
+ content: response.content,
164
+ confidence: 0.8,
165
+ durationMs: 0,
166
+ tokens: response.tokens,
167
+ timestamp: new Date().toISOString(),
168
+ metadata: {},
169
+ };
170
+ steps.push(reflectionStep);
171
+ await config.hooks?.onReflection?.(response.content);
172
+ await config.hooks?.onStep?.(reflectionStep);
173
+ const revisedMatch = response.content.match(/Revised Answer:\s*([\s\S]*?)$/i);
174
+ return {
175
+ revisedAnswer: revisedMatch ? revisedMatch[1].trim() : undefined,
176
+ llmCalls: 1,
177
+ promptTokens: response.tokens?.prompt ?? 0,
178
+ completionTokens: response.tokens?.completion ?? 0,
179
+ };
180
+ }
181
+ catch {
182
+ return { llmCalls: 0, promptTokens: 0, completionTokens: 0 };
183
+ }
184
+ }
185
+ buildResult(answer, steps, startTime, promptTokens, completionTokens, llmCalls, success) {
186
+ return {
187
+ answer,
188
+ steps,
189
+ strategy: "cot",
190
+ durationMs: Date.now() - startTime,
191
+ tokens: { prompt: promptTokens, completion: completionTokens, total: promptTokens + completionTokens },
192
+ llmCalls,
193
+ toolCalls: 0,
194
+ success,
195
+ };
196
+ }
197
+ }
198
+ //# sourceMappingURL=cot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cot.js","sourceRoot":"","sources":["../../src/strategies/cot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ReasoningStrategy, ReasoningConfig, ReasoningResult, ToolDef, ToolHandler, LLMBackend } from "../types.js";
2
+ /**
3
+ * ReAct (Reason + Act) strategy.
4
+ *
5
+ * Implements the multi-step reasoning loop from SmolAgents / Yao et al. 2022.
6
+ * Each step: Thought -> Action -> Observation, with optional reflection and planning.
7
+ */
8
+ export declare class ReActStrategy implements ReasoningStrategy {
9
+ readonly name: "react";
10
+ reason(task: string, systemPrompt: string, tools: Map<string, {
11
+ def: ToolDef;
12
+ handler: ToolHandler;
13
+ }>, config: ReasoningConfig, backend: LLMBackend): Promise<ReasoningResult>;
14
+ private parseResponse;
15
+ private buildToolDescriptions;
16
+ private reflectStep;
17
+ private planStep;
18
+ private makeStep;
19
+ private buildResult;
20
+ }
21
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/strategies/react.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEf,OAAO,EACP,WAAW,EAEX,UAAU,EAEX,MAAM,aAAa,CAAC;AA2CrB;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,iBAAiB;IACrD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAE3B,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,EAC1D,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC;IAmM3B,OAAO,CAAC,aAAa;IA0CrB,OAAO,CAAC,qBAAqB;YAaf,WAAW;YA6BX,QAAQ;IA6BtB,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,WAAW;CAqBpB"}