-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCortexServiceProvider.php
More file actions
61 lines (49 loc) · 2.5 KB
/
CortexServiceProvider.php
File metadata and controls
61 lines (49 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
declare(strict_types=1);
namespace Cortex;
use Cortex\LLM\LLMManager;
use Cortex\LLM\Contracts\LLM;
use Cortex\Mcp\McpServerManager;
use Cortex\ModelInfo\ModelInfoFactory;
use Spatie\LaravelPackageTools\Package;
use Cortex\Embeddings\EmbeddingsManager;
use Cortex\Prompts\PromptFactoryManager;
use Cortex\Embeddings\Contracts\Embeddings;
use Cortex\Prompts\Contracts\PromptFactory;
use Illuminate\Contracts\Container\Container;
use Spatie\LaravelPackageTools\PackageServiceProvider;
class CortexServiceProvider extends PackageServiceProvider
{
public function configurePackage(Package $package): void
{
$package->name('cortex')->hasConfigFile();
}
public function packageRegistered(): void
{
$this->app->singleton('cortex.llm', fn(Container $app): LLMManager => new LLMManager($app));
$this->app->alias('cortex.llm', LLMManager::class);
$this->app->bind(LLM::class, fn(Container $app) => $app->make('cortex.llm')->driver());
$this->app->singleton('cortex.embeddings', fn(Container $app): EmbeddingsManager => new EmbeddingsManager($app));
$this->app->alias('cortex.embeddings', EmbeddingsManager::class);
$this->app->bind(Embeddings::class, fn(Container $app) => $app->make('cortex.embeddings')->driver());
$this->app->singleton('cortex.mcp_server', fn(Container $app): McpServerManager => new McpServerManager($app));
$this->app->alias('cortex.mcp_server', McpServerManager::class);
$this->app->singleton('cortex.prompt_factory', fn(Container $app): PromptFactoryManager => new PromptFactoryManager($app));
$this->app->alias('cortex.prompt_factory', PromptFactoryManager::class);
$this->app->bind(PromptFactory::class, fn(Container $app) => $app->make('cortex.prompt_factory')->driver());
$this->app->singleton('cortex.model_info_factory', function (Container $app): ModelInfoFactory {
$providers = [];
foreach ($app->make('config')->get('cortex.model_info_providers', []) as $provider => $config) {
// $app->when($provider)
// ->needs(CacheInterface::class)
// ->give($app->make('cache')->store());
$providers[] = $app->make($provider, is_array($config) ? $config : []);
}
return new ModelInfoFactory(
$providers,
$app->make('cache')->store(),
);
});
$this->app->alias('cortex.model_info_factory', ModelInfoFactory::class);
}
}