orkajs 1.4.0 → 1.4.1

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 (41) hide show
  1. package/dist/adapters/index.cjs +48 -0
  2. package/dist/adapters/index.cjs.map +1 -0
  3. package/dist/adapters/index.d.cts +9 -0
  4. package/dist/adapters/index.d.ts +9 -0
  5. package/dist/adapters/index.js +11 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/agent/hitl.cjs +3 -3
  8. package/dist/agent/hitl.js +1 -1
  9. package/dist/agent/index.cjs +3 -3
  10. package/dist/agent/index.js +1 -1
  11. package/dist/{chunk-BW7QJF67.cjs → chunk-63TEGFF5.cjs} +2 -2
  12. package/dist/chunk-63TEGFF5.cjs.map +1 -0
  13. package/dist/chunk-6O3SGRJD.js +3 -0
  14. package/dist/chunk-6O3SGRJD.js.map +1 -0
  15. package/dist/{chunk-YHRCEYN3.js → chunk-KU4GDIRA.js} +2 -2
  16. package/dist/chunk-KU4GDIRA.js.map +1 -0
  17. package/dist/{chunk-QDXZUIBC.cjs → chunk-MKE26MIX.cjs} +5 -5
  18. package/dist/{chunk-QDXZUIBC.cjs.map → chunk-MKE26MIX.cjs.map} +1 -1
  19. package/dist/chunk-RZWLJNUN.cjs +4 -0
  20. package/dist/chunk-RZWLJNUN.cjs.map +1 -0
  21. package/dist/{chunk-5DZJHA4Q.cjs → chunk-VO5LID5M.cjs} +3 -3
  22. package/dist/{chunk-5DZJHA4Q.cjs.map → chunk-VO5LID5M.cjs.map} +1 -1
  23. package/dist/{chunk-3XELDGJA.js → chunk-YS3FWRRV.js} +3 -3
  24. package/dist/{chunk-3XELDGJA.js.map → chunk-YS3FWRRV.js.map} +1 -1
  25. package/dist/{chunk-CNXNVDEM.js → chunk-ZH26JQ5G.js} +4 -4
  26. package/dist/{chunk-CNXNVDEM.js.map → chunk-ZH26JQ5G.js.map} +1 -1
  27. package/dist/core/index.cjs +42 -0
  28. package/dist/core/index.cjs.map +1 -0
  29. package/dist/core/index.d.cts +18 -0
  30. package/dist/core/index.d.ts +18 -0
  31. package/dist/core/index.js +17 -0
  32. package/dist/core/index.js.map +1 -0
  33. package/dist/core/orka.cjs +6 -6
  34. package/dist/core/orka.js +4 -4
  35. package/dist/evaluation/test-runner.cjs +3 -3
  36. package/dist/evaluation/test-runner.js +2 -2
  37. package/dist/index.cjs +44 -43
  38. package/dist/index.js +9 -8
  39. package/package.json +1 -1
  40. package/dist/chunk-BW7QJF67.cjs.map +0 -1
  41. package/dist/chunk-YHRCEYN3.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ require('../chunk-RZWLJNUN.cjs');
4
+ var chunk3A7BCCAI_cjs = require('../chunk-3A7BCCAI.cjs');
5
+ var chunkRDA76ELY_cjs = require('../chunk-RDA76ELY.cjs');
6
+ var chunkWS6ZI7WT_cjs = require('../chunk-WS6ZI7WT.cjs');
7
+ var chunkH6XXZYT7_cjs = require('../chunk-H6XXZYT7.cjs');
8
+ var chunk7CS4NTB4_cjs = require('../chunk-7CS4NTB4.cjs');
9
+ var chunkNWRGL5BX_cjs = require('../chunk-NWRGL5BX.cjs');
10
+ var chunkJCUAZYXS_cjs = require('../chunk-JCUAZYXS.cjs');
11
+ var chunkKXVNH7ZX_cjs = require('../chunk-KXVNH7ZX.cjs');
12
+
13
+
14
+
15
+ Object.defineProperty(exports, "AnthropicAdapter", {
16
+ enumerable: true,
17
+ get: function () { return chunk3A7BCCAI_cjs.AnthropicAdapter; }
18
+ });
19
+ Object.defineProperty(exports, "PineconeAdapter", {
20
+ enumerable: true,
21
+ get: function () { return chunkRDA76ELY_cjs.PineconeAdapter; }
22
+ });
23
+ Object.defineProperty(exports, "QdrantAdapter", {
24
+ enumerable: true,
25
+ get: function () { return chunkWS6ZI7WT_cjs.QdrantAdapter; }
26
+ });
27
+ Object.defineProperty(exports, "MemoryVectorAdapter", {
28
+ enumerable: true,
29
+ get: function () { return chunkH6XXZYT7_cjs.MemoryVectorAdapter; }
30
+ });
31
+ Object.defineProperty(exports, "MistralAdapter", {
32
+ enumerable: true,
33
+ get: function () { return chunk7CS4NTB4_cjs.MistralAdapter; }
34
+ });
35
+ Object.defineProperty(exports, "OllamaAdapter", {
36
+ enumerable: true,
37
+ get: function () { return chunkNWRGL5BX_cjs.OllamaAdapter; }
38
+ });
39
+ Object.defineProperty(exports, "ChromaAdapter", {
40
+ enumerable: true,
41
+ get: function () { return chunkJCUAZYXS_cjs.ChromaAdapter; }
42
+ });
43
+ Object.defineProperty(exports, "OpenAIAdapter", {
44
+ enumerable: true,
45
+ get: function () { return chunkKXVNH7ZX_cjs.OpenAIAdapter; }
46
+ });
47
+ //# sourceMappingURL=index.cjs.map
48
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,9 @@
1
+ export { OpenAIAdapter, OpenAIAdapterConfig } from './openai.cjs';
2
+ export { AnthropicAdapter, AnthropicAdapterConfig } from './anthropic.cjs';
3
+ export { MistralAdapter, MistralAdapterConfig } from './mistral.cjs';
4
+ export { OllamaAdapter, OllamaAdapterConfig } from './ollama.cjs';
5
+ export { MemoryVectorAdapter } from './memory.cjs';
6
+ export { PineconeAdapter, PineconeAdapterConfig } from './pinecone.cjs';
7
+ export { QdrantAdapter, QdrantAdapterConfig } from './qdrant.cjs';
8
+ export { ChromaAdapter, ChromaAdapterConfig } from './chroma.cjs';
9
+ import '../types/index.cjs';
@@ -0,0 +1,9 @@
1
+ export { OpenAIAdapter, OpenAIAdapterConfig } from './openai.js';
2
+ export { AnthropicAdapter, AnthropicAdapterConfig } from './anthropic.js';
3
+ export { MistralAdapter, MistralAdapterConfig } from './mistral.js';
4
+ export { OllamaAdapter, OllamaAdapterConfig } from './ollama.js';
5
+ export { MemoryVectorAdapter } from './memory.js';
6
+ export { PineconeAdapter, PineconeAdapterConfig } from './pinecone.js';
7
+ export { QdrantAdapter, QdrantAdapterConfig } from './qdrant.js';
8
+ export { ChromaAdapter, ChromaAdapterConfig } from './chroma.js';
9
+ import '../types/index.js';
@@ -0,0 +1,11 @@
1
+ import '../chunk-6O3SGRJD.js';
2
+ export { AnthropicAdapter } from '../chunk-UJLSWZZJ.js';
3
+ export { PineconeAdapter } from '../chunk-5HKDN5OM.js';
4
+ export { QdrantAdapter } from '../chunk-JRNGDZZB.js';
5
+ export { MemoryVectorAdapter } from '../chunk-P3SJRGOA.js';
6
+ export { MistralAdapter } from '../chunk-Z67QS23K.js';
7
+ export { OllamaAdapter } from '../chunk-NXJHLGFP.js';
8
+ export { ChromaAdapter } from '../chunk-HK6VWJ6T.js';
9
+ export { OpenAIAdapter } from '../chunk-CFJ5UTGH.js';
10
+ //# sourceMappingURL=index.js.map
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkBW7QJF67_cjs = require('../chunk-BW7QJF67.cjs');
3
+ var chunk63TEGFF5_cjs = require('../chunk-63TEGFF5.cjs');
4
4
  require('../chunk-HW4O3SWN.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "HITLAgent", {
9
9
  enumerable: true,
10
- get: function () { return chunkBW7QJF67_cjs.HITLAgent; }
10
+ get: function () { return chunk63TEGFF5_cjs.HITLAgent; }
11
11
  });
12
12
  Object.defineProperty(exports, "MemoryCheckpointStore", {
13
13
  enumerable: true,
14
- get: function () { return chunkBW7QJF67_cjs.MemoryCheckpointStore; }
14
+ get: function () { return chunk63TEGFF5_cjs.MemoryCheckpointStore; }
15
15
  });
16
16
  //# sourceMappingURL=hitl.cjs.map
17
17
  //# sourceMappingURL=hitl.cjs.map
@@ -1,4 +1,4 @@
1
- export { HITLAgent, MemoryCheckpointStore } from '../chunk-YHRCEYN3.js';
1
+ export { HITLAgent, MemoryCheckpointStore } from '../chunk-KU4GDIRA.js';
2
2
  import '../chunk-QQAP3IF5.js';
3
3
  //# sourceMappingURL=hitl.js.map
4
4
  //# sourceMappingURL=hitl.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkBW7QJF67_cjs = require('../chunk-BW7QJF67.cjs');
3
+ var chunk63TEGFF5_cjs = require('../chunk-63TEGFF5.cjs');
4
4
  var chunkYTFRKPLP_cjs = require('../chunk-YTFRKPLP.cjs');
5
5
  var chunkY5EM3P55_cjs = require('../chunk-Y5EM3P55.cjs');
6
6
  var chunk5PY2DAI6_cjs = require('../chunk-5PY2DAI6.cjs');
@@ -14,11 +14,11 @@ var chunkHW4O3SWN_cjs = require('../chunk-HW4O3SWN.cjs');
14
14
 
15
15
  Object.defineProperty(exports, "HITLAgent", {
16
16
  enumerable: true,
17
- get: function () { return chunkBW7QJF67_cjs.HITLAgent; }
17
+ get: function () { return chunk63TEGFF5_cjs.HITLAgent; }
18
18
  });
19
19
  Object.defineProperty(exports, "MemoryCheckpointStore", {
20
20
  enumerable: true,
21
- get: function () { return chunkBW7QJF67_cjs.MemoryCheckpointStore; }
21
+ get: function () { return chunk63TEGFF5_cjs.MemoryCheckpointStore; }
22
22
  });
23
23
  Object.defineProperty(exports, "Agent", {
24
24
  enumerable: true,
@@ -1,4 +1,4 @@
1
- export { HITLAgent, MemoryCheckpointStore } from '../chunk-YHRCEYN3.js';
1
+ export { HITLAgent, MemoryCheckpointStore } from '../chunk-KU4GDIRA.js';
2
2
  export { Agent } from '../chunk-37ZKQRCK.js';
3
3
  export { SQLToolkit } from '../chunk-EHRXFND7.js';
4
4
  export { CSVToolkit } from '../chunk-XENO7X2J.js';
@@ -331,5 +331,5 @@ Question: ${input}
331
331
 
332
332
  exports.HITLAgent = HITLAgent;
333
333
  exports.MemoryCheckpointStore = MemoryCheckpointStore;
334
- //# sourceMappingURL=chunk-BW7QJF67.cjs.map
335
- //# sourceMappingURL=chunk-BW7QJF67.cjs.map
334
+ //# sourceMappingURL=chunk-63TEGFF5.cjs.map
335
+ //# sourceMappingURL=chunk-63TEGFF5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/hitl/memory-checkpoint-store.ts","../src/agent/hitl/hitl-agent.ts"],"names":["BaseAgent","crypto"],"mappings":"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","file":"chunk-63TEGFF5.cjs","sourcesContent":["import type { Checkpoint, CheckpointStore } from './types.js';\n\nexport class MemoryCheckpointStore implements CheckpointStore {\n private checkpoints: Map<string, Checkpoint> = new Map();\n private agentCheckpoints: Map<string, string[]> = new Map();\n\n async save(checkpoint: Checkpoint): Promise<void> {\n this.checkpoints.set(checkpoint.id, checkpoint);\n\n const agentList = this.agentCheckpoints.get(checkpoint.agentId) ?? [];\n if (!agentList.includes(checkpoint.id)) {\n agentList.push(checkpoint.id);\n this.agentCheckpoints.set(checkpoint.agentId, agentList);\n }\n }\n\n async load(checkpointId: string): Promise<Checkpoint | null> {\n return this.checkpoints.get(checkpointId) ?? null;\n }\n\n async loadLatest(agentId: string): Promise<Checkpoint | null> {\n const agentList = this.agentCheckpoints.get(agentId);\n if (!agentList || agentList.length === 0) return null;\n\n const latestId = agentList[agentList.length - 1];\n return this.checkpoints.get(latestId) ?? null;\n }\n\n async list(agentId: string): Promise<Checkpoint[]> {\n const agentList = this.agentCheckpoints.get(agentId) ?? [];\n return agentList\n .map(id => this.checkpoints.get(id))\n .filter((cp): cp is Checkpoint => cp !== undefined);\n }\n\n async delete(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.get(checkpointId);\n if (checkpoint) {\n this.checkpoints.delete(checkpointId);\n const agentList = this.agentCheckpoints.get(checkpoint.agentId);\n if (agentList) {\n const idx = agentList.indexOf(checkpointId);\n if (idx !== -1) agentList.splice(idx, 1);\n }\n }\n }\n\n clear(): void {\n this.checkpoints.clear();\n this.agentCheckpoints.clear();\n }\n}\n","import crypto from 'crypto';\nimport type { LLMAdapter } from '../../types/index.js';\nimport type { Memory } from '../../memory/memory.js';\nimport type { AgentStepResult } from '../types.js';\nimport { BaseAgent } from '../base-agent.js';\nimport type {\n HITLAgentConfig,\n HITLAgentResult,\n HITLConfig,\n InterruptRequest,\n InterruptResponse,\n InterruptData,\n InterruptReason,\n Checkpoint,\n CheckpointState,\n CheckpointStep,\n} from './types.js';\nimport { MemoryCheckpointStore } from './memory-checkpoint-store.js';\n\nexport class HITLAgent extends BaseAgent {\n private verbose: boolean;\n private hitlConfig: HITLConfig;\n private agentId: string;\n private interrupts: InterruptResponse[] = [];\n private checkpointIds: string[] = [];\n\n constructor(config: HITLAgentConfig, llm: LLMAdapter, memory?: Memory) {\n super(config, llm, memory, 'hitl');\n this.verbose = config.verbose ?? false;\n this.hitlConfig = config.hitl;\n this.agentId = config.name ?? this.generateId();\n \n if (!this.hitlConfig.checkpointStore) {\n this.hitlConfig.checkpointStore = new MemoryCheckpointStore();\n }\n }\n\n async run(input: string, resumeFromCheckpoint?: string): Promise<HITLAgentResult> {\n const startTime = Date.now();\n let steps: AgentStepResult[] = [];\n let startStep = 0;\n let resumedFromCheckpoint: string | undefined;\n\n if (resumeFromCheckpoint) {\n const checkpoint = await this.hitlConfig.checkpointStore?.load(resumeFromCheckpoint);\n if (checkpoint) {\n steps = checkpoint.state.steps.map(s => ({\n ...s,\n latencyMs: 0,\n }));\n startStep = checkpoint.stepNumber;\n resumedFromCheckpoint = checkpoint.id;\n if (this.verbose) {\n console.log(`[HITL] Resumed from checkpoint ${checkpoint.id} at step ${startStep}`);\n }\n }\n }\n\n this.interrupts = [];\n this.checkpointIds = [];\n const memoryContext = this.getMemoryContext();\n\n this.emit({ type: 'step:start', agentType: this.agentType, input });\n\n for (let step = startStep; step < this.maxSteps; step++) {\n const stepStart = Date.now();\n const prompt = this.buildPrompt(input, steps, memoryContext);\n\n const result = await this.llm.generate(prompt, {\n temperature: this.temperature,\n maxTokens: 2048,\n systemPrompt: this.buildSystemPrompt(),\n });\n\n const parsed = this.parseResponse(result.content);\n\n if (this.verbose) {\n console.log(`[HITL Step ${step + 1}]`);\n console.log(` Thought: ${parsed.thought}`);\n console.log(` Action: ${parsed.action}`);\n console.log(` Action Input: ${JSON.stringify(parsed.actionInput)}`);\n }\n\n if (parsed.action === 'finish') {\n const finalAnswer = (parsed.actionInput.answer as string) ?? parsed.thought;\n this.saveToMemory(input, finalAnswer);\n this.emit({ type: 'complete', agentType: this.agentType, output: finalAnswer });\n\n return this.buildHITLResult(input, finalAnswer, steps, startTime, resumedFromCheckpoint);\n }\n\n const shouldCheckpoint = this.hitlConfig.checkpointEvery && \n (step + 1) % this.hitlConfig.checkpointEvery === 0;\n\n if (shouldCheckpoint) {\n await this.createCheckpoint(input, steps, step);\n }\n\n const approvalResult = await this.handleToolApproval(parsed.action, parsed.actionInput, step, parsed.thought);\n \n if (approvalResult.status === 'rejected') {\n const rejectionMessage = `Tool \"${parsed.action}\" was rejected by human reviewer. Feedback: ${approvalResult.feedback ?? 'No feedback provided'}`;\n \n steps.push({\n thought: parsed.thought,\n action: parsed.action,\n actionInput: parsed.actionInput,\n observation: rejectionMessage,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: rejectionMessage });\n continue;\n }\n\n const toolName = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolName\n ? approvalResult.modifiedData.toolName\n : parsed.action;\n \n const toolInput = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolInput\n ? approvalResult.modifiedData.toolInput\n : parsed.actionInput;\n\n const observation = await this.executeTool(toolName, toolInput);\n\n if (this.verbose) {\n console.log(` Observation: ${observation.slice(0, 200)}`);\n }\n\n steps.push({\n thought: parsed.thought,\n action: toolName,\n actionInput: toolInput,\n observation,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: observation });\n }\n\n const fallback = steps.length > 0\n ? `Reached max steps (${this.maxSteps}). Last observations:\\n${steps.slice(-3).map(s => s.observation).join('\\n')}`\n : 'Unable to process request.';\n\n this.saveToMemory(input, fallback);\n return this.buildHITLResult(input, fallback, steps, startTime, resumedFromCheckpoint, true);\n }\n\n async interrupt(\n reason: InterruptReason,\n message: string,\n data: InterruptData = {},\n ): Promise<InterruptResponse> {\n if (!this.hitlConfig.onInterrupt) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const request: InterruptRequest = {\n id: this.generateId(),\n agentId: this.agentId,\n reason,\n message,\n data,\n createdAt: new Date(),\n timeoutMs: this.hitlConfig.defaultTimeoutMs,\n };\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt requested: ${reason} - ${message}`);\n }\n\n const response = await this.hitlConfig.onInterrupt(request);\n this.interrupts.push(response);\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt response: ${response.status}`);\n }\n\n return response;\n }\n\n async requestConfirmation(message: string, context?: Record<string, unknown>): Promise<InterruptResponse> {\n return this.interrupt('confirmation', message, { context });\n }\n\n async requestReview(message: string, stepNumber: number, thought: string): Promise<InterruptResponse> {\n return this.interrupt('review', message, { stepNumber, thought });\n }\n\n private async handleToolApproval(\n toolName: string,\n toolInput: Record<string, unknown>,\n stepNumber: number,\n thought: string,\n ): Promise<InterruptResponse> {\n if (this.hitlConfig.autoApproveTools?.includes(toolName)) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const requiresApproval = this.hitlConfig.requireApprovalFor?.includes(toolName) ||\n (this.hitlConfig.requireApprovalFor?.includes('*') && !this.hitlConfig.autoApproveTools?.includes(toolName));\n\n if (!requiresApproval) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n return this.interrupt('tool_approval', `Approve tool \"${toolName}\"?`, {\n toolName,\n toolInput,\n stepNumber,\n thought,\n });\n }\n\n private async createCheckpoint(input: string, steps: AgentStepResult[], stepNumber: number): Promise<void> {\n const checkpointSteps: CheckpointStep[] = steps.map(s => ({\n thought: s.thought,\n action: s.action,\n actionInput: s.actionInput,\n observation: s.observation,\n }));\n\n const state: CheckpointState = {\n input,\n steps: checkpointSteps,\n context: {},\n };\n\n const checkpoint: Checkpoint = {\n id: this.generateId(),\n agentId: this.agentId,\n stepNumber,\n state,\n createdAt: new Date(),\n };\n\n await this.hitlConfig.checkpointStore?.save(checkpoint);\n this.checkpointIds.push(checkpoint.id);\n\n if (this.verbose) {\n console.log(`[HITL] Checkpoint created: ${checkpoint.id} at step ${stepNumber}`);\n }\n\n await this.interrupt('checkpoint', `Checkpoint created at step ${stepNumber}`, {\n stepNumber,\n context: { checkpointId: checkpoint.id },\n });\n }\n\n async getCheckpoints(): Promise<Checkpoint[]> {\n return this.hitlConfig.checkpointStore?.list(this.agentId) ?? [];\n }\n\n async loadCheckpoint(checkpointId: string): Promise<Checkpoint | null> {\n return this.hitlConfig.checkpointStore?.load(checkpointId) ?? null;\n }\n\n private buildHITLResult(\n input: string,\n output: string,\n steps: AgentStepResult[],\n startTime: number,\n resumedFromCheckpoint?: string,\n maxStepsReached = false,\n ): HITLAgentResult {\n const baseResult = this.buildResult(input, output, steps, startTime, { maxStepsReached });\n \n return {\n ...baseResult,\n interrupts: this.interrupts,\n checkpoints: this.checkpointIds,\n wasInterrupted: this.interrupts.length > 0,\n resumedFromCheckpoint,\n };\n }\n\n private buildSystemPrompt(): string {\n const toolDescriptions = this.getToolDescriptions();\n const rules = this.getRulesString();\n\n return `You are an AI agent with human-in-the-loop capabilities. Your goal: ${this.goal}\n\nYou follow a structured reasoning pattern:\n1. THINK about what you need to do\n2. ACT by using a tool (some tools may require human approval)\n3. OBSERVE the result\n4. REPEAT until you can provide a final answer\n\nAvailable tools:\n${toolDescriptions}\n\n${rules ? `Rules:\\n${rules}\\n` : ''}\nYou MUST respond in this EXACT format:\n\nThought: <your step-by-step reasoning about what to do next>\nAction: <tool_name>\nAction Input: <JSON object with tool parameters>\n\nWhen you have enough information to answer, use:\nThought: <your final reasoning>\nAction: finish\nAction Input: {\"answer\": \"<your comprehensive final answer>\"}\n\n${this.systemPrompt ?? ''}`;\n }\n\n private buildPrompt(input: string, steps: AgentStepResult[], memoryContext: string): string {\n let prompt = `${memoryContext}\\nQuestion: ${input}\\n`;\n\n if (steps.length > 0) {\n prompt += '\\n';\n for (const step of steps) {\n prompt += `Thought: ${step.thought}\\n`;\n prompt += `Action: ${step.action}\\n`;\n prompt += `Action Input: ${JSON.stringify(step.actionInput)}\\n`;\n prompt += `Observation: ${step.observation}\\n\\n`;\n }\n }\n\n return prompt;\n }\n\n private parseResponse(content: string): { thought: string; action: string; actionInput: Record<string, unknown> } {\n const thoughtMatch = content.match(/Thought:\\s*(.*?)(?=\\nAction:)/s);\n const actionMatch = content.match(/Action:\\s*(.*?)(?=\\nAction Input:)/s);\n const actionInputMatch = content.match(/Action Input:\\s*(.*)/s);\n\n const thought = thoughtMatch?.[1]?.trim() ?? content;\n const action = actionMatch?.[1]?.trim() ?? 'finish';\n\n let actionInput: Record<string, unknown> = {};\n if (actionInputMatch?.[1]) {\n actionInput = this.parseJsonFromText(actionInputMatch[1]);\n }\n\n if (action === 'finish' && !actionInput.answer) {\n actionInput.answer = thought;\n }\n\n return { thought, action, actionInput };\n }\n\n private generateId(): string {\n const timestamp = Date.now().toString(36);\n const random = crypto.randomBytes(4).toString('hex');\n return `${timestamp}-${random}`;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-6O3SGRJD.js.map
3
+ //# sourceMappingURL=chunk-6O3SGRJD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-6O3SGRJD.js"}
@@ -324,5 +324,5 @@ Question: ${input}
324
324
  };
325
325
 
326
326
  export { HITLAgent, MemoryCheckpointStore };
327
- //# sourceMappingURL=chunk-YHRCEYN3.js.map
328
- //# sourceMappingURL=chunk-YHRCEYN3.js.map
327
+ //# sourceMappingURL=chunk-KU4GDIRA.js.map
328
+ //# sourceMappingURL=chunk-KU4GDIRA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/hitl/memory-checkpoint-store.ts","../src/agent/hitl/hitl-agent.ts"],"names":[],"mappings":"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","file":"chunk-KU4GDIRA.js","sourcesContent":["import type { Checkpoint, CheckpointStore } from './types.js';\n\nexport class MemoryCheckpointStore implements CheckpointStore {\n private checkpoints: Map<string, Checkpoint> = new Map();\n private agentCheckpoints: Map<string, string[]> = new Map();\n\n async save(checkpoint: Checkpoint): Promise<void> {\n this.checkpoints.set(checkpoint.id, checkpoint);\n\n const agentList = this.agentCheckpoints.get(checkpoint.agentId) ?? [];\n if (!agentList.includes(checkpoint.id)) {\n agentList.push(checkpoint.id);\n this.agentCheckpoints.set(checkpoint.agentId, agentList);\n }\n }\n\n async load(checkpointId: string): Promise<Checkpoint | null> {\n return this.checkpoints.get(checkpointId) ?? null;\n }\n\n async loadLatest(agentId: string): Promise<Checkpoint | null> {\n const agentList = this.agentCheckpoints.get(agentId);\n if (!agentList || agentList.length === 0) return null;\n\n const latestId = agentList[agentList.length - 1];\n return this.checkpoints.get(latestId) ?? null;\n }\n\n async list(agentId: string): Promise<Checkpoint[]> {\n const agentList = this.agentCheckpoints.get(agentId) ?? [];\n return agentList\n .map(id => this.checkpoints.get(id))\n .filter((cp): cp is Checkpoint => cp !== undefined);\n }\n\n async delete(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.get(checkpointId);\n if (checkpoint) {\n this.checkpoints.delete(checkpointId);\n const agentList = this.agentCheckpoints.get(checkpoint.agentId);\n if (agentList) {\n const idx = agentList.indexOf(checkpointId);\n if (idx !== -1) agentList.splice(idx, 1);\n }\n }\n }\n\n clear(): void {\n this.checkpoints.clear();\n this.agentCheckpoints.clear();\n }\n}\n","import crypto from 'crypto';\nimport type { LLMAdapter } from '../../types/index.js';\nimport type { Memory } from '../../memory/memory.js';\nimport type { AgentStepResult } from '../types.js';\nimport { BaseAgent } from '../base-agent.js';\nimport type {\n HITLAgentConfig,\n HITLAgentResult,\n HITLConfig,\n InterruptRequest,\n InterruptResponse,\n InterruptData,\n InterruptReason,\n Checkpoint,\n CheckpointState,\n CheckpointStep,\n} from './types.js';\nimport { MemoryCheckpointStore } from './memory-checkpoint-store.js';\n\nexport class HITLAgent extends BaseAgent {\n private verbose: boolean;\n private hitlConfig: HITLConfig;\n private agentId: string;\n private interrupts: InterruptResponse[] = [];\n private checkpointIds: string[] = [];\n\n constructor(config: HITLAgentConfig, llm: LLMAdapter, memory?: Memory) {\n super(config, llm, memory, 'hitl');\n this.verbose = config.verbose ?? false;\n this.hitlConfig = config.hitl;\n this.agentId = config.name ?? this.generateId();\n \n if (!this.hitlConfig.checkpointStore) {\n this.hitlConfig.checkpointStore = new MemoryCheckpointStore();\n }\n }\n\n async run(input: string, resumeFromCheckpoint?: string): Promise<HITLAgentResult> {\n const startTime = Date.now();\n let steps: AgentStepResult[] = [];\n let startStep = 0;\n let resumedFromCheckpoint: string | undefined;\n\n if (resumeFromCheckpoint) {\n const checkpoint = await this.hitlConfig.checkpointStore?.load(resumeFromCheckpoint);\n if (checkpoint) {\n steps = checkpoint.state.steps.map(s => ({\n ...s,\n latencyMs: 0,\n }));\n startStep = checkpoint.stepNumber;\n resumedFromCheckpoint = checkpoint.id;\n if (this.verbose) {\n console.log(`[HITL] Resumed from checkpoint ${checkpoint.id} at step ${startStep}`);\n }\n }\n }\n\n this.interrupts = [];\n this.checkpointIds = [];\n const memoryContext = this.getMemoryContext();\n\n this.emit({ type: 'step:start', agentType: this.agentType, input });\n\n for (let step = startStep; step < this.maxSteps; step++) {\n const stepStart = Date.now();\n const prompt = this.buildPrompt(input, steps, memoryContext);\n\n const result = await this.llm.generate(prompt, {\n temperature: this.temperature,\n maxTokens: 2048,\n systemPrompt: this.buildSystemPrompt(),\n });\n\n const parsed = this.parseResponse(result.content);\n\n if (this.verbose) {\n console.log(`[HITL Step ${step + 1}]`);\n console.log(` Thought: ${parsed.thought}`);\n console.log(` Action: ${parsed.action}`);\n console.log(` Action Input: ${JSON.stringify(parsed.actionInput)}`);\n }\n\n if (parsed.action === 'finish') {\n const finalAnswer = (parsed.actionInput.answer as string) ?? parsed.thought;\n this.saveToMemory(input, finalAnswer);\n this.emit({ type: 'complete', agentType: this.agentType, output: finalAnswer });\n\n return this.buildHITLResult(input, finalAnswer, steps, startTime, resumedFromCheckpoint);\n }\n\n const shouldCheckpoint = this.hitlConfig.checkpointEvery && \n (step + 1) % this.hitlConfig.checkpointEvery === 0;\n\n if (shouldCheckpoint) {\n await this.createCheckpoint(input, steps, step);\n }\n\n const approvalResult = await this.handleToolApproval(parsed.action, parsed.actionInput, step, parsed.thought);\n \n if (approvalResult.status === 'rejected') {\n const rejectionMessage = `Tool \"${parsed.action}\" was rejected by human reviewer. Feedback: ${approvalResult.feedback ?? 'No feedback provided'}`;\n \n steps.push({\n thought: parsed.thought,\n action: parsed.action,\n actionInput: parsed.actionInput,\n observation: rejectionMessage,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: rejectionMessage });\n continue;\n }\n\n const toolName = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolName\n ? approvalResult.modifiedData.toolName\n : parsed.action;\n \n const toolInput = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolInput\n ? approvalResult.modifiedData.toolInput\n : parsed.actionInput;\n\n const observation = await this.executeTool(toolName, toolInput);\n\n if (this.verbose) {\n console.log(` Observation: ${observation.slice(0, 200)}`);\n }\n\n steps.push({\n thought: parsed.thought,\n action: toolName,\n actionInput: toolInput,\n observation,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: observation });\n }\n\n const fallback = steps.length > 0\n ? `Reached max steps (${this.maxSteps}). Last observations:\\n${steps.slice(-3).map(s => s.observation).join('\\n')}`\n : 'Unable to process request.';\n\n this.saveToMemory(input, fallback);\n return this.buildHITLResult(input, fallback, steps, startTime, resumedFromCheckpoint, true);\n }\n\n async interrupt(\n reason: InterruptReason,\n message: string,\n data: InterruptData = {},\n ): Promise<InterruptResponse> {\n if (!this.hitlConfig.onInterrupt) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const request: InterruptRequest = {\n id: this.generateId(),\n agentId: this.agentId,\n reason,\n message,\n data,\n createdAt: new Date(),\n timeoutMs: this.hitlConfig.defaultTimeoutMs,\n };\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt requested: ${reason} - ${message}`);\n }\n\n const response = await this.hitlConfig.onInterrupt(request);\n this.interrupts.push(response);\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt response: ${response.status}`);\n }\n\n return response;\n }\n\n async requestConfirmation(message: string, context?: Record<string, unknown>): Promise<InterruptResponse> {\n return this.interrupt('confirmation', message, { context });\n }\n\n async requestReview(message: string, stepNumber: number, thought: string): Promise<InterruptResponse> {\n return this.interrupt('review', message, { stepNumber, thought });\n }\n\n private async handleToolApproval(\n toolName: string,\n toolInput: Record<string, unknown>,\n stepNumber: number,\n thought: string,\n ): Promise<InterruptResponse> {\n if (this.hitlConfig.autoApproveTools?.includes(toolName)) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const requiresApproval = this.hitlConfig.requireApprovalFor?.includes(toolName) ||\n (this.hitlConfig.requireApprovalFor?.includes('*') && !this.hitlConfig.autoApproveTools?.includes(toolName));\n\n if (!requiresApproval) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n return this.interrupt('tool_approval', `Approve tool \"${toolName}\"?`, {\n toolName,\n toolInput,\n stepNumber,\n thought,\n });\n }\n\n private async createCheckpoint(input: string, steps: AgentStepResult[], stepNumber: number): Promise<void> {\n const checkpointSteps: CheckpointStep[] = steps.map(s => ({\n thought: s.thought,\n action: s.action,\n actionInput: s.actionInput,\n observation: s.observation,\n }));\n\n const state: CheckpointState = {\n input,\n steps: checkpointSteps,\n context: {},\n };\n\n const checkpoint: Checkpoint = {\n id: this.generateId(),\n agentId: this.agentId,\n stepNumber,\n state,\n createdAt: new Date(),\n };\n\n await this.hitlConfig.checkpointStore?.save(checkpoint);\n this.checkpointIds.push(checkpoint.id);\n\n if (this.verbose) {\n console.log(`[HITL] Checkpoint created: ${checkpoint.id} at step ${stepNumber}`);\n }\n\n await this.interrupt('checkpoint', `Checkpoint created at step ${stepNumber}`, {\n stepNumber,\n context: { checkpointId: checkpoint.id },\n });\n }\n\n async getCheckpoints(): Promise<Checkpoint[]> {\n return this.hitlConfig.checkpointStore?.list(this.agentId) ?? [];\n }\n\n async loadCheckpoint(checkpointId: string): Promise<Checkpoint | null> {\n return this.hitlConfig.checkpointStore?.load(checkpointId) ?? null;\n }\n\n private buildHITLResult(\n input: string,\n output: string,\n steps: AgentStepResult[],\n startTime: number,\n resumedFromCheckpoint?: string,\n maxStepsReached = false,\n ): HITLAgentResult {\n const baseResult = this.buildResult(input, output, steps, startTime, { maxStepsReached });\n \n return {\n ...baseResult,\n interrupts: this.interrupts,\n checkpoints: this.checkpointIds,\n wasInterrupted: this.interrupts.length > 0,\n resumedFromCheckpoint,\n };\n }\n\n private buildSystemPrompt(): string {\n const toolDescriptions = this.getToolDescriptions();\n const rules = this.getRulesString();\n\n return `You are an AI agent with human-in-the-loop capabilities. Your goal: ${this.goal}\n\nYou follow a structured reasoning pattern:\n1. THINK about what you need to do\n2. ACT by using a tool (some tools may require human approval)\n3. OBSERVE the result\n4. REPEAT until you can provide a final answer\n\nAvailable tools:\n${toolDescriptions}\n\n${rules ? `Rules:\\n${rules}\\n` : ''}\nYou MUST respond in this EXACT format:\n\nThought: <your step-by-step reasoning about what to do next>\nAction: <tool_name>\nAction Input: <JSON object with tool parameters>\n\nWhen you have enough information to answer, use:\nThought: <your final reasoning>\nAction: finish\nAction Input: {\"answer\": \"<your comprehensive final answer>\"}\n\n${this.systemPrompt ?? ''}`;\n }\n\n private buildPrompt(input: string, steps: AgentStepResult[], memoryContext: string): string {\n let prompt = `${memoryContext}\\nQuestion: ${input}\\n`;\n\n if (steps.length > 0) {\n prompt += '\\n';\n for (const step of steps) {\n prompt += `Thought: ${step.thought}\\n`;\n prompt += `Action: ${step.action}\\n`;\n prompt += `Action Input: ${JSON.stringify(step.actionInput)}\\n`;\n prompt += `Observation: ${step.observation}\\n\\n`;\n }\n }\n\n return prompt;\n }\n\n private parseResponse(content: string): { thought: string; action: string; actionInput: Record<string, unknown> } {\n const thoughtMatch = content.match(/Thought:\\s*(.*?)(?=\\nAction:)/s);\n const actionMatch = content.match(/Action:\\s*(.*?)(?=\\nAction Input:)/s);\n const actionInputMatch = content.match(/Action Input:\\s*(.*)/s);\n\n const thought = thoughtMatch?.[1]?.trim() ?? content;\n const action = actionMatch?.[1]?.trim() ?? 'finish';\n\n let actionInput: Record<string, unknown> = {};\n if (actionInputMatch?.[1]) {\n actionInput = this.parseJsonFromText(actionInputMatch[1]);\n }\n\n if (action === 'finish' && !actionInput.answer) {\n actionInput.answer = thought;\n }\n\n return { thought, action, actionInput };\n }\n\n private generateId(): string {\n const timestamp = Date.now().toString(36);\n const random = crypto.randomBytes(4).toString('hex');\n return `${timestamp}-${random}`;\n }\n}\n"]}
@@ -2,9 +2,9 @@
2
2
 
3
3
  var chunk2UTXL4UI_cjs = require('./chunk-2UTXL4UI.cjs');
4
4
  var chunkQBAICRFT_cjs = require('./chunk-QBAICRFT.cjs');
5
- var chunk5DZJHA4Q_cjs = require('./chunk-5DZJHA4Q.cjs');
6
- var chunk4NMX7YMQ_cjs = require('./chunk-4NMX7YMQ.cjs');
7
5
  var chunkSNXMGG75_cjs = require('./chunk-SNXMGG75.cjs');
6
+ var chunkVO5LID5M_cjs = require('./chunk-VO5LID5M.cjs');
7
+ var chunk4NMX7YMQ_cjs = require('./chunk-4NMX7YMQ.cjs');
8
8
  var chunkJOLXQZLP_cjs = require('./chunk-JOLXQZLP.cjs');
9
9
  var chunkG5C7KNJX_cjs = require('./chunk-G5C7KNJX.cjs');
10
10
  var chunkXAKPLGNG_cjs = require('./chunk-XAKPLGNG.cjs');
@@ -174,7 +174,7 @@ var Orka = class {
174
174
  * @returns Test suite report
175
175
  */
176
176
  async test(config) {
177
- const runner = new chunk5DZJHA4Q_cjs.TestRunner(this);
177
+ const runner = new chunkVO5LID5M_cjs.TestRunner(this);
178
178
  return runner.run(config);
179
179
  }
180
180
  /**
@@ -221,5 +221,5 @@ function createOrka(config) {
221
221
 
222
222
  exports.Orka = Orka;
223
223
  exports.createOrka = createOrka;
224
- //# sourceMappingURL=chunk-QDXZUIBC.cjs.map
225
- //# sourceMappingURL=chunk-QDXZUIBC.cjs.map
224
+ //# sourceMappingURL=chunk-MKE26MIX.cjs.map
225
+ //# sourceMappingURL=chunk-MKE26MIX.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/orka.ts"],"names":["Knowledge","Tracer","PromptRegistry","Memory","Workflow","Agent","Evaluator","SessionMemory","GraphWorkflow","TestRunner"],"mappings":"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","file":"chunk-QDXZUIBC.cjs","sourcesContent":["import type { \n OrkaConfig, \n AskOptions, \n AskResult,\n RetrievedContext,\n LLMAdapter,\n VectorDBAdapter,\n DatabaseAdapter,\n OrkaDefaults\n} from '../types/index.js';\nimport { Knowledge } from './knowledge.js';\nimport { Workflow } from '../workflow/workflow.js';\nimport type { WorkflowConfig } from '../workflow/types.js';\nimport { Evaluator } from '../evaluation/evaluator.js';\nimport type { EvaluateOptions } from '../evaluation/evaluator.js';\nimport type { EvalSummary } from '../evaluation/metrics.js';\nimport { Agent } from '../agent/agent.js';\nimport type { AgentConfig } from '../agent/types.js';\nimport { Memory, type MemoryConfig } from '../memory/memory.js';\nimport { SessionMemory } from '../memory/session-memory.js';\nimport { Tracer } from '../observability/tracer.js';\nimport type { ObservabilityHook, LogLevel } from '../observability/types.js';\nimport { GraphWorkflow } from '../graph/graph-workflow.js';\nimport type { GraphConfig } from '../graph/types.js';\nimport { PromptRegistry } from '../prompts/registry.js';\nimport type { PromptRegistryConfig } from '../prompts/types.js';\nimport { TestRunner } from '../evaluation/test-runner.js';\nimport type { TestSuiteConfig } from '../evaluation/test-runner.js';\nimport type { TestSuiteReport } from '../evaluation/reporters.js';\n\nexport interface OrkaFullConfig extends OrkaConfig {\n observability?: {\n logLevel?: LogLevel;\n hooks?: ObservabilityHook[];\n };\n memory?: MemoryConfig;\n prompts?: PromptRegistryConfig;\n}\n\nexport class Orka {\n private llm: LLMAdapter;\n private vectorDB?: VectorDBAdapter;\n private database?: DatabaseAdapter;\n private defaults: OrkaDefaults;\n \n public readonly knowledge: Knowledge;\n public readonly tracer: Tracer;\n public readonly prompts: PromptRegistry;\n private _memory?: Memory;\n private _sessionMemory?: SessionMemory;\n\n constructor(config: OrkaFullConfig) {\n this.llm = config.llm;\n this.vectorDB = config.vectorDB;\n this.database = config.database;\n this.defaults = config.defaults ?? {};\n\n if (!this.vectorDB) {\n throw new Error('VectorDB adapter is required. Use MemoryVectorAdapter for quick start.');\n }\n\n this.knowledge = new Knowledge(this.llm, this.vectorDB, this.defaults);\n this.tracer = new Tracer(config.observability);\n\n this.prompts = new PromptRegistry(config.prompts);\n\n if (config.memory) {\n this._memory = new Memory(config.memory);\n }\n }\n\n /**\n * Ask a question using the knowledge base\n * @param options - Ask options\n * @returns Ask result\n */\n async ask(options: AskOptions): Promise<AskResult> {\n const startTime = Date.now();\n const {\n knowledge,\n question,\n systemPrompt,\n topK = this.defaults.topK ?? 5,\n temperature = this.defaults.temperature ?? 0.7,\n maxTokens = this.defaults.maxTokens ?? 1024,\n includeContext = false,\n } = options;\n\n let context: RetrievedContext[] = [];\n let contextText = '';\n\n if (knowledge) {\n const results = await this.knowledge.search(knowledge, question, { topK });\n context = results.map(r => ({\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata,\n }));\n contextText = context.map(c => c.content).join('\\n\\n---\\n\\n');\n }\n\n const prompt = this.buildPrompt(question, contextText, systemPrompt);\n \n const result = await this.llm.generate(prompt, {\n temperature,\n maxTokens,\n systemPrompt: systemPrompt ?? this.getDefaultSystemPrompt(!!knowledge),\n });\n\n const latencyMs = Date.now() - startTime;\n\n const askResult: AskResult = {\n answer: result.content,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n latencyMs,\n };\n\n if (includeContext) {\n askResult.context = context;\n }\n\n return askResult;\n }\n\n /**\n * Generate a response using the LLM\n * @param prompt - The prompt to generate a response for\n * @param options - Generation options\n * @returns Generated response\n */\n async generate(prompt: string, options?: { temperature?: number; maxTokens?: number; systemPrompt?: string }): Promise<string> {\n const result = await this.llm.generate(prompt, {\n temperature: options?.temperature ?? this.defaults.temperature ?? 0.7,\n maxTokens: options?.maxTokens ?? this.defaults.maxTokens ?? 1024,\n systemPrompt: options?.systemPrompt,\n });\n return result.content;\n }\n\n /**\n * Embed text using the LLM\n * @param text - The text to embed\n * @returns Embeddings\n */\n async embed(text: string | string[]): Promise<number[][]> {\n const texts = Array.isArray(text) ? text : [text];\n return this.llm.embed(texts);\n }\n\n /**\n * Create a new workflow\n * @param config - Workflow configuration \n * @returns Workflow instance\n */\n workflow(config: WorkflowConfig): Workflow {\n return new Workflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Create a new agent\n * @param config - Agent configuration\n * @returns Agent instance\n */\n agent(config: AgentConfig): Agent {\n return new Agent(config, this.llm, this.vectorDB, this.knowledge, this._memory);\n }\n\n /**\n * Evaluate a workflow or agent\n * @param options - Evaluation options\n * @returns Evaluation summary\n */\n async evaluate(options: EvaluateOptions): Promise<EvalSummary> {\n const evaluator = new Evaluator(this, this.llm);\n return evaluator.evaluate(options);\n }\n\n /**\n * Get or create memory instance\n * @returns Memory instance\n */\n memory(): Memory {\n if (!this._memory) {\n this._memory = new Memory();\n }\n return this._memory;\n }\n\n /**\n * Get or create session memory instance\n * @returns SessionMemory instance\n */\n sessions(): SessionMemory {\n if (!this._sessionMemory) {\n this._sessionMemory = new SessionMemory();\n }\n return this._sessionMemory;\n }\n\n /**\n * Get database adapter\n * @returns Database adapter or undefined\n */\n getDatabase(): DatabaseAdapter | undefined {\n return this.database;\n }\n\n /**\n * Create a new graph workflow\n * @param config - Graph configuration\n * @returns GraphWorkflow instance\n */\n graph(config: GraphConfig): GraphWorkflow {\n return new GraphWorkflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Run a test suite\n * @param config - Test suite configuration\n * @returns Test suite report\n */\n async test(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const runner = new TestRunner(this);\n return runner.run(config);\n }\n\n /**\n * Get the LLM adapter\n * @returns LLM adapter\n */\n getLLM(): LLMAdapter {\n return this.llm;\n }\n\n /**\n * Build a prompt from question and context\n * @param question - The question to answer\n * @param context - The context to use\n * @param _systemPrompt - The system prompt to use (unused)\n * @returns The built prompt\n */\n private buildPrompt(question: string, context: string, _systemPrompt?: string): string {\n if (!context) {\n return question;\n }\n\n return `Context information:\n---\n${context}\n---\n\nBased on the context above, please answer the following question:\n${question}`;\n }\n\n /**\n * Get the default system prompt\n * @param hasContext - Whether context is available\n * @returns The default system prompt\n */\n private getDefaultSystemPrompt(hasContext: boolean): string {\n if (hasContext) {\n return `You are a helpful assistant. Answer questions based on the provided context. If the context doesn't contain enough information to answer the question, say so clearly. Do not make up information.`;\n }\n return `You are a helpful assistant.`;\n }\n}\n\n/**\n * Create a new Orka instance\n * @param config - Orka configuration\n * @returns Orka instance\n */\nexport function createOrka(config: OrkaFullConfig): Orka {\n return new Orka(config);\n}\n"]}
1
+ {"version":3,"sources":["../src/core/orka.ts"],"names":["Knowledge","Tracer","PromptRegistry","Memory","Workflow","Agent","Evaluator","SessionMemory","GraphWorkflow","TestRunner"],"mappings":"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","file":"chunk-MKE26MIX.cjs","sourcesContent":["import type { \n OrkaConfig, \n AskOptions, \n AskResult,\n RetrievedContext,\n LLMAdapter,\n VectorDBAdapter,\n DatabaseAdapter,\n OrkaDefaults\n} from '../types/index.js';\nimport { Knowledge } from './knowledge.js';\nimport { Workflow } from '../workflow/workflow.js';\nimport type { WorkflowConfig } from '../workflow/types.js';\nimport { Evaluator } from '../evaluation/evaluator.js';\nimport type { EvaluateOptions } from '../evaluation/evaluator.js';\nimport type { EvalSummary } from '../evaluation/metrics.js';\nimport { Agent } from '../agent/agent.js';\nimport type { AgentConfig } from '../agent/types.js';\nimport { Memory, type MemoryConfig } from '../memory/memory.js';\nimport { SessionMemory } from '../memory/session-memory.js';\nimport { Tracer } from '../observability/tracer.js';\nimport type { ObservabilityHook, LogLevel } from '../observability/types.js';\nimport { GraphWorkflow } from '../graph/graph-workflow.js';\nimport type { GraphConfig } from '../graph/types.js';\nimport { PromptRegistry } from '../prompts/registry.js';\nimport type { PromptRegistryConfig } from '../prompts/types.js';\nimport { TestRunner } from '../evaluation/test-runner.js';\nimport type { TestSuiteConfig } from '../evaluation/test-runner.js';\nimport type { TestSuiteReport } from '../evaluation/reporters.js';\n\nexport interface OrkaFullConfig extends OrkaConfig {\n observability?: {\n logLevel?: LogLevel;\n hooks?: ObservabilityHook[];\n };\n memory?: MemoryConfig;\n prompts?: PromptRegistryConfig;\n}\n\nexport class Orka {\n private llm: LLMAdapter;\n private vectorDB?: VectorDBAdapter;\n private database?: DatabaseAdapter;\n private defaults: OrkaDefaults;\n \n public readonly knowledge: Knowledge;\n public readonly tracer: Tracer;\n public readonly prompts: PromptRegistry;\n private _memory?: Memory;\n private _sessionMemory?: SessionMemory;\n\n constructor(config: OrkaFullConfig) {\n this.llm = config.llm;\n this.vectorDB = config.vectorDB;\n this.database = config.database;\n this.defaults = config.defaults ?? {};\n\n if (!this.vectorDB) {\n throw new Error('VectorDB adapter is required. Use MemoryVectorAdapter for quick start.');\n }\n\n this.knowledge = new Knowledge(this.llm, this.vectorDB, this.defaults);\n this.tracer = new Tracer(config.observability);\n\n this.prompts = new PromptRegistry(config.prompts);\n\n if (config.memory) {\n this._memory = new Memory(config.memory);\n }\n }\n\n /**\n * Ask a question using the knowledge base\n * @param options - Ask options\n * @returns Ask result\n */\n async ask(options: AskOptions): Promise<AskResult> {\n const startTime = Date.now();\n const {\n knowledge,\n question,\n systemPrompt,\n topK = this.defaults.topK ?? 5,\n temperature = this.defaults.temperature ?? 0.7,\n maxTokens = this.defaults.maxTokens ?? 1024,\n includeContext = false,\n } = options;\n\n let context: RetrievedContext[] = [];\n let contextText = '';\n\n if (knowledge) {\n const results = await this.knowledge.search(knowledge, question, { topK });\n context = results.map(r => ({\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata,\n }));\n contextText = context.map(c => c.content).join('\\n\\n---\\n\\n');\n }\n\n const prompt = this.buildPrompt(question, contextText, systemPrompt);\n \n const result = await this.llm.generate(prompt, {\n temperature,\n maxTokens,\n systemPrompt: systemPrompt ?? this.getDefaultSystemPrompt(!!knowledge),\n });\n\n const latencyMs = Date.now() - startTime;\n\n const askResult: AskResult = {\n answer: result.content,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n latencyMs,\n };\n\n if (includeContext) {\n askResult.context = context;\n }\n\n return askResult;\n }\n\n /**\n * Generate a response using the LLM\n * @param prompt - The prompt to generate a response for\n * @param options - Generation options\n * @returns Generated response\n */\n async generate(prompt: string, options?: { temperature?: number; maxTokens?: number; systemPrompt?: string }): Promise<string> {\n const result = await this.llm.generate(prompt, {\n temperature: options?.temperature ?? this.defaults.temperature ?? 0.7,\n maxTokens: options?.maxTokens ?? this.defaults.maxTokens ?? 1024,\n systemPrompt: options?.systemPrompt,\n });\n return result.content;\n }\n\n /**\n * Embed text using the LLM\n * @param text - The text to embed\n * @returns Embeddings\n */\n async embed(text: string | string[]): Promise<number[][]> {\n const texts = Array.isArray(text) ? text : [text];\n return this.llm.embed(texts);\n }\n\n /**\n * Create a new workflow\n * @param config - Workflow configuration \n * @returns Workflow instance\n */\n workflow(config: WorkflowConfig): Workflow {\n return new Workflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Create a new agent\n * @param config - Agent configuration\n * @returns Agent instance\n */\n agent(config: AgentConfig): Agent {\n return new Agent(config, this.llm, this.vectorDB, this.knowledge, this._memory);\n }\n\n /**\n * Evaluate a workflow or agent\n * @param options - Evaluation options\n * @returns Evaluation summary\n */\n async evaluate(options: EvaluateOptions): Promise<EvalSummary> {\n const evaluator = new Evaluator(this, this.llm);\n return evaluator.evaluate(options);\n }\n\n /**\n * Get or create memory instance\n * @returns Memory instance\n */\n memory(): Memory {\n if (!this._memory) {\n this._memory = new Memory();\n }\n return this._memory;\n }\n\n /**\n * Get or create session memory instance\n * @returns SessionMemory instance\n */\n sessions(): SessionMemory {\n if (!this._sessionMemory) {\n this._sessionMemory = new SessionMemory();\n }\n return this._sessionMemory;\n }\n\n /**\n * Get database adapter\n * @returns Database adapter or undefined\n */\n getDatabase(): DatabaseAdapter | undefined {\n return this.database;\n }\n\n /**\n * Create a new graph workflow\n * @param config - Graph configuration\n * @returns GraphWorkflow instance\n */\n graph(config: GraphConfig): GraphWorkflow {\n return new GraphWorkflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Run a test suite\n * @param config - Test suite configuration\n * @returns Test suite report\n */\n async test(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const runner = new TestRunner(this);\n return runner.run(config);\n }\n\n /**\n * Get the LLM adapter\n * @returns LLM adapter\n */\n getLLM(): LLMAdapter {\n return this.llm;\n }\n\n /**\n * Build a prompt from question and context\n * @param question - The question to answer\n * @param context - The context to use\n * @param _systemPrompt - The system prompt to use (unused)\n * @returns The built prompt\n */\n private buildPrompt(question: string, context: string, _systemPrompt?: string): string {\n if (!context) {\n return question;\n }\n\n return `Context information:\n---\n${context}\n---\n\nBased on the context above, please answer the following question:\n${question}`;\n }\n\n /**\n * Get the default system prompt\n * @param hasContext - Whether context is available\n * @returns The default system prompt\n */\n private getDefaultSystemPrompt(hasContext: boolean): string {\n if (hasContext) {\n return `You are a helpful assistant. Answer questions based on the provided context. If the context doesn't contain enough information to answer the question, say so clearly. Do not make up information.`;\n }\n return `You are a helpful assistant.`;\n }\n}\n\n/**\n * Create a new Orka instance\n * @param config - Orka configuration\n * @returns Orka instance\n */\nexport function createOrka(config: OrkaFullConfig): Orka {\n return new Orka(config);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-RZWLJNUN.cjs.map
4
+ //# sourceMappingURL=chunk-RZWLJNUN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-RZWLJNUN.cjs"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkQ4UAHOZ4_cjs = require('./chunk-Q4UAHOZ4.cjs');
4
3
  var chunkHDOI5I46_cjs = require('./chunk-HDOI5I46.cjs');
4
+ var chunkQ4UAHOZ4_cjs = require('./chunk-Q4UAHOZ4.cjs');
5
5
 
6
6
  // src/evaluation/test-runner.ts
7
7
  var TestRunner = class {
@@ -135,5 +135,5 @@ var TestRunner = class {
135
135
  };
136
136
 
137
137
  exports.TestRunner = TestRunner;
138
- //# sourceMappingURL=chunk-5DZJHA4Q.cjs.map
139
- //# sourceMappingURL=chunk-5DZJHA4Q.cjs.map
138
+ //# sourceMappingURL=chunk-VO5LID5M.cjs.map
139
+ //# sourceMappingURL=chunk-VO5LID5M.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/evaluation/test-runner.ts"],"names":["ConsoleReporter","builtinMetrics"],"mappings":"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","file":"chunk-5DZJHA4Q.cjs","sourcesContent":["import type { Orka } from '../core/orka.js';\nimport type { EvalCase, MetricFn } from './metrics.js';\nimport type { Assertion, AssertionResult } from './assertions.js';\nimport type { Reporter, TestCaseReport, TestSuiteReport } from './reporters.js';\nimport { builtinMetrics } from './metrics.js';\nimport { ConsoleReporter } from './reporters.js';\n\nexport interface TestSuiteConfig {\n name: string;\n dataset: EvalCase[];\n metrics?: (string | MetricFn)[];\n assertions?: Assertion[];\n reporters?: Reporter[];\n concurrency?: number;\n bail?: boolean;\n}\n\nexport class TestRunner {\n private orka: Orka;\n\n constructor(orka: Orka) {\n this.orka = orka;\n }\n\n async run(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const startTime = Date.now();\n const {\n name,\n dataset,\n metrics = ['relevance', 'faithfulness'],\n assertions = [],\n reporters = [new ConsoleReporter()],\n concurrency = 1,\n bail = false,\n } = config;\n\n const resolvedMetrics = this.resolveMetrics(metrics);\n const cases: TestCaseReport[] = [];\n\n const batches = this.chunk(dataset, concurrency);\n\n for (const batch of batches) {\n const batchResults = await Promise.all(\n batch.map(async (evalCase) => this.runCase(evalCase, resolvedMetrics, assertions))\n );\n\n for (const result of batchResults) {\n cases.push(result);\n if (bail && !result.passed) {\n break;\n }\n }\n\n if (bail && cases.some(c => !c.passed)) {\n break;\n }\n }\n\n const report = this.buildReport(name, cases, Date.now() - startTime);\n\n for (const reporter of reporters) {\n await reporter.report(report);\n }\n\n return report;\n }\n\n private async runCase(\n evalCase: EvalCase,\n metrics: MetricFn[],\n assertions: Assertion[],\n ): Promise<TestCaseReport> {\n const askResult = await this.orka.ask({\n knowledge: evalCase.knowledge,\n question: evalCase.input,\n includeContext: true,\n });\n\n const contextTexts = askResult.context?.map(c => c.content) ?? evalCase.context ?? [];\n const llm = this.orka.getLLM();\n\n const metricResults: Record<string, number> = {};\n for (const metricFn of metrics) {\n const result = await metricFn({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n context: contextTexts,\n llm,\n });\n metricResults[result.name] = result.score;\n }\n\n const assertionResults: AssertionResult[] = assertions.map(assertion =>\n assertion.check({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n })\n );\n\n const allPassed = assertionResults.length === 0 || assertionResults.every(a => a.passed);\n\n return {\n input: evalCase.input,\n output: askResult.answer,\n passed: allPassed,\n assertions: assertionResults,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n };\n }\n\n private buildReport(name: string, cases: TestCaseReport[], duration: number): TestSuiteReport {\n const passed = cases.filter(c => c.passed).length;\n const failed = cases.length - passed;\n\n const metricsMap: Record<string, number[]> = {};\n for (const c of cases) {\n for (const [metricName, score] of Object.entries(c.metrics)) {\n if (!metricsMap[metricName]) metricsMap[metricName] = [];\n metricsMap[metricName].push(score);\n }\n }\n\n const metricsSummary: Record<string, { average: number; min: number; max: number }> = {};\n for (const [metricName, scores] of Object.entries(metricsMap)) {\n metricsSummary[metricName] = {\n average: scores.reduce((a, b) => a + b, 0) / scores.length,\n min: Math.min(...scores),\n max: Math.max(...scores),\n };\n }\n\n return {\n name,\n timestamp: new Date().toISOString(),\n duration,\n totalCases: cases.length,\n passed,\n failed,\n passRate: cases.length > 0 ? passed / cases.length : 0,\n cases,\n summary: {\n averageLatencyMs: cases.reduce((a, b) => a + b.latencyMs, 0) / (cases.length || 1),\n totalTokens: cases.reduce((a, b) => a + b.totalTokens, 0),\n metrics: metricsSummary,\n },\n };\n }\n\n private resolveMetrics(metrics: (string | MetricFn)[]): MetricFn[] {\n return metrics.map(m => {\n if (typeof m === 'function') return m;\n const builtin = builtinMetrics[m];\n if (!builtin) throw new Error(`Unknown metric: \"${m}\"`);\n return builtin;\n });\n }\n\n private chunk<T>(arr: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/evaluation/test-runner.ts"],"names":["ConsoleReporter","builtinMetrics"],"mappings":";;;;;;AAiBO,IAAM,aAAN,MAAiB;AAAA,EACd,IAAA;AAAA,EAER,YAAY,IAAA,EAAY;AACtB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA,EAEA,MAAM,IAAI,MAAA,EAAmD;AAC3D,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA,GAAU,CAAC,WAAA,EAAa,cAAc,CAAA;AAAA,MACtC,aAAa,EAAC;AAAA,MACd,SAAA,GAAY,CAAC,IAAIA,iCAAA,EAAiB,CAAA;AAAA,MAClC,WAAA,GAAc,CAAA;AAAA,MACd,IAAA,GAAO;AAAA,KACT,GAAI,MAAA;AAEJ,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AACnD,IAAA,MAAM,QAA0B,EAAC;AAEjC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,WAAW,CAAA;AAE/C,IAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,GAAA;AAAA,QACjC,KAAA,CAAM,IAAI,OAAO,QAAA,KAAa,KAAK,OAAA,CAAQ,QAAA,EAAU,eAAA,EAAiB,UAAU,CAAC;AAAA,OACnF;AAEA,MAAA,KAAA,MAAW,UAAU,YAAA,EAAc;AACjC,QAAA,KAAA,CAAM,KAAK,MAAM,CAAA;AACjB,QAAA,IAAI,IAAA,IAAQ,CAAC,MAAA,CAAO,MAAA,EAAQ;AAC1B,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,QAAQ,KAAA,CAAM,IAAA,CAAK,OAAK,CAAC,CAAA,CAAE,MAAM,CAAA,EAAG;AACtC,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,KAAK,WAAA,CAAY,IAAA,EAAM,OAAO,IAAA,CAAK,GAAA,KAAQ,SAAS,CAAA;AAEnE,IAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,MAAA,MAAM,QAAA,CAAS,OAAO,MAAM,CAAA;AAAA,IAC9B;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAc,OAAA,CACZ,QAAA,EACA,OAAA,EACA,UAAA,EACyB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI;AAAA,MACpC,WAAW,QAAA,CAAS,SAAA;AAAA,MACpB,UAAU,QAAA,CAAS,KAAA;AAAA,MACnB,cAAA,EAAgB;AAAA,KACjB,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,SAAA,CAAU,OAAA,EAAS,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA,IAAK,QAAA,CAAS,OAAA,IAAW,EAAC;AACpF,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,MAAA,EAAO;AAE7B,IAAA,MAAM,gBAAwC,EAAC;AAC/C,IAAA,KAAA,MAAW,YAAY,OAAA,EAAS;AAC9B,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS;AAAA,QAC5B,OAAO,QAAA,CAAS,KAAA;AAAA,QAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,QAClB,gBAAgB,QAAA,CAAS,cAAA;AAAA,QACzB,OAAA,EAAS,YAAA;AAAA,QACT;AAAA,OACD,CAAA;AACD,MAAA,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA,CAAO,KAAA;AAAA,IACtC;AAEA,IAAA,MAAM,mBAAsC,UAAA,CAAW,GAAA;AAAA,MAAI,CAAA,SAAA,KACzD,UAAU,KAAA,CAAM;AAAA,QACd,OAAO,QAAA,CAAS,KAAA;AAAA,QAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,QAClB,gBAAgB,QAAA,CAAS,cAAA;AAAA,QACzB,OAAA,EAAS,aAAA;AAAA,QACT,WAAW,SAAA,CAAU,SAAA;AAAA,QACrB,WAAA,EAAa,UAAU,KAAA,CAAM;AAAA,OAC9B;AAAA,KACH;AAEA,IAAA,MAAM,SAAA,GAAY,iBAAiB,MAAA,KAAW,CAAA,IAAK,iBAAiB,KAAA,CAAM,CAAA,CAAA,KAAK,EAAE,MAAM,CAAA;AAEvF,IAAA,OAAO;AAAA,MACL,OAAO,QAAA,CAAS,KAAA;AAAA,MAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,MAClB,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,gBAAA;AAAA,MACZ,OAAA,EAAS,aAAA;AAAA,MACT,WAAW,SAAA,CAAU,SAAA;AAAA,MACrB,WAAA,EAAa,UAAU,KAAA,CAAM;AAAA,KAC/B;AAAA,EACF;AAAA,EAEQ,WAAA,CAAY,IAAA,EAAc,KAAA,EAAyB,QAAA,EAAmC;AAC5F,IAAA,MAAM,SAAS,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,MAAM,CAAA,CAAE,MAAA;AAC3C,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,GAAS,MAAA;AAE9B,IAAA,MAAM,aAAuC,EAAC;AAC9C,IAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,MAAA,KAAA,MAAW,CAAC,YAAY,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,CAAA,CAAE,OAAO,CAAA,EAAG;AAC3D,QAAA,IAAI,CAAC,UAAA,CAAW,UAAU,GAAG,UAAA,CAAW,UAAU,IAAI,EAAC;AACvD,QAAA,UAAA,CAAW,UAAU,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAAA,MACnC;AAAA,IACF;AAEA,IAAA,MAAM,iBAAgF,EAAC;AACvF,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC7D,MAAA,cAAA,CAAe,UAAU,CAAA,GAAI;AAAA,QAC3B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,MAAA,CAAO,MAAA;AAAA,QACpD,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAG,MAAM,CAAA;AAAA,QACvB,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAG,MAAM;AAAA,OACzB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,MAClC,QAAA;AAAA,MACA,YAAY,KAAA,CAAM,MAAA;AAAA,MAClB,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAU,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAA,GAAS,MAAM,MAAA,GAAS,CAAA;AAAA,MACrD,KAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACP,gBAAA,EAAkB,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA,CAAE,SAAA,EAAW,CAAC,CAAA,IAAK,KAAA,CAAM,MAAA,IAAU,CAAA,CAAA;AAAA,QAChF,WAAA,EAAa,MAAM,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,CAAA,CAAE,WAAA,EAAa,CAAC,CAAA;AAAA,QACxD,OAAA,EAAS;AAAA;AACX,KACF;AAAA,EACF;AAAA,EAEQ,eAAe,OAAA,EAA4C;AACjE,IAAA,OAAO,OAAA,CAAQ,IAAI,CAAA,CAAA,KAAK;AACtB,MAAA,IAAI,OAAO,CAAA,KAAM,UAAA,EAAY,OAAO,CAAA;AACpC,MAAA,MAAM,OAAA,GAAUC,iCAAe,CAAC,CAAA;AAChC,MAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,CAAC,CAAA,CAAA,CAAG,CAAA;AACtD,MAAA,OAAO,OAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,KAAA,CAAS,KAAU,IAAA,EAAqB;AAC9C,IAAA,MAAM,SAAgB,EAAC;AACvB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,IAAA,EAAM;AACzC,MAAA,MAAA,CAAO,KAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,IACpC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACF","file":"chunk-VO5LID5M.cjs","sourcesContent":["import type { Orka } from '../core/orka.js';\nimport type { EvalCase, MetricFn } from './metrics.js';\nimport type { Assertion, AssertionResult } from './assertions.js';\nimport type { Reporter, TestCaseReport, TestSuiteReport } from './reporters.js';\nimport { builtinMetrics } from './metrics.js';\nimport { ConsoleReporter } from './reporters.js';\n\nexport interface TestSuiteConfig {\n name: string;\n dataset: EvalCase[];\n metrics?: (string | MetricFn)[];\n assertions?: Assertion[];\n reporters?: Reporter[];\n concurrency?: number;\n bail?: boolean;\n}\n\nexport class TestRunner {\n private orka: Orka;\n\n constructor(orka: Orka) {\n this.orka = orka;\n }\n\n async run(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const startTime = Date.now();\n const {\n name,\n dataset,\n metrics = ['relevance', 'faithfulness'],\n assertions = [],\n reporters = [new ConsoleReporter()],\n concurrency = 1,\n bail = false,\n } = config;\n\n const resolvedMetrics = this.resolveMetrics(metrics);\n const cases: TestCaseReport[] = [];\n\n const batches = this.chunk(dataset, concurrency);\n\n for (const batch of batches) {\n const batchResults = await Promise.all(\n batch.map(async (evalCase) => this.runCase(evalCase, resolvedMetrics, assertions))\n );\n\n for (const result of batchResults) {\n cases.push(result);\n if (bail && !result.passed) {\n break;\n }\n }\n\n if (bail && cases.some(c => !c.passed)) {\n break;\n }\n }\n\n const report = this.buildReport(name, cases, Date.now() - startTime);\n\n for (const reporter of reporters) {\n await reporter.report(report);\n }\n\n return report;\n }\n\n private async runCase(\n evalCase: EvalCase,\n metrics: MetricFn[],\n assertions: Assertion[],\n ): Promise<TestCaseReport> {\n const askResult = await this.orka.ask({\n knowledge: evalCase.knowledge,\n question: evalCase.input,\n includeContext: true,\n });\n\n const contextTexts = askResult.context?.map(c => c.content) ?? evalCase.context ?? [];\n const llm = this.orka.getLLM();\n\n const metricResults: Record<string, number> = {};\n for (const metricFn of metrics) {\n const result = await metricFn({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n context: contextTexts,\n llm,\n });\n metricResults[result.name] = result.score;\n }\n\n const assertionResults: AssertionResult[] = assertions.map(assertion =>\n assertion.check({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n })\n );\n\n const allPassed = assertionResults.length === 0 || assertionResults.every(a => a.passed);\n\n return {\n input: evalCase.input,\n output: askResult.answer,\n passed: allPassed,\n assertions: assertionResults,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n };\n }\n\n private buildReport(name: string, cases: TestCaseReport[], duration: number): TestSuiteReport {\n const passed = cases.filter(c => c.passed).length;\n const failed = cases.length - passed;\n\n const metricsMap: Record<string, number[]> = {};\n for (const c of cases) {\n for (const [metricName, score] of Object.entries(c.metrics)) {\n if (!metricsMap[metricName]) metricsMap[metricName] = [];\n metricsMap[metricName].push(score);\n }\n }\n\n const metricsSummary: Record<string, { average: number; min: number; max: number }> = {};\n for (const [metricName, scores] of Object.entries(metricsMap)) {\n metricsSummary[metricName] = {\n average: scores.reduce((a, b) => a + b, 0) / scores.length,\n min: Math.min(...scores),\n max: Math.max(...scores),\n };\n }\n\n return {\n name,\n timestamp: new Date().toISOString(),\n duration,\n totalCases: cases.length,\n passed,\n failed,\n passRate: cases.length > 0 ? passed / cases.length : 0,\n cases,\n summary: {\n averageLatencyMs: cases.reduce((a, b) => a + b.latencyMs, 0) / (cases.length || 1),\n totalTokens: cases.reduce((a, b) => a + b.totalTokens, 0),\n metrics: metricsSummary,\n },\n };\n }\n\n private resolveMetrics(metrics: (string | MetricFn)[]): MetricFn[] {\n return metrics.map(m => {\n if (typeof m === 'function') return m;\n const builtin = builtinMetrics[m];\n if (!builtin) throw new Error(`Unknown metric: \"${m}\"`);\n return builtin;\n });\n }\n\n private chunk<T>(arr: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { ConsoleReporter } from './chunk-4CLTJN6H.js';
2
1
  import { builtinMetrics } from './chunk-GZQAPKRD.js';
2
+ import { ConsoleReporter } from './chunk-4CLTJN6H.js';
3
3
 
4
4
  // src/evaluation/test-runner.ts
5
5
  var TestRunner = class {
@@ -133,5 +133,5 @@ var TestRunner = class {
133
133
  };
134
134
 
135
135
  export { TestRunner };
136
- //# sourceMappingURL=chunk-3XELDGJA.js.map
137
- //# sourceMappingURL=chunk-3XELDGJA.js.map
136
+ //# sourceMappingURL=chunk-YS3FWRRV.js.map
137
+ //# sourceMappingURL=chunk-YS3FWRRV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/evaluation/test-runner.ts"],"names":[],"mappings":"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","file":"chunk-3XELDGJA.js","sourcesContent":["import type { Orka } from '../core/orka.js';\nimport type { EvalCase, MetricFn } from './metrics.js';\nimport type { Assertion, AssertionResult } from './assertions.js';\nimport type { Reporter, TestCaseReport, TestSuiteReport } from './reporters.js';\nimport { builtinMetrics } from './metrics.js';\nimport { ConsoleReporter } from './reporters.js';\n\nexport interface TestSuiteConfig {\n name: string;\n dataset: EvalCase[];\n metrics?: (string | MetricFn)[];\n assertions?: Assertion[];\n reporters?: Reporter[];\n concurrency?: number;\n bail?: boolean;\n}\n\nexport class TestRunner {\n private orka: Orka;\n\n constructor(orka: Orka) {\n this.orka = orka;\n }\n\n async run(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const startTime = Date.now();\n const {\n name,\n dataset,\n metrics = ['relevance', 'faithfulness'],\n assertions = [],\n reporters = [new ConsoleReporter()],\n concurrency = 1,\n bail = false,\n } = config;\n\n const resolvedMetrics = this.resolveMetrics(metrics);\n const cases: TestCaseReport[] = [];\n\n const batches = this.chunk(dataset, concurrency);\n\n for (const batch of batches) {\n const batchResults = await Promise.all(\n batch.map(async (evalCase) => this.runCase(evalCase, resolvedMetrics, assertions))\n );\n\n for (const result of batchResults) {\n cases.push(result);\n if (bail && !result.passed) {\n break;\n }\n }\n\n if (bail && cases.some(c => !c.passed)) {\n break;\n }\n }\n\n const report = this.buildReport(name, cases, Date.now() - startTime);\n\n for (const reporter of reporters) {\n await reporter.report(report);\n }\n\n return report;\n }\n\n private async runCase(\n evalCase: EvalCase,\n metrics: MetricFn[],\n assertions: Assertion[],\n ): Promise<TestCaseReport> {\n const askResult = await this.orka.ask({\n knowledge: evalCase.knowledge,\n question: evalCase.input,\n includeContext: true,\n });\n\n const contextTexts = askResult.context?.map(c => c.content) ?? evalCase.context ?? [];\n const llm = this.orka.getLLM();\n\n const metricResults: Record<string, number> = {};\n for (const metricFn of metrics) {\n const result = await metricFn({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n context: contextTexts,\n llm,\n });\n metricResults[result.name] = result.score;\n }\n\n const assertionResults: AssertionResult[] = assertions.map(assertion =>\n assertion.check({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n })\n );\n\n const allPassed = assertionResults.length === 0 || assertionResults.every(a => a.passed);\n\n return {\n input: evalCase.input,\n output: askResult.answer,\n passed: allPassed,\n assertions: assertionResults,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n };\n }\n\n private buildReport(name: string, cases: TestCaseReport[], duration: number): TestSuiteReport {\n const passed = cases.filter(c => c.passed).length;\n const failed = cases.length - passed;\n\n const metricsMap: Record<string, number[]> = {};\n for (const c of cases) {\n for (const [metricName, score] of Object.entries(c.metrics)) {\n if (!metricsMap[metricName]) metricsMap[metricName] = [];\n metricsMap[metricName].push(score);\n }\n }\n\n const metricsSummary: Record<string, { average: number; min: number; max: number }> = {};\n for (const [metricName, scores] of Object.entries(metricsMap)) {\n metricsSummary[metricName] = {\n average: scores.reduce((a, b) => a + b, 0) / scores.length,\n min: Math.min(...scores),\n max: Math.max(...scores),\n };\n }\n\n return {\n name,\n timestamp: new Date().toISOString(),\n duration,\n totalCases: cases.length,\n passed,\n failed,\n passRate: cases.length > 0 ? passed / cases.length : 0,\n cases,\n summary: {\n averageLatencyMs: cases.reduce((a, b) => a + b.latencyMs, 0) / (cases.length || 1),\n totalTokens: cases.reduce((a, b) => a + b.totalTokens, 0),\n metrics: metricsSummary,\n },\n };\n }\n\n private resolveMetrics(metrics: (string | MetricFn)[]): MetricFn[] {\n return metrics.map(m => {\n if (typeof m === 'function') return m;\n const builtin = builtinMetrics[m];\n if (!builtin) throw new Error(`Unknown metric: \"${m}\"`);\n return builtin;\n });\n }\n\n private chunk<T>(arr: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/evaluation/test-runner.ts"],"names":[],"mappings":"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","file":"chunk-YS3FWRRV.js","sourcesContent":["import type { Orka } from '../core/orka.js';\nimport type { EvalCase, MetricFn } from './metrics.js';\nimport type { Assertion, AssertionResult } from './assertions.js';\nimport type { Reporter, TestCaseReport, TestSuiteReport } from './reporters.js';\nimport { builtinMetrics } from './metrics.js';\nimport { ConsoleReporter } from './reporters.js';\n\nexport interface TestSuiteConfig {\n name: string;\n dataset: EvalCase[];\n metrics?: (string | MetricFn)[];\n assertions?: Assertion[];\n reporters?: Reporter[];\n concurrency?: number;\n bail?: boolean;\n}\n\nexport class TestRunner {\n private orka: Orka;\n\n constructor(orka: Orka) {\n this.orka = orka;\n }\n\n async run(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const startTime = Date.now();\n const {\n name,\n dataset,\n metrics = ['relevance', 'faithfulness'],\n assertions = [],\n reporters = [new ConsoleReporter()],\n concurrency = 1,\n bail = false,\n } = config;\n\n const resolvedMetrics = this.resolveMetrics(metrics);\n const cases: TestCaseReport[] = [];\n\n const batches = this.chunk(dataset, concurrency);\n\n for (const batch of batches) {\n const batchResults = await Promise.all(\n batch.map(async (evalCase) => this.runCase(evalCase, resolvedMetrics, assertions))\n );\n\n for (const result of batchResults) {\n cases.push(result);\n if (bail && !result.passed) {\n break;\n }\n }\n\n if (bail && cases.some(c => !c.passed)) {\n break;\n }\n }\n\n const report = this.buildReport(name, cases, Date.now() - startTime);\n\n for (const reporter of reporters) {\n await reporter.report(report);\n }\n\n return report;\n }\n\n private async runCase(\n evalCase: EvalCase,\n metrics: MetricFn[],\n assertions: Assertion[],\n ): Promise<TestCaseReport> {\n const askResult = await this.orka.ask({\n knowledge: evalCase.knowledge,\n question: evalCase.input,\n includeContext: true,\n });\n\n const contextTexts = askResult.context?.map(c => c.content) ?? evalCase.context ?? [];\n const llm = this.orka.getLLM();\n\n const metricResults: Record<string, number> = {};\n for (const metricFn of metrics) {\n const result = await metricFn({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n context: contextTexts,\n llm,\n });\n metricResults[result.name] = result.score;\n }\n\n const assertionResults: AssertionResult[] = assertions.map(assertion =>\n assertion.check({\n input: evalCase.input,\n output: askResult.answer,\n expectedOutput: evalCase.expectedOutput,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n })\n );\n\n const allPassed = assertionResults.length === 0 || assertionResults.every(a => a.passed);\n\n return {\n input: evalCase.input,\n output: askResult.answer,\n passed: allPassed,\n assertions: assertionResults,\n metrics: metricResults,\n latencyMs: askResult.latencyMs,\n totalTokens: askResult.usage.totalTokens,\n };\n }\n\n private buildReport(name: string, cases: TestCaseReport[], duration: number): TestSuiteReport {\n const passed = cases.filter(c => c.passed).length;\n const failed = cases.length - passed;\n\n const metricsMap: Record<string, number[]> = {};\n for (const c of cases) {\n for (const [metricName, score] of Object.entries(c.metrics)) {\n if (!metricsMap[metricName]) metricsMap[metricName] = [];\n metricsMap[metricName].push(score);\n }\n }\n\n const metricsSummary: Record<string, { average: number; min: number; max: number }> = {};\n for (const [metricName, scores] of Object.entries(metricsMap)) {\n metricsSummary[metricName] = {\n average: scores.reduce((a, b) => a + b, 0) / scores.length,\n min: Math.min(...scores),\n max: Math.max(...scores),\n };\n }\n\n return {\n name,\n timestamp: new Date().toISOString(),\n duration,\n totalCases: cases.length,\n passed,\n failed,\n passRate: cases.length > 0 ? passed / cases.length : 0,\n cases,\n summary: {\n averageLatencyMs: cases.reduce((a, b) => a + b.latencyMs, 0) / (cases.length || 1),\n totalTokens: cases.reduce((a, b) => a + b.totalTokens, 0),\n metrics: metricsSummary,\n },\n };\n }\n\n private resolveMetrics(metrics: (string | MetricFn)[]): MetricFn[] {\n return metrics.map(m => {\n if (typeof m === 'function') return m;\n const builtin = builtinMetrics[m];\n if (!builtin) throw new Error(`Unknown metric: \"${m}\"`);\n return builtin;\n });\n }\n\n private chunk<T>(arr: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { PromptRegistry } from './chunk-BYWWYIMI.js';
2
2
  import { Workflow } from './chunk-EZPMQMSN.js';
3
- import { TestRunner } from './chunk-3XELDGJA.js';
4
- import { Knowledge } from './chunk-MEX4HRX3.js';
5
3
  import { Evaluator } from './chunk-EAMPIWJ6.js';
4
+ import { TestRunner } from './chunk-YS3FWRRV.js';
5
+ import { Knowledge } from './chunk-MEX4HRX3.js';
6
6
  import { SessionMemory } from './chunk-YHXXZIW5.js';
7
7
  import { Memory } from './chunk-4SX4Q35P.js';
8
8
  import { GraphWorkflow } from './chunk-DI2UCZBJ.js';
@@ -218,5 +218,5 @@ function createOrka(config) {
218
218
  }
219
219
 
220
220
  export { Orka, createOrka };
221
- //# sourceMappingURL=chunk-CNXNVDEM.js.map
222
- //# sourceMappingURL=chunk-CNXNVDEM.js.map
221
+ //# sourceMappingURL=chunk-ZH26JQ5G.js.map
222
+ //# sourceMappingURL=chunk-ZH26JQ5G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/orka.ts"],"names":[],"mappings":";;;;;;;;;;;;AAuCO,IAAM,OAAN,MAAW;AAAA,EACR,GAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EAEQ,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACR,OAAA;AAAA,EACA,cAAA;AAAA,EAER,YAAY,MAAA,EAAwB;AAClC,IAAA,IAAA,CAAK,MAAM,MAAA,CAAO,GAAA;AAClB,IAAA,IAAA,CAAK,WAAW,MAAA,CAAO,QAAA;AACvB,IAAA,IAAA,CAAK,WAAW,MAAA,CAAO,QAAA;AACvB,IAAA,IAAA,CAAK,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,EAAC;AAEpC,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,MAAA,MAAM,IAAI,MAAM,wEAAwE,CAAA;AAAA,IAC1F;AAEA,IAAA,IAAA,CAAK,SAAA,GAAY,IAAI,SAAA,CAAU,IAAA,CAAK,KAAK,IAAA,CAAK,QAAA,EAAU,KAAK,QAAQ,CAAA;AACrE,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA;AAE7C,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,cAAA,CAAe,MAAA,CAAO,OAAO,CAAA;AAEhD,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAA,IACzC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,IAAI,OAAA,EAAyC;AACjD,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,IAAA,IAAQ,CAAA;AAAA,MAC7B,WAAA,GAAc,IAAA,CAAK,QAAA,CAAS,WAAA,IAAe,GAAA;AAAA,MAC3C,SAAA,GAAY,IAAA,CAAK,QAAA,CAAS,SAAA,IAAa,IAAA;AAAA,MACvC,cAAA,GAAiB;AAAA,KACnB,GAAI,OAAA;AAEJ,IAAA,IAAI,UAA8B,EAAC;AACnC,IAAA,IAAI,WAAA,GAAc,EAAA;AAElB,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,OAAO,SAAA,EAAW,QAAA,EAAU,EAAE,IAAA,EAAM,CAAA;AACzE,MAAA,OAAA,GAAU,OAAA,CAAQ,IAAI,CAAA,CAAA,MAAM;AAAA,QAC1B,OAAA,EAAS,EAAE,OAAA,IAAW,EAAA;AAAA,QACtB,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,UAAU,CAAA,CAAE;AAAA,OACd,CAAE,CAAA;AACF,MAAA,WAAA,GAAc,QAAQ,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA,CAAE,KAAK,aAAa,CAAA;AAAA,IAC9D;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU,aAAa,YAAY,CAAA;AAEnE,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,SAAS,MAAA,EAAQ;AAAA,MAC7C,WAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAc,YAAA,IAAgB,IAAA,CAAK,sBAAA,CAAuB,CAAC,CAAC,SAAS;AAAA,KACtE,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA;AAE/B,IAAA,MAAM,SAAA,GAAuB;AAAA,MAC3B,QAAQ,MAAA,CAAO,OAAA;AAAA,MACf,KAAA,EAAO;AAAA,QACL,YAAA,EAAc,OAAO,KAAA,CAAM,YAAA;AAAA,QAC3B,gBAAA,EAAkB,OAAO,KAAA,CAAM,gBAAA;AAAA,QAC/B,WAAA,EAAa,OAAO,KAAA,CAAM;AAAA,OAC5B;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,SAAA,CAAU,OAAA,GAAU,OAAA;AAAA,IACtB;AAEA,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,QAAA,CAAS,MAAA,EAAgB,OAAA,EAAgG;AAC7H,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,SAAS,MAAA,EAAQ;AAAA,MAC7C,WAAA,EAAa,OAAA,EAAS,WAAA,IAAe,IAAA,CAAK,SAAS,WAAA,IAAe,GAAA;AAAA,MAClE,SAAA,EAAW,OAAA,EAAS,SAAA,IAAa,IAAA,CAAK,SAAS,SAAA,IAAa,IAAA;AAAA,MAC5D,cAAc,OAAA,EAAS;AAAA,KACxB,CAAA;AACD,IAAA,OAAO,MAAA,CAAO,OAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAM,IAAA,EAA8C;AACxD,IAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,IAAI,CAAA;AAChD,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,MAAA,EAAkC;AACzC,IAAA,OAAO,IAAI,SAAS,MAAA,EAAQ,IAAA,CAAK,KAAK,IAAA,CAAK,QAAA,EAAU,KAAK,SAAS,CAAA;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,EAA4B;AAChC,IAAA,OAAO,IAAI,KAAA,CAAM,MAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,KAAK,QAAA,EAAU,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,OAAO,CAAA;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,SAAS,OAAA,EAAgD;AAC7D,IAAA,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU,IAAA,EAAM,KAAK,GAAG,CAAA;AAC9C,IAAA,OAAO,SAAA,CAAU,SAAS,OAAO,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAA,GAAiB;AACf,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,EAAO;AAAA,IAC5B;AACA,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,GAA0B;AACxB,IAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,aAAA,EAAc;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,GAA2C;AACzC,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,EAAoC;AACxC,IAAA,OAAO,IAAI,cAAc,MAAA,EAAQ,IAAA,CAAK,KAAK,IAAA,CAAK,QAAA,EAAU,KAAK,SAAS,CAAA;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAK,MAAA,EAAmD;AAC5D,IAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,IAAI,CAAA;AAClC,IAAA,OAAO,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAA,GAAqB;AACnB,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,WAAA,CAAY,QAAA,EAAkB,OAAA,EAAiB,aAAA,EAAgC;AACrF,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,OAAO,CAAA;AAAA;AAAA,EAET,OAAO;AAAA;;AAAA;AAAA,EAIP,QAAQ,CAAA,CAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,uBAAuB,UAAA,EAA6B;AAC1D,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,OAAO,CAAA,kMAAA,CAAA;AAAA,IACT;AACA,IAAA,OAAO,CAAA,4BAAA,CAAA;AAAA,EACT;AACF;AAOO,SAAS,WAAW,MAAA,EAA8B;AACvD,EAAA,OAAO,IAAI,KAAK,MAAM,CAAA;AACxB","file":"chunk-CNXNVDEM.js","sourcesContent":["import type { \n OrkaConfig, \n AskOptions, \n AskResult,\n RetrievedContext,\n LLMAdapter,\n VectorDBAdapter,\n DatabaseAdapter,\n OrkaDefaults\n} from '../types/index.js';\nimport { Knowledge } from './knowledge.js';\nimport { Workflow } from '../workflow/workflow.js';\nimport type { WorkflowConfig } from '../workflow/types.js';\nimport { Evaluator } from '../evaluation/evaluator.js';\nimport type { EvaluateOptions } from '../evaluation/evaluator.js';\nimport type { EvalSummary } from '../evaluation/metrics.js';\nimport { Agent } from '../agent/agent.js';\nimport type { AgentConfig } from '../agent/types.js';\nimport { Memory, type MemoryConfig } from '../memory/memory.js';\nimport { SessionMemory } from '../memory/session-memory.js';\nimport { Tracer } from '../observability/tracer.js';\nimport type { ObservabilityHook, LogLevel } from '../observability/types.js';\nimport { GraphWorkflow } from '../graph/graph-workflow.js';\nimport type { GraphConfig } from '../graph/types.js';\nimport { PromptRegistry } from '../prompts/registry.js';\nimport type { PromptRegistryConfig } from '../prompts/types.js';\nimport { TestRunner } from '../evaluation/test-runner.js';\nimport type { TestSuiteConfig } from '../evaluation/test-runner.js';\nimport type { TestSuiteReport } from '../evaluation/reporters.js';\n\nexport interface OrkaFullConfig extends OrkaConfig {\n observability?: {\n logLevel?: LogLevel;\n hooks?: ObservabilityHook[];\n };\n memory?: MemoryConfig;\n prompts?: PromptRegistryConfig;\n}\n\nexport class Orka {\n private llm: LLMAdapter;\n private vectorDB?: VectorDBAdapter;\n private database?: DatabaseAdapter;\n private defaults: OrkaDefaults;\n \n public readonly knowledge: Knowledge;\n public readonly tracer: Tracer;\n public readonly prompts: PromptRegistry;\n private _memory?: Memory;\n private _sessionMemory?: SessionMemory;\n\n constructor(config: OrkaFullConfig) {\n this.llm = config.llm;\n this.vectorDB = config.vectorDB;\n this.database = config.database;\n this.defaults = config.defaults ?? {};\n\n if (!this.vectorDB) {\n throw new Error('VectorDB adapter is required. Use MemoryVectorAdapter for quick start.');\n }\n\n this.knowledge = new Knowledge(this.llm, this.vectorDB, this.defaults);\n this.tracer = new Tracer(config.observability);\n\n this.prompts = new PromptRegistry(config.prompts);\n\n if (config.memory) {\n this._memory = new Memory(config.memory);\n }\n }\n\n /**\n * Ask a question using the knowledge base\n * @param options - Ask options\n * @returns Ask result\n */\n async ask(options: AskOptions): Promise<AskResult> {\n const startTime = Date.now();\n const {\n knowledge,\n question,\n systemPrompt,\n topK = this.defaults.topK ?? 5,\n temperature = this.defaults.temperature ?? 0.7,\n maxTokens = this.defaults.maxTokens ?? 1024,\n includeContext = false,\n } = options;\n\n let context: RetrievedContext[] = [];\n let contextText = '';\n\n if (knowledge) {\n const results = await this.knowledge.search(knowledge, question, { topK });\n context = results.map(r => ({\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata,\n }));\n contextText = context.map(c => c.content).join('\\n\\n---\\n\\n');\n }\n\n const prompt = this.buildPrompt(question, contextText, systemPrompt);\n \n const result = await this.llm.generate(prompt, {\n temperature,\n maxTokens,\n systemPrompt: systemPrompt ?? this.getDefaultSystemPrompt(!!knowledge),\n });\n\n const latencyMs = Date.now() - startTime;\n\n const askResult: AskResult = {\n answer: result.content,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n latencyMs,\n };\n\n if (includeContext) {\n askResult.context = context;\n }\n\n return askResult;\n }\n\n /**\n * Generate a response using the LLM\n * @param prompt - The prompt to generate a response for\n * @param options - Generation options\n * @returns Generated response\n */\n async generate(prompt: string, options?: { temperature?: number; maxTokens?: number; systemPrompt?: string }): Promise<string> {\n const result = await this.llm.generate(prompt, {\n temperature: options?.temperature ?? this.defaults.temperature ?? 0.7,\n maxTokens: options?.maxTokens ?? this.defaults.maxTokens ?? 1024,\n systemPrompt: options?.systemPrompt,\n });\n return result.content;\n }\n\n /**\n * Embed text using the LLM\n * @param text - The text to embed\n * @returns Embeddings\n */\n async embed(text: string | string[]): Promise<number[][]> {\n const texts = Array.isArray(text) ? text : [text];\n return this.llm.embed(texts);\n }\n\n /**\n * Create a new workflow\n * @param config - Workflow configuration \n * @returns Workflow instance\n */\n workflow(config: WorkflowConfig): Workflow {\n return new Workflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Create a new agent\n * @param config - Agent configuration\n * @returns Agent instance\n */\n agent(config: AgentConfig): Agent {\n return new Agent(config, this.llm, this.vectorDB, this.knowledge, this._memory);\n }\n\n /**\n * Evaluate a workflow or agent\n * @param options - Evaluation options\n * @returns Evaluation summary\n */\n async evaluate(options: EvaluateOptions): Promise<EvalSummary> {\n const evaluator = new Evaluator(this, this.llm);\n return evaluator.evaluate(options);\n }\n\n /**\n * Get or create memory instance\n * @returns Memory instance\n */\n memory(): Memory {\n if (!this._memory) {\n this._memory = new Memory();\n }\n return this._memory;\n }\n\n /**\n * Get or create session memory instance\n * @returns SessionMemory instance\n */\n sessions(): SessionMemory {\n if (!this._sessionMemory) {\n this._sessionMemory = new SessionMemory();\n }\n return this._sessionMemory;\n }\n\n /**\n * Get database adapter\n * @returns Database adapter or undefined\n */\n getDatabase(): DatabaseAdapter | undefined {\n return this.database;\n }\n\n /**\n * Create a new graph workflow\n * @param config - Graph configuration\n * @returns GraphWorkflow instance\n */\n graph(config: GraphConfig): GraphWorkflow {\n return new GraphWorkflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Run a test suite\n * @param config - Test suite configuration\n * @returns Test suite report\n */\n async test(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const runner = new TestRunner(this);\n return runner.run(config);\n }\n\n /**\n * Get the LLM adapter\n * @returns LLM adapter\n */\n getLLM(): LLMAdapter {\n return this.llm;\n }\n\n /**\n * Build a prompt from question and context\n * @param question - The question to answer\n * @param context - The context to use\n * @param _systemPrompt - The system prompt to use (unused)\n * @returns The built prompt\n */\n private buildPrompt(question: string, context: string, _systemPrompt?: string): string {\n if (!context) {\n return question;\n }\n\n return `Context information:\n---\n${context}\n---\n\nBased on the context above, please answer the following question:\n${question}`;\n }\n\n /**\n * Get the default system prompt\n * @param hasContext - Whether context is available\n * @returns The default system prompt\n */\n private getDefaultSystemPrompt(hasContext: boolean): string {\n if (hasContext) {\n return `You are a helpful assistant. Answer questions based on the provided context. If the context doesn't contain enough information to answer the question, say so clearly. Do not make up information.`;\n }\n return `You are a helpful assistant.`;\n }\n}\n\n/**\n * Create a new Orka instance\n * @param config - Orka configuration\n * @returns Orka instance\n */\nexport function createOrka(config: OrkaFullConfig): Orka {\n return new Orka(config);\n}\n"]}
1
+ {"version":3,"sources":["../src/core/orka.ts"],"names":[],"mappings":"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","file":"chunk-ZH26JQ5G.js","sourcesContent":["import type { \n OrkaConfig, \n AskOptions, \n AskResult,\n RetrievedContext,\n LLMAdapter,\n VectorDBAdapter,\n DatabaseAdapter,\n OrkaDefaults\n} from '../types/index.js';\nimport { Knowledge } from './knowledge.js';\nimport { Workflow } from '../workflow/workflow.js';\nimport type { WorkflowConfig } from '../workflow/types.js';\nimport { Evaluator } from '../evaluation/evaluator.js';\nimport type { EvaluateOptions } from '../evaluation/evaluator.js';\nimport type { EvalSummary } from '../evaluation/metrics.js';\nimport { Agent } from '../agent/agent.js';\nimport type { AgentConfig } from '../agent/types.js';\nimport { Memory, type MemoryConfig } from '../memory/memory.js';\nimport { SessionMemory } from '../memory/session-memory.js';\nimport { Tracer } from '../observability/tracer.js';\nimport type { ObservabilityHook, LogLevel } from '../observability/types.js';\nimport { GraphWorkflow } from '../graph/graph-workflow.js';\nimport type { GraphConfig } from '../graph/types.js';\nimport { PromptRegistry } from '../prompts/registry.js';\nimport type { PromptRegistryConfig } from '../prompts/types.js';\nimport { TestRunner } from '../evaluation/test-runner.js';\nimport type { TestSuiteConfig } from '../evaluation/test-runner.js';\nimport type { TestSuiteReport } from '../evaluation/reporters.js';\n\nexport interface OrkaFullConfig extends OrkaConfig {\n observability?: {\n logLevel?: LogLevel;\n hooks?: ObservabilityHook[];\n };\n memory?: MemoryConfig;\n prompts?: PromptRegistryConfig;\n}\n\nexport class Orka {\n private llm: LLMAdapter;\n private vectorDB?: VectorDBAdapter;\n private database?: DatabaseAdapter;\n private defaults: OrkaDefaults;\n \n public readonly knowledge: Knowledge;\n public readonly tracer: Tracer;\n public readonly prompts: PromptRegistry;\n private _memory?: Memory;\n private _sessionMemory?: SessionMemory;\n\n constructor(config: OrkaFullConfig) {\n this.llm = config.llm;\n this.vectorDB = config.vectorDB;\n this.database = config.database;\n this.defaults = config.defaults ?? {};\n\n if (!this.vectorDB) {\n throw new Error('VectorDB adapter is required. Use MemoryVectorAdapter for quick start.');\n }\n\n this.knowledge = new Knowledge(this.llm, this.vectorDB, this.defaults);\n this.tracer = new Tracer(config.observability);\n\n this.prompts = new PromptRegistry(config.prompts);\n\n if (config.memory) {\n this._memory = new Memory(config.memory);\n }\n }\n\n /**\n * Ask a question using the knowledge base\n * @param options - Ask options\n * @returns Ask result\n */\n async ask(options: AskOptions): Promise<AskResult> {\n const startTime = Date.now();\n const {\n knowledge,\n question,\n systemPrompt,\n topK = this.defaults.topK ?? 5,\n temperature = this.defaults.temperature ?? 0.7,\n maxTokens = this.defaults.maxTokens ?? 1024,\n includeContext = false,\n } = options;\n\n let context: RetrievedContext[] = [];\n let contextText = '';\n\n if (knowledge) {\n const results = await this.knowledge.search(knowledge, question, { topK });\n context = results.map(r => ({\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata,\n }));\n contextText = context.map(c => c.content).join('\\n\\n---\\n\\n');\n }\n\n const prompt = this.buildPrompt(question, contextText, systemPrompt);\n \n const result = await this.llm.generate(prompt, {\n temperature,\n maxTokens,\n systemPrompt: systemPrompt ?? this.getDefaultSystemPrompt(!!knowledge),\n });\n\n const latencyMs = Date.now() - startTime;\n\n const askResult: AskResult = {\n answer: result.content,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n latencyMs,\n };\n\n if (includeContext) {\n askResult.context = context;\n }\n\n return askResult;\n }\n\n /**\n * Generate a response using the LLM\n * @param prompt - The prompt to generate a response for\n * @param options - Generation options\n * @returns Generated response\n */\n async generate(prompt: string, options?: { temperature?: number; maxTokens?: number; systemPrompt?: string }): Promise<string> {\n const result = await this.llm.generate(prompt, {\n temperature: options?.temperature ?? this.defaults.temperature ?? 0.7,\n maxTokens: options?.maxTokens ?? this.defaults.maxTokens ?? 1024,\n systemPrompt: options?.systemPrompt,\n });\n return result.content;\n }\n\n /**\n * Embed text using the LLM\n * @param text - The text to embed\n * @returns Embeddings\n */\n async embed(text: string | string[]): Promise<number[][]> {\n const texts = Array.isArray(text) ? text : [text];\n return this.llm.embed(texts);\n }\n\n /**\n * Create a new workflow\n * @param config - Workflow configuration \n * @returns Workflow instance\n */\n workflow(config: WorkflowConfig): Workflow {\n return new Workflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Create a new agent\n * @param config - Agent configuration\n * @returns Agent instance\n */\n agent(config: AgentConfig): Agent {\n return new Agent(config, this.llm, this.vectorDB, this.knowledge, this._memory);\n }\n\n /**\n * Evaluate a workflow or agent\n * @param options - Evaluation options\n * @returns Evaluation summary\n */\n async evaluate(options: EvaluateOptions): Promise<EvalSummary> {\n const evaluator = new Evaluator(this, this.llm);\n return evaluator.evaluate(options);\n }\n\n /**\n * Get or create memory instance\n * @returns Memory instance\n */\n memory(): Memory {\n if (!this._memory) {\n this._memory = new Memory();\n }\n return this._memory;\n }\n\n /**\n * Get or create session memory instance\n * @returns SessionMemory instance\n */\n sessions(): SessionMemory {\n if (!this._sessionMemory) {\n this._sessionMemory = new SessionMemory();\n }\n return this._sessionMemory;\n }\n\n /**\n * Get database adapter\n * @returns Database adapter or undefined\n */\n getDatabase(): DatabaseAdapter | undefined {\n return this.database;\n }\n\n /**\n * Create a new graph workflow\n * @param config - Graph configuration\n * @returns GraphWorkflow instance\n */\n graph(config: GraphConfig): GraphWorkflow {\n return new GraphWorkflow(config, this.llm, this.vectorDB, this.knowledge);\n }\n\n /**\n * Run a test suite\n * @param config - Test suite configuration\n * @returns Test suite report\n */\n async test(config: TestSuiteConfig): Promise<TestSuiteReport> {\n const runner = new TestRunner(this);\n return runner.run(config);\n }\n\n /**\n * Get the LLM adapter\n * @returns LLM adapter\n */\n getLLM(): LLMAdapter {\n return this.llm;\n }\n\n /**\n * Build a prompt from question and context\n * @param question - The question to answer\n * @param context - The context to use\n * @param _systemPrompt - The system prompt to use (unused)\n * @returns The built prompt\n */\n private buildPrompt(question: string, context: string, _systemPrompt?: string): string {\n if (!context) {\n return question;\n }\n\n return `Context information:\n---\n${context}\n---\n\nBased on the context above, please answer the following question:\n${question}`;\n }\n\n /**\n * Get the default system prompt\n * @param hasContext - Whether context is available\n * @returns The default system prompt\n */\n private getDefaultSystemPrompt(hasContext: boolean): string {\n if (hasContext) {\n return `You are a helpful assistant. Answer questions based on the provided context. If the context doesn't contain enough information to answer the question, say so clearly. Do not make up information.`;\n }\n return `You are a helpful assistant.`;\n }\n}\n\n/**\n * Create a new Orka instance\n * @param config - Orka configuration\n * @returns Orka instance\n */\nexport function createOrka(config: OrkaFullConfig): Orka {\n return new Orka(config);\n}\n"]}
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ var chunkMKE26MIX_cjs = require('../chunk-MKE26MIX.cjs');
4
+ require('../chunk-2UTXL4UI.cjs');
5
+ require('../chunk-QBAICRFT.cjs');
6
+ require('../chunk-SNXMGG75.cjs');
7
+ require('../chunk-VO5LID5M.cjs');
8
+ require('../chunk-HDOI5I46.cjs');
9
+ require('../chunk-Q4UAHOZ4.cjs');
10
+ var chunk4NMX7YMQ_cjs = require('../chunk-4NMX7YMQ.cjs');
11
+ var chunkSTW4N4DQ_cjs = require('../chunk-STW4N4DQ.cjs');
12
+ require('../chunk-JOLXQZLP.cjs');
13
+ require('../chunk-G5C7KNJX.cjs');
14
+ require('../chunk-XAKPLGNG.cjs');
15
+ require('../chunk-XD4CTIN2.cjs');
16
+ require('../chunk-YTFRKPLP.cjs');
17
+ require('../chunk-BBUZ6P5S.cjs');
18
+
19
+
20
+
21
+ Object.defineProperty(exports, "Orka", {
22
+ enumerable: true,
23
+ get: function () { return chunkMKE26MIX_cjs.Orka; }
24
+ });
25
+ Object.defineProperty(exports, "createOrka", {
26
+ enumerable: true,
27
+ get: function () { return chunkMKE26MIX_cjs.createOrka; }
28
+ });
29
+ Object.defineProperty(exports, "Knowledge", {
30
+ enumerable: true,
31
+ get: function () { return chunk4NMX7YMQ_cjs.Knowledge; }
32
+ });
33
+ Object.defineProperty(exports, "chunkDocument", {
34
+ enumerable: true,
35
+ get: function () { return chunkSTW4N4DQ_cjs.chunkDocument; }
36
+ });
37
+ Object.defineProperty(exports, "chunkDocuments", {
38
+ enumerable: true,
39
+ get: function () { return chunkSTW4N4DQ_cjs.chunkDocuments; }
40
+ });
41
+ //# sourceMappingURL=index.cjs.map
42
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,18 @@
1
+ export { O as Orka, d as createOrka } from '../index-HyHJwtzW.cjs';
2
+ export { Knowledge } from './knowledge.cjs';
3
+ export { chunkDocument, chunkDocuments } from './chunker.cjs';
4
+ import '../types/index.cjs';
5
+ import '../workflow/workflow.cjs';
6
+ import '../types-D_0MABWj.cjs';
7
+ import '../evaluation/metrics.cjs';
8
+ import '../agent-CEhm_T9r.cjs';
9
+ import '../memory/memory.cjs';
10
+ import '../types-ZpM642VC.cjs';
11
+ import '../memory/session-memory.cjs';
12
+ import '../observability/index.cjs';
13
+ import '../graph/graph-workflow.cjs';
14
+ import '../types-B4UAH86O.cjs';
15
+ import '../prompts/registry.cjs';
16
+ import '../types-0sTm-82H.cjs';
17
+ import '../evaluation/assertions.cjs';
18
+ import '../evaluation/reporters.cjs';
@@ -0,0 +1,18 @@
1
+ export { O as Orka, d as createOrka } from '../index-8bLog_oR.js';
2
+ export { Knowledge } from './knowledge.js';
3
+ export { chunkDocument, chunkDocuments } from './chunker.js';
4
+ import '../types/index.js';
5
+ import '../workflow/workflow.js';
6
+ import '../types-DxUxY78w.js';
7
+ import '../evaluation/metrics.js';
8
+ import '../agent-w0NX6-Li.js';
9
+ import '../memory/memory.js';
10
+ import '../types-q1PSyGEh.js';
11
+ import '../memory/session-memory.js';
12
+ import '../observability/index.js';
13
+ import '../graph/graph-workflow.js';
14
+ import '../types-DsOo4p3H.js';
15
+ import '../prompts/registry.js';
16
+ import '../types-0sTm-82H.js';
17
+ import '../evaluation/assertions.js';
18
+ import '../evaluation/reporters.js';
@@ -0,0 +1,17 @@
1
+ export { Orka, createOrka } from '../chunk-ZH26JQ5G.js';
2
+ import '../chunk-BYWWYIMI.js';
3
+ import '../chunk-EZPMQMSN.js';
4
+ import '../chunk-EAMPIWJ6.js';
5
+ import '../chunk-YS3FWRRV.js';
6
+ import '../chunk-GZQAPKRD.js';
7
+ import '../chunk-4CLTJN6H.js';
8
+ export { Knowledge } from '../chunk-MEX4HRX3.js';
9
+ export { chunkDocument, chunkDocuments } from '../chunk-H7RWKHQR.js';
10
+ import '../chunk-YHXXZIW5.js';
11
+ import '../chunk-4SX4Q35P.js';
12
+ import '../chunk-DI2UCZBJ.js';
13
+ import '../chunk-TR3GHYQX.js';
14
+ import '../chunk-37ZKQRCK.js';
15
+ import '../chunk-T3WBONBO.js';
16
+ //# sourceMappingURL=index.js.map
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkQDXZUIBC_cjs = require('../chunk-QDXZUIBC.cjs');
3
+ var chunkMKE26MIX_cjs = require('../chunk-MKE26MIX.cjs');
4
4
  require('../chunk-2UTXL4UI.cjs');
5
5
  require('../chunk-QBAICRFT.cjs');
6
- require('../chunk-5DZJHA4Q.cjs');
6
+ require('../chunk-SNXMGG75.cjs');
7
+ require('../chunk-VO5LID5M.cjs');
8
+ require('../chunk-HDOI5I46.cjs');
7
9
  require('../chunk-Q4UAHOZ4.cjs');
8
10
  require('../chunk-4NMX7YMQ.cjs');
9
11
  require('../chunk-STW4N4DQ.cjs');
10
- require('../chunk-SNXMGG75.cjs');
11
- require('../chunk-HDOI5I46.cjs');
12
12
  require('../chunk-JOLXQZLP.cjs');
13
13
  require('../chunk-G5C7KNJX.cjs');
14
14
  require('../chunk-XAKPLGNG.cjs');
@@ -20,11 +20,11 @@ require('../chunk-BBUZ6P5S.cjs');
20
20
 
21
21
  Object.defineProperty(exports, "Orka", {
22
22
  enumerable: true,
23
- get: function () { return chunkQDXZUIBC_cjs.Orka; }
23
+ get: function () { return chunkMKE26MIX_cjs.Orka; }
24
24
  });
25
25
  Object.defineProperty(exports, "createOrka", {
26
26
  enumerable: true,
27
- get: function () { return chunkQDXZUIBC_cjs.createOrka; }
27
+ get: function () { return chunkMKE26MIX_cjs.createOrka; }
28
28
  });
29
29
  //# sourceMappingURL=orka.cjs.map
30
30
  //# sourceMappingURL=orka.cjs.map
package/dist/core/orka.js CHANGED
@@ -1,12 +1,12 @@
1
- export { Orka, createOrka } from '../chunk-CNXNVDEM.js';
1
+ export { Orka, createOrka } from '../chunk-ZH26JQ5G.js';
2
2
  import '../chunk-BYWWYIMI.js';
3
3
  import '../chunk-EZPMQMSN.js';
4
- import '../chunk-3XELDGJA.js';
4
+ import '../chunk-EAMPIWJ6.js';
5
+ import '../chunk-YS3FWRRV.js';
6
+ import '../chunk-GZQAPKRD.js';
5
7
  import '../chunk-4CLTJN6H.js';
6
8
  import '../chunk-MEX4HRX3.js';
7
9
  import '../chunk-H7RWKHQR.js';
8
- import '../chunk-EAMPIWJ6.js';
9
- import '../chunk-GZQAPKRD.js';
10
10
  import '../chunk-YHXXZIW5.js';
11
11
  import '../chunk-4SX4Q35P.js';
12
12
  import '../chunk-DI2UCZBJ.js';
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunk5DZJHA4Q_cjs = require('../chunk-5DZJHA4Q.cjs');
4
- require('../chunk-Q4UAHOZ4.cjs');
3
+ var chunkVO5LID5M_cjs = require('../chunk-VO5LID5M.cjs');
5
4
  require('../chunk-HDOI5I46.cjs');
5
+ require('../chunk-Q4UAHOZ4.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "TestRunner", {
10
10
  enumerable: true,
11
- get: function () { return chunk5DZJHA4Q_cjs.TestRunner; }
11
+ get: function () { return chunkVO5LID5M_cjs.TestRunner; }
12
12
  });
13
13
  //# sourceMappingURL=test-runner.cjs.map
14
14
  //# sourceMappingURL=test-runner.cjs.map
@@ -1,5 +1,5 @@
1
- export { TestRunner } from '../chunk-3XELDGJA.js';
2
- import '../chunk-4CLTJN6H.js';
1
+ export { TestRunner } from '../chunk-YS3FWRRV.js';
3
2
  import '../chunk-GZQAPKRD.js';
3
+ import '../chunk-4CLTJN6H.js';
4
4
  //# sourceMappingURL=test-runner.js.map
5
5
  //# sourceMappingURL=test-runner.js.map
package/dist/index.cjs CHANGED
@@ -1,25 +1,26 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkZPGQ5AP3_cjs = require('./chunk-ZPGQ5AP3.cjs');
4
+ var chunkKFPQL35S_cjs = require('./chunk-KFPQL35S.cjs');
5
+ var chunkWCA6OGSB_cjs = require('./chunk-WCA6OGSB.cjs');
6
+ require('./chunk-RZWLJNUN.cjs');
7
+ var chunk3A7BCCAI_cjs = require('./chunk-3A7BCCAI.cjs');
8
+ var chunkRDA76ELY_cjs = require('./chunk-RDA76ELY.cjs');
4
9
  var chunkWS6ZI7WT_cjs = require('./chunk-WS6ZI7WT.cjs');
5
10
  var chunkH6XXZYT7_cjs = require('./chunk-H6XXZYT7.cjs');
6
11
  var chunk7CS4NTB4_cjs = require('./chunk-7CS4NTB4.cjs');
7
12
  var chunkNWRGL5BX_cjs = require('./chunk-NWRGL5BX.cjs');
8
13
  var chunkJCUAZYXS_cjs = require('./chunk-JCUAZYXS.cjs');
9
- var chunkKFPQL35S_cjs = require('./chunk-KFPQL35S.cjs');
10
- var chunkWCA6OGSB_cjs = require('./chunk-WCA6OGSB.cjs');
11
14
  var chunkKXVNH7ZX_cjs = require('./chunk-KXVNH7ZX.cjs');
12
- var chunk3A7BCCAI_cjs = require('./chunk-3A7BCCAI.cjs');
13
- var chunkRDA76ELY_cjs = require('./chunk-RDA76ELY.cjs');
14
- var chunkQDXZUIBC_cjs = require('./chunk-QDXZUIBC.cjs');
15
+ var chunkMKE26MIX_cjs = require('./chunk-MKE26MIX.cjs');
15
16
  var chunk2UTXL4UI_cjs = require('./chunk-2UTXL4UI.cjs');
16
17
  var chunkQBAICRFT_cjs = require('./chunk-QBAICRFT.cjs');
17
- var chunk5DZJHA4Q_cjs = require('./chunk-5DZJHA4Q.cjs');
18
+ var chunkSNXMGG75_cjs = require('./chunk-SNXMGG75.cjs');
19
+ var chunkVO5LID5M_cjs = require('./chunk-VO5LID5M.cjs');
20
+ var chunkHDOI5I46_cjs = require('./chunk-HDOI5I46.cjs');
18
21
  var chunkQ4UAHOZ4_cjs = require('./chunk-Q4UAHOZ4.cjs');
19
22
  var chunk4NMX7YMQ_cjs = require('./chunk-4NMX7YMQ.cjs');
20
23
  require('./chunk-STW4N4DQ.cjs');
21
- var chunkSNXMGG75_cjs = require('./chunk-SNXMGG75.cjs');
22
- var chunkHDOI5I46_cjs = require('./chunk-HDOI5I46.cjs');
23
24
  var chunkJOLXQZLP_cjs = require('./chunk-JOLXQZLP.cjs');
24
25
  var chunkG5C7KNJX_cjs = require('./chunk-G5C7KNJX.cjs');
25
26
  var chunkXPMSMFRX_cjs = require('./chunk-XPMSMFRX.cjs');
@@ -82,26 +83,6 @@ Object.defineProperty(exports, "FilePromptPersistence", {
82
83
  enumerable: true,
83
84
  get: function () { return chunkZPGQ5AP3_cjs.FilePromptPersistence; }
84
85
  });
85
- Object.defineProperty(exports, "QdrantAdapter", {
86
- enumerable: true,
87
- get: function () { return chunkWS6ZI7WT_cjs.QdrantAdapter; }
88
- });
89
- Object.defineProperty(exports, "MemoryVectorAdapter", {
90
- enumerable: true,
91
- get: function () { return chunkH6XXZYT7_cjs.MemoryVectorAdapter; }
92
- });
93
- Object.defineProperty(exports, "MistralAdapter", {
94
- enumerable: true,
95
- get: function () { return chunk7CS4NTB4_cjs.MistralAdapter; }
96
- });
97
- Object.defineProperty(exports, "OllamaAdapter", {
98
- enumerable: true,
99
- get: function () { return chunkNWRGL5BX_cjs.OllamaAdapter; }
100
- });
101
- Object.defineProperty(exports, "ChromaAdapter", {
102
- enumerable: true,
103
- get: function () { return chunkJCUAZYXS_cjs.ChromaAdapter; }
104
- });
105
86
  Object.defineProperty(exports, "custom", {
106
87
  enumerable: true,
107
88
  get: function () { return chunkKFPQL35S_cjs.custom; }
@@ -158,10 +139,6 @@ Object.defineProperty(exports, "notContains", {
158
139
  enumerable: true,
159
140
  get: function () { return chunkWCA6OGSB_cjs.notContains; }
160
141
  });
161
- Object.defineProperty(exports, "OpenAIAdapter", {
162
- enumerable: true,
163
- get: function () { return chunkKXVNH7ZX_cjs.OpenAIAdapter; }
164
- });
165
142
  Object.defineProperty(exports, "AnthropicAdapter", {
166
143
  enumerable: true,
167
144
  get: function () { return chunk3A7BCCAI_cjs.AnthropicAdapter; }
@@ -170,13 +147,37 @@ Object.defineProperty(exports, "PineconeAdapter", {
170
147
  enumerable: true,
171
148
  get: function () { return chunkRDA76ELY_cjs.PineconeAdapter; }
172
149
  });
150
+ Object.defineProperty(exports, "QdrantAdapter", {
151
+ enumerable: true,
152
+ get: function () { return chunkWS6ZI7WT_cjs.QdrantAdapter; }
153
+ });
154
+ Object.defineProperty(exports, "MemoryVectorAdapter", {
155
+ enumerable: true,
156
+ get: function () { return chunkH6XXZYT7_cjs.MemoryVectorAdapter; }
157
+ });
158
+ Object.defineProperty(exports, "MistralAdapter", {
159
+ enumerable: true,
160
+ get: function () { return chunk7CS4NTB4_cjs.MistralAdapter; }
161
+ });
162
+ Object.defineProperty(exports, "OllamaAdapter", {
163
+ enumerable: true,
164
+ get: function () { return chunkNWRGL5BX_cjs.OllamaAdapter; }
165
+ });
166
+ Object.defineProperty(exports, "ChromaAdapter", {
167
+ enumerable: true,
168
+ get: function () { return chunkJCUAZYXS_cjs.ChromaAdapter; }
169
+ });
170
+ Object.defineProperty(exports, "OpenAIAdapter", {
171
+ enumerable: true,
172
+ get: function () { return chunkKXVNH7ZX_cjs.OpenAIAdapter; }
173
+ });
173
174
  Object.defineProperty(exports, "Orka", {
174
175
  enumerable: true,
175
- get: function () { return chunkQDXZUIBC_cjs.Orka; }
176
+ get: function () { return chunkMKE26MIX_cjs.Orka; }
176
177
  });
177
178
  Object.defineProperty(exports, "createOrka", {
178
179
  enumerable: true,
179
- get: function () { return chunkQDXZUIBC_cjs.createOrka; }
180
+ get: function () { return chunkMKE26MIX_cjs.createOrka; }
180
181
  });
181
182
  Object.defineProperty(exports, "PromptRegistry", {
182
183
  enumerable: true,
@@ -186,9 +187,17 @@ Object.defineProperty(exports, "Workflow", {
186
187
  enumerable: true,
187
188
  get: function () { return chunkQBAICRFT_cjs.Workflow; }
188
189
  });
190
+ Object.defineProperty(exports, "Evaluator", {
191
+ enumerable: true,
192
+ get: function () { return chunkSNXMGG75_cjs.Evaluator; }
193
+ });
189
194
  Object.defineProperty(exports, "TestRunner", {
190
195
  enumerable: true,
191
- get: function () { return chunk5DZJHA4Q_cjs.TestRunner; }
196
+ get: function () { return chunkVO5LID5M_cjs.TestRunner; }
197
+ });
198
+ Object.defineProperty(exports, "builtinMetrics", {
199
+ enumerable: true,
200
+ get: function () { return chunkHDOI5I46_cjs.builtinMetrics; }
192
201
  });
193
202
  Object.defineProperty(exports, "ConsoleReporter", {
194
203
  enumerable: true,
@@ -206,14 +215,6 @@ Object.defineProperty(exports, "Knowledge", {
206
215
  enumerable: true,
207
216
  get: function () { return chunk4NMX7YMQ_cjs.Knowledge; }
208
217
  });
209
- Object.defineProperty(exports, "Evaluator", {
210
- enumerable: true,
211
- get: function () { return chunkSNXMGG75_cjs.Evaluator; }
212
- });
213
- Object.defineProperty(exports, "builtinMetrics", {
214
- enumerable: true,
215
- get: function () { return chunkHDOI5I46_cjs.builtinMetrics; }
216
- });
217
218
  Object.defineProperty(exports, "SessionMemory", {
218
219
  enumerable: true,
219
220
  get: function () { return chunkJOLXQZLP_cjs.SessionMemory; }
package/dist/index.js CHANGED
@@ -1,23 +1,24 @@
1
1
  export { FilePromptPersistence } from './chunk-EIOBOUO4.js';
2
+ export { custom, generate, improve, plan, retrieve, verify } from './chunk-DWFNM3KU.js';
3
+ export { contains, customAssertion, matchesRegex, maxLatency, maxScore, maxTokens, minScore, notContains } from './chunk-6OFW3LCS.js';
4
+ import './chunk-6O3SGRJD.js';
5
+ export { AnthropicAdapter } from './chunk-UJLSWZZJ.js';
6
+ export { PineconeAdapter } from './chunk-5HKDN5OM.js';
2
7
  export { QdrantAdapter } from './chunk-JRNGDZZB.js';
3
8
  export { MemoryVectorAdapter } from './chunk-P3SJRGOA.js';
4
9
  export { MistralAdapter } from './chunk-Z67QS23K.js';
5
10
  export { OllamaAdapter } from './chunk-NXJHLGFP.js';
6
11
  export { ChromaAdapter } from './chunk-HK6VWJ6T.js';
7
- export { custom, generate, improve, plan, retrieve, verify } from './chunk-DWFNM3KU.js';
8
- export { contains, customAssertion, matchesRegex, maxLatency, maxScore, maxTokens, minScore, notContains } from './chunk-6OFW3LCS.js';
9
12
  export { OpenAIAdapter } from './chunk-CFJ5UTGH.js';
10
- export { AnthropicAdapter } from './chunk-UJLSWZZJ.js';
11
- export { PineconeAdapter } from './chunk-5HKDN5OM.js';
12
- export { Orka, createOrka } from './chunk-CNXNVDEM.js';
13
+ export { Orka, createOrka } from './chunk-ZH26JQ5G.js';
13
14
  export { PromptRegistry } from './chunk-BYWWYIMI.js';
14
15
  export { Workflow } from './chunk-EZPMQMSN.js';
15
- export { TestRunner } from './chunk-3XELDGJA.js';
16
+ export { Evaluator } from './chunk-EAMPIWJ6.js';
17
+ export { TestRunner } from './chunk-YS3FWRRV.js';
18
+ export { builtinMetrics } from './chunk-GZQAPKRD.js';
16
19
  export { ConsoleReporter, JUnitReporter, JsonReporter } from './chunk-4CLTJN6H.js';
17
20
  export { Knowledge } from './chunk-MEX4HRX3.js';
18
21
  import './chunk-H7RWKHQR.js';
19
- export { Evaluator } from './chunk-EAMPIWJ6.js';
20
- export { builtinMetrics } from './chunk-GZQAPKRD.js';
21
22
  export { SessionMemory } from './chunk-YHXXZIW5.js';
22
23
  export { Memory } from './chunk-4SX4Q35P.js';
23
24
  export { actionNode, conditionNode, edge, endNode, llmNode, parallelNode, retrieveNode, startNode } from './chunk-4EBSDFBS.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orkajs",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "TypeScript framework for building production-ready LLM systems. RAG, agents, workflows, multi-model orchestration.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/agent/hitl/memory-checkpoint-store.ts","../src/agent/hitl/hitl-agent.ts"],"names":["BaseAgent","crypto"],"mappings":"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","file":"chunk-BW7QJF67.cjs","sourcesContent":["import type { Checkpoint, CheckpointStore } from './types.js';\n\nexport class MemoryCheckpointStore implements CheckpointStore {\n private checkpoints: Map<string, Checkpoint> = new Map();\n private agentCheckpoints: Map<string, string[]> = new Map();\n\n async save(checkpoint: Checkpoint): Promise<void> {\n this.checkpoints.set(checkpoint.id, checkpoint);\n \n const agentList = this.agentCheckpoints.get(checkpoint.agentId) ?? [];\n if (!agentList.includes(checkpoint.id)) {\n agentList.push(checkpoint.id);\n this.agentCheckpoints.set(checkpoint.agentId, agentList);\n }\n }\n\n async load(checkpointId: string): Promise<Checkpoint | null> {\n return this.checkpoints.get(checkpointId) ?? null;\n }\n\n async loadLatest(agentId: string): Promise<Checkpoint | null> {\n const agentList = this.agentCheckpoints.get(agentId);\n if (!agentList || agentList.length === 0) return null;\n \n const latestId = agentList[agentList.length - 1];\n return this.checkpoints.get(latestId) ?? null;\n }\n\n async list(agentId: string): Promise<Checkpoint[]> {\n const agentList = this.agentCheckpoints.get(agentId) ?? [];\n return agentList\n .map(id => this.checkpoints.get(id))\n .filter((cp): cp is Checkpoint => cp !== undefined);\n }\n\n async delete(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.get(checkpointId);\n if (checkpoint) {\n this.checkpoints.delete(checkpointId);\n const agentList = this.agentCheckpoints.get(checkpoint.agentId);\n if (agentList) {\n const idx = agentList.indexOf(checkpointId);\n if (idx !== -1) agentList.splice(idx, 1);\n }\n }\n }\n\n clear(): void {\n this.checkpoints.clear();\n this.agentCheckpoints.clear();\n }\n}\n","import crypto from 'crypto';\nimport type { LLMAdapter } from '../../types/index.js';\nimport type { Memory } from '../../memory/memory.js';\nimport type { AgentStepResult } from '../types.js';\nimport { BaseAgent } from '../base-agent.js';\nimport type {\n HITLAgentConfig,\n HITLAgentResult,\n HITLConfig,\n InterruptRequest,\n InterruptResponse,\n InterruptData,\n InterruptReason,\n Checkpoint,\n CheckpointState,\n CheckpointStep,\n} from './types.js';\nimport { MemoryCheckpointStore } from './memory-checkpoint-store.js';\n\nexport class HITLAgent extends BaseAgent {\n private verbose: boolean;\n private hitlConfig: HITLConfig;\n private agentId: string;\n private interrupts: InterruptResponse[] = [];\n private checkpointIds: string[] = [];\n\n constructor(config: HITLAgentConfig, llm: LLMAdapter, memory?: Memory) {\n super(config, llm, memory, 'hitl');\n this.verbose = config.verbose ?? false;\n this.hitlConfig = config.hitl;\n this.agentId = config.name ?? this.generateId();\n \n if (!this.hitlConfig.checkpointStore) {\n this.hitlConfig.checkpointStore = new MemoryCheckpointStore();\n }\n }\n\n async run(input: string, resumeFromCheckpoint?: string): Promise<HITLAgentResult> {\n const startTime = Date.now();\n let steps: AgentStepResult[] = [];\n let startStep = 0;\n let resumedFromCheckpoint: string | undefined;\n\n if (resumeFromCheckpoint) {\n const checkpoint = await this.hitlConfig.checkpointStore?.load(resumeFromCheckpoint);\n if (checkpoint) {\n steps = checkpoint.state.steps.map(s => ({\n ...s,\n latencyMs: 0,\n }));\n startStep = checkpoint.stepNumber;\n resumedFromCheckpoint = checkpoint.id;\n if (this.verbose) {\n console.log(`[HITL] Resumed from checkpoint ${checkpoint.id} at step ${startStep}`);\n }\n }\n }\n\n this.interrupts = [];\n this.checkpointIds = [];\n const memoryContext = this.getMemoryContext();\n\n this.emit({ type: 'step:start', agentType: this.agentType, input });\n\n for (let step = startStep; step < this.maxSteps; step++) {\n const stepStart = Date.now();\n const prompt = this.buildPrompt(input, steps, memoryContext);\n\n const result = await this.llm.generate(prompt, {\n temperature: this.temperature,\n maxTokens: 2048,\n systemPrompt: this.buildSystemPrompt(),\n });\n\n const parsed = this.parseResponse(result.content);\n\n if (this.verbose) {\n console.log(`[HITL Step ${step + 1}]`);\n console.log(` Thought: ${parsed.thought}`);\n console.log(` Action: ${parsed.action}`);\n console.log(` Action Input: ${JSON.stringify(parsed.actionInput)}`);\n }\n\n if (parsed.action === 'finish') {\n const finalAnswer = (parsed.actionInput.answer as string) ?? parsed.thought;\n this.saveToMemory(input, finalAnswer);\n this.emit({ type: 'complete', agentType: this.agentType, output: finalAnswer });\n\n return this.buildHITLResult(input, finalAnswer, steps, startTime, resumedFromCheckpoint);\n }\n\n const shouldCheckpoint = this.hitlConfig.checkpointEvery && \n (step + 1) % this.hitlConfig.checkpointEvery === 0;\n\n if (shouldCheckpoint) {\n await this.createCheckpoint(input, steps, step);\n }\n\n const approvalResult = await this.handleToolApproval(parsed.action, parsed.actionInput, step, parsed.thought);\n \n if (approvalResult.status === 'rejected') {\n const rejectionMessage = `Tool \"${parsed.action}\" was rejected by human reviewer. Feedback: ${approvalResult.feedback ?? 'No feedback provided'}`;\n \n steps.push({\n thought: parsed.thought,\n action: parsed.action,\n actionInput: parsed.actionInput,\n observation: rejectionMessage,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: rejectionMessage });\n continue;\n }\n\n const toolName = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolName\n ? approvalResult.modifiedData.toolName\n : parsed.action;\n \n const toolInput = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolInput\n ? approvalResult.modifiedData.toolInput\n : parsed.actionInput;\n\n const observation = await this.executeTool(toolName, toolInput);\n\n if (this.verbose) {\n console.log(` Observation: ${observation.slice(0, 200)}`);\n }\n\n steps.push({\n thought: parsed.thought,\n action: toolName,\n actionInput: toolInput,\n observation,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: observation });\n }\n\n const fallback = steps.length > 0\n ? `Reached max steps (${this.maxSteps}). Last observations:\\n${steps.slice(-3).map(s => s.observation).join('\\n')}`\n : 'Unable to process request.';\n\n this.saveToMemory(input, fallback);\n return this.buildHITLResult(input, fallback, steps, startTime, resumedFromCheckpoint, true);\n }\n\n async interrupt(\n reason: InterruptReason,\n message: string,\n data: InterruptData = {},\n ): Promise<InterruptResponse> {\n if (!this.hitlConfig.onInterrupt) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const request: InterruptRequest = {\n id: this.generateId(),\n agentId: this.agentId,\n reason,\n message,\n data,\n createdAt: new Date(),\n timeoutMs: this.hitlConfig.defaultTimeoutMs,\n };\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt requested: ${reason} - ${message}`);\n }\n\n const response = await this.hitlConfig.onInterrupt(request);\n this.interrupts.push(response);\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt response: ${response.status}`);\n }\n\n return response;\n }\n\n async requestConfirmation(message: string, context?: Record<string, unknown>): Promise<InterruptResponse> {\n return this.interrupt('confirmation', message, { context });\n }\n\n async requestReview(message: string, stepNumber: number, thought: string): Promise<InterruptResponse> {\n return this.interrupt('review', message, { stepNumber, thought });\n }\n\n private async handleToolApproval(\n toolName: string,\n toolInput: Record<string, unknown>,\n stepNumber: number,\n thought: string,\n ): Promise<InterruptResponse> {\n if (this.hitlConfig.autoApproveTools?.includes(toolName)) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const requiresApproval = this.hitlConfig.requireApprovalFor?.includes(toolName) ||\n (this.hitlConfig.requireApprovalFor?.includes('*') && !this.hitlConfig.autoApproveTools?.includes(toolName));\n\n if (!requiresApproval) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n return this.interrupt('tool_approval', `Approve tool \"${toolName}\"?`, {\n toolName,\n toolInput,\n stepNumber,\n thought,\n });\n }\n\n private async createCheckpoint(input: string, steps: AgentStepResult[], stepNumber: number): Promise<void> {\n const checkpointSteps: CheckpointStep[] = steps.map(s => ({\n thought: s.thought,\n action: s.action,\n actionInput: s.actionInput,\n observation: s.observation,\n }));\n\n const state: CheckpointState = {\n input,\n steps: checkpointSteps,\n context: {},\n };\n\n const checkpoint: Checkpoint = {\n id: this.generateId(),\n agentId: this.agentId,\n stepNumber,\n state,\n createdAt: new Date(),\n };\n\n await this.hitlConfig.checkpointStore?.save(checkpoint);\n this.checkpointIds.push(checkpoint.id);\n\n if (this.verbose) {\n console.log(`[HITL] Checkpoint created: ${checkpoint.id} at step ${stepNumber}`);\n }\n\n await this.interrupt('checkpoint', `Checkpoint created at step ${stepNumber}`, {\n stepNumber,\n context: { checkpointId: checkpoint.id },\n });\n }\n\n async getCheckpoints(): Promise<Checkpoint[]> {\n return this.hitlConfig.checkpointStore?.list(this.agentId) ?? [];\n }\n\n async loadCheckpoint(checkpointId: string): Promise<Checkpoint | null> {\n return this.hitlConfig.checkpointStore?.load(checkpointId) ?? null;\n }\n\n private buildHITLResult(\n input: string,\n output: string,\n steps: AgentStepResult[],\n startTime: number,\n resumedFromCheckpoint?: string,\n maxStepsReached = false,\n ): HITLAgentResult {\n const baseResult = this.buildResult(input, output, steps, startTime, { maxStepsReached });\n \n return {\n ...baseResult,\n interrupts: this.interrupts,\n checkpoints: this.checkpointIds,\n wasInterrupted: this.interrupts.length > 0,\n resumedFromCheckpoint,\n };\n }\n\n private buildSystemPrompt(): string {\n const toolDescriptions = this.getToolDescriptions();\n const rules = this.getRulesString();\n\n return `You are an AI agent with human-in-the-loop capabilities. Your goal: ${this.goal}\n\nYou follow a structured reasoning pattern:\n1. THINK about what you need to do\n2. ACT by using a tool (some tools may require human approval)\n3. OBSERVE the result\n4. REPEAT until you can provide a final answer\n\nAvailable tools:\n${toolDescriptions}\n\n${rules ? `Rules:\\n${rules}\\n` : ''}\nYou MUST respond in this EXACT format:\n\nThought: <your step-by-step reasoning about what to do next>\nAction: <tool_name>\nAction Input: <JSON object with tool parameters>\n\nWhen you have enough information to answer, use:\nThought: <your final reasoning>\nAction: finish\nAction Input: {\"answer\": \"<your comprehensive final answer>\"}\n\n${this.systemPrompt ?? ''}`;\n }\n\n private buildPrompt(input: string, steps: AgentStepResult[], memoryContext: string): string {\n let prompt = `${memoryContext}\\nQuestion: ${input}\\n`;\n\n if (steps.length > 0) {\n prompt += '\\n';\n for (const step of steps) {\n prompt += `Thought: ${step.thought}\\n`;\n prompt += `Action: ${step.action}\\n`;\n prompt += `Action Input: ${JSON.stringify(step.actionInput)}\\n`;\n prompt += `Observation: ${step.observation}\\n\\n`;\n }\n }\n\n return prompt;\n }\n\n private parseResponse(content: string): { thought: string; action: string; actionInput: Record<string, unknown> } {\n const thoughtMatch = content.match(/Thought:\\s*(.*?)(?=\\nAction:)/s);\n const actionMatch = content.match(/Action:\\s*(.*?)(?=\\nAction Input:)/s);\n const actionInputMatch = content.match(/Action Input:\\s*(.*)/s);\n\n const thought = thoughtMatch?.[1]?.trim() ?? content;\n const action = actionMatch?.[1]?.trim() ?? 'finish';\n\n let actionInput: Record<string, unknown> = {};\n if (actionInputMatch?.[1]) {\n actionInput = this.parseJsonFromText(actionInputMatch[1]);\n }\n\n if (action === 'finish' && !actionInput.answer) {\n actionInput.answer = thought;\n }\n\n return { thought, action, actionInput };\n }\n\n private generateId(): string {\n const timestamp = Date.now().toString(36);\n const random = crypto.randomBytes(4).toString('hex');\n return `${timestamp}-${random}`;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/agent/hitl/memory-checkpoint-store.ts","../src/agent/hitl/hitl-agent.ts"],"names":[],"mappings":"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","file":"chunk-YHRCEYN3.js","sourcesContent":["import type { Checkpoint, CheckpointStore } from './types.js';\n\nexport class MemoryCheckpointStore implements CheckpointStore {\n private checkpoints: Map<string, Checkpoint> = new Map();\n private agentCheckpoints: Map<string, string[]> = new Map();\n\n async save(checkpoint: Checkpoint): Promise<void> {\n this.checkpoints.set(checkpoint.id, checkpoint);\n \n const agentList = this.agentCheckpoints.get(checkpoint.agentId) ?? [];\n if (!agentList.includes(checkpoint.id)) {\n agentList.push(checkpoint.id);\n this.agentCheckpoints.set(checkpoint.agentId, agentList);\n }\n }\n\n async load(checkpointId: string): Promise<Checkpoint | null> {\n return this.checkpoints.get(checkpointId) ?? null;\n }\n\n async loadLatest(agentId: string): Promise<Checkpoint | null> {\n const agentList = this.agentCheckpoints.get(agentId);\n if (!agentList || agentList.length === 0) return null;\n \n const latestId = agentList[agentList.length - 1];\n return this.checkpoints.get(latestId) ?? null;\n }\n\n async list(agentId: string): Promise<Checkpoint[]> {\n const agentList = this.agentCheckpoints.get(agentId) ?? [];\n return agentList\n .map(id => this.checkpoints.get(id))\n .filter((cp): cp is Checkpoint => cp !== undefined);\n }\n\n async delete(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.get(checkpointId);\n if (checkpoint) {\n this.checkpoints.delete(checkpointId);\n const agentList = this.agentCheckpoints.get(checkpoint.agentId);\n if (agentList) {\n const idx = agentList.indexOf(checkpointId);\n if (idx !== -1) agentList.splice(idx, 1);\n }\n }\n }\n\n clear(): void {\n this.checkpoints.clear();\n this.agentCheckpoints.clear();\n }\n}\n","import crypto from 'crypto';\nimport type { LLMAdapter } from '../../types/index.js';\nimport type { Memory } from '../../memory/memory.js';\nimport type { AgentStepResult } from '../types.js';\nimport { BaseAgent } from '../base-agent.js';\nimport type {\n HITLAgentConfig,\n HITLAgentResult,\n HITLConfig,\n InterruptRequest,\n InterruptResponse,\n InterruptData,\n InterruptReason,\n Checkpoint,\n CheckpointState,\n CheckpointStep,\n} from './types.js';\nimport { MemoryCheckpointStore } from './memory-checkpoint-store.js';\n\nexport class HITLAgent extends BaseAgent {\n private verbose: boolean;\n private hitlConfig: HITLConfig;\n private agentId: string;\n private interrupts: InterruptResponse[] = [];\n private checkpointIds: string[] = [];\n\n constructor(config: HITLAgentConfig, llm: LLMAdapter, memory?: Memory) {\n super(config, llm, memory, 'hitl');\n this.verbose = config.verbose ?? false;\n this.hitlConfig = config.hitl;\n this.agentId = config.name ?? this.generateId();\n \n if (!this.hitlConfig.checkpointStore) {\n this.hitlConfig.checkpointStore = new MemoryCheckpointStore();\n }\n }\n\n async run(input: string, resumeFromCheckpoint?: string): Promise<HITLAgentResult> {\n const startTime = Date.now();\n let steps: AgentStepResult[] = [];\n let startStep = 0;\n let resumedFromCheckpoint: string | undefined;\n\n if (resumeFromCheckpoint) {\n const checkpoint = await this.hitlConfig.checkpointStore?.load(resumeFromCheckpoint);\n if (checkpoint) {\n steps = checkpoint.state.steps.map(s => ({\n ...s,\n latencyMs: 0,\n }));\n startStep = checkpoint.stepNumber;\n resumedFromCheckpoint = checkpoint.id;\n if (this.verbose) {\n console.log(`[HITL] Resumed from checkpoint ${checkpoint.id} at step ${startStep}`);\n }\n }\n }\n\n this.interrupts = [];\n this.checkpointIds = [];\n const memoryContext = this.getMemoryContext();\n\n this.emit({ type: 'step:start', agentType: this.agentType, input });\n\n for (let step = startStep; step < this.maxSteps; step++) {\n const stepStart = Date.now();\n const prompt = this.buildPrompt(input, steps, memoryContext);\n\n const result = await this.llm.generate(prompt, {\n temperature: this.temperature,\n maxTokens: 2048,\n systemPrompt: this.buildSystemPrompt(),\n });\n\n const parsed = this.parseResponse(result.content);\n\n if (this.verbose) {\n console.log(`[HITL Step ${step + 1}]`);\n console.log(` Thought: ${parsed.thought}`);\n console.log(` Action: ${parsed.action}`);\n console.log(` Action Input: ${JSON.stringify(parsed.actionInput)}`);\n }\n\n if (parsed.action === 'finish') {\n const finalAnswer = (parsed.actionInput.answer as string) ?? parsed.thought;\n this.saveToMemory(input, finalAnswer);\n this.emit({ type: 'complete', agentType: this.agentType, output: finalAnswer });\n\n return this.buildHITLResult(input, finalAnswer, steps, startTime, resumedFromCheckpoint);\n }\n\n const shouldCheckpoint = this.hitlConfig.checkpointEvery && \n (step + 1) % this.hitlConfig.checkpointEvery === 0;\n\n if (shouldCheckpoint) {\n await this.createCheckpoint(input, steps, step);\n }\n\n const approvalResult = await this.handleToolApproval(parsed.action, parsed.actionInput, step, parsed.thought);\n \n if (approvalResult.status === 'rejected') {\n const rejectionMessage = `Tool \"${parsed.action}\" was rejected by human reviewer. Feedback: ${approvalResult.feedback ?? 'No feedback provided'}`;\n \n steps.push({\n thought: parsed.thought,\n action: parsed.action,\n actionInput: parsed.actionInput,\n observation: rejectionMessage,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: rejectionMessage });\n continue;\n }\n\n const toolName = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolName\n ? approvalResult.modifiedData.toolName\n : parsed.action;\n \n const toolInput = approvalResult.status === 'modified' && approvalResult.modifiedData?.toolInput\n ? approvalResult.modifiedData.toolInput\n : parsed.actionInput;\n\n const observation = await this.executeTool(toolName, toolInput);\n\n if (this.verbose) {\n console.log(` Observation: ${observation.slice(0, 200)}`);\n }\n\n steps.push({\n thought: parsed.thought,\n action: toolName,\n actionInput: toolInput,\n observation,\n latencyMs: Date.now() - stepStart,\n usage: {\n promptTokens: result.usage.promptTokens,\n completionTokens: result.usage.completionTokens,\n totalTokens: result.usage.totalTokens,\n },\n });\n\n this.emit({ type: 'step:end', agentType: this.agentType, step, output: observation });\n }\n\n const fallback = steps.length > 0\n ? `Reached max steps (${this.maxSteps}). Last observations:\\n${steps.slice(-3).map(s => s.observation).join('\\n')}`\n : 'Unable to process request.';\n\n this.saveToMemory(input, fallback);\n return this.buildHITLResult(input, fallback, steps, startTime, resumedFromCheckpoint, true);\n }\n\n async interrupt(\n reason: InterruptReason,\n message: string,\n data: InterruptData = {},\n ): Promise<InterruptResponse> {\n if (!this.hitlConfig.onInterrupt) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const request: InterruptRequest = {\n id: this.generateId(),\n agentId: this.agentId,\n reason,\n message,\n data,\n createdAt: new Date(),\n timeoutMs: this.hitlConfig.defaultTimeoutMs,\n };\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt requested: ${reason} - ${message}`);\n }\n\n const response = await this.hitlConfig.onInterrupt(request);\n this.interrupts.push(response);\n\n if (this.verbose) {\n console.log(`[HITL] Interrupt response: ${response.status}`);\n }\n\n return response;\n }\n\n async requestConfirmation(message: string, context?: Record<string, unknown>): Promise<InterruptResponse> {\n return this.interrupt('confirmation', message, { context });\n }\n\n async requestReview(message: string, stepNumber: number, thought: string): Promise<InterruptResponse> {\n return this.interrupt('review', message, { stepNumber, thought });\n }\n\n private async handleToolApproval(\n toolName: string,\n toolInput: Record<string, unknown>,\n stepNumber: number,\n thought: string,\n ): Promise<InterruptResponse> {\n if (this.hitlConfig.autoApproveTools?.includes(toolName)) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n const requiresApproval = this.hitlConfig.requireApprovalFor?.includes(toolName) ||\n (this.hitlConfig.requireApprovalFor?.includes('*') && !this.hitlConfig.autoApproveTools?.includes(toolName));\n\n if (!requiresApproval) {\n return {\n id: this.generateId(),\n status: 'approved',\n respondedAt: new Date(),\n };\n }\n\n return this.interrupt('tool_approval', `Approve tool \"${toolName}\"?`, {\n toolName,\n toolInput,\n stepNumber,\n thought,\n });\n }\n\n private async createCheckpoint(input: string, steps: AgentStepResult[], stepNumber: number): Promise<void> {\n const checkpointSteps: CheckpointStep[] = steps.map(s => ({\n thought: s.thought,\n action: s.action,\n actionInput: s.actionInput,\n observation: s.observation,\n }));\n\n const state: CheckpointState = {\n input,\n steps: checkpointSteps,\n context: {},\n };\n\n const checkpoint: Checkpoint = {\n id: this.generateId(),\n agentId: this.agentId,\n stepNumber,\n state,\n createdAt: new Date(),\n };\n\n await this.hitlConfig.checkpointStore?.save(checkpoint);\n this.checkpointIds.push(checkpoint.id);\n\n if (this.verbose) {\n console.log(`[HITL] Checkpoint created: ${checkpoint.id} at step ${stepNumber}`);\n }\n\n await this.interrupt('checkpoint', `Checkpoint created at step ${stepNumber}`, {\n stepNumber,\n context: { checkpointId: checkpoint.id },\n });\n }\n\n async getCheckpoints(): Promise<Checkpoint[]> {\n return this.hitlConfig.checkpointStore?.list(this.agentId) ?? [];\n }\n\n async loadCheckpoint(checkpointId: string): Promise<Checkpoint | null> {\n return this.hitlConfig.checkpointStore?.load(checkpointId) ?? null;\n }\n\n private buildHITLResult(\n input: string,\n output: string,\n steps: AgentStepResult[],\n startTime: number,\n resumedFromCheckpoint?: string,\n maxStepsReached = false,\n ): HITLAgentResult {\n const baseResult = this.buildResult(input, output, steps, startTime, { maxStepsReached });\n \n return {\n ...baseResult,\n interrupts: this.interrupts,\n checkpoints: this.checkpointIds,\n wasInterrupted: this.interrupts.length > 0,\n resumedFromCheckpoint,\n };\n }\n\n private buildSystemPrompt(): string {\n const toolDescriptions = this.getToolDescriptions();\n const rules = this.getRulesString();\n\n return `You are an AI agent with human-in-the-loop capabilities. Your goal: ${this.goal}\n\nYou follow a structured reasoning pattern:\n1. THINK about what you need to do\n2. ACT by using a tool (some tools may require human approval)\n3. OBSERVE the result\n4. REPEAT until you can provide a final answer\n\nAvailable tools:\n${toolDescriptions}\n\n${rules ? `Rules:\\n${rules}\\n` : ''}\nYou MUST respond in this EXACT format:\n\nThought: <your step-by-step reasoning about what to do next>\nAction: <tool_name>\nAction Input: <JSON object with tool parameters>\n\nWhen you have enough information to answer, use:\nThought: <your final reasoning>\nAction: finish\nAction Input: {\"answer\": \"<your comprehensive final answer>\"}\n\n${this.systemPrompt ?? ''}`;\n }\n\n private buildPrompt(input: string, steps: AgentStepResult[], memoryContext: string): string {\n let prompt = `${memoryContext}\\nQuestion: ${input}\\n`;\n\n if (steps.length > 0) {\n prompt += '\\n';\n for (const step of steps) {\n prompt += `Thought: ${step.thought}\\n`;\n prompt += `Action: ${step.action}\\n`;\n prompt += `Action Input: ${JSON.stringify(step.actionInput)}\\n`;\n prompt += `Observation: ${step.observation}\\n\\n`;\n }\n }\n\n return prompt;\n }\n\n private parseResponse(content: string): { thought: string; action: string; actionInput: Record<string, unknown> } {\n const thoughtMatch = content.match(/Thought:\\s*(.*?)(?=\\nAction:)/s);\n const actionMatch = content.match(/Action:\\s*(.*?)(?=\\nAction Input:)/s);\n const actionInputMatch = content.match(/Action Input:\\s*(.*)/s);\n\n const thought = thoughtMatch?.[1]?.trim() ?? content;\n const action = actionMatch?.[1]?.trim() ?? 'finish';\n\n let actionInput: Record<string, unknown> = {};\n if (actionInputMatch?.[1]) {\n actionInput = this.parseJsonFromText(actionInputMatch[1]);\n }\n\n if (action === 'finish' && !actionInput.answer) {\n actionInput.answer = thought;\n }\n\n return { thought, action, actionInput };\n }\n\n private generateId(): string {\n const timestamp = Date.now().toString(36);\n const random = crypto.randomBytes(4).toString('hex');\n return `${timestamp}-${random}`;\n }\n}\n"]}