Source code for neurocore.scaffold.registry
"""Registry of project templates for ``neurocore new``.
Each template is a full project tree under ``scaffold/templates/<dir_name>/``.
"""
from __future__ import annotations
from dataclasses import dataclass, field
@dataclass(frozen=True)
class TemplateSpec:
"""Metadata for a ``neurocore new`` project template."""
name: str
description: str
dir_name: str
requires_extras: tuple[str, ...] = () # e.g. ("local",) → pip install neurocore-ai[local]
suggested_skills: tuple[str, ...] = field(default_factory=tuple)
TEMPLATES: dict[str, TemplateSpec] = {
"rag-agent": TemplateSpec(
name="rag-agent",
description="Retrieval-augmented generation over a Qdrant vector store.",
dir_name="rag-agent",
suggested_skills=("neurocore-skill-qdrant",),
),
"research-agent": TemplateSpec(
name="research-agent",
description="Multi-source research agent (web search + arXiv + summarize).",
dir_name="research-agent",
suggested_skills=("neurocore-skill-tavily", "neurocore-skill-arxiv"),
),
"ollama-agent": TemplateSpec(
name="ollama-agent",
description="Local LLM agent via Ollama (OpenAI-compatible).",
dir_name="ollama-agent",
requires_extras=("local",),
),
"multi-agent-debate": TemplateSpec(
name="multi-agent-debate",
description="Two agents debate; a judge decides (graph flow).",
dir_name="multi-agent-debate",
),
"tool-agent": TemplateSpec(
name="tool-agent",
description="Tool-calling agent that invokes an MCP server tool.",
dir_name="tool-agent",
suggested_skills=("neurocore-skill-mcp",),
),
}
[docs]
def list_templates() -> list[TemplateSpec]:
"""Return all templates sorted by name."""
return [TEMPLATES[k] for k in sorted(TEMPLATES)]
[docs]
def get_template(name: str) -> TemplateSpec | None:
"""Return a template by name, or None if unknown."""
return TEMPLATES.get(name)