@cogitator-ai/core 0.2.0 → 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.
Files changed (229) hide show
  1. package/README.md +1037 -15
  2. package/dist/causal/capabilities/causal-explainer.d.ts +33 -0
  3. package/dist/causal/capabilities/causal-explainer.d.ts.map +1 -0
  4. package/dist/causal/capabilities/causal-explainer.js +327 -0
  5. package/dist/causal/capabilities/causal-explainer.js.map +1 -0
  6. package/dist/causal/capabilities/causal-planner.d.ts +42 -0
  7. package/dist/causal/capabilities/causal-planner.d.ts.map +1 -0
  8. package/dist/causal/capabilities/causal-planner.js +289 -0
  9. package/dist/causal/capabilities/causal-planner.js.map +1 -0
  10. package/dist/causal/capabilities/effect-predictor.d.ts +30 -0
  11. package/dist/causal/capabilities/effect-predictor.d.ts.map +1 -0
  12. package/dist/causal/capabilities/effect-predictor.js +270 -0
  13. package/dist/causal/capabilities/effect-predictor.js.map +1 -0
  14. package/dist/causal/causal-reasoner.d.ts +63 -0
  15. package/dist/causal/causal-reasoner.d.ts.map +1 -0
  16. package/dist/causal/causal-reasoner.js +325 -0
  17. package/dist/causal/causal-reasoner.js.map +1 -0
  18. package/dist/causal/discovery/causal-extractor.d.ts +46 -0
  19. package/dist/causal/discovery/causal-extractor.d.ts.map +1 -0
  20. package/dist/causal/discovery/causal-extractor.js +154 -0
  21. package/dist/causal/discovery/causal-extractor.js.map +1 -0
  22. package/dist/causal/discovery/causal-validator.d.ts +50 -0
  23. package/dist/causal/discovery/causal-validator.d.ts.map +1 -0
  24. package/dist/causal/discovery/causal-validator.js +235 -0
  25. package/dist/causal/discovery/causal-validator.js.map +1 -0
  26. package/dist/causal/discovery/hypothesis-generator.d.ts +37 -0
  27. package/dist/causal/discovery/hypothesis-generator.d.ts.map +1 -0
  28. package/dist/causal/discovery/hypothesis-generator.js +225 -0
  29. package/dist/causal/discovery/hypothesis-generator.js.map +1 -0
  30. package/dist/causal/discovery/prompts.d.ts +99 -0
  31. package/dist/causal/discovery/prompts.d.ts.map +1 -0
  32. package/dist/causal/discovery/prompts.js +263 -0
  33. package/dist/causal/discovery/prompts.js.map +1 -0
  34. package/dist/causal/graph/causal-graph.d.ts +38 -0
  35. package/dist/causal/graph/causal-graph.d.ts.map +1 -0
  36. package/dist/causal/graph/causal-graph.js +321 -0
  37. package/dist/causal/graph/causal-graph.js.map +1 -0
  38. package/dist/causal/graph/graph-builder.d.ts +68 -0
  39. package/dist/causal/graph/graph-builder.d.ts.map +1 -0
  40. package/dist/causal/graph/graph-builder.js +128 -0
  41. package/dist/causal/graph/graph-builder.js.map +1 -0
  42. package/dist/causal/index.d.ts +28 -0
  43. package/dist/causal/index.d.ts.map +1 -0
  44. package/dist/causal/index.js +18 -0
  45. package/dist/causal/index.js.map +1 -0
  46. package/dist/causal/inference/adjustment.d.ts +5 -0
  47. package/dist/causal/inference/adjustment.d.ts.map +1 -0
  48. package/dist/causal/inference/adjustment.js +189 -0
  49. package/dist/causal/inference/adjustment.js.map +1 -0
  50. package/dist/causal/inference/counterfactual.d.ts +24 -0
  51. package/dist/causal/inference/counterfactual.d.ts.map +1 -0
  52. package/dist/causal/inference/counterfactual.js +199 -0
  53. package/dist/causal/inference/counterfactual.js.map +1 -0
  54. package/dist/causal/inference/d-separation.d.ts +4 -0
  55. package/dist/causal/inference/d-separation.d.ts.map +1 -0
  56. package/dist/causal/inference/d-separation.js +168 -0
  57. package/dist/causal/inference/d-separation.js.map +1 -0
  58. package/dist/causal/inference/inference-engine.d.ts +33 -0
  59. package/dist/causal/inference/inference-engine.d.ts.map +1 -0
  60. package/dist/causal/inference/inference-engine.js +254 -0
  61. package/dist/causal/inference/inference-engine.js.map +1 -0
  62. package/dist/causal/stores/causal-graph-store.d.ts +12 -0
  63. package/dist/causal/stores/causal-graph-store.d.ts.map +1 -0
  64. package/dist/causal/stores/causal-graph-store.js +60 -0
  65. package/dist/causal/stores/causal-graph-store.js.map +1 -0
  66. package/dist/causal/stores/causal-pattern-store.d.ts +19 -0
  67. package/dist/causal/stores/causal-pattern-store.d.ts.map +1 -0
  68. package/dist/causal/stores/causal-pattern-store.js +117 -0
  69. package/dist/causal/stores/causal-pattern-store.js.map +1 -0
  70. package/dist/causal/stores/intervention-log.d.ts +16 -0
  71. package/dist/causal/stores/intervention-log.d.ts.map +1 -0
  72. package/dist/causal/stores/intervention-log.js +113 -0
  73. package/dist/causal/stores/intervention-log.js.map +1 -0
  74. package/dist/cogitator.d.ts +31 -1
  75. package/dist/cogitator.d.ts.map +1 -1
  76. package/dist/cogitator.js +127 -6
  77. package/dist/cogitator.js.map +1 -1
  78. package/dist/constitutional/constitution.d.ts +9 -0
  79. package/dist/constitutional/constitution.d.ts.map +1 -0
  80. package/dist/constitutional/constitution.js +215 -0
  81. package/dist/constitutional/constitution.js.map +1 -0
  82. package/dist/constitutional/constitutional-ai.d.ts +36 -0
  83. package/dist/constitutional/constitutional-ai.d.ts.map +1 -0
  84. package/dist/constitutional/constitutional-ai.js +163 -0
  85. package/dist/constitutional/constitutional-ai.js.map +1 -0
  86. package/dist/constitutional/critique-reviser.d.ts +20 -0
  87. package/dist/constitutional/critique-reviser.d.ts.map +1 -0
  88. package/dist/constitutional/critique-reviser.js +98 -0
  89. package/dist/constitutional/critique-reviser.js.map +1 -0
  90. package/dist/constitutional/index.d.ts +13 -0
  91. package/dist/constitutional/index.d.ts.map +1 -0
  92. package/dist/constitutional/index.js +8 -0
  93. package/dist/constitutional/index.js.map +1 -0
  94. package/dist/constitutional/input-filter.d.ts +19 -0
  95. package/dist/constitutional/input-filter.d.ts.map +1 -0
  96. package/dist/constitutional/input-filter.js +88 -0
  97. package/dist/constitutional/input-filter.js.map +1 -0
  98. package/dist/constitutional/output-filter.d.ts +19 -0
  99. package/dist/constitutional/output-filter.d.ts.map +1 -0
  100. package/dist/constitutional/output-filter.js +86 -0
  101. package/dist/constitutional/output-filter.js.map +1 -0
  102. package/dist/constitutional/prompts.d.ts +11 -0
  103. package/dist/constitutional/prompts.d.ts.map +1 -0
  104. package/dist/constitutional/prompts.js +202 -0
  105. package/dist/constitutional/prompts.js.map +1 -0
  106. package/dist/constitutional/tool-guard.d.ts +18 -0
  107. package/dist/constitutional/tool-guard.d.ts.map +1 -0
  108. package/dist/constitutional/tool-guard.js +125 -0
  109. package/dist/constitutional/tool-guard.js.map +1 -0
  110. package/dist/cost-routing/budget-enforcer.d.ts +26 -0
  111. package/dist/cost-routing/budget-enforcer.d.ts.map +1 -0
  112. package/dist/cost-routing/budget-enforcer.js +86 -0
  113. package/dist/cost-routing/budget-enforcer.js.map +1 -0
  114. package/dist/cost-routing/cost-router.d.ts +34 -0
  115. package/dist/cost-routing/cost-router.d.ts.map +1 -0
  116. package/dist/cost-routing/cost-router.js +80 -0
  117. package/dist/cost-routing/cost-router.js.map +1 -0
  118. package/dist/cost-routing/cost-tracker.d.ts +20 -0
  119. package/dist/cost-routing/cost-tracker.d.ts.map +1 -0
  120. package/dist/cost-routing/cost-tracker.js +85 -0
  121. package/dist/cost-routing/cost-tracker.js.map +1 -0
  122. package/dist/cost-routing/index.d.ts +6 -0
  123. package/dist/cost-routing/index.d.ts.map +1 -0
  124. package/dist/cost-routing/index.js +6 -0
  125. package/dist/cost-routing/index.js.map +1 -0
  126. package/dist/cost-routing/model-selector.d.ts +15 -0
  127. package/dist/cost-routing/model-selector.d.ts.map +1 -0
  128. package/dist/cost-routing/model-selector.js +216 -0
  129. package/dist/cost-routing/model-selector.js.map +1 -0
  130. package/dist/cost-routing/task-analyzer.d.ts +13 -0
  131. package/dist/cost-routing/task-analyzer.d.ts.map +1 -0
  132. package/dist/cost-routing/task-analyzer.js +185 -0
  133. package/dist/cost-routing/task-analyzer.js.map +1 -0
  134. package/dist/index.d.ts +17 -2
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +9 -2
  137. package/dist/index.js.map +1 -1
  138. package/dist/learning/ab-testing.d.ts +45 -0
  139. package/dist/learning/ab-testing.d.ts.map +1 -0
  140. package/dist/learning/ab-testing.js +268 -0
  141. package/dist/learning/ab-testing.js.map +1 -0
  142. package/dist/learning/agent-optimizer.d.ts.map +1 -1
  143. package/dist/learning/agent-optimizer.js +26 -21
  144. package/dist/learning/agent-optimizer.js.map +1 -1
  145. package/dist/learning/auto-optimizer.d.ts +38 -0
  146. package/dist/learning/auto-optimizer.d.ts.map +1 -0
  147. package/dist/learning/auto-optimizer.js +231 -0
  148. package/dist/learning/auto-optimizer.js.map +1 -0
  149. package/dist/learning/demo-selector.d.ts.map +1 -1
  150. package/dist/learning/demo-selector.js +7 -7
  151. package/dist/learning/demo-selector.js.map +1 -1
  152. package/dist/learning/index.d.ts +13 -1
  153. package/dist/learning/index.d.ts.map +1 -1
  154. package/dist/learning/index.js +7 -1
  155. package/dist/learning/index.js.map +1 -1
  156. package/dist/learning/instruction-optimizer.d.ts.map +1 -1
  157. package/dist/learning/instruction-optimizer.js +7 -11
  158. package/dist/learning/instruction-optimizer.js.map +1 -1
  159. package/dist/learning/metrics.d.ts.map +1 -1
  160. package/dist/learning/metrics.js +26 -16
  161. package/dist/learning/metrics.js.map +1 -1
  162. package/dist/learning/postgres-trace-store.d.ts +53 -0
  163. package/dist/learning/postgres-trace-store.d.ts.map +1 -0
  164. package/dist/learning/postgres-trace-store.js +702 -0
  165. package/dist/learning/postgres-trace-store.js.map +1 -0
  166. package/dist/learning/prompt-logger.d.ts +29 -0
  167. package/dist/learning/prompt-logger.d.ts.map +1 -0
  168. package/dist/learning/prompt-logger.js +157 -0
  169. package/dist/learning/prompt-logger.js.map +1 -0
  170. package/dist/learning/prompt-monitor.d.ts +29 -0
  171. package/dist/learning/prompt-monitor.d.ts.map +1 -0
  172. package/dist/learning/prompt-monitor.js +243 -0
  173. package/dist/learning/prompt-monitor.js.map +1 -0
  174. package/dist/learning/prompts.d.ts.map +1 -1
  175. package/dist/learning/prompts.js +24 -13
  176. package/dist/learning/prompts.js.map +1 -1
  177. package/dist/learning/rollback-manager.d.ts +36 -0
  178. package/dist/learning/rollback-manager.d.ts.map +1 -0
  179. package/dist/learning/rollback-manager.js +177 -0
  180. package/dist/learning/rollback-manager.js.map +1 -0
  181. package/dist/learning/trace-store.d.ts.map +1 -1
  182. package/dist/learning/trace-store.js +8 -10
  183. package/dist/learning/trace-store.js.map +1 -1
  184. package/dist/reasoning/branch-evaluator.d.ts.map +1 -1
  185. package/dist/reasoning/branch-evaluator.js +14 -8
  186. package/dist/reasoning/branch-evaluator.js.map +1 -1
  187. package/dist/reasoning/branch-generator.d.ts.map +1 -1
  188. package/dist/reasoning/branch-generator.js +5 -3
  189. package/dist/reasoning/branch-generator.js.map +1 -1
  190. package/dist/reasoning/prompts.d.ts.map +1 -1
  191. package/dist/reasoning/prompts.js +7 -5
  192. package/dist/reasoning/prompts.js.map +1 -1
  193. package/dist/reasoning/thought-tree.d.ts.map +1 -1
  194. package/dist/reasoning/thought-tree.js +9 -11
  195. package/dist/reasoning/thought-tree.js.map +1 -1
  196. package/dist/reflection/insight-store.d.ts.map +1 -1
  197. package/dist/reflection/insight-store.js +8 -6
  198. package/dist/reflection/insight-store.js.map +1 -1
  199. package/dist/reflection/prompts.d.ts.map +1 -1
  200. package/dist/reflection/prompts.js +11 -6
  201. package/dist/reflection/prompts.js.map +1 -1
  202. package/dist/reflection/reflection-engine.d.ts.map +1 -1
  203. package/dist/reflection/reflection-engine.js +8 -10
  204. package/dist/reflection/reflection-engine.js.map +1 -1
  205. package/dist/time-travel/checkpoint-store.d.ts +34 -0
  206. package/dist/time-travel/checkpoint-store.d.ts.map +1 -0
  207. package/dist/time-travel/checkpoint-store.js +240 -0
  208. package/dist/time-travel/checkpoint-store.js.map +1 -0
  209. package/dist/time-travel/comparator.d.ts +26 -0
  210. package/dist/time-travel/comparator.d.ts.map +1 -0
  211. package/dist/time-travel/comparator.js +253 -0
  212. package/dist/time-travel/comparator.js.map +1 -0
  213. package/dist/time-travel/forker.d.ts +22 -0
  214. package/dist/time-travel/forker.d.ts.map +1 -0
  215. package/dist/time-travel/forker.js +118 -0
  216. package/dist/time-travel/forker.js.map +1 -0
  217. package/dist/time-travel/index.d.ts +6 -0
  218. package/dist/time-travel/index.d.ts.map +1 -0
  219. package/dist/time-travel/index.js +6 -0
  220. package/dist/time-travel/index.js.map +1 -0
  221. package/dist/time-travel/replayer.d.ts +20 -0
  222. package/dist/time-travel/replayer.d.ts.map +1 -0
  223. package/dist/time-travel/replayer.js +147 -0
  224. package/dist/time-travel/replayer.js.map +1 -0
  225. package/dist/time-travel/time-travel.d.ts +41 -0
  226. package/dist/time-travel/time-travel.d.ts.map +1 -0
  227. package/dist/time-travel/time-travel.js +127 -0
  228. package/dist/time-travel/time-travel.js.map +1 -0
  229. package/package.json +13 -5
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @cogitator-ai/core
2
2
 
3
- Core runtime for Cogitator AI agents. Build and run LLM-powered agents with tool calling, streaming, and multi-provider support.
3
+ Core runtime for Cogitator AI agents. Build and run LLM-powered agents with tool calling, streaming, reflection, Tree-of-Thought reasoning, learning optimization, and time-travel debugging.
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,7 +14,6 @@ pnpm add @cogitator-ai/core
14
14
  import { Cogitator, Agent, tool } from '@cogitator-ai/core';
15
15
  import { z } from 'zod';
16
16
 
17
- // Create a tool
18
17
  const calculator = tool({
19
18
  name: 'calculator',
20
19
  description: 'Evaluate a math expression',
@@ -26,15 +25,13 @@ const calculator = tool({
26
25
  },
27
26
  });
28
27
 
29
- // Create an agent
30
28
  const agent = new Agent({
31
29
  name: 'math-assistant',
32
30
  instructions: 'You are a helpful math assistant',
33
- model: 'ollama/llama3.2:3b',
31
+ model: 'openai/gpt-4o',
34
32
  tools: [calculator],
35
33
  });
36
34
 
37
- // Run the agent
38
35
  const cog = new Cogitator();
39
36
  const result = await cog.run(agent, {
40
37
  input: 'What is 25 * 4?',
@@ -45,31 +42,1056 @@ console.log(result.output);
45
42
 
46
43
  ## Features
47
44
 
48
- - Multiple LLM backends (Ollama, OpenAI, Anthropic, Google)
49
- - Type-safe tool definitions with Zod
50
- - Streaming responses
51
- - Memory integration
52
- - Built-in tools (calculator, datetime, filesystem, HTTP, etc.)
45
+ - **Multi-Provider LLM Support** - Ollama, OpenAI, Anthropic, Google, vLLM
46
+ - **Type-Safe Tools** - Zod-validated tool definitions
47
+ - **Streaming Responses** - Real-time token streaming
48
+ - **Memory Integration** - Redis, PostgreSQL, in-memory adapters
49
+ - **20+ Built-in Tools** - Calculator, filesystem, HTTP, regex, and more
50
+ - **Reflection Engine** - Self-improvement through tool call analysis
51
+ - **Tree-of-Thought** - Advanced reasoning with branch exploration
52
+ - **Agent Optimizer** - DSPy-style learning from traces
53
+ - **Time Travel** - Checkpoint, replay, fork, and compare executions
54
+ - **Causal Reasoning** - Pearl's do-calculus, counterfactuals, d-separation
55
+ - **Resilience** - Retry, circuit breaker, and fallback patterns
56
+ - **Observability** - Full tracing with spans and callbacks
57
+
58
+ ---
53
59
 
54
60
  ## LLM Backends
55
61
 
62
+ ### Supported Providers
63
+
56
64
  ```typescript
57
- // Ollama (default)
65
+ // Ollama (local, default)
58
66
  const cog = new Cogitator({ defaultModel: 'ollama/llama3.2:3b' });
59
67
 
60
68
  // OpenAI
61
69
  const cog = new Cogitator({ defaultModel: 'openai/gpt-4o' });
62
70
 
63
- // Anthropic
71
+ // Anthropic Claude
64
72
  const cog = new Cogitator({ defaultModel: 'anthropic/claude-sonnet-4-20250514' });
65
73
 
66
- // Google
74
+ // Google Gemini
67
75
  const cog = new Cogitator({ defaultModel: 'google/gemini-1.5-flash' });
76
+
77
+ // vLLM
78
+ const cog = new Cogitator({ defaultModel: 'vllm/mistral-7b' });
79
+ ```
80
+
81
+ ### Backend Configuration
82
+
83
+ ```typescript
84
+ import { Cogitator, OllamaBackend, OpenAIBackend, AnthropicBackend } from '@cogitator-ai/core';
85
+
86
+ const cog = new Cogitator({
87
+ llm: {
88
+ defaultProvider: 'openai',
89
+ ollama: {
90
+ baseUrl: 'http://localhost:11434',
91
+ },
92
+ openai: {
93
+ apiKey: process.env.OPENAI_API_KEY,
94
+ organization: 'org-xxx',
95
+ },
96
+ anthropic: {
97
+ apiKey: process.env.ANTHROPIC_API_KEY,
98
+ },
99
+ google: {
100
+ apiKey: process.env.GOOGLE_API_KEY,
101
+ },
102
+ },
103
+ });
104
+ ```
105
+
106
+ ### Direct Backend Usage
107
+
108
+ ```typescript
109
+ import { createLLMBackend, parseModel } from '@cogitator-ai/core';
110
+
111
+ const backend = createLLMBackend('openai', { apiKey: process.env.OPENAI_API_KEY });
112
+
113
+ const response = await backend.chat({
114
+ model: 'gpt-4o',
115
+ messages: [
116
+ { role: 'system', content: 'You are helpful.' },
117
+ { role: 'user', content: 'Hello!' },
118
+ ],
119
+ });
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Agent Configuration
125
+
126
+ ```typescript
127
+ import { Agent } from '@cogitator-ai/core';
128
+
129
+ const agent = new Agent({
130
+ id: 'custom-id',
131
+ name: 'research-assistant',
132
+ instructions: 'You research topics thoroughly',
133
+ model: 'openai/gpt-4o',
134
+ tools: [webSearch, calculator],
135
+
136
+ temperature: 0.7,
137
+ topP: 0.9,
138
+ maxTokens: 4096,
139
+ maxIterations: 15,
140
+ timeout: 120_000,
141
+ stopSequences: ['DONE'],
142
+ });
143
+
144
+ // Clone with modifications
145
+ const variant = agent.clone({
146
+ name: 'fast-assistant',
147
+ temperature: 0.3,
148
+ maxTokens: 1024,
149
+ });
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Tools
155
+
156
+ ### Creating Tools
157
+
158
+ ```typescript
159
+ import { tool } from '@cogitator-ai/core';
160
+ import { z } from 'zod';
161
+
162
+ const weatherTool = tool({
163
+ name: 'get_weather',
164
+ description: 'Get current weather for a location',
165
+ parameters: z.object({
166
+ city: z.string().describe('City name'),
167
+ units: z.enum(['celsius', 'fahrenheit']).optional(),
168
+ }),
169
+ execute: async ({ city, units = 'celsius' }, context) => {
170
+ console.log(`Run ID: ${context.runId}`);
171
+ return { temperature: 22, units, city };
172
+ },
173
+ });
174
+ ```
175
+
176
+ ### Tool Context
177
+
178
+ Every tool receives a context object:
179
+
180
+ ```typescript
181
+ interface ToolContext {
182
+ agentId: string;
183
+ runId: string;
184
+ signal: AbortSignal;
185
+ }
186
+ ```
187
+
188
+ ### Sandboxed Tools
189
+
190
+ Execute tools in isolated Docker or WASM environments:
191
+
192
+ ```typescript
193
+ const shellTool = tool({
194
+ name: 'run_shell',
195
+ description: 'Execute shell commands safely',
196
+ parameters: z.object({
197
+ command: z.string(),
198
+ }),
199
+ sandbox: {
200
+ type: 'docker',
201
+ image: 'ubuntu:22.04',
202
+ },
203
+ timeout: 30000,
204
+ execute: async ({ command }) => command,
205
+ });
206
+ ```
207
+
208
+ ### Tool Registry
209
+
210
+ ```typescript
211
+ import { ToolRegistry } from '@cogitator-ai/core';
212
+
213
+ const registry = new ToolRegistry();
214
+
215
+ registry.register(calculator);
216
+ registry.registerMany([datetime, webSearch, fileRead]);
217
+
218
+ const tool = registry.get('calculator');
219
+ const names = registry.getNames();
220
+ const schemas = registry.getSchemas();
221
+ ```
222
+
223
+ ### Built-in Tools
224
+
225
+ | Tool | Description |
226
+ | --------------- | -------------------------------- |
227
+ | `calculator` | Evaluate math expressions |
228
+ | `datetime` | Get current date/time |
229
+ | `uuid` | Generate UUIDs |
230
+ | `randomNumber` | Random number generation |
231
+ | `randomString` | Random string generation |
232
+ | `hash` | Hash strings (md5, sha256, etc.) |
233
+ | `base64Encode` | Encode to base64 |
234
+ | `base64Decode` | Decode from base64 |
235
+ | `sleep` | Delay execution |
236
+ | `jsonParse` | Parse JSON strings |
237
+ | `jsonStringify` | Stringify to JSON |
238
+ | `regexMatch` | Match regex patterns |
239
+ | `regexReplace` | Replace with regex |
240
+ | `fileRead` | Read file contents |
241
+ | `fileWrite` | Write to files |
242
+ | `fileList` | List directory contents |
243
+ | `fileExists` | Check if file exists |
244
+ | `fileDelete` | Delete files |
245
+ | `httpRequest` | Make HTTP requests |
246
+ | `exec` | Execute shell commands |
247
+
248
+ ```typescript
249
+ import { builtinTools, calculator, datetime } from '@cogitator-ai/core';
250
+
251
+ const agent = new Agent({
252
+ name: 'utility-agent',
253
+ instructions: 'Use your tools to help users',
254
+ model: 'openai/gpt-4o',
255
+ tools: builtinTools,
256
+ });
257
+ ```
258
+
259
+ ---
260
+
261
+ ## Run Options
262
+
263
+ ```typescript
264
+ import { Cogitator, Agent } from '@cogitator-ai/core';
265
+
266
+ const cog = new Cogitator();
267
+ const agent = new Agent({
268
+ /* ... */
269
+ });
270
+
271
+ const result = await cog.run(agent, {
272
+ input: 'Analyze this data...',
273
+
274
+ threadId: 'thread_123',
275
+ context: { userId: 'user_456', task: 'analysis' },
276
+
277
+ timeout: 60000,
278
+ stream: true,
279
+ onToken: (token) => process.stdout.write(token),
280
+
281
+ useMemory: true,
282
+ loadHistory: true,
283
+ saveHistory: true,
284
+
285
+ onToolCall: (call) => console.log('Tool:', call.name),
286
+ onToolResult: (result) => console.log('Result:', result.result),
287
+ onSpan: (span) => console.log('Span:', span.name),
288
+ onRunStart: ({ runId }) => console.log('Started:', runId),
289
+ onRunComplete: (result) => console.log('Completed'),
290
+ onRunError: (error) => console.error('Error:', error),
291
+ onMemoryError: (error, op) => console.warn(`Memory ${op} failed`),
292
+ });
293
+ ```
294
+
295
+ ### Run Result
296
+
297
+ ```typescript
298
+ interface RunResult {
299
+ output: string;
300
+ runId: string;
301
+ agentId: string;
302
+ threadId: string;
303
+ usage: {
304
+ inputTokens: number;
305
+ outputTokens: number;
306
+ totalTokens: number;
307
+ cost: number;
308
+ duration: number;
309
+ };
310
+ toolCalls: ToolCall[];
311
+ messages: Message[];
312
+ trace: { traceId: string; spans: Span[] };
313
+ reflections?: Reflection[];
314
+ reflectionSummary?: ReflectionSummary;
315
+ }
316
+ ```
317
+
318
+ ---
319
+
320
+ ## Memory Integration
321
+
322
+ Configure memory for conversation persistence:
323
+
324
+ ```typescript
325
+ const cog = new Cogitator({
326
+ memory: {
327
+ adapter: 'redis',
328
+ redis: {
329
+ url: 'redis://localhost:6379',
330
+ keyPrefix: 'cogitator:',
331
+ },
332
+ contextBuilder: {
333
+ maxTokens: 4000,
334
+ strategy: 'recent',
335
+ },
336
+ },
337
+ });
338
+
339
+ // Or PostgreSQL
340
+ const cog = new Cogitator({
341
+ memory: {
342
+ adapter: 'postgres',
343
+ postgres: {
344
+ connectionString: 'postgresql://...',
345
+ },
346
+ },
347
+ });
348
+
349
+ // Or in-memory
350
+ const cog = new Cogitator({
351
+ memory: {
352
+ adapter: 'memory',
353
+ inMemory: {
354
+ maxEntries: 1000,
355
+ },
356
+ },
357
+ });
358
+ ```
359
+
360
+ ---
361
+
362
+ ## Reflection Engine
363
+
364
+ Enable self-improvement through reflection on tool calls and runs:
365
+
366
+ ```typescript
367
+ import { Cogitator, ReflectionEngine, InMemoryInsightStore } from '@cogitator-ai/core';
368
+
369
+ const cog = new Cogitator({
370
+ reflection: {
371
+ enabled: true,
372
+ reflectionModel: 'openai/gpt-4o-mini',
373
+ reflectAfterToolCall: true,
374
+ reflectAtEnd: true,
375
+ minConfidenceToStore: 0.7,
376
+ maxInsightsPerAgent: 50,
377
+ },
378
+ });
379
+
380
+ const result = await cog.run(agent, { input: 'Complete this task...' });
381
+
382
+ console.log('Reflections:', result.reflections);
383
+ console.log('Summary:', result.reflectionSummary);
384
+
385
+ const insights = await cog.getInsights(agent.id);
386
+ console.log('Learned insights:', insights);
387
+ ```
388
+
389
+ ### Standalone Reflection Engine
390
+
391
+ ```typescript
392
+ import { ReflectionEngine, InMemoryInsightStore, createLLMBackend } from '@cogitator-ai/core';
393
+
394
+ const backend = createLLMBackend('openai', { apiKey: '...' });
395
+ const insightStore = new InMemoryInsightStore();
396
+
397
+ const engine = new ReflectionEngine({
398
+ llm: backend,
399
+ insightStore,
400
+ config: {
401
+ reflectAfterToolCall: true,
402
+ minConfidenceToStore: 0.7,
403
+ },
404
+ });
405
+
406
+ const result = await engine.reflectOnToolCall(action, agentContext);
407
+ if (result.shouldAdjustStrategy) {
408
+ console.log('Suggested action:', result.suggestedAction);
409
+ }
410
+ ```
411
+
412
+ ---
413
+
414
+ ## Tree-of-Thought Reasoning
415
+
416
+ Explore multiple reasoning paths before deciding:
417
+
418
+ ```typescript
419
+ import { ThoughtTreeExecutor, BranchGenerator, BranchEvaluator } from '@cogitator-ai/core';
420
+
421
+ const executor = new ThoughtTreeExecutor(cogitator, {
422
+ maxBranches: 5,
423
+ maxDepth: 3,
424
+ explorationStrategy: 'best-first',
425
+ pruneThreshold: 0.3,
426
+ });
427
+
428
+ const result = await executor.run(agent, {
429
+ input: 'Solve this complex problem...',
430
+ explorationBudget: 10,
431
+ });
432
+
433
+ console.log('Best path:', result.bestPath);
434
+ console.log('All branches explored:', result.tree.branches.length);
435
+ console.log('Stats:', result.stats);
436
+ ```
437
+
438
+ ### ToT Configuration
439
+
440
+ ```typescript
441
+ const executor = new ThoughtTreeExecutor(cogitator, {
442
+ maxBranches: 5,
443
+ maxDepth: 3,
444
+ explorationStrategy: 'breadth-first',
445
+ pruneThreshold: 0.3,
446
+ branchTemperature: 0.8,
447
+ evaluationModel: 'openai/gpt-4o-mini',
448
+ });
449
+ ```
450
+
451
+ ---
452
+
453
+ ## Agent Optimizer (Learning)
454
+
455
+ DSPy-style optimization through execution traces:
456
+
457
+ ```typescript
458
+ import {
459
+ AgentOptimizer,
460
+ InMemoryTraceStore,
461
+ createSuccessMetric,
462
+ createContainsMetric,
463
+ } from '@cogitator-ai/core';
464
+
465
+ const traceStore = new InMemoryTraceStore();
466
+ const optimizer = new AgentOptimizer(cogitator, {
467
+ traceStore,
468
+ optimizationModel: 'openai/gpt-4o',
469
+ maxCandidates: 5,
470
+ evaluationRuns: 3,
471
+ });
472
+
473
+ const result = await optimizer.compile(agent, {
474
+ demos: [
475
+ { input: 'Calculate 2+2', expectedOutput: '4' },
476
+ { input: 'Calculate 10*5', expectedOutput: '50' },
477
+ ],
478
+ metric: createSuccessMetric(),
479
+ maxIterations: 10,
480
+ });
481
+
482
+ console.log('Optimized instructions:', result.optimizedAgent.instructions);
483
+ console.log('Improvement:', result.improvement);
484
+ ```
485
+
486
+ ### Built-in Metrics
487
+
488
+ ```typescript
489
+ import {
490
+ createSuccessMetric,
491
+ createExactMatchMetric,
492
+ createContainsMetric,
493
+ MetricEvaluator,
494
+ } from '@cogitator-ai/core';
495
+
496
+ const successMetric = createSuccessMetric();
497
+
498
+ const exactMatch = createExactMatchMetric();
499
+
500
+ const containsMetric = createContainsMetric(['error', 'failed'], { negate: true });
501
+ ```
502
+
503
+ ### Demo Selection
504
+
505
+ ```typescript
506
+ import { DemoSelector } from '@cogitator-ai/core';
507
+
508
+ const selector = new DemoSelector({
509
+ strategy: 'diverse',
510
+ maxDemos: 5,
511
+ });
512
+
513
+ const selectedDemos = selector.select(allDemos, currentInput);
514
+ ```
515
+
516
+ ---
517
+
518
+ ## Prompt Auto-Optimization
519
+
520
+ Capture prompts, run A/B tests, monitor performance, and automatically optimize agent instructions.
521
+
522
+ ### Prompt Logger
523
+
524
+ Wrap any LLM backend to capture all prompts:
525
+
526
+ ```typescript
527
+ import { wrapWithPromptLogger, PostgresTraceStore } from '@cogitator-ai/core';
528
+
529
+ const store = new PostgresTraceStore({
530
+ connectionString: process.env.DATABASE_URL!,
531
+ });
532
+
533
+ const wrappedBackend = wrapWithPromptLogger(openaiBackend, store, {
534
+ captureSystemPrompt: true,
535
+ captureTools: true,
536
+ captureResponse: true,
537
+ });
538
+ ```
539
+
540
+ ### A/B Testing Framework
541
+
542
+ Test instruction variants with statistical analysis:
543
+
544
+ ```typescript
545
+ import { ABTestingFramework } from '@cogitator-ai/core';
546
+
547
+ const abTesting = new ABTestingFramework({
548
+ store: abTestStore,
549
+ defaultConfidenceLevel: 0.95,
550
+ defaultMinSampleSize: 50,
551
+ });
552
+
553
+ const test = await abTesting.createTest({
554
+ agentId: 'agent-1',
555
+ name: 'Instruction Experiment',
556
+ controlInstructions: 'You are a helpful assistant.',
557
+ treatmentInstructions: 'You are an expert assistant. Be concise.',
558
+ treatmentAllocation: 0.5,
559
+ });
560
+
561
+ await abTesting.startTest(test.id);
562
+
563
+ const variant = abTesting.selectVariant(test);
564
+ const instructions = abTesting.getInstructionsForVariant(test, variant);
565
+
566
+ await abTesting.recordResult(test.id, variant, score, latency, cost);
567
+
568
+ const { test: completed, outcome } = await abTesting.completeTest(test.id);
569
+ console.log('Winner:', outcome.winner);
570
+ console.log('p-value:', outcome.pValue);
571
+ console.log('Effect size:', outcome.effectSize);
572
+ ```
573
+
574
+ ### Prompt Monitor
575
+
576
+ Real-time performance monitoring with degradation detection:
577
+
578
+ ```typescript
579
+ import { PromptMonitor } from '@cogitator-ai/core';
580
+
581
+ const monitor = new PromptMonitor({
582
+ windowSize: 60 * 60 * 1000,
583
+ scoreDropThreshold: 0.15,
584
+ latencySpikeThreshold: 2.0,
585
+ errorRateThreshold: 0.1,
586
+ enableAutoRollback: true,
587
+ onAlert: (alert) => {
588
+ console.log(`Alert: ${alert.type} (${alert.severity})`);
589
+ },
590
+ });
591
+
592
+ const alerts = monitor.recordExecution(trace);
593
+
594
+ const metrics = monitor.getCurrentMetrics('agent-1');
595
+ console.log('Avg score:', metrics.avgScore);
596
+ console.log('P95 latency:', metrics.p95Latency);
597
+ ```
598
+
599
+ ### Rollback Manager
600
+
601
+ Version control for agent instructions:
602
+
603
+ ```typescript
604
+ import { RollbackManager } from '@cogitator-ai/core';
605
+
606
+ const rollback = new RollbackManager({ store: versionStore });
607
+
608
+ const version = await rollback.deployVersion(
609
+ 'agent-1',
610
+ 'New optimized instructions',
611
+ 'optimization',
612
+ 'opt-run-123'
613
+ );
614
+
615
+ const result = await rollback.rollbackToPrevious('agent-1');
616
+ if (result.success) {
617
+ console.log('Rolled back to version:', result.previousVersion?.version);
618
+ }
619
+
620
+ const history = await rollback.getVersionHistory('agent-1', 10);
621
+ ```
622
+
623
+ ### Auto-Optimizer
624
+
625
+ Automated optimization pipeline with A/B testing and rollback:
626
+
627
+ ```typescript
628
+ import { AutoOptimizer } from '@cogitator-ai/core';
629
+
630
+ const optimizer = new AutoOptimizer({
631
+ enabled: true,
632
+ triggerAfterRuns: 100,
633
+ minRunsForOptimization: 20,
634
+ requireABTest: true,
635
+ maxOptimizationsPerDay: 3,
636
+ agentOptimizer,
637
+ abTesting,
638
+ monitor,
639
+ rollbackManager,
640
+ onOptimizationComplete: (run) => {
641
+ console.log('Optimization completed:', run.status);
642
+ },
643
+ onRollback: (agentId, reason) => {
644
+ console.log('Rollback triggered:', reason);
645
+ },
646
+ });
647
+
648
+ await optimizer.recordExecution(trace);
649
+ ```
650
+
651
+ ---
652
+
653
+ ## Time Travel Debugging
654
+
655
+ Checkpoint, replay, fork, and compare agent executions:
656
+
657
+ ```typescript
658
+ import { TimeTravel, InMemoryCheckpointStore } from '@cogitator-ai/core';
659
+
660
+ const timeTravel = new TimeTravel(cogitator);
661
+
662
+ const result = await cogitator.run(agent, { input: 'Original task...' });
663
+ const checkpoints = await timeTravel.checkpointAll(result, 'original');
664
+
665
+ const replayResult = await timeTravel.replayLive(agent, checkpoints[2].id);
666
+ console.log('Replayed from step 2:', replayResult.result.output);
667
+
668
+ const forkResult = await timeTravel.fork(agent, checkpoints[2].id, {
669
+ newInput: 'Modified task...',
670
+ });
671
+ console.log('Forked result:', forkResult.result.output);
672
+
673
+ const diff = await timeTravel.compareWithOriginal(forkResult);
674
+ console.log(timeTravel.formatDiff(diff));
675
+ ```
676
+
677
+ ### Forking Variants
678
+
679
+ ```typescript
680
+ const forkWithContext = await timeTravel.forkWithContext(
681
+ agent,
682
+ checkpointId,
683
+ 'Additional context: the user is an expert'
684
+ );
685
+
686
+ const forkWithMock = await timeTravel.forkWithMockedTool(agent, checkpointId, 'api_call', {
687
+ status: 'success',
688
+ data: 'mocked data',
689
+ });
690
+
691
+ const forkWithMocks = await timeTravel.forkWithMockedTools(agent, checkpointId, {
692
+ api_call: { status: 'success' },
693
+ database_query: { rows: [] },
694
+ });
695
+
696
+ const forkWithNewInput = await timeTravel.forkWithNewInput(
697
+ agent,
698
+ checkpointId,
699
+ 'Completely different task...'
700
+ );
701
+
702
+ const variants = await timeTravel.forkMultiple(agent, checkpointId, [
703
+ { newInput: 'Variant A' },
704
+ { newInput: 'Variant B' },
705
+ { additionalContext: 'Be more concise' },
706
+ ]);
707
+ ```
708
+
709
+ ### Replay Modes
710
+
711
+ ```typescript
712
+ const deterministicReplay = await timeTravel.replayDeterministic(agent, checkpointId);
713
+
714
+ const liveReplay = await timeTravel.replayLive(agent, checkpointId, {
715
+ maxSteps: 5,
716
+ });
717
+ ```
718
+
719
+ ---
720
+
721
+ ## Causal Reasoning
722
+
723
+ Full causal reasoning framework implementing Pearl's Ladder of Causation:
724
+
725
+ - **Level 1 (Association)**: Observational queries P(Y|X)
726
+ - **Level 2 (Intervention)**: do-calculus P(Y|do(X))
727
+ - **Level 3 (Counterfactual)**: "What if" queries P(Y_x|X', Y')
728
+
729
+ ### Building Causal Graphs
730
+
731
+ ```typescript
732
+ import { CausalGraphBuilder, CausalInferenceEngine } from '@cogitator-ai/core';
733
+
734
+ const graph = CausalGraphBuilder.create('medical-study')
735
+ .treatment('X', 'Drug Treatment')
736
+ .outcome('Y', 'Recovery')
737
+ .confounder('Z', 'Age')
738
+ .from('Z')
739
+ .causes('X')
740
+ .from('Z')
741
+ .causes('Y')
742
+ .from('X')
743
+ .causes('Y', { strength: 0.8 })
744
+ .build();
745
+
746
+ const engine = new CausalInferenceEngine(graph);
747
+ ```
748
+
749
+ ### Effect Identification
750
+
751
+ ```typescript
752
+ const identifiable = engine.isIdentifiable('X', 'Y');
753
+ if (identifiable.identifiable) {
754
+ console.log('Effect is identifiable via:', identifiable.method);
755
+ console.log('Adjustment set:', identifiable.adjustmentSet);
756
+ }
757
+ ```
758
+
759
+ ### Interventional Queries
760
+
761
+ ```typescript
762
+ const effect = engine.computeInterventionalEffect({
763
+ target: 'Y',
764
+ interventions: { X: 1 },
765
+ observed: { Z: 0.5 },
766
+ });
767
+
768
+ console.log('Expected effect:', effect.effect);
769
+ console.log('Confidence:', effect.confidence);
770
+ ```
771
+
772
+ ### Counterfactual Reasoning
773
+
774
+ ```typescript
775
+ import { evaluateCounterfactual } from '@cogitator-ai/core';
776
+
777
+ const result = evaluateCounterfactual(graph, {
778
+ target: 'Y',
779
+ intervention: { X: 1 },
780
+ factual: { X: 0, Y: 0.2 },
781
+ question: 'What would Y be if X was 1?',
782
+ });
783
+
784
+ console.log('Factual value:', result.factualValue);
785
+ console.log('Counterfactual value:', result.counterfactualValue);
786
+ ```
787
+
788
+ ### D-Separation Analysis
789
+
790
+ ```typescript
791
+ import { dSeparation, findBackdoorAdjustment } from '@cogitator-ai/core';
792
+
793
+ const separated = dSeparation(graph, 'X', 'Y', ['Z']);
794
+ console.log('D-separated:', separated.separated);
795
+
796
+ const backdoor = findBackdoorAdjustment(graph, 'X', 'Y');
797
+ if (backdoor?.isValid) {
798
+ console.log('Backdoor adjustment set:', backdoor.variables);
799
+ }
800
+ ```
801
+
802
+ ### Causal Discovery from Traces
803
+
804
+ ```typescript
805
+ import { CausalExtractor, CausalHypothesisGenerator } from '@cogitator-ai/core';
806
+
807
+ const extractor = new CausalExtractor({ llmBackend: backend });
808
+
809
+ const relations = await extractor.extractFromToolResult(
810
+ { name: 'database_query', arguments: { table: 'users' } },
811
+ { rows: 100, cached: true },
812
+ { agentId: 'agent-1' }
813
+ );
814
+
815
+ const generator = new CausalHypothesisGenerator({ llmBackend: backend });
816
+ const hypotheses = await generator.generateFromFailure(trace, { agentId: 'agent-1' });
68
817
  ```
69
818
 
70
- ## Documentation
819
+ ---
820
+
821
+ ## Error Handling & Resilience
822
+
823
+ ### Retry with Backoff
824
+
825
+ ```typescript
826
+ import { withRetry, retryable } from '@cogitator-ai/core';
827
+
828
+ const result = await withRetry(() => unreliableApiCall(), {
829
+ maxRetries: 5,
830
+ baseDelay: 1000,
831
+ maxDelay: 30000,
832
+ backoff: 'exponential',
833
+ jitter: 0.1,
834
+ onRetry: (error, attempt, delay) => {
835
+ console.log(`Retry ${attempt} after ${delay}ms: ${error.message}`);
836
+ },
837
+ });
838
+
839
+ const retryableFetch = retryable(fetch, { maxRetries: 3 });
840
+ const response = await retryableFetch('https://api.example.com');
841
+ ```
842
+
843
+ ### Circuit Breaker
844
+
845
+ ```typescript
846
+ import { CircuitBreaker, CircuitBreakerRegistry } from '@cogitator-ai/core';
847
+
848
+ const breaker = new CircuitBreaker({
849
+ threshold: 5,
850
+ resetTimeout: 30000,
851
+ successThreshold: 2,
852
+ });
853
+
854
+ if (breaker.canExecute()) {
855
+ try {
856
+ const result = await riskyOperation();
857
+ breaker.recordSuccess();
858
+ } catch (error) {
859
+ breaker.recordFailure();
860
+ throw error;
861
+ }
862
+ }
863
+
864
+ breaker.onStateChange((state) => {
865
+ console.log('Circuit state:', state);
866
+ });
867
+ ```
868
+
869
+ ### Fallback Patterns
870
+
871
+ ```typescript
872
+ import {
873
+ withFallback,
874
+ withGracefulDegradation,
875
+ createLLMFallbackExecutor,
876
+ } from '@cogitator-ai/core';
877
+
878
+ const result = await withFallback(
879
+ () => primaryCall(),
880
+ () => fallbackCall()
881
+ );
882
+
883
+ const degraded = await withGracefulDegradation(
884
+ () => fullFeatureCall(),
885
+ [() => reducedFeatureCall(), () => minimalCall(), () => cachedResult()]
886
+ );
887
+
888
+ const llmExecutor = createLLMFallbackExecutor([
889
+ { provider: 'openai', model: 'gpt-4o' },
890
+ { provider: 'anthropic', model: 'claude-sonnet-4-20250514' },
891
+ { provider: 'ollama', model: 'llama3.2:70b' },
892
+ ]);
893
+ const response = await llmExecutor.chat(request);
894
+ ```
895
+
896
+ ---
897
+
898
+ ## Logging
899
+
900
+ ```typescript
901
+ import { Logger, getLogger, setLogger, createLogger } from '@cogitator-ai/core';
902
+
903
+ const logger = createLogger({
904
+ level: 'debug',
905
+ prefix: '[MyApp]',
906
+ timestamps: true,
907
+ });
908
+
909
+ setLogger(logger);
910
+
911
+ getLogger().info('Agent started', { agentId: agent.id });
912
+ getLogger().debug('Tool call', { tool: 'calculator', args: { expression: '2+2' } });
913
+ getLogger().warn('Rate limited', { retryAfter: 60 });
914
+ getLogger().error('Failed', { error: 'Connection timeout' });
915
+ ```
916
+
917
+ ---
918
+
919
+ ## Type Reference
920
+
921
+ ### Core Types
922
+
923
+ ```typescript
924
+ import type {
925
+ Agent,
926
+ AgentConfig,
927
+ Tool,
928
+ ToolConfig,
929
+ ToolContext,
930
+ Message,
931
+ MessageRole,
932
+ ToolCall,
933
+ ToolResult,
934
+ CogitatorConfig,
935
+ RunOptions,
936
+ RunResult,
937
+ Span,
938
+ } from '@cogitator-ai/core';
939
+ ```
940
+
941
+ ### LLM Types
942
+
943
+ ```typescript
944
+ import type {
945
+ LLMBackend,
946
+ LLMProvider,
947
+ LLMConfig,
948
+ ChatRequest,
949
+ ChatResponse,
950
+ ChatStreamChunk,
951
+ } from '@cogitator-ai/core';
952
+ ```
953
+
954
+ ### Reasoning Types
955
+
956
+ ```typescript
957
+ import type {
958
+ ToTConfig,
959
+ ToTResult,
960
+ ToTStats,
961
+ ThoughtTree,
962
+ ThoughtNode,
963
+ ThoughtBranch,
964
+ BranchScore,
965
+ ExplorationStrategy,
966
+ } from '@cogitator-ai/core';
967
+ ```
968
+
969
+ ### Learning Types
970
+
971
+ ```typescript
972
+ import type {
973
+ ExecutionTrace,
974
+ ExecutionStep,
975
+ TraceStore,
976
+ Demo,
977
+ MetricFn,
978
+ MetricResult,
979
+ OptimizerConfig,
980
+ OptimizationResult,
981
+ } from '@cogitator-ai/core';
982
+ ```
983
+
984
+ ### Time Travel Types
985
+
986
+ ```typescript
987
+ import type {
988
+ ExecutionCheckpoint,
989
+ ReplayOptions,
990
+ ReplayResult,
991
+ ForkOptions,
992
+ ForkResult,
993
+ TraceDiff,
994
+ TimeTravelConfig,
995
+ } from '@cogitator-ai/core';
996
+ ```
997
+
998
+ ### Causal Types
999
+
1000
+ ```typescript
1001
+ import type {
1002
+ CausalNode,
1003
+ CausalEdge,
1004
+ CausalGraph,
1005
+ CausalRelationType,
1006
+ InterventionQuery,
1007
+ CounterfactualQuery,
1008
+ CausalHypothesis,
1009
+ CausalEvidence,
1010
+ StructuralEquation,
1011
+ } from '@cogitator-ai/core';
1012
+ ```
1013
+
1014
+ ### Error Types
1015
+
1016
+ ```typescript
1017
+ import { CogitatorError, ErrorCode, isRetryableError, getRetryDelay } from '@cogitator-ai/core';
1018
+
1019
+ try {
1020
+ await riskyOperation();
1021
+ } catch (error) {
1022
+ if (error instanceof CogitatorError) {
1023
+ console.log('Code:', error.code);
1024
+ console.log('Retryable:', isRetryableError(error));
1025
+ console.log('Retry delay:', getRetryDelay(error, 1000));
1026
+ }
1027
+ }
1028
+ ```
1029
+
1030
+ ---
1031
+
1032
+ ## Examples
1033
+
1034
+ ### Research Agent with Memory
1035
+
1036
+ ```typescript
1037
+ import { Cogitator, Agent, tool } from '@cogitator-ai/core';
1038
+
1039
+ const webSearch = tool({
1040
+ name: 'web_search',
1041
+ description: 'Search the web',
1042
+ parameters: z.object({ query: z.string() }),
1043
+ execute: async ({ query }) => {
1044
+ return { results: await searchApi(query) };
1045
+ },
1046
+ });
1047
+
1048
+ const cog = new Cogitator({
1049
+ memory: { adapter: 'redis', redis: { url: 'redis://localhost:6379' } },
1050
+ reflection: { enabled: true },
1051
+ });
1052
+
1053
+ const researcher = new Agent({
1054
+ name: 'researcher',
1055
+ instructions: 'Research topics thoroughly using web search',
1056
+ model: 'openai/gpt-4o',
1057
+ tools: [webSearch],
1058
+ });
1059
+
1060
+ const result = await cog.run(researcher, {
1061
+ input: 'Research the latest AI developments',
1062
+ threadId: 'research-session-1',
1063
+ });
1064
+ ```
1065
+
1066
+ ### Streaming Response
1067
+
1068
+ ```typescript
1069
+ const result = await cog.run(agent, {
1070
+ input: 'Write a story about...',
1071
+ stream: true,
1072
+ onToken: (token) => process.stdout.write(token),
1073
+ });
1074
+ ```
1075
+
1076
+ ### Full Observability
1077
+
1078
+ ```typescript
1079
+ const result = await cog.run(agent, {
1080
+ input: 'Analyze this data...',
1081
+ onRunStart: ({ runId }) => console.log(`Run ${runId} started`),
1082
+ onToolCall: (call) => console.log(`Calling ${call.name}`),
1083
+ onToolResult: (result) => console.log(`Result: ${JSON.stringify(result.result)}`),
1084
+ onSpan: (span) => {
1085
+ console.log(`[${span.name}] ${span.duration}ms`);
1086
+ },
1087
+ onRunComplete: (result) => {
1088
+ console.log(`Cost: $${result.usage.cost.toFixed(4)}`);
1089
+ console.log(`Tokens: ${result.usage.totalTokens}`);
1090
+ },
1091
+ });
1092
+ ```
71
1093
 
72
- See the [Cogitator documentation](https://github.com/eL1fe/cogitator) for full API reference.
1094
+ ---
73
1095
 
74
1096
  ## License
75
1097