praisonai 1.0.19 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/agent/context.d.ts +68 -0
  2. package/dist/agent/context.js +119 -0
  3. package/dist/agent/enhanced.d.ts +92 -0
  4. package/dist/agent/enhanced.js +267 -0
  5. package/dist/agent/handoff.d.ts +82 -0
  6. package/dist/agent/handoff.js +124 -0
  7. package/dist/agent/router.d.ts +77 -0
  8. package/dist/agent/router.js +113 -0
  9. package/dist/agent/simple.js +1 -1
  10. package/dist/agent/types.js +2 -2
  11. package/dist/cli/index.d.ts +20 -0
  12. package/dist/cli/index.js +150 -0
  13. package/dist/db/index.d.ts +23 -0
  14. package/dist/db/index.js +72 -0
  15. package/dist/db/memory-adapter.d.ts +42 -0
  16. package/dist/db/memory-adapter.js +146 -0
  17. package/dist/db/types.d.ts +113 -0
  18. package/dist/db/types.js +5 -0
  19. package/dist/eval/index.d.ts +61 -0
  20. package/dist/eval/index.js +157 -0
  21. package/dist/guardrails/index.d.ts +82 -0
  22. package/dist/guardrails/index.js +202 -0
  23. package/dist/index.d.ts +16 -1
  24. package/dist/index.js +72 -1
  25. package/dist/knowledge/rag.d.ts +80 -0
  26. package/dist/knowledge/rag.js +147 -0
  27. package/dist/llm/openai.js +1 -1
  28. package/dist/llm/providers/anthropic.d.ts +33 -0
  29. package/dist/llm/providers/anthropic.js +291 -0
  30. package/dist/llm/providers/base.d.ts +25 -0
  31. package/dist/llm/providers/base.js +43 -0
  32. package/dist/llm/providers/google.d.ts +27 -0
  33. package/dist/llm/providers/google.js +275 -0
  34. package/dist/llm/providers/index.d.ts +43 -0
  35. package/dist/llm/providers/index.js +116 -0
  36. package/dist/llm/providers/openai.d.ts +18 -0
  37. package/dist/llm/providers/openai.js +203 -0
  38. package/dist/llm/providers/types.d.ts +94 -0
  39. package/dist/llm/providers/types.js +5 -0
  40. package/dist/observability/index.d.ts +86 -0
  41. package/dist/observability/index.js +166 -0
  42. package/dist/session/index.d.ts +111 -0
  43. package/dist/session/index.js +250 -0
  44. package/dist/skills/index.d.ts +70 -0
  45. package/dist/skills/index.js +233 -0
  46. package/dist/tools/decorator.d.ts +91 -0
  47. package/dist/tools/decorator.js +165 -0
  48. package/dist/tools/index.d.ts +2 -0
  49. package/dist/tools/index.js +3 -0
  50. package/dist/tools/mcpSse.d.ts +41 -0
  51. package/dist/tools/mcpSse.js +108 -0
  52. package/dist/workflows/index.d.ts +97 -0
  53. package/dist/workflows/index.js +216 -0
  54. package/package.json +6 -2
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * Guardrails - Input/output validation and safety checks
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.builtinGuardrails = exports.GuardrailManager = exports.Guardrail = void 0;
7
+ exports.guardrail = guardrail;
8
+ /**
9
+ * Guardrail class
10
+ */
11
+ class Guardrail {
12
+ constructor(config) {
13
+ this.name = config.name;
14
+ this.description = config.description || `Guardrail: ${config.name}`;
15
+ this.check = config.check;
16
+ this.onFail = config.onFail || 'block';
17
+ }
18
+ async run(content, context) {
19
+ try {
20
+ return await this.check(content, context);
21
+ }
22
+ catch (error) {
23
+ return {
24
+ status: 'failed',
25
+ message: `Guardrail error: ${error.message}`,
26
+ details: { error: error.message },
27
+ };
28
+ }
29
+ }
30
+ }
31
+ exports.Guardrail = Guardrail;
32
+ /**
33
+ * Create a guardrail
34
+ */
35
+ function guardrail(config) {
36
+ return new Guardrail(config);
37
+ }
38
+ /**
39
+ * Guardrail Manager - Run multiple guardrails
40
+ */
41
+ class GuardrailManager {
42
+ constructor() {
43
+ this.guardrails = [];
44
+ }
45
+ add(g) {
46
+ this.guardrails.push(g);
47
+ return this;
48
+ }
49
+ async runAll(content, context) {
50
+ const results = [];
51
+ let passed = true;
52
+ for (const g of this.guardrails) {
53
+ const result = await g.run(content, context);
54
+ results.push({ name: g.name, result });
55
+ if (result.status === 'failed') {
56
+ passed = false;
57
+ if (g.onFail === 'block') {
58
+ break;
59
+ }
60
+ }
61
+ }
62
+ return { passed, results };
63
+ }
64
+ get count() {
65
+ return this.guardrails.length;
66
+ }
67
+ }
68
+ exports.GuardrailManager = GuardrailManager;
69
+ /**
70
+ * Built-in guardrails
71
+ */
72
+ exports.builtinGuardrails = {
73
+ /**
74
+ * Check for maximum length
75
+ */
76
+ maxLength: (maxChars) => {
77
+ return guardrail({
78
+ name: 'max_length',
79
+ description: `Ensure content is under ${maxChars} characters`,
80
+ check: (content) => {
81
+ if (content.length > maxChars) {
82
+ return {
83
+ status: 'failed',
84
+ message: `Content exceeds maximum length of ${maxChars} characters`,
85
+ details: { length: content.length, max: maxChars },
86
+ };
87
+ }
88
+ return { status: 'passed' };
89
+ },
90
+ });
91
+ },
92
+ /**
93
+ * Check for minimum length
94
+ */
95
+ minLength: (minChars) => {
96
+ return guardrail({
97
+ name: 'min_length',
98
+ description: `Ensure content is at least ${minChars} characters`,
99
+ check: (content) => {
100
+ if (content.length < minChars) {
101
+ return {
102
+ status: 'failed',
103
+ message: `Content is below minimum length of ${minChars} characters`,
104
+ details: { length: content.length, min: minChars },
105
+ };
106
+ }
107
+ return { status: 'passed' };
108
+ },
109
+ });
110
+ },
111
+ /**
112
+ * Check for blocked words
113
+ */
114
+ blockedWords: (words) => {
115
+ return guardrail({
116
+ name: 'blocked_words',
117
+ description: 'Check for blocked words',
118
+ check: (content) => {
119
+ const lowerContent = content.toLowerCase();
120
+ const found = words.filter(w => lowerContent.includes(w.toLowerCase()));
121
+ if (found.length > 0) {
122
+ return {
123
+ status: 'failed',
124
+ message: `Content contains blocked words`,
125
+ details: { blockedWords: found },
126
+ };
127
+ }
128
+ return { status: 'passed' };
129
+ },
130
+ });
131
+ },
132
+ /**
133
+ * Check for required words
134
+ */
135
+ requiredWords: (words) => {
136
+ return guardrail({
137
+ name: 'required_words',
138
+ description: 'Check for required words',
139
+ check: (content) => {
140
+ const lowerContent = content.toLowerCase();
141
+ const missing = words.filter(w => !lowerContent.includes(w.toLowerCase()));
142
+ if (missing.length > 0) {
143
+ return {
144
+ status: 'failed',
145
+ message: `Content missing required words`,
146
+ details: { missingWords: missing },
147
+ };
148
+ }
149
+ return { status: 'passed' };
150
+ },
151
+ });
152
+ },
153
+ /**
154
+ * Regex pattern check
155
+ */
156
+ pattern: (regex, mustMatch = true) => {
157
+ return guardrail({
158
+ name: 'pattern',
159
+ description: `Check content against pattern: ${regex}`,
160
+ check: (content) => {
161
+ const matches = regex.test(content);
162
+ if (mustMatch && !matches) {
163
+ return {
164
+ status: 'failed',
165
+ message: `Content does not match required pattern`,
166
+ details: { pattern: regex.toString() },
167
+ };
168
+ }
169
+ if (!mustMatch && matches) {
170
+ return {
171
+ status: 'failed',
172
+ message: `Content matches forbidden pattern`,
173
+ details: { pattern: regex.toString() },
174
+ };
175
+ }
176
+ return { status: 'passed' };
177
+ },
178
+ });
179
+ },
180
+ /**
181
+ * JSON validity check
182
+ */
183
+ validJson: () => {
184
+ return guardrail({
185
+ name: 'valid_json',
186
+ description: 'Ensure content is valid JSON',
187
+ check: (content) => {
188
+ try {
189
+ JSON.parse(content);
190
+ return { status: 'passed' };
191
+ }
192
+ catch (e) {
193
+ return {
194
+ status: 'failed',
195
+ message: 'Content is not valid JSON',
196
+ details: { error: e.message },
197
+ };
198
+ }
199
+ },
200
+ });
201
+ },
202
+ };
package/dist/index.d.ts CHANGED
@@ -3,4 +3,19 @@ export * from './knowledge';
3
3
  export * from './llm';
4
4
  export * from './memory';
5
5
  export * from './process';
6
- export * from './tools';
6
+ export { Tool, BaseTool, FunctionTool, tool, ToolRegistry, getRegistry, registerTool, getTool, type ToolConfig, type ToolContext, type ToolParameters } from './tools';
7
+ export * from './tools/arxivTools';
8
+ export * from './tools/mcpSse';
9
+ export * from './session';
10
+ export * from './db';
11
+ export * from './workflows';
12
+ export * from './guardrails';
13
+ export { Handoff, handoff, handoffFilters, type HandoffConfig, type HandoffContext, type HandoffResult } from './agent/handoff';
14
+ export { RouterAgent, createRouter, routeConditions, type RouterConfig, type RouteConfig, type RouteContext } from './agent/router';
15
+ export { ContextAgent, createContextAgent, type ContextAgentConfig, type ContextMessage } from './agent/context';
16
+ export { KnowledgeBase, createKnowledgeBase, type Document, type SearchResult, type EmbeddingProvider, type KnowledgeBaseConfig } from './knowledge/rag';
17
+ export { accuracyEval, performanceEval, reliabilityEval, EvalSuite, type EvalResult, type PerformanceResult, type AccuracyEvalConfig, type PerformanceEvalConfig, type ReliabilityEvalConfig } from './eval';
18
+ export { MemoryObservabilityAdapter, ConsoleObservabilityAdapter, setObservabilityAdapter, getObservabilityAdapter, type ObservabilityAdapter, type TraceContext, type SpanContext, type SpanData, type TraceData } from './observability';
19
+ export { SkillManager, createSkillManager, parseSkillFile, type Skill, type SkillMetadata, type SkillDiscoveryOptions } from './skills';
20
+ export { chat, listProviders, version, help } from './cli';
21
+ export { createProvider, getDefaultProvider, parseModelString, isProviderAvailable, getAvailableProviders, OpenAIProvider, AnthropicProvider, GoogleProvider, BaseProvider, type LLMProvider, type ProviderConfig, type ProviderFactory, type GenerateTextOptions, type GenerateTextResult, type StreamTextOptions, type StreamChunk, type GenerateObjectOptions, type GenerateObjectResult, type TokenUsage, type Message as ProviderMessage, type ToolCall, type ToolDefinition as ProviderToolDefinition, } from './llm/providers';
package/dist/index.js CHANGED
@@ -14,10 +14,81 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.BaseProvider = exports.GoogleProvider = exports.AnthropicProvider = exports.OpenAIProvider = exports.getAvailableProviders = exports.isProviderAvailable = exports.parseModelString = exports.getDefaultProvider = exports.createProvider = exports.help = exports.version = exports.listProviders = exports.chat = exports.parseSkillFile = exports.createSkillManager = exports.SkillManager = exports.getObservabilityAdapter = exports.setObservabilityAdapter = exports.ConsoleObservabilityAdapter = exports.MemoryObservabilityAdapter = exports.EvalSuite = exports.reliabilityEval = exports.performanceEval = exports.accuracyEval = exports.createKnowledgeBase = exports.KnowledgeBase = exports.createContextAgent = exports.ContextAgent = exports.routeConditions = exports.createRouter = exports.RouterAgent = exports.handoffFilters = exports.handoff = exports.Handoff = exports.getTool = exports.registerTool = exports.getRegistry = exports.ToolRegistry = exports.tool = exports.FunctionTool = exports.BaseTool = void 0;
17
18
  // Export all public modules
18
19
  __exportStar(require("./agent"), exports);
19
20
  __exportStar(require("./knowledge"), exports);
20
21
  __exportStar(require("./llm"), exports);
21
22
  __exportStar(require("./memory"), exports);
22
23
  __exportStar(require("./process"), exports);
23
- __exportStar(require("./tools"), exports);
24
+ // Export tools (excluding conflicting types)
25
+ var tools_1 = require("./tools");
26
+ Object.defineProperty(exports, "BaseTool", { enumerable: true, get: function () { return tools_1.BaseTool; } });
27
+ Object.defineProperty(exports, "FunctionTool", { enumerable: true, get: function () { return tools_1.FunctionTool; } });
28
+ Object.defineProperty(exports, "tool", { enumerable: true, get: function () { return tools_1.tool; } });
29
+ Object.defineProperty(exports, "ToolRegistry", { enumerable: true, get: function () { return tools_1.ToolRegistry; } });
30
+ Object.defineProperty(exports, "getRegistry", { enumerable: true, get: function () { return tools_1.getRegistry; } });
31
+ Object.defineProperty(exports, "registerTool", { enumerable: true, get: function () { return tools_1.registerTool; } });
32
+ Object.defineProperty(exports, "getTool", { enumerable: true, get: function () { return tools_1.getTool; } });
33
+ __exportStar(require("./tools/arxivTools"), exports);
34
+ __exportStar(require("./tools/mcpSse"), exports);
35
+ // Export session management
36
+ __exportStar(require("./session"), exports);
37
+ // Export database adapters
38
+ __exportStar(require("./db"), exports);
39
+ // Export workflows
40
+ __exportStar(require("./workflows"), exports);
41
+ // Export guardrails
42
+ __exportStar(require("./guardrails"), exports);
43
+ // Export handoff
44
+ var handoff_1 = require("./agent/handoff");
45
+ Object.defineProperty(exports, "Handoff", { enumerable: true, get: function () { return handoff_1.Handoff; } });
46
+ Object.defineProperty(exports, "handoff", { enumerable: true, get: function () { return handoff_1.handoff; } });
47
+ Object.defineProperty(exports, "handoffFilters", { enumerable: true, get: function () { return handoff_1.handoffFilters; } });
48
+ // Export router agent
49
+ var router_1 = require("./agent/router");
50
+ Object.defineProperty(exports, "RouterAgent", { enumerable: true, get: function () { return router_1.RouterAgent; } });
51
+ Object.defineProperty(exports, "createRouter", { enumerable: true, get: function () { return router_1.createRouter; } });
52
+ Object.defineProperty(exports, "routeConditions", { enumerable: true, get: function () { return router_1.routeConditions; } });
53
+ // Export context agent
54
+ var context_1 = require("./agent/context");
55
+ Object.defineProperty(exports, "ContextAgent", { enumerable: true, get: function () { return context_1.ContextAgent; } });
56
+ Object.defineProperty(exports, "createContextAgent", { enumerable: true, get: function () { return context_1.createContextAgent; } });
57
+ // Export knowledge base (RAG)
58
+ var rag_1 = require("./knowledge/rag");
59
+ Object.defineProperty(exports, "KnowledgeBase", { enumerable: true, get: function () { return rag_1.KnowledgeBase; } });
60
+ Object.defineProperty(exports, "createKnowledgeBase", { enumerable: true, get: function () { return rag_1.createKnowledgeBase; } });
61
+ // Export evaluation framework
62
+ var eval_1 = require("./eval");
63
+ Object.defineProperty(exports, "accuracyEval", { enumerable: true, get: function () { return eval_1.accuracyEval; } });
64
+ Object.defineProperty(exports, "performanceEval", { enumerable: true, get: function () { return eval_1.performanceEval; } });
65
+ Object.defineProperty(exports, "reliabilityEval", { enumerable: true, get: function () { return eval_1.reliabilityEval; } });
66
+ Object.defineProperty(exports, "EvalSuite", { enumerable: true, get: function () { return eval_1.EvalSuite; } });
67
+ // Export observability
68
+ var observability_1 = require("./observability");
69
+ Object.defineProperty(exports, "MemoryObservabilityAdapter", { enumerable: true, get: function () { return observability_1.MemoryObservabilityAdapter; } });
70
+ Object.defineProperty(exports, "ConsoleObservabilityAdapter", { enumerable: true, get: function () { return observability_1.ConsoleObservabilityAdapter; } });
71
+ Object.defineProperty(exports, "setObservabilityAdapter", { enumerable: true, get: function () { return observability_1.setObservabilityAdapter; } });
72
+ Object.defineProperty(exports, "getObservabilityAdapter", { enumerable: true, get: function () { return observability_1.getObservabilityAdapter; } });
73
+ // Export skills
74
+ var skills_1 = require("./skills");
75
+ Object.defineProperty(exports, "SkillManager", { enumerable: true, get: function () { return skills_1.SkillManager; } });
76
+ Object.defineProperty(exports, "createSkillManager", { enumerable: true, get: function () { return skills_1.createSkillManager; } });
77
+ Object.defineProperty(exports, "parseSkillFile", { enumerable: true, get: function () { return skills_1.parseSkillFile; } });
78
+ // Export CLI
79
+ var cli_1 = require("./cli");
80
+ Object.defineProperty(exports, "chat", { enumerable: true, get: function () { return cli_1.chat; } });
81
+ Object.defineProperty(exports, "listProviders", { enumerable: true, get: function () { return cli_1.listProviders; } });
82
+ Object.defineProperty(exports, "version", { enumerable: true, get: function () { return cli_1.version; } });
83
+ Object.defineProperty(exports, "help", { enumerable: true, get: function () { return cli_1.help; } });
84
+ // Export providers with explicit names to avoid conflicts
85
+ var providers_1 = require("./llm/providers");
86
+ Object.defineProperty(exports, "createProvider", { enumerable: true, get: function () { return providers_1.createProvider; } });
87
+ Object.defineProperty(exports, "getDefaultProvider", { enumerable: true, get: function () { return providers_1.getDefaultProvider; } });
88
+ Object.defineProperty(exports, "parseModelString", { enumerable: true, get: function () { return providers_1.parseModelString; } });
89
+ Object.defineProperty(exports, "isProviderAvailable", { enumerable: true, get: function () { return providers_1.isProviderAvailable; } });
90
+ Object.defineProperty(exports, "getAvailableProviders", { enumerable: true, get: function () { return providers_1.getAvailableProviders; } });
91
+ Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return providers_1.OpenAIProvider; } });
92
+ Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return providers_1.AnthropicProvider; } });
93
+ Object.defineProperty(exports, "GoogleProvider", { enumerable: true, get: function () { return providers_1.GoogleProvider; } });
94
+ Object.defineProperty(exports, "BaseProvider", { enumerable: true, get: function () { return providers_1.BaseProvider; } });
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Knowledge Base (RAG) - Retrieval Augmented Generation
3
+ */
4
+ export interface Document {
5
+ id: string;
6
+ content: string;
7
+ metadata?: Record<string, any>;
8
+ embedding?: number[];
9
+ }
10
+ export interface SearchResult {
11
+ document: Document;
12
+ score: number;
13
+ }
14
+ export interface EmbeddingProvider {
15
+ embed(text: string): Promise<number[]>;
16
+ embedBatch(texts: string[]): Promise<number[][]>;
17
+ }
18
+ export interface KnowledgeBaseConfig {
19
+ embeddingProvider?: EmbeddingProvider;
20
+ similarityThreshold?: number;
21
+ maxResults?: number;
22
+ }
23
+ /**
24
+ * Simple in-memory vector store for RAG
25
+ */
26
+ export declare class KnowledgeBase {
27
+ private documents;
28
+ private embeddingProvider?;
29
+ private similarityThreshold;
30
+ private maxResults;
31
+ constructor(config?: KnowledgeBaseConfig);
32
+ /**
33
+ * Add a document to the knowledge base
34
+ */
35
+ add(doc: Omit<Document, 'embedding'>): Promise<Document>;
36
+ /**
37
+ * Add multiple documents
38
+ */
39
+ addBatch(docs: Array<Omit<Document, 'embedding'>>): Promise<Document[]>;
40
+ /**
41
+ * Get a document by ID
42
+ */
43
+ get(id: string): Document | undefined;
44
+ /**
45
+ * Delete a document
46
+ */
47
+ delete(id: string): boolean;
48
+ /**
49
+ * Search for similar documents
50
+ */
51
+ search(query: string, limit?: number): Promise<SearchResult[]>;
52
+ /**
53
+ * Simple text-based search fallback
54
+ */
55
+ private textSearch;
56
+ /**
57
+ * Calculate cosine similarity between two vectors
58
+ */
59
+ private cosineSimilarity;
60
+ /**
61
+ * Get all documents
62
+ */
63
+ list(): Document[];
64
+ /**
65
+ * Clear all documents
66
+ */
67
+ clear(): void;
68
+ /**
69
+ * Get document count
70
+ */
71
+ get size(): number;
72
+ /**
73
+ * Build context from search results for RAG
74
+ */
75
+ buildContext(results: SearchResult[]): string;
76
+ }
77
+ /**
78
+ * Create a knowledge base
79
+ */
80
+ export declare function createKnowledgeBase(config?: KnowledgeBaseConfig): KnowledgeBase;
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * Knowledge Base (RAG) - Retrieval Augmented Generation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KnowledgeBase = void 0;
7
+ exports.createKnowledgeBase = createKnowledgeBase;
8
+ /**
9
+ * Simple in-memory vector store for RAG
10
+ */
11
+ class KnowledgeBase {
12
+ constructor(config = {}) {
13
+ this.documents = new Map();
14
+ this.embeddingProvider = config.embeddingProvider;
15
+ this.similarityThreshold = config.similarityThreshold ?? 0.7;
16
+ this.maxResults = config.maxResults ?? 5;
17
+ }
18
+ /**
19
+ * Add a document to the knowledge base
20
+ */
21
+ async add(doc) {
22
+ const document = { ...doc };
23
+ if (this.embeddingProvider) {
24
+ document.embedding = await this.embeddingProvider.embed(doc.content);
25
+ }
26
+ this.documents.set(doc.id, document);
27
+ return document;
28
+ }
29
+ /**
30
+ * Add multiple documents
31
+ */
32
+ async addBatch(docs) {
33
+ if (this.embeddingProvider && docs.length > 0) {
34
+ const embeddings = await this.embeddingProvider.embedBatch(docs.map(d => d.content));
35
+ return Promise.all(docs.map(async (doc, i) => {
36
+ const document = { ...doc, embedding: embeddings[i] };
37
+ this.documents.set(doc.id, document);
38
+ return document;
39
+ }));
40
+ }
41
+ return Promise.all(docs.map(doc => this.add(doc)));
42
+ }
43
+ /**
44
+ * Get a document by ID
45
+ */
46
+ get(id) {
47
+ return this.documents.get(id);
48
+ }
49
+ /**
50
+ * Delete a document
51
+ */
52
+ delete(id) {
53
+ return this.documents.delete(id);
54
+ }
55
+ /**
56
+ * Search for similar documents
57
+ */
58
+ async search(query, limit) {
59
+ const maxResults = limit ?? this.maxResults;
60
+ if (!this.embeddingProvider) {
61
+ // Fallback to simple text matching
62
+ return this.textSearch(query, maxResults);
63
+ }
64
+ const queryEmbedding = await this.embeddingProvider.embed(query);
65
+ const results = [];
66
+ for (const doc of this.documents.values()) {
67
+ if (doc.embedding) {
68
+ const score = this.cosineSimilarity(queryEmbedding, doc.embedding);
69
+ if (score >= this.similarityThreshold) {
70
+ results.push({ document: doc, score });
71
+ }
72
+ }
73
+ }
74
+ return results
75
+ .sort((a, b) => b.score - a.score)
76
+ .slice(0, maxResults);
77
+ }
78
+ /**
79
+ * Simple text-based search fallback
80
+ */
81
+ textSearch(query, limit) {
82
+ const queryLower = query.toLowerCase();
83
+ const results = [];
84
+ for (const doc of this.documents.values()) {
85
+ const contentLower = doc.content.toLowerCase();
86
+ if (contentLower.includes(queryLower)) {
87
+ const score = queryLower.length / contentLower.length;
88
+ results.push({ document: doc, score: Math.min(score * 10, 1) });
89
+ }
90
+ }
91
+ return results
92
+ .sort((a, b) => b.score - a.score)
93
+ .slice(0, limit);
94
+ }
95
+ /**
96
+ * Calculate cosine similarity between two vectors
97
+ */
98
+ cosineSimilarity(a, b) {
99
+ if (a.length !== b.length)
100
+ return 0;
101
+ let dotProduct = 0;
102
+ let normA = 0;
103
+ let normB = 0;
104
+ for (let i = 0; i < a.length; i++) {
105
+ dotProduct += a[i] * b[i];
106
+ normA += a[i] * a[i];
107
+ normB += b[i] * b[i];
108
+ }
109
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
110
+ return denominator === 0 ? 0 : dotProduct / denominator;
111
+ }
112
+ /**
113
+ * Get all documents
114
+ */
115
+ list() {
116
+ return Array.from(this.documents.values());
117
+ }
118
+ /**
119
+ * Clear all documents
120
+ */
121
+ clear() {
122
+ this.documents.clear();
123
+ }
124
+ /**
125
+ * Get document count
126
+ */
127
+ get size() {
128
+ return this.documents.size;
129
+ }
130
+ /**
131
+ * Build context from search results for RAG
132
+ */
133
+ buildContext(results) {
134
+ if (results.length === 0)
135
+ return '';
136
+ return results
137
+ .map((r, i) => `[${i + 1}] ${r.document.content}`)
138
+ .join('\n\n');
139
+ }
140
+ }
141
+ exports.KnowledgeBase = KnowledgeBase;
142
+ /**
143
+ * Create a knowledge base
144
+ */
145
+ function createKnowledgeBase(config) {
146
+ return new KnowledgeBase(config);
147
+ }
@@ -73,7 +73,7 @@ async function getOpenAIClient() {
73
73
  return openAIInstance;
74
74
  }
75
75
  class OpenAIService {
76
- constructor(model = 'gpt-4o-mini') {
76
+ constructor(model = 'gpt-5-nano') {
77
77
  this.client = null;
78
78
  this.model = model;
79
79
  logger_1.Logger.debug(`OpenAIService initialized with model: ${model}`);
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Anthropic Provider - Implementation for Anthropic Claude API
3
+ */
4
+ import { BaseProvider } from './base';
5
+ import type { ProviderConfig, GenerateTextOptions, GenerateTextResult, StreamTextOptions, StreamChunk, GenerateObjectOptions, GenerateObjectResult, Message, ToolDefinition } from './types';
6
+ interface AnthropicMessage {
7
+ role: 'user' | 'assistant';
8
+ content: string | Array<{
9
+ type: string;
10
+ text?: string;
11
+ tool_use_id?: string;
12
+ content?: string;
13
+ }>;
14
+ }
15
+ interface AnthropicTool {
16
+ name: string;
17
+ description: string;
18
+ input_schema: Record<string, any>;
19
+ }
20
+ export declare class AnthropicProvider extends BaseProvider {
21
+ readonly providerId = "anthropic";
22
+ private apiKey;
23
+ private baseUrl;
24
+ constructor(modelId: string, config?: ProviderConfig);
25
+ generateText(options: GenerateTextOptions): Promise<GenerateTextResult>;
26
+ streamText(options: StreamTextOptions): Promise<AsyncIterable<StreamChunk>>;
27
+ generateObject<T = any>(options: GenerateObjectOptions<T>): Promise<GenerateObjectResult<T>>;
28
+ private extractSystemPrompt;
29
+ protected formatMessages(messages: Message[]): AnthropicMessage[];
30
+ protected formatTools(tools: ToolDefinition[]): AnthropicTool[];
31
+ private mapStopReason;
32
+ }
33
+ export {};