Skip to main content

Core library for Sibyl - domain models, graph operations, and knowledge retrieval

Project description

sibyl-core

Core library for Sibyl. Domain models, graph operations, retrieval algorithms, and tool implementations. Shared foundation for the API server and CLI.

Quick Reference

# Install
uv add sibyl-core

# Development
moon run core:lint        # Ruff check
moon run core:typecheck   # Pyright
moon run core:test        # Pytest

What's Here

  • models/: Domain entities (Task, Project, Epic, Source, etc.)
  • graph/: FalkorDB/Graphiti client, entity management
  • retrieval/: Graphiti node-hybrid search, fusion, deduplication
  • tools/: MCP tool implementations (search, explore, add, manage)
  • tasks/: Workflow engine, dependency resolution
  • auth/: JWT primitives, password hashing

Structure

src/sibyl_core/
├── models/
│   ├── entities.py       # Entity, EntityType, base classes
│   ├── tasks.py          # Task, Project, Epic, Milestone
│   ├── sources.py        # Source, Document
│   └── responses.py      # API response models
├── graph/
│   ├── client.py         # GraphClient (connection, write lock)
│   ├── entities.py       # EntityManager (CRUD, search)
│   └── relationships.py  # RelationshipManager
├── retrieval/
│   ├── hybrid.py         # Hybrid search orchestration
│   └── fusion.py         # Score fusion (RRF)
├── tools/
│   ├── search.py         # Semantic search
│   ├── explore.py        # Graph navigation
│   ├── add.py            # Entity creation
│   └── manage.py         # Task workflow, admin
└── tasks/
    ├── workflow.py       # State machine, transitions
    └── manager.py        # Task operations

Usage

Models

from sibyl_core.models import (
    Entity, EntityType, Task, TaskStatus, Project, Epic,
)

task = Task(
    name="Implement OAuth",
    content="Add Google and GitHub OAuth",
    project_id="proj_abc",
    status=TaskStatus.TODO,
)

Graph Client

from sibyl_core.graph import GraphClient, EntityManager

client = GraphClient()
await client.connect()
manager = EntityManager(client, group_id=str(org_id))

# CRUD
await manager.create(entity)
# Retrieval uses search or list_by_type rather than direct ID lookup
results = await manager.search("authentication patterns", limit=20)

Write Concurrency

Write concurrency is handled by FalkorDB's BlockingConnectionPool (50 connections, 60s timeout). No application-level locking is required.

# Direct writes are safe - connection pool handles concurrency
await client.execute_write_org(query, org_id, **params)

# Or use EntityManager
await manager.create(entity)

Task Workflow

from sibyl_core.tasks import TaskManager

manager = TaskManager(entity_manager, relationship_manager)
await manager.create_task_with_knowledge_links(task)
await manager.find_similar_tasks(task)
await manager.estimate_task_effort(task)

Entity Types

Type Description
pattern Reusable coding patterns
episode Temporal learnings
task Work items with workflow
project Container for tasks
epic Feature-level grouping
source Documentation sources
document Crawled content

Relationship Types

from sibyl_core.models import RelationshipType

# Knowledge
RelationshipType.APPLIES_TO, REQUIRES, CONFLICTS_WITH, SUPERSEDES

# Task
RelationshipType.BELONGS_TO, DEPENDS_ON, BLOCKS, REFERENCES

Configuration

SIBYL_OPENAI_API_KEY=sk-...         # Required (embeddings)
SIBYL_FALKORDB_HOST=localhost
SIBYL_FALKORDB_PORT=6380
SIBYL_ANTHROPIC_API_KEY=...         # Optional (LLM-powered features)

Key Patterns

Multi-tenancy: Every operation requires org context

manager = EntityManager(client, group_id=str(org.id))

Node labels: Graphiti creates Episodic and Entity nodes

WHERE (n:Episodic OR n:Entity) AND n.entity_type = $type

Creation paths: LLM-powered (create) vs direct (create_direct)

await manager.create(entity)         # Slower, richer extraction
await manager.create_direct(entity)  # Faster, no LLM

Testing

# With mock LLM (fast, deterministic)
SIBYL_MOCK_LLM=true uv run pytest tests/

# Live model tests (costs money)
uv run pytest tests/live --live-models

# Retrieval benchmark suite
moon run core:bench-retrieval

# Live read-only search benchmark against a running stack
moon run core:bench-live

core:bench-live probes the real /api/search path with CLI auth and auto-skips when the local Sibyl stack or auth context is unavailable, so it is safe to run in normal development without mutating graph data.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sibyl_core-0.4.1.tar.gz (249.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sibyl_core-0.4.1-py3-none-any.whl (187.1 kB view details)

Uploaded Python 3

File details

Details for the file sibyl_core-0.4.1.tar.gz.

File metadata

  • Download URL: sibyl_core-0.4.1.tar.gz
  • Upload date:
  • Size: 249.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sibyl_core-0.4.1.tar.gz
Algorithm Hash digest
SHA256 445e17dd1ec22aec04a0fe5587a2d3be5ee7baac1106f0853e29f7e471ffdb0e
MD5 381663486b3633d512b995869f705aa2
BLAKE2b-256 c50bcf5847ed48d96176cced09c82ba0f382e3e14ecd4863f20d6de1b52d0f15

See more details on using hashes here.

Provenance

The following attestation bundles were made for sibyl_core-0.4.1.tar.gz:

Publisher: publish.yml on hyperb1iss/sibyl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sibyl_core-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: sibyl_core-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 187.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sibyl_core-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25d5a50ee9e1c593096e4b1297b4af3087bcec59971ee7b31f5692e2333b2d06
MD5 9cefd313d1d86cb2f409f31c9f3514d2
BLAKE2b-256 32b7a4ae90b8bcdb574ddf4ec621afc320d4e4a92f04a4690f0b976ca97c5ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sibyl_core-0.4.1-py3-none-any.whl:

Publisher: publish.yml on hyperb1iss/sibyl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page