This page documents all configuration files in the StackOne AI SDK repository and their purposes. It provides an overview of how configuration is organized across package metadata, development tooling, and security policies.
For detailed information about specific configuration areas:
The SDK uses multiple configuration files organized by purpose and scope. The following diagram maps each configuration file to its primary role in the system:
Configuration File Locations
| File | Path | Primary Purpose | Configuration Sections |
|---|---|---|---|
pyproject.toml | Root directory | Package metadata, dependencies, tool settings | [project], [build-system], [tool.*] |
uv.lock | Root directory | Locked Python dependencies with cryptographic hashes | Auto-generated by uv |
.gitignore | Root directory | Files/directories excluded from version control | Pattern matching |
.gitleaks.toml | Root directory | Secret scanning configuration | [extend], [allowlist] |
Sources: pyproject.toml1-112 .gitignore1-24 .gitleaks.toml1-10
The SDK's configuration is organized into three distinct layers, each with different update mechanisms and responsibilities:
Layer 1: Package Definition
Defines what the package is, what it requires, and who maintains it. Modified during releases and dependency updates.
requires-python = ">=3.10"mcp and examples groupsLayer 2: Build & Distribution
Controls how the package is assembled and published to PyPI. Rarely modified after initial setup.
hatchling backendstackone_ai modulepy.typed marker fileLayer 3: Development Environment
Configures local development tools and testing infrastructure. Updated as coding standards evolve.
link-mode = "clone" for faster installsSources: pyproject.toml1-112
The following diagram shows how configuration files interact during different workflows:
Sources: pyproject.toml1-112 .gitignore1-24 .gitleaks.toml1-10
Located at pyproject.toml1-18 defines package identity and compatibility:
Key Fields:
name: Package identifier on PyPI (must match import name pattern)version: Semantic version, auto-updated by release-pleaserequires-python: Minimum Python version (3.10+)classifiers: PyPI categories for discoverabilityThe SDK uses three dependency mechanisms:
| Mechanism | Section | Purpose | Example |
|---|---|---|---|
| Runtime dependencies | [project.dependencies] | Required for all users | pydantic>=2.10.6 |
| Optional dependencies | [project.optional-dependencies] | Feature-specific extras | mcp = ["mcp>=1.3.0"] |
| Development groups | [dependency-groups.dev] | Dev tooling (PEP 735) | pytest>=8.3.4 |
Runtime dependencies at pyproject.toml19-26 use version constraints:
pydantic>=2.10.6 - data validation and schema generationhttpx>=0.28.0 - async HTTP client for API callslangchain-core>=0.1.0 - framework integration foundationbm25s>=0.2.2 - local semantic search (BM25 algorithm)numpy>=1.24.0 - numerical operations for search scoringOptional dependencies at pyproject.toml38-46 enable additional features:
mcp extra: MCP protocol support for advanced tool discoveryexamples extra: All frameworks for running example scripts (crewai, langchain-openai, langgraph, openai)Sources: pyproject.toml19-46
Located at pyproject.toml28-36 configures package assembly:
Build Behavior:
hatchling as PEP 517 build backend (faster than setuptools)stackone_ai directory (excludes tests, examples)py.typed marker for PEP 561 type stub distributionSources: pyproject.toml28-36
Each development tool has its own configuration section in pyproject.toml:
Ruff (Linting & Formatting) - pyproject.toml69-88
Pytest (Testing) - pyproject.toml61-67
@pytest.mark.integration for MCP-dependent testsCoverage (Test Coverage) - pyproject.toml90-108
__init__.py (re-exports) and py.typed (marker file)UV (Package Manager) - pyproject.toml110-111
Sources: pyproject.toml61-111
Located at .gitignore1-24 excludes files from version control:
Environment & Secrets - .gitignore1-3
.env
.env.*
.venv
Prevents accidental commit of API keys and environment variables.
Build Artifacts - .gitignore14-16
*.egg-info
dist/
build/
Excludes generated files from package builds.
Test & Coverage - .gitignore5-9
.pytest_cache
.coverage
coverage/
Excludes test execution artifacts (coverage reports are deployed separately to GitHub Pages).
Managed Resources - .gitignore18-23
# Git hooks (managed by Nix)
.pre-commit-config.yaml
# Agent skills (managed by Nix via agent-skills-nix)
.claude/skills
.agents/skills
Excludes files managed by external systems (Nix flake manages these via agent-skills-nix).
Sources: .gitignore1-24
Located at .gitleaks.toml1-10 configures Gitleaks secret scanner:
Configuration:
useDefault = true: Uses Gitleaks' built-in secret patterns (AWS keys, GitHub tokens, etc.)paths allowlist: Excludes lock files and cache directories from scanning (false positives)Integration:
git-hooks.nix)Sources: .gitleaks.toml1-10
The following table summarizes how each configuration file is updated:
| File | Update Method | Frequency | Automation |
|---|---|---|---|
pyproject.toml (version) | release-please | On release | Automated via conventional commits |
pyproject.toml (dependencies) | Manual or Dependabot PR | Weekly (Dependabot) | Semi-automated |
pyproject.toml (tool configs) | Manual | As needed | Manual |
uv.lock | uv lock, release-please | On dependency change, on release | Automated in release PRs |
.gitignore | Manual | Rarely | Manual |
.gitleaks.toml | Manual | Rarely | Manual |
Automated Update Workflows:
[project.dependencies]version in pyproject.toml and regenerates uv.lockuv lock automatically regenerates uv.lock when pyproject.toml dependencies changeSources: pyproject.toml1-112 Documentation from system architecture diagrams
The SDK includes multiple validation layers to ensure configuration correctness:
Pre-commit Validation:
gitleaks: Scans for secrets before commitruff format: Enforces code style from [tool.ruff]ty check: Validates type annotationsCI Validation:
requires-pythonnix flake check: Validates all Nix configuration (see Development Environment Setup)ruff check: Enforces linting rules from [tool.ruff.lint]Sources: pyproject.toml61-111 .gitleaks.toml1-10
View Current Package Version:
Update Development Dependencies:
Check Configuration Syntax:
Add New Ignored File Pattern:
Test Secret Detection:
Sources: pyproject.toml1-112 .gitignore1-24 .gitleaks.toml1-10
For detailed configuration of specific subsystems:
Refresh this wiki