Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude/agents/architect.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/architect.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/coder.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/coder.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/documenter.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/documenter.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/pm.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/pm.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/releasemanager.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/releasemanager.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/reviewer.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,4 +120,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/security.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
2 changes: 1 addition & 1 deletion .claude/agents/tester.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,4 @@ Log your action to `.parac/memory/logs/agent_actions.log`:

- `.parac/agents/specs/tester.md` - Full specification
- `.parac/roadmap/decisions.md` - Decision history
- `.parac/policies/CODE_STYLE.md` - Coding standards
- `.parac/policies/CODE_STYLE.md` - Coding standards
46 changes: 23 additions & 23 deletions .claude/legacy/code_snippets.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ def test_agent_spec_creation():
# Arrange
name = "test-agent"
model = "gpt-4"

# Act
spec = AgentSpec(name=name, model=model)

# Assert
assert spec.name == name
assert spec.model == model
Expand All @@ -117,10 +117,10 @@ async def test_agent_execution():
# Arrange
spec = AgentSpec(name="test-agent", model="gpt-4")
agent = Agent(spec=spec)

# Act
result = await agent.execute({"task": "Hello"})

# Assert
assert result is not None
assert agent.status == "ready"
Expand All @@ -136,27 +136,27 @@ from paracle_domain.models import Agent

class AgentRepository(ABC):
"""Abstract repository for agent persistence."""

@abstractmethod
async def get_by_id(self, agent_id: str) -> Optional[Agent]:
"""Get agent by ID."""
pass

@abstractmethod
async def get_by_name(self, name: str) -> Optional[Agent]:
"""Get agent by name."""
pass

@abstractmethod
async def list_all(self) -> List[Agent]:
"""List all agents."""
pass

@abstractmethod
async def save(self, agent: Agent) -> None:
"""Save or update agent."""
pass

@abstractmethod
async def delete(self, agent_id: str) -> None:
"""Delete agent by ID."""
Expand All @@ -171,11 +171,11 @@ from paracle_domain.models import Agent, AgentSpec

class SQLiteAgentRepository(AgentRepository):
"""SQLite implementation of agent repository."""

def __init__(self, db_path: str):
self.db_path = db_path
self._init_db()

def _init_db(self):
"""Initialize database schema."""
with sqlite3.connect(self.db_path) as conn:
Expand All @@ -192,7 +192,7 @@ class SQLiteAgentRepository(AgentRepository):
metadata TEXT
)
""")

async def get_by_id(self, agent_id: str) -> Optional[Agent]:
"""Get agent by ID."""
# Implementation here
Expand All @@ -209,17 +209,17 @@ from typing import Any, Dict

class DomainEvent(BaseModel):
"""Base class for domain events."""

event_type: str
aggregate_id: str
timestamp: datetime = datetime.utcnow()
data: Dict[str, Any] = {}

class AgentCreatedEvent(DomainEvent):
"""Event emitted when an agent is created."""

event_type: str = "agent.created"

@classmethod
def create(cls, agent_id: str, agent_name: str):
return cls(
Expand All @@ -234,16 +234,16 @@ from typing import Callable, List

class EventBus:
"""Simple in-memory event bus."""

def __init__(self):
self._handlers: Dict[str, List[Callable]] = {}

def subscribe(self, event_type: str, handler: Callable):
"""Subscribe handler to event type."""
if event_type not in self._handlers:
self._handlers[event_type] = []
self._handlers[event_type].append(handler)

async def publish(self, event: DomainEvent):
"""Publish event to all subscribers."""
handlers = self._handlers.get(event.event_type, [])
Expand Down Expand Up @@ -273,11 +273,11 @@ def create_agent(name: str, model: str, temperature: float):
temperature=temperature
)
agent = Agent(spec=spec)

console.print(f"[green]✓[/green] Agent created: {agent.id}")
console.print(f" Name: {agent.spec.name}")
console.print(f" Model: {agent.spec.model}")

except Exception as e:
console.print(f"[red]✗[/red] Error: {str(e)}")
raise click.ClickException(str(e))
Expand All @@ -294,17 +294,17 @@ from typing import Dict, Any
def load_project_config() -> Dict[str, Any]:
"""Load project configuration from .parac/project.yaml."""
config_path = Path(".parac/project.yaml")

if not config_path.exists():
raise FileNotFoundError("Project configuration not found")

with open(config_path, "r") as f:
return yaml.safe_load(f)

def get_agent_manifest() -> Dict[str, Any]:
"""Load agent manifest from .parac/agents/manifest.yaml."""
manifest_path = Path(".parac/agents/manifest.yaml")

with open(manifest_path, "r") as f:
return yaml.safe_load(f)
```
4 changes: 2 additions & 2 deletions .claude/legacy/prompts.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ What should I focus on first?

### Agent Inheritance
```
I need to implement the agent inheritance resolution algorithm for Paracle.
I need to implement the agent inheritance resolution algorithm for Paracle.

Requirements:
- Resolve parent chain for any agent
Expand All @@ -51,7 +51,7 @@ Please provide:
```
Implement a Repository pattern for Agent persistence with:
- Abstract base class: AgentRepository
- SQLite implementation: SQLiteAgentRepository
- SQLite implementation: SQLiteAgentRepository
- Methods: get_by_id, get_by_name, list_all, save, delete
- Async/await support
- Transaction support via Unit of Work
Expand Down
3 changes: 2 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
"Bash(if ! grep -q \"### $cmd\" \"c:/Projets/paracle/paracle-lite/content/docs/technical/cli-reference.md\")",
"Bash(then)",
"Bash(echo:*)",
"Bash(fi)"
"Bash(fi)",
"Bash(dir \"c:\\\\Projets\\\\paracle\\\\paracle-lite\\\\content\\\\docs\\\\*.md\")"
]
}
}
2 changes: 1 addition & 1 deletion .claude/skills/agent-configuration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,4 @@ system_prompt: |
## Resources

- Agent Specs: `.parac/agents/specs/`
- Template: `templates/.parac-template/agents/specs/`
- Template: `templates/.parac-template/agents/specs/`
2 changes: 1 addition & 1 deletion .claude/skills/api-development/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -511,4 +511,4 @@ async def list_agents():
- [FastAPI Documentation](https://fastapi.tiangolo.com/)
- [Pydantic V2 Documentation](https://docs.pydantic.dev/)
- [REST API Best Practices](https://restfulapi.net/)
- Paracle API: `packages/paracle_api/`
- Paracle API: `packages/paracle_api/`
6 changes: 6 additions & 0 deletions .claude/skills/api-development/scripts/example_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,21 @@

class AgentCreate(BaseModel):
"""Request model for creating an agent."""

name: str = Field(..., min_length=1, max_length=100)
model: str = Field(default="gpt-4")
temperature: float = Field(default=0.7, ge=0.0, le=2.0)


class AgentResponse(BaseModel):
"""Response model for agent."""

id: str
name: str
model: str
temperature: float


# Dependency injection example


Expand All @@ -44,6 +47,7 @@ async def get_current_user():
# In production, validate JWT token here
return {"id": "user123", "name": "Test User"}


# Endpoints


Expand Down Expand Up @@ -103,6 +107,8 @@ async def get_agent(
temperature=0.7,
)


if __name__ == "__main__":
import uvicorn

uvicorn.run(app, host="0.0.0.0", port=8000)
2 changes: 1 addition & 1 deletion .claude/skills/cicd-devops/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -444,4 +444,4 @@ strategy:
- [GitHub Actions Docs](https://docs.github.com/actions)
- [Docker Best Practices](https://docs.docker.com/develop/dev-best-practices/)
- [12-Factor App](https://12factor.net/)
- Paracle CI/CD: `.github/workflows/`
- Paracle CI/CD: `.github/workflows/`
2 changes: 1 addition & 1 deletion .claude/skills/framework-architecture/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -502,4 +502,4 @@ When designing new components:
- [Clean Architecture by Robert C. Martin](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
- [Domain-Driven Design](https://martinfowler.com/bliki/DomainDrivenDesign.html)
- [ADR (Architecture Decision Records)](https://adr.github.io/)
- [Python Design Patterns](https://refactoring.guru/design-patterns/python)
- [Python Design Patterns](https://refactoring.guru/design-patterns/python)
2 changes: 1 addition & 1 deletion .claude/skills/git-management/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -666,4 +666,4 @@ git cherry-pick commit1^..commit2
- [Paracle Git Workflow Policy](../../../policies/GIT_WORKFLOW.md)
- [Conventional Commits](https://www.conventionalcommits.org/)
- [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)
- [Semantic Versioning](https://semver.org/)
- [Semantic Versioning](https://semver.org/)
2 changes: 1 addition & 1 deletion .claude/skills/migration-upgrading/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,4 +338,4 @@ paracle migrate --from 0.2.0 --to 0.3.0
- Alembic: https://alembic.sqlalchemy.org/
- Semantic Versioning: https://semver.org/
- Migration Scripts: `packages/paracle_cli/commands/migrate.py`
- CHANGELOG: `CHANGELOG.md`
- CHANGELOG: `CHANGELOG.md`
32 changes: 16 additions & 16 deletions .claude/skills/migration-upgrading/assets/migration-template.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
from alembic import op

# Revision identifiers
revision = '[UNIQUE_ID]'
down_revision = '[PREVIOUS_REVISION]'
revision = "[UNIQUE_ID]"
down_revision = "[PREVIOUS_REVISION]"
branch_labels = None
depends_on = None

Expand All @@ -27,36 +27,36 @@ def upgrade():

# Example: Add new table
op.create_table(
'new_table',
sa.Column('id', sa.String(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.PrimaryKeyConstraint('id'),
"new_table",
sa.Column("id", sa.String(), nullable=False),
sa.Column("name", sa.String(), nullable=False),
sa.Column("created_at", sa.DateTime(), nullable=False),
sa.PrimaryKeyConstraint("id"),
)

# Example: Add column to existing table
op.add_column('existing_table', sa.Column(
'new_column', sa.String(), nullable=True))
op.add_column("existing_table", sa.Column("new_column", sa.String(), nullable=True))

# Example: Create index
op.create_index('ix_new_table_name', 'new_table', ['name'])
op.create_index("ix_new_table_name", "new_table", ["name"])

# Example: Data migration
connection = op.get_bind()
connection.execute(
sa.text(
"UPDATE existing_table SET new_column = 'default' WHERE new_column IS NULL")
"UPDATE existing_table SET new_column = 'default' WHERE new_column IS NULL"
)
)

# Example: Make column non-nullable after data migration
op.alter_column('existing_table', 'new_column', nullable=False)
op.alter_column("existing_table", "new_column", nullable=False)


def downgrade():
"""Downgrade to v[OLD]."""

# Reverse all changes in opposite order
op.alter_column('existing_table', 'new_column', nullable=True)
op.drop_index('ix_new_table_name', 'new_table')
op.drop_column('existing_table', 'new_column')
op.drop_table('new_table')
op.alter_column("existing_table", "new_column", nullable=True)
op.drop_index("ix_new_table_name", "new_table")
op.drop_column("existing_table", "new_column")
op.drop_table("new_table")
Loading
Loading