@cogitator-ai/swarms 0.1.0 → 0.3.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 (120) hide show
  1. package/README.md +844 -36
  2. package/dist/assessor/assessor.d.ts +22 -0
  3. package/dist/assessor/assessor.d.ts.map +1 -0
  4. package/dist/assessor/assessor.js +267 -0
  5. package/dist/assessor/assessor.js.map +1 -0
  6. package/dist/assessor/index.d.ts +6 -0
  7. package/dist/assessor/index.d.ts.map +1 -0
  8. package/dist/assessor/index.js +6 -0
  9. package/dist/assessor/index.js.map +1 -0
  10. package/dist/assessor/model-discovery.d.ts +17 -0
  11. package/dist/assessor/model-discovery.d.ts.map +1 -0
  12. package/dist/assessor/model-discovery.js +286 -0
  13. package/dist/assessor/model-discovery.js.map +1 -0
  14. package/dist/assessor/role-matcher.d.ts +31 -0
  15. package/dist/assessor/role-matcher.d.ts.map +1 -0
  16. package/dist/assessor/role-matcher.js +122 -0
  17. package/dist/assessor/role-matcher.js.map +1 -0
  18. package/dist/assessor/scoring.d.ts +14 -0
  19. package/dist/assessor/scoring.d.ts.map +1 -0
  20. package/dist/assessor/scoring.js +151 -0
  21. package/dist/assessor/scoring.js.map +1 -0
  22. package/dist/assessor/task-analyzer.d.ts +13 -0
  23. package/dist/assessor/task-analyzer.d.ts.map +1 -0
  24. package/dist/assessor/task-analyzer.js +185 -0
  25. package/dist/assessor/task-analyzer.js.map +1 -0
  26. package/dist/communication/blackboard.d.ts.map +1 -1
  27. package/dist/communication/blackboard.js +3 -5
  28. package/dist/communication/blackboard.js.map +1 -1
  29. package/dist/communication/event-emitter.d.ts.map +1 -1
  30. package/dist/communication/event-emitter.js +9 -11
  31. package/dist/communication/event-emitter.js.map +1 -1
  32. package/dist/communication/message-bus.d.ts.map +1 -1
  33. package/dist/communication/message-bus.js +11 -21
  34. package/dist/communication/message-bus.js.map +1 -1
  35. package/dist/coordinator.d.ts +2 -0
  36. package/dist/coordinator.d.ts.map +1 -1
  37. package/dist/coordinator.js +46 -0
  38. package/dist/coordinator.js.map +1 -1
  39. package/dist/index.d.ts +6 -4
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +5 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/resources/circuit-breaker.d.ts.map +1 -1
  44. package/dist/resources/circuit-breaker.js +3 -5
  45. package/dist/resources/circuit-breaker.js.map +1 -1
  46. package/dist/resources/tracker.d.ts.map +1 -1
  47. package/dist/resources/tracker.js +1 -3
  48. package/dist/resources/tracker.js.map +1 -1
  49. package/dist/strategies/auction.d.ts.map +1 -1
  50. package/dist/strategies/auction.js +12 -9
  51. package/dist/strategies/auction.js.map +1 -1
  52. package/dist/strategies/base.d.ts.map +1 -1
  53. package/dist/strategies/base.js.map +1 -1
  54. package/dist/strategies/consensus.d.ts.map +1 -1
  55. package/dist/strategies/consensus.js +5 -9
  56. package/dist/strategies/consensus.js.map +1 -1
  57. package/dist/strategies/debate.d.ts.map +1 -1
  58. package/dist/strategies/debate.js.map +1 -1
  59. package/dist/strategies/hierarchical.d.ts.map +1 -1
  60. package/dist/strategies/hierarchical.js +3 -1
  61. package/dist/strategies/hierarchical.js.map +1 -1
  62. package/dist/strategies/index.d.ts +3 -1
  63. package/dist/strategies/index.d.ts.map +1 -1
  64. package/dist/strategies/index.js +9 -0
  65. package/dist/strategies/index.js.map +1 -1
  66. package/dist/strategies/negotiation/approval.d.ts +28 -0
  67. package/dist/strategies/negotiation/approval.d.ts.map +1 -0
  68. package/dist/strategies/negotiation/approval.js +198 -0
  69. package/dist/strategies/negotiation/approval.js.map +1 -0
  70. package/dist/strategies/negotiation/convergence.d.ts +22 -0
  71. package/dist/strategies/negotiation/convergence.d.ts.map +1 -0
  72. package/dist/strategies/negotiation/convergence.js +240 -0
  73. package/dist/strategies/negotiation/convergence.js.map +1 -0
  74. package/dist/strategies/negotiation/index.d.ts +4 -0
  75. package/dist/strategies/negotiation/index.d.ts.map +1 -0
  76. package/dist/strategies/negotiation/index.js +4 -0
  77. package/dist/strategies/negotiation/index.js.map +1 -0
  78. package/dist/strategies/negotiation/turn-manager.d.ts +31 -0
  79. package/dist/strategies/negotiation/turn-manager.d.ts.map +1 -0
  80. package/dist/strategies/negotiation/turn-manager.js +117 -0
  81. package/dist/strategies/negotiation/turn-manager.js.map +1 -0
  82. package/dist/strategies/negotiation.d.ts +39 -0
  83. package/dist/strategies/negotiation.d.ts.map +1 -0
  84. package/dist/strategies/negotiation.js +607 -0
  85. package/dist/strategies/negotiation.js.map +1 -0
  86. package/dist/strategies/pipeline.d.ts.map +1 -1
  87. package/dist/strategies/pipeline.js +8 -5
  88. package/dist/strategies/pipeline.js.map +1 -1
  89. package/dist/strategies/round-robin.d.ts.map +1 -1
  90. package/dist/strategies/round-robin.js +1 -1
  91. package/dist/strategies/round-robin.js.map +1 -1
  92. package/dist/swarm.d.ts +19 -2
  93. package/dist/swarm.d.ts.map +1 -1
  94. package/dist/swarm.js +50 -2
  95. package/dist/swarm.js.map +1 -1
  96. package/dist/tools/blackboard.d.ts.map +1 -1
  97. package/dist/tools/blackboard.js +10 -4
  98. package/dist/tools/blackboard.js.map +1 -1
  99. package/dist/tools/delegation.d.ts +1 -1
  100. package/dist/tools/delegation.d.ts.map +1 -1
  101. package/dist/tools/delegation.js +41 -28
  102. package/dist/tools/delegation.js.map +1 -1
  103. package/dist/tools/index.d.ts +2 -1
  104. package/dist/tools/index.d.ts.map +1 -1
  105. package/dist/tools/index.js +6 -0
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/messaging.d.ts.map +1 -1
  108. package/dist/tools/messaging.js +10 -9
  109. package/dist/tools/messaging.js.map +1 -1
  110. package/dist/tools/negotiation.d.ts +233 -0
  111. package/dist/tools/negotiation.d.ts.map +1 -0
  112. package/dist/tools/negotiation.js +445 -0
  113. package/dist/tools/negotiation.js.map +1 -0
  114. package/dist/tools/voting.d.ts.map +1 -1
  115. package/dist/tools/voting.js +14 -10
  116. package/dist/tools/voting.js.map +1 -1
  117. package/dist/workflow/swarm-node.d.ts.map +1 -1
  118. package/dist/workflow/swarm-node.js +6 -8
  119. package/dist/workflow/swarm-node.js.map +1 -1
  120. package/package.json +5 -4
@@ -0,0 +1,22 @@
1
+ import type { SwarmConfig, AssessorConfig, AssessmentResult, TaskRequirements, ModelCandidate, Assessor } from '@cogitator-ai/types';
2
+ export declare class SwarmAssessor implements Assessor {
3
+ private config;
4
+ private taskAnalyzer;
5
+ private modelDiscovery;
6
+ private modelScorer;
7
+ private roleMatcher;
8
+ private assessmentCache;
9
+ constructor(config?: AssessorConfig);
10
+ analyze(task: string, swarmConfig: SwarmConfig): Promise<AssessmentResult>;
11
+ assignModels(config: SwarmConfig, result: AssessmentResult): SwarmConfig;
12
+ suggestModels(requirements: TaskRequirements): Promise<ModelCandidate[]>;
13
+ private getCacheKey;
14
+ private hashString;
15
+ private getAgentNames;
16
+ private detectProvider;
17
+ private estimateTotalCost;
18
+ private estimateModelCost;
19
+ private optimizeForBudget;
20
+ }
21
+ export declare function createAssessor(config?: AssessorConfig): SwarmAssessor;
22
+ //# sourceMappingURL=assessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessor.d.ts","sourceRoot":"","sources":["../../src/assessor/assessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAChB,cAAc,EAGd,QAAQ,EAGT,MAAM,qBAAqB,CAAC;AA2B7B,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAsE;gBAEjF,MAAM,GAAE,cAAmB;IAQjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4GhF,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,GAAG,WAAW;IAsDlE,aAAa,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqB9E,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,iBAAiB;CAwC1B;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,aAAa,CAErE"}
@@ -0,0 +1,267 @@
1
+ import { TaskAnalyzer } from './task-analyzer';
2
+ import { ModelDiscovery } from './model-discovery';
3
+ import { ModelScorer } from './scoring';
4
+ import { RoleMatcher } from './role-matcher';
5
+ const DEFAULT_CONFIG = {
6
+ mode: 'rules',
7
+ assessorModel: 'gpt-4o-mini',
8
+ preferLocal: true,
9
+ minCapabilityMatch: 0.3,
10
+ ollamaUrl: 'http://localhost:11434',
11
+ enabledProviders: ['ollama', 'openai', 'anthropic', 'google'],
12
+ cacheAssessments: true,
13
+ cacheTTL: 5 * 60 * 1000,
14
+ };
15
+ const TOKEN_ESTIMATES = {
16
+ simple: 500,
17
+ moderate: 1500,
18
+ complex: 4000,
19
+ };
20
+ export class SwarmAssessor {
21
+ config;
22
+ taskAnalyzer;
23
+ modelDiscovery;
24
+ modelScorer;
25
+ roleMatcher;
26
+ assessmentCache = new Map();
27
+ constructor(config = {}) {
28
+ this.config = { ...DEFAULT_CONFIG, ...config };
29
+ this.taskAnalyzer = new TaskAnalyzer();
30
+ this.modelDiscovery = new ModelDiscovery(this.config);
31
+ this.modelScorer = new ModelScorer();
32
+ this.roleMatcher = new RoleMatcher();
33
+ }
34
+ async analyze(task, swarmConfig) {
35
+ const cacheKey = this.getCacheKey(task, swarmConfig);
36
+ if (this.config.cacheAssessments) {
37
+ const cached = this.assessmentCache.get(cacheKey);
38
+ if (cached && Date.now() - cached.timestamp < this.config.cacheTTL) {
39
+ return cached.result;
40
+ }
41
+ }
42
+ const taskAnalysis = this.taskAnalyzer.analyze(task);
43
+ const discoveredModels = await this.modelDiscovery.discoverAll();
44
+ const agents = this.roleMatcher.extractAgentsFromConfig(swarmConfig);
45
+ const roleAnalyses = new Map();
46
+ const assignments = [];
47
+ const warnings = [];
48
+ for (const agent of agents) {
49
+ if (agent.metadata.locked) {
50
+ assignments.push({
51
+ agentName: agent.agent.name,
52
+ originalModel: agent.agent.model ?? 'unknown',
53
+ assignedModel: agent.agent.model ?? 'unknown',
54
+ provider: this.detectProvider(agent.agent.model ?? ''),
55
+ score: 100,
56
+ reasons: ['Model locked by configuration'],
57
+ fallbackModels: [],
58
+ locked: true,
59
+ });
60
+ continue;
61
+ }
62
+ const roleReqs = this.roleMatcher.analyzeRole(agent, taskAnalysis);
63
+ roleAnalyses.set(agent.agent.name, roleReqs);
64
+ const scoredModels = this.modelScorer.scoreAll(discoveredModels, roleReqs);
65
+ const minScore = this.config.minCapabilityMatch * 100;
66
+ const validModels = scoredModels.filter((s) => s.score >= minScore);
67
+ if (validModels.length === 0) {
68
+ const originalModel = agent.agent.model ?? 'gpt-4o-mini';
69
+ warnings.push(`No suitable model found for ${agent.agent.name}, keeping original: ${originalModel}`);
70
+ assignments.push({
71
+ agentName: agent.agent.name,
72
+ originalModel,
73
+ assignedModel: originalModel,
74
+ provider: this.detectProvider(originalModel),
75
+ score: 50,
76
+ reasons: ['No better model found, using original'],
77
+ fallbackModels: [],
78
+ locked: false,
79
+ });
80
+ continue;
81
+ }
82
+ let selectedModel = validModels[0];
83
+ if (this.config.preferLocal) {
84
+ const localModel = validModels.find((m) => m.model.isLocal);
85
+ if (localModel && localModel.score >= selectedModel.score * 0.8) {
86
+ selectedModel = localModel;
87
+ }
88
+ }
89
+ assignments.push({
90
+ agentName: agent.agent.name,
91
+ originalModel: agent.agent.model ?? 'unknown',
92
+ assignedModel: selectedModel.model.id,
93
+ provider: selectedModel.model.provider,
94
+ score: selectedModel.score,
95
+ reasons: selectedModel.reasons,
96
+ fallbackModels: validModels.slice(1, 4).map((s) => s.model.id),
97
+ locked: false,
98
+ });
99
+ }
100
+ if (this.config.maxCostPerRun) {
101
+ this.optimizeForBudget(assignments, discoveredModels, this.config.maxCostPerRun, taskAnalysis.complexity);
102
+ }
103
+ const result = {
104
+ taskAnalysis,
105
+ roleAnalyses,
106
+ assignments,
107
+ totalEstimatedCost: this.estimateTotalCost(assignments, discoveredModels, taskAnalysis.complexity),
108
+ warnings,
109
+ discoveredModels,
110
+ };
111
+ if (this.config.cacheAssessments) {
112
+ this.assessmentCache.set(cacheKey, { result, timestamp: Date.now() });
113
+ }
114
+ return result;
115
+ }
116
+ assignModels(config, result) {
117
+ const updatedConfig = { ...config };
118
+ for (const assignment of result.assignments) {
119
+ if (assignment.locked)
120
+ continue;
121
+ const updateAgent = (agent) => {
122
+ if (!agent || agent.name !== assignment.agentName)
123
+ return agent;
124
+ return { ...agent, model: assignment.assignedModel };
125
+ };
126
+ if (updatedConfig.supervisor) {
127
+ updatedConfig.supervisor = updateAgent(updatedConfig.supervisor);
128
+ }
129
+ if (updatedConfig.moderator) {
130
+ updatedConfig.moderator = updateAgent(updatedConfig.moderator);
131
+ }
132
+ if (updatedConfig.router) {
133
+ updatedConfig.router = updateAgent(updatedConfig.router);
134
+ }
135
+ if (updatedConfig.workers) {
136
+ updatedConfig.workers = updatedConfig.workers.map((w) => updateAgent(w) ?? w);
137
+ }
138
+ if (updatedConfig.agents) {
139
+ updatedConfig.agents = updatedConfig.agents.map((a) => updateAgent(a) ?? a);
140
+ }
141
+ if (updatedConfig.stages) {
142
+ updatedConfig.stages = updatedConfig.stages.map((stage) => ({
143
+ ...stage,
144
+ agent: updateAgent(stage.agent) ?? stage.agent,
145
+ }));
146
+ }
147
+ }
148
+ return updatedConfig;
149
+ }
150
+ async suggestModels(requirements) {
151
+ const discoveredModels = await this.modelDiscovery.discoverAll();
152
+ const roleReqs = {
153
+ ...requirements,
154
+ role: 'worker',
155
+ agentName: '_suggestion',
156
+ };
157
+ const scoredModels = this.modelScorer.scoreAll(discoveredModels, roleReqs);
158
+ return scoredModels.slice(0, 10).map((s) => ({
159
+ modelId: s.model.id,
160
+ provider: s.model.provider,
161
+ score: s.score,
162
+ reasons: s.reasons,
163
+ isLocal: s.model.isLocal,
164
+ estimatedCost: (s.model.pricing.input + s.model.pricing.output) / 2,
165
+ capabilities: s.model.capabilities,
166
+ }));
167
+ }
168
+ getCacheKey(task, config) {
169
+ const taskHash = this.hashString(task.slice(0, 500));
170
+ const configHash = this.hashString(JSON.stringify({
171
+ name: config.name,
172
+ strategy: config.strategy,
173
+ agents: this.getAgentNames(config),
174
+ }));
175
+ return `${taskHash}-${configHash}`;
176
+ }
177
+ hashString(str) {
178
+ let hash = 0;
179
+ for (let i = 0; i < str.length; i++) {
180
+ const char = str.charCodeAt(i);
181
+ hash = (hash << 5) - hash + char;
182
+ hash = hash & hash;
183
+ }
184
+ return Math.abs(hash).toString(36);
185
+ }
186
+ getAgentNames(config) {
187
+ const names = [];
188
+ if (config.supervisor)
189
+ names.push(config.supervisor.name);
190
+ if (config.workers)
191
+ names.push(...config.workers.map((w) => w.name));
192
+ if (config.agents)
193
+ names.push(...config.agents.map((a) => a.name));
194
+ if (config.moderator)
195
+ names.push(config.moderator.name);
196
+ if (config.router)
197
+ names.push(config.router.name);
198
+ return names;
199
+ }
200
+ detectProvider(modelId) {
201
+ const lower = modelId.toLowerCase();
202
+ if (lower.includes('gpt') || lower.includes('o1') || lower.includes('o3'))
203
+ return 'openai';
204
+ if (lower.includes('claude'))
205
+ return 'anthropic';
206
+ if (lower.includes('gemini'))
207
+ return 'google';
208
+ if (lower.includes('mistral') || lower.includes('mixtral'))
209
+ return 'mistral';
210
+ return 'ollama';
211
+ }
212
+ estimateTotalCost(assignments, discoveredModels, complexity = 'moderate') {
213
+ const estimatedTokens = TOKEN_ESTIMATES[complexity];
214
+ let total = 0;
215
+ for (const assignment of assignments) {
216
+ const model = discoveredModels.find((m) => m.id === assignment.assignedModel);
217
+ if (model && !model.isLocal) {
218
+ total +=
219
+ (model.pricing.input * estimatedTokens + model.pricing.output * estimatedTokens) /
220
+ 1_000_000;
221
+ }
222
+ }
223
+ return total;
224
+ }
225
+ estimateModelCost(model, complexity = 'moderate') {
226
+ if (model.isLocal)
227
+ return 0;
228
+ const estimatedTokens = TOKEN_ESTIMATES[complexity];
229
+ return ((model.pricing.input * estimatedTokens + model.pricing.output * estimatedTokens) / 1_000_000);
230
+ }
231
+ optimizeForBudget(assignments, discoveredModels, budget, complexity = 'moderate') {
232
+ let currentCost = this.estimateTotalCost(assignments, discoveredModels, complexity);
233
+ if (currentCost <= budget)
234
+ return;
235
+ const byExpense = [...assignments]
236
+ .filter((a) => !a.locked)
237
+ .map((a) => {
238
+ const model = discoveredModels.find((m) => m.id === a.assignedModel);
239
+ return {
240
+ assignment: a,
241
+ model,
242
+ cost: model ? this.estimateModelCost(model, complexity) : 0,
243
+ };
244
+ })
245
+ .sort((a, b) => b.cost - a.cost);
246
+ for (const item of byExpense) {
247
+ if (currentCost <= budget)
248
+ break;
249
+ for (const fallbackId of item.assignment.fallbackModels) {
250
+ const fallbackModel = discoveredModels.find((m) => m.id === fallbackId);
251
+ if (fallbackModel?.isLocal) {
252
+ const oldCost = item.model ? this.estimateModelCost(item.model, complexity) : 0;
253
+ const newCost = this.estimateModelCost(fallbackModel, complexity);
254
+ item.assignment.assignedModel = fallbackId;
255
+ item.assignment.provider = fallbackModel.provider;
256
+ item.assignment.reasons.push('Downgraded for cost optimization');
257
+ currentCost -= oldCost - newCost;
258
+ break;
259
+ }
260
+ }
261
+ }
262
+ }
263
+ }
264
+ export function createAssessor(config) {
265
+ return new SwarmAssessor(config);
266
+ }
267
+ //# sourceMappingURL=assessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessor.js","sourceRoot":"","sources":["../../src/assessor/assessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { SwarmAssessor, createAssessor } from './assessor';
2
+ export { TaskAnalyzer } from './task-analyzer';
3
+ export { ModelDiscovery } from './model-discovery';
4
+ export { ModelScorer, type ScoredModel } from './scoring';
5
+ export { RoleMatcher } from './role-matcher';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assessor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { SwarmAssessor, createAssessor } from './assessor';
2
+ export { TaskAnalyzer } from './task-analyzer';
3
+ export { ModelDiscovery } from './model-discovery';
4
+ export { ModelScorer } from './scoring';
5
+ export { RoleMatcher } from './role-matcher';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assessor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { DiscoveredModel, ModelProvider, AssessorConfig } from '@cogitator-ai/types';
2
+ export declare class ModelDiscovery {
3
+ private ollamaUrl;
4
+ private enabledProviders;
5
+ private cache;
6
+ private cacheTTL;
7
+ constructor(config: AssessorConfig);
8
+ discoverAll(): Promise<DiscoveredModel[]>;
9
+ discoverOllama(): Promise<DiscoveredModel[]>;
10
+ private transformOllamaModel;
11
+ private inferOllamaCapabilities;
12
+ private inferContextWindow;
13
+ private formatModelName;
14
+ getCloudModels(filterProviders?: ModelProvider[]): DiscoveredModel[];
15
+ checkOllamaAvailability(): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=model-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-discovery.d.ts","sourceRoot":"","sources":["../../src/assessor/model-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEb,cAAc,EACf,MAAM,qBAAqB,CAAC;AA8M7B,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,KAAK,CAAuE;IACpF,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,cAAc;IAQ5B,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAqBzC,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBlD,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IASvB,cAAc,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE;IAO9D,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;CAUlD"}
@@ -0,0 +1,286 @@
1
+ const KNOWN_MODEL_CAPABILITIES = {
2
+ llama3: { supportsTools: true, supportsJson: true },
3
+ 'llama3.1': { supportsTools: true, supportsJson: true },
4
+ 'llama3.2': { supportsTools: true, supportsJson: true },
5
+ 'llama3.3': { supportsTools: true, supportsJson: true },
6
+ qwen: { supportsTools: true, supportsJson: true },
7
+ qwen2: { supportsTools: true, supportsJson: true },
8
+ 'qwen2.5': { supportsTools: true, supportsJson: true },
9
+ mistral: { supportsTools: true, supportsJson: true },
10
+ mixtral: { supportsTools: true, supportsJson: true },
11
+ llava: { supportsVision: true, supportsJson: true },
12
+ bakllava: { supportsVision: true, supportsJson: true },
13
+ 'llama3.2-vision': { supportsVision: true, supportsTools: true, supportsJson: true },
14
+ 'minicpm-v': { supportsVision: true, supportsJson: true },
15
+ moondream: { supportsVision: true },
16
+ deepseek: { supportsTools: true, supportsJson: true },
17
+ phi3: { supportsJson: true },
18
+ phi4: { supportsTools: true, supportsJson: true },
19
+ gemma: { supportsJson: true },
20
+ gemma2: { supportsJson: true },
21
+ codellama: { supportsJson: true },
22
+ starcoder: { supportsJson: true },
23
+ };
24
+ const KNOWN_CONTEXT_WINDOWS = {
25
+ 'llama3.2:1b': 128000,
26
+ 'llama3.2:3b': 128000,
27
+ 'llama3.1': 128000,
28
+ llama3: 8192,
29
+ 'qwen2.5': 128000,
30
+ qwen2: 32768,
31
+ mistral: 32768,
32
+ mixtral: 32768,
33
+ phi3: 128000,
34
+ phi4: 16384,
35
+ gemma2: 8192,
36
+ deepseek: 64000,
37
+ };
38
+ const CLOUD_MODELS = [
39
+ {
40
+ id: 'gpt-4o',
41
+ provider: 'openai',
42
+ displayName: 'GPT-4o',
43
+ capabilities: {
44
+ supportsVision: true,
45
+ supportsTools: true,
46
+ supportsJson: true,
47
+ supportsStreaming: true,
48
+ },
49
+ pricing: { input: 2.5, output: 10 },
50
+ contextWindow: 128000,
51
+ isLocal: false,
52
+ isAvailable: true,
53
+ },
54
+ {
55
+ id: 'gpt-4o-mini',
56
+ provider: 'openai',
57
+ displayName: 'GPT-4o Mini',
58
+ capabilities: {
59
+ supportsVision: true,
60
+ supportsTools: true,
61
+ supportsJson: true,
62
+ supportsStreaming: true,
63
+ },
64
+ pricing: { input: 0.15, output: 0.6 },
65
+ contextWindow: 128000,
66
+ isLocal: false,
67
+ isAvailable: true,
68
+ },
69
+ {
70
+ id: 'gpt-4-turbo',
71
+ provider: 'openai',
72
+ displayName: 'GPT-4 Turbo',
73
+ capabilities: {
74
+ supportsVision: true,
75
+ supportsTools: true,
76
+ supportsJson: true,
77
+ supportsStreaming: true,
78
+ },
79
+ pricing: { input: 10, output: 30 },
80
+ contextWindow: 128000,
81
+ isLocal: false,
82
+ isAvailable: true,
83
+ },
84
+ {
85
+ id: 'claude-sonnet-4-20250514',
86
+ provider: 'anthropic',
87
+ displayName: 'Claude Sonnet 4',
88
+ capabilities: {
89
+ supportsVision: true,
90
+ supportsTools: true,
91
+ supportsJson: true,
92
+ supportsStreaming: true,
93
+ },
94
+ pricing: { input: 3, output: 15 },
95
+ contextWindow: 200000,
96
+ isLocal: false,
97
+ isAvailable: true,
98
+ },
99
+ {
100
+ id: 'claude-3-5-sonnet-20241022',
101
+ provider: 'anthropic',
102
+ displayName: 'Claude 3.5 Sonnet',
103
+ capabilities: {
104
+ supportsVision: true,
105
+ supportsTools: true,
106
+ supportsJson: true,
107
+ supportsStreaming: true,
108
+ },
109
+ pricing: { input: 3, output: 15 },
110
+ contextWindow: 200000,
111
+ isLocal: false,
112
+ isAvailable: true,
113
+ },
114
+ {
115
+ id: 'claude-3-5-haiku-20241022',
116
+ provider: 'anthropic',
117
+ displayName: 'Claude 3.5 Haiku',
118
+ capabilities: { supportsTools: true, supportsJson: true, supportsStreaming: true },
119
+ pricing: { input: 0.8, output: 4 },
120
+ contextWindow: 200000,
121
+ isLocal: false,
122
+ isAvailable: true,
123
+ },
124
+ {
125
+ id: 'claude-3-opus-20240229',
126
+ provider: 'anthropic',
127
+ displayName: 'Claude 3 Opus',
128
+ capabilities: {
129
+ supportsVision: true,
130
+ supportsTools: true,
131
+ supportsJson: true,
132
+ supportsStreaming: true,
133
+ },
134
+ pricing: { input: 15, output: 75 },
135
+ contextWindow: 200000,
136
+ isLocal: false,
137
+ isAvailable: true,
138
+ },
139
+ {
140
+ id: 'gemini-1.5-pro',
141
+ provider: 'google',
142
+ displayName: 'Gemini 1.5 Pro',
143
+ capabilities: {
144
+ supportsVision: true,
145
+ supportsTools: true,
146
+ supportsJson: true,
147
+ supportsStreaming: true,
148
+ },
149
+ pricing: { input: 1.25, output: 5 },
150
+ contextWindow: 2000000,
151
+ isLocal: false,
152
+ isAvailable: true,
153
+ },
154
+ {
155
+ id: 'gemini-1.5-flash',
156
+ provider: 'google',
157
+ displayName: 'Gemini 1.5 Flash',
158
+ capabilities: {
159
+ supportsVision: true,
160
+ supportsTools: true,
161
+ supportsJson: true,
162
+ supportsStreaming: true,
163
+ },
164
+ pricing: { input: 0.075, output: 0.3 },
165
+ contextWindow: 1000000,
166
+ isLocal: false,
167
+ isAvailable: true,
168
+ },
169
+ {
170
+ id: 'gemini-2.0-flash',
171
+ provider: 'google',
172
+ displayName: 'Gemini 2.0 Flash',
173
+ capabilities: {
174
+ supportsVision: true,
175
+ supportsTools: true,
176
+ supportsJson: true,
177
+ supportsStreaming: true,
178
+ },
179
+ pricing: { input: 0.1, output: 0.4 },
180
+ contextWindow: 1000000,
181
+ isLocal: false,
182
+ isAvailable: true,
183
+ },
184
+ ];
185
+ export class ModelDiscovery {
186
+ ollamaUrl;
187
+ enabledProviders;
188
+ cache = new Map();
189
+ cacheTTL;
190
+ constructor(config) {
191
+ this.ollamaUrl = config.ollamaUrl ?? 'http://localhost:11434';
192
+ this.enabledProviders = new Set(config.enabledProviders ?? ['ollama', 'openai', 'anthropic', 'google']);
193
+ this.cacheTTL = config.cacheTTL ?? 5 * 60 * 1000;
194
+ }
195
+ async discoverAll() {
196
+ const cacheKey = 'all';
197
+ const cached = this.cache.get(cacheKey);
198
+ if (cached && Date.now() - cached.timestamp < this.cacheTTL) {
199
+ return cached.models;
200
+ }
201
+ const models = [];
202
+ if (this.enabledProviders.has('ollama')) {
203
+ const ollamaModels = await this.discoverOllama();
204
+ models.push(...ollamaModels);
205
+ }
206
+ const cloudModels = this.getCloudModels();
207
+ models.push(...cloudModels);
208
+ this.cache.set(cacheKey, { models, timestamp: Date.now() });
209
+ return models;
210
+ }
211
+ async discoverOllama() {
212
+ try {
213
+ const response = await fetch(`${this.ollamaUrl}/api/tags`, {
214
+ signal: AbortSignal.timeout(5000),
215
+ });
216
+ if (!response.ok) {
217
+ return [];
218
+ }
219
+ const data = (await response.json());
220
+ return data.models.map((model) => this.transformOllamaModel(model));
221
+ }
222
+ catch {
223
+ return [];
224
+ }
225
+ }
226
+ transformOllamaModel(model) {
227
+ const name = model.name.toLowerCase();
228
+ const capabilities = this.inferOllamaCapabilities(name);
229
+ const contextWindow = this.inferContextWindow(name);
230
+ return {
231
+ id: model.name,
232
+ provider: 'ollama',
233
+ displayName: this.formatModelName(model.name),
234
+ capabilities: {
235
+ ...capabilities,
236
+ supportsStreaming: true,
237
+ },
238
+ pricing: { input: 0, output: 0 },
239
+ contextWindow,
240
+ isLocal: true,
241
+ isAvailable: true,
242
+ };
243
+ }
244
+ inferOllamaCapabilities(name) {
245
+ for (const [pattern, caps] of Object.entries(KNOWN_MODEL_CAPABILITIES)) {
246
+ if (name.includes(pattern.toLowerCase())) {
247
+ return { ...caps };
248
+ }
249
+ }
250
+ return { supportsStreaming: true };
251
+ }
252
+ inferContextWindow(name) {
253
+ for (const [pattern, size] of Object.entries(KNOWN_CONTEXT_WINDOWS)) {
254
+ if (name.includes(pattern.toLowerCase())) {
255
+ return size;
256
+ }
257
+ }
258
+ return 4096;
259
+ }
260
+ formatModelName(name) {
261
+ const [base, tag] = name.split(':');
262
+ const formatted = base
263
+ .split(/[-_]/)
264
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
265
+ .join(' ');
266
+ return tag && tag !== 'latest' ? `${formatted} (${tag})` : formatted;
267
+ }
268
+ getCloudModels(filterProviders) {
269
+ const providers = filterProviders
270
+ ? new Set(filterProviders.filter((p) => this.enabledProviders.has(p)))
271
+ : this.enabledProviders;
272
+ return CLOUD_MODELS.filter((model) => providers.has(model.provider));
273
+ }
274
+ async checkOllamaAvailability() {
275
+ try {
276
+ const response = await fetch(`${this.ollamaUrl}/api/tags`, {
277
+ signal: AbortSignal.timeout(2000),
278
+ });
279
+ return response.ok;
280
+ }
281
+ catch {
282
+ return false;
283
+ }
284
+ }
285
+ }
286
+ //# sourceMappingURL=model-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-discovery.js","sourceRoot":"","sources":["../../src/assessor/model-discovery.ts"],"names":[],"mappings":"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"}