Source code for mindroot.coreplugins.index.router

import os
from pathlib import Path
from fastapi import APIRouter, File, UploadFile
from .models import IndexMetadata, PluginEntry, AgentEntry
from .handlers import (
    list_indices, create_index, update_index,
    add_plugin, remove_plugin,
    add_agent, remove_agent,
    publish_index, install_index_from_zip
)

router = APIRouter()

ORIGINAL_WORKING_DIR = os.getcwd()
INDEX_DIR = Path(ORIGINAL_WORKING_DIR) / 'indices'
PUBLISHED_DIR = Path(ORIGINAL_WORKING_DIR) / 'published_indices'

# Ensure directories exist
os.makedirs(INDEX_DIR, exist_ok=True)
os.makedirs(PUBLISHED_DIR, exist_ok=True)

[docs] @router.get("/index/list-indices") async def list_indices_route(): return await list_indices(INDEX_DIR)
[docs] @router.post("/index/create-index") async def create_index_route(metadata: IndexMetadata): return await create_index(INDEX_DIR, metadata)
[docs] @router.post("/index/update-index/{index_name}") async def update_index_route(index_name: str, metadata: IndexMetadata): return await update_index(INDEX_DIR, index_name, metadata)
[docs] @router.post("/index/add-plugin/{index_name}") async def add_plugin_route(index_name: str, plugin: PluginEntry): return await add_plugin(INDEX_DIR, index_name, plugin)
[docs] @router.delete("/index/remove-plugin/{index_name}/{plugin_name}") async def remove_plugin_route(index_name: str, plugin_name: str): return await remove_plugin(INDEX_DIR, index_name, plugin_name)
[docs] @router.post("/index/add-agent/{index_name}") async def add_agent_route(index_name: str, agent: AgentEntry): return await add_agent(INDEX_DIR, index_name, agent)
[docs] @router.delete("/index/remove-agent/{index_name}/{agent_name}") async def remove_agent_route(index_name: str, agent_name: str): return await remove_agent(INDEX_DIR, index_name, agent_name)
[docs] @router.post("/index/publish/{index_name}") async def publish_index_route(index_name: str): return await publish_index(INDEX_DIR, PUBLISHED_DIR, index_name)
[docs] @router.post("/index/install-zip") async def install_index_route(file: UploadFile = File(...)): return await install_index_from_zip(INDEX_DIR, file)