# ------------------------------------------------------------ # Parameters # ------------------------------------------------------------ parameters: # ------------------------------------------------------------ # Root # ------------------------------------------------------------ mto.root: '%kernel.project_dir%' mto.kernel.dir: '%mto.root%' # ------------------------------------------------------------ # Knowledge Root (ZENTRAL) # ------------------------------------------------------------ mto.knowledge.root: '%mto.root%/var/knowledge' mto.knowledge.ndjson: '%mto.knowledge.root%/index.ndjson' mto.knowledge.index_meta: '%mto.knowledge.root%/index_meta.json' mto.knowledge.vector_index: '%mto.knowledge.root%/vector.index' mto.knowledge.vector_index_meta: '%mto.knowledge.root%/vector.index.meta.json' mto.runtime.meta: '%mto.knowledge.root%/index_runtime.json' mto.knowledge.upload: '%mto.knowledge.root%/uploads' # ------------------------------------------------------------ # Tags (Document Routing) # ------------------------------------------------------------ mto.knowledge.tags_ndjson: '%mto.knowledge.root%/tags.ndjson' # Tag vector index outputs mto.knowledge.vector_tags_index: '%mto.knowledge.root%/vector_tags.index' mto.knowledge.vector_tags_index_meta: '%mto.knowledge.root%/vector_tags.index.meta.json' # Tag vector scripts (in src/Vector) mto.vector.ingest_tags_script: '%mto.root%/src/Vector/vector_ingest_tags.py' mto.vector.search_tags_script: '%mto.root%/src/Vector/vector_search_tags.py' # Lock for tag rebuild jobs mto.tags.rebuild_lock: '%mto.knowledge.root%/locks/tag_rebuild.lock' # Backward compatibility alias mto.vector.data.upload.path: '%mto.knowledge.upload%' # ------------------------------------------------------------ # Index Configuration (Fallback Guardrails) # ------------------------------------------------------------ mto.index.chunk_size: 800 mto.index.chunk_overlap: 100 mto.index.embedding_model: 'all-MiniLM-L6-v2' mto.index.embedding_dimension: 768 mto.index.scoring_version: 1 # ------------------------------------------------------------ # Python / Vector Runtime # ------------------------------------------------------------ mto.vector.python_bin: '/var/www/html/.venv/bin/python3' mto.vector.ingest_script: '%mto.root%/src/Vector/vector_ingest.py' mto.vector.search_script: '%mto.root%/src/Vector/vector_search.py' mto.vector.timeout: 600 mto.vector.service_url: 'http://127.0.0.1:8090' # ------------------------------------------------------------ # Services # ------------------------------------------------------------ services: _defaults: autowire: true autoconfigure: true bind: Psr\Log\LoggerInterface $agentLogger: '@monolog.logger.agent' string $projectDir: '%mto.root%' App\: resource: '../src/' exclude: - '../src/DependencyInjection/' - '../src/Entity/' - '../src/Kernel.php' App\Controller\: resource: '../src/Controller/' tags: [ 'controller.service_arguments' ] # ------------------------------------------------------------ # AI Agent – Infrastructure # ------------------------------------------------------------ App\Infrastructure\OllamaClient: arguments: $apiUrl: '%env(AI_LLM_API_URL)%' $timeoutSeconds: 600 $configProvider: '@App\Service\ModelGenerationConfigProvider' # ------------------------------------------------------------ # AI Agent – Context & Runner # ------------------------------------------------------------ App\Context\ContextService: arguments: $historyDir: '%env(AI_HISTORY_DIR)%' $projectDir: '%mto.root%' App\Agent\AgentRunner: arguments: $debug: '%env(bool:AI_DEBUG)%' $logPrompt: '%env(bool:AI_LOG_PROMPT)%' $logContext: '%env(bool:AI_LOG_CONTEXT)%' # ------------------------------------------------------------ # NDJSON Retrieval Stack # ------------------------------------------------------------ App\Knowledge\Retrieval\NdjsonChunkLookup: ~ App\Knowledge\Retrieval\NdjsonHybridRetriever: ~ App\Knowledge\Retrieval\CachedRetriever: arguments: $inner: '@App\Knowledge\Retrieval\NdjsonHybridRetriever' $cache: '@cache.app' $ttlSeconds: 600 App\Knowledge\Retrieval\RetrieverInterface: alias: App\Knowledge\Retrieval\CachedRetriever # ------------------------------------------------------------ # Index Configuration Provider (DB + Fallback) # ------------------------------------------------------------ App\Index\IndexConfigurationProvider: arguments: $repository: '@App\Repository\IngestProfileRepository' $fallbackChunkSize: '%mto.index.chunk_size%' $fallbackChunkOverlap: '%mto.index.chunk_overlap%' $fallbackEmbeddingModel: '%mto.index.embedding_model%' $fallbackEmbeddingDimension: '%mto.index.embedding_dimension%' $fallbackScoringVersion: '%mto.index.scoring_version%' # ------------------------------------------------------------ # Index Meta Manager (uses Provider) # ------------------------------------------------------------ App\Index\IndexMetaManager: arguments: $metaPath: '%mto.knowledge.index_meta%' $runTimePath: '%mto.runtime.meta%' $provider: '@App\Index\IndexConfigurationProvider' # ------------------------------------------------------------ # Vector Layer # ------------------------------------------------------------ App\Vector\VectorSearchClient: arguments: $serviceUrl: '%mto.vector.service_url%' $agentLogger: '@monolog.logger.agent' App\Vector\VectorIndexBuilder: arguments: $pythonBin: '%mto.vector.python_bin%' $scriptPath: '%mto.vector.ingest_script%' $indexNdjsonPath: '%mto.knowledge.ndjson%' $indexMetaPath: '%mto.knowledge.index_meta%' $vectorIndexPath: '%mto.knowledge.vector_index%' $timeoutSeconds: '%mto.vector.timeout%' $configurationProvider: '@App\Index\IndexConfigurationProvider' # ------------------------------------------------------------ # Tags Export (Document Routing) # ------------------------------------------------------------ App\Tag\TagNdjsonExporter: arguments: $tagsNdjsonPath: '%mto.knowledge.tags_ndjson%' # ------------------------------------------------------------ # Tags Vector (Builder + Search) ✅ HIER IST DER FIX # ------------------------------------------------------------ App\Tag\TagVectorIndexBuilder: arguments: $pythonBin: '%mto.vector.python_bin%' $scriptPath: '%mto.vector.ingest_tags_script%' $tagsNdjsonPath: '%mto.knowledge.tags_ndjson%' $vectorTagsIndexPath: '%mto.knowledge.vector_tags_index%' $embeddingModel: '%mto.index.embedding_model%' $timeoutSeconds: '%mto.vector.timeout%' $agentLogger: '@monolog.logger.agent' App\Tag\TagVectorSearchClient: arguments: $serviceUrl: '%mto.vector.service_url%' $agentLogger: '@monolog.logger.agent' App\Tag\TagRoutingService: ~ # ------------------------------------------------------------ # Tag Rebuild Jobs (8A) # ------------------------------------------------------------ App\Service\TagRebuildJobService: arguments: $projectDir: '%mto.root%' $agentLogger: '@monolog.logger.agent' App\Command\TagRebuildRunJobCommand: arguments: $lockFilePath: '%mto.tags.rebuild_lock%' # ------------------------------------------------------------ # Admin Utilities # ------------------------------------------------------------ App\Service\Admin\IndexNdjsonInspector: arguments: $ndJsonPath: '%mto.knowledge.ndjson%' $indexMetaPath: '%mto.knowledge.index_meta%' App\Vector\VectorIndexHealthService: arguments: $indexNdjsonPath: '%kernel.project_dir%/var/knowledge/index.ndjson' $vectorIndexPath: '%kernel.project_dir%/var/knowledge/vector.index' $vectorMetaPath: '%kernel.project_dir%/var/knowledge/vector.index.meta.json'