felix-agent-sdk 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. felix_agent_sdk-0.1.0/.github/CODEOWNERS +17 -0
  2. felix_agent_sdk-0.1.0/.github/workflows/ci.yml +56 -0
  3. felix_agent_sdk-0.1.0/.github/workflows/publish.yml +83 -0
  4. felix_agent_sdk-0.1.0/.gitignore +50 -0
  5. felix_agent_sdk-0.1.0/CHANGELOG.md +53 -0
  6. felix_agent_sdk-0.1.0/CLAUDE.md +114 -0
  7. felix_agent_sdk-0.1.0/CONTRIBUTING.md +50 -0
  8. felix_agent_sdk-0.1.0/LICENSE +29 -0
  9. felix_agent_sdk-0.1.0/PKG-INFO +355 -0
  10. felix_agent_sdk-0.1.0/README.md +312 -0
  11. felix_agent_sdk-0.1.0/docs/api/.gitkeep +0 -0
  12. felix_agent_sdk-0.1.0/examples/01_hello_world.py +34 -0
  13. felix_agent_sdk-0.1.0/examples/02_research_workflow.py +78 -0
  14. felix_agent_sdk-0.1.0/examples/03_custom_workflow.py +72 -0
  15. felix_agent_sdk-0.1.0/examples/04_memory_persistence.py +132 -0
  16. felix_agent_sdk-0.1.0/examples/05_deep_research_live/README.md +128 -0
  17. felix_agent_sdk-0.1.0/examples/05_deep_research_live/__init__.py +0 -0
  18. felix_agent_sdk-0.1.0/examples/05_deep_research_live/_mock_research.py +257 -0
  19. felix_agent_sdk-0.1.0/examples/05_deep_research_live/helix_visualizer.py +419 -0
  20. felix_agent_sdk-0.1.0/examples/05_deep_research_live/run.py +376 -0
  21. felix_agent_sdk-0.1.0/examples/_mock.py +41 -0
  22. felix_agent_sdk-0.1.0/pyproject.toml +72 -0
  23. felix_agent_sdk-0.1.0/src/felix_agent_sdk/__init__.py +71 -0
  24. felix_agent_sdk-0.1.0/src/felix_agent_sdk/_version.py +1 -0
  25. felix_agent_sdk-0.1.0/src/felix_agent_sdk/agents/__init__.py +22 -0
  26. felix_agent_sdk-0.1.0/src/felix_agent_sdk/agents/base.py +276 -0
  27. felix_agent_sdk-0.1.0/src/felix_agent_sdk/agents/factory.py +187 -0
  28. felix_agent_sdk-0.1.0/src/felix_agent_sdk/agents/llm_agent.py +370 -0
  29. felix_agent_sdk-0.1.0/src/felix_agent_sdk/agents/specialized.py +380 -0
  30. felix_agent_sdk-0.1.0/src/felix_agent_sdk/communication/__init__.py +20 -0
  31. felix_agent_sdk-0.1.0/src/felix_agent_sdk/communication/central_post.py +596 -0
  32. felix_agent_sdk-0.1.0/src/felix_agent_sdk/communication/messages.py +48 -0
  33. felix_agent_sdk-0.1.0/src/felix_agent_sdk/communication/registry.py +329 -0
  34. felix_agent_sdk-0.1.0/src/felix_agent_sdk/communication/spoke.py +501 -0
  35. felix_agent_sdk-0.1.0/src/felix_agent_sdk/core/__init__.py +20 -0
  36. felix_agent_sdk-0.1.0/src/felix_agent_sdk/core/helix.py +375 -0
  37. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/__init__.py +49 -0
  38. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/backends/__init__.py +9 -0
  39. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/backends/base.py +79 -0
  40. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/backends/sqlite.py +313 -0
  41. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/compression.py +489 -0
  42. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/knowledge_store.py +478 -0
  43. felix_agent_sdk-0.1.0/src/felix_agent_sdk/memory/task_memory.py +606 -0
  44. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/__init__.py +56 -0
  45. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/anthropic.py +207 -0
  46. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/base.py +178 -0
  47. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/errors.py +53 -0
  48. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/local.py +71 -0
  49. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/openai_provider.py +200 -0
  50. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/registry.py +166 -0
  51. felix_agent_sdk-0.1.0/src/felix_agent_sdk/providers/types.py +108 -0
  52. felix_agent_sdk-0.1.0/src/felix_agent_sdk/py.typed +0 -0
  53. felix_agent_sdk-0.1.0/src/felix_agent_sdk/spawning/__init__.py +10 -0
  54. felix_agent_sdk-0.1.0/src/felix_agent_sdk/streaming/__init__.py +9 -0
  55. felix_agent_sdk-0.1.0/src/felix_agent_sdk/tokens/__init__.py +10 -0
  56. felix_agent_sdk-0.1.0/src/felix_agent_sdk/tokens/budget.py +68 -0
  57. felix_agent_sdk-0.1.0/src/felix_agent_sdk/utils/__init__.py +8 -0
  58. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/__init__.py +25 -0
  59. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/config.py +82 -0
  60. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/context_builder.py +199 -0
  61. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/runner.py +255 -0
  62. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/synthesizer.py +132 -0
  63. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/templates/__init__.py +17 -0
  64. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/templates/analysis.py +34 -0
  65. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/templates/research.py +34 -0
  66. felix_agent_sdk-0.1.0/src/felix_agent_sdk/workflows/templates/review.py +34 -0
  67. felix_agent_sdk-0.1.0/tests/benchmarks/__init__.py +0 -0
  68. felix_agent_sdk-0.1.0/tests/conftest.py +259 -0
  69. felix_agent_sdk-0.1.0/tests/integration/__init__.py +0 -0
  70. felix_agent_sdk-0.1.0/tests/integration/conftest.py +13 -0
  71. felix_agent_sdk-0.1.0/tests/integration/test_deep_research_demo.py +194 -0
  72. felix_agent_sdk-0.1.0/tests/integration/test_providers.py +134 -0
  73. felix_agent_sdk-0.1.0/tests/integration/test_workflow_pipeline.py +226 -0
  74. felix_agent_sdk-0.1.0/tests/unit/__init__.py +0 -0
  75. felix_agent_sdk-0.1.0/tests/unit/test_agent_base.py +264 -0
  76. felix_agent_sdk-0.1.0/tests/unit/test_agent_factory.py +192 -0
  77. felix_agent_sdk-0.1.0/tests/unit/test_anthropic_provider.py +468 -0
  78. felix_agent_sdk-0.1.0/tests/unit/test_backends.py +176 -0
  79. felix_agent_sdk-0.1.0/tests/unit/test_base_provider.py +220 -0
  80. felix_agent_sdk-0.1.0/tests/unit/test_central_post.py +450 -0
  81. felix_agent_sdk-0.1.0/tests/unit/test_communication_registry.py +383 -0
  82. felix_agent_sdk-0.1.0/tests/unit/test_compression.py +232 -0
  83. felix_agent_sdk-0.1.0/tests/unit/test_context_builder.py +122 -0
  84. felix_agent_sdk-0.1.0/tests/unit/test_errors.py +189 -0
  85. felix_agent_sdk-0.1.0/tests/unit/test_helix.py +368 -0
  86. felix_agent_sdk-0.1.0/tests/unit/test_knowledge_store.py +299 -0
  87. felix_agent_sdk-0.1.0/tests/unit/test_llm_agent.py +370 -0
  88. felix_agent_sdk-0.1.0/tests/unit/test_local_provider.py +189 -0
  89. felix_agent_sdk-0.1.0/tests/unit/test_messages.py +162 -0
  90. felix_agent_sdk-0.1.0/tests/unit/test_openai_provider.py +467 -0
  91. felix_agent_sdk-0.1.0/tests/unit/test_registry.py +212 -0
  92. felix_agent_sdk-0.1.0/tests/unit/test_specialized_agents.py +270 -0
  93. felix_agent_sdk-0.1.0/tests/unit/test_spoke.py +477 -0
  94. felix_agent_sdk-0.1.0/tests/unit/test_synthesizer.py +120 -0
  95. felix_agent_sdk-0.1.0/tests/unit/test_task_memory.py +245 -0
  96. felix_agent_sdk-0.1.0/tests/unit/test_token_budget.py +81 -0
  97. felix_agent_sdk-0.1.0/tests/unit/test_workflow_config.py +106 -0
@@ -0,0 +1,17 @@
1
+ # Felix Agent SDK — Code Ownership
2
+ # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
3
+
4
+ # Core Felix modules — ported from Caleb's Felix framework
5
+ /src/felix_agent_sdk/core/ @CalebisGross @jkbennitt
6
+ /src/felix_agent_sdk/agents/ @CalebisGross @jkbennitt
7
+ /src/felix_agent_sdk/communication/ @CalebisGross @jkbennitt
8
+ /src/felix_agent_sdk/memory/ @CalebisGross @jkbennitt
9
+ /src/felix_agent_sdk/spawning/ @CalebisGross @jkbennitt
10
+ /src/felix_agent_sdk/workflows/ @CalebisGross @jkbennitt
11
+
12
+ # Provider layer
13
+ /src/felix_agent_sdk/providers/ @jkbennitt
14
+
15
+ # Package infrastructure
16
+ pyproject.toml @jkbennitt
17
+ .github/ @jkbennitt
@@ -0,0 +1,56 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.10", "3.11", "3.12"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+ cache: 'pip'
24
+
25
+ - name: Install dependencies
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install -e ".[dev]"
29
+
30
+ - name: Lint
31
+ run: ruff check src/
32
+
33
+ - name: Test
34
+ run: pytest tests/ -v --tb=short
35
+
36
+ build:
37
+ name: Verify package builds
38
+ runs-on: ubuntu-latest
39
+
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - name: Set up Python
44
+ uses: actions/setup-python@v5
45
+ with:
46
+ python-version: "3.12"
47
+ cache: "pip"
48
+
49
+ - name: Install build
50
+ run: pip install build
51
+
52
+ - name: Build package
53
+ run: python -m build
54
+
55
+ - name: Check wheel contents
56
+ run: unzip -l dist/*.whl
@@ -0,0 +1,83 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ name: Build distribution
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+ cache: "pip"
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev]"
28
+
29
+ - name: Lint
30
+ run: ruff check src/
31
+
32
+ - name: Test
33
+ run: pytest tests/ -v --tb=short
34
+
35
+ - name: Install build
36
+ run: pip install build
37
+
38
+ - name: Build package
39
+ run: python -m build
40
+
41
+ - name: Upload distributions
42
+ uses: actions/upload-artifact@v4
43
+ with:
44
+ name: package-distributions
45
+ path: dist/
46
+
47
+ publish-testpypi:
48
+ name: Publish to TestPyPI
49
+ needs: build
50
+ runs-on: ubuntu-latest
51
+ environment: testpypi
52
+ permissions:
53
+ id-token: write # Required for trusted publishing via OIDC
54
+
55
+ steps:
56
+ - name: Download distributions
57
+ uses: actions/download-artifact@v4
58
+ with:
59
+ name: package-distributions
60
+ path: dist/
61
+
62
+ - name: Publish to TestPyPI
63
+ uses: pypa/gh-action-pypi-publish@release/v1
64
+ with:
65
+ repository-url: https://test.pypi.org/legacy/
66
+
67
+ publish-pypi:
68
+ name: Publish to PyPI
69
+ needs: publish-testpypi
70
+ runs-on: ubuntu-latest
71
+ environment: pypi
72
+ permissions:
73
+ id-token: write # Required for trusted publishing via OIDC
74
+
75
+ steps:
76
+ - name: Download distributions
77
+ uses: actions/download-artifact@v4
78
+ with:
79
+ name: package-distributions
80
+ path: dist/
81
+
82
+ - name: Publish to PyPI
83
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,50 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyo
5
+ *.pyd
6
+ .Python
7
+ *.egg-info/
8
+ dist/
9
+ build/
10
+ .eggs/
11
+ *.egg
12
+ *.whl
13
+
14
+ # Virtual environments
15
+ .venv/
16
+ venv/
17
+ env/
18
+ .env
19
+
20
+ # IDE
21
+ .vscode/
22
+ .idea/
23
+ *.iml
24
+
25
+ # mypy
26
+ .mypy_cache/
27
+ .dmypy.json
28
+
29
+ # pytest
30
+ .pytest_cache/
31
+ .coverage
32
+ coverage.xml
33
+ htmlcov/
34
+
35
+ # Docs
36
+ site/
37
+ docs/_build/
38
+
39
+ # OS
40
+ .DS_Store
41
+ Thumbs.db
42
+
43
+ # Databases
44
+ *.db
45
+
46
+ # Internal design docs (not for public repo)
47
+ felix-agent-sdk-structure.md
48
+
49
+ # Original monolith (split into src/felix_agent_sdk/providers/)
50
+ felix_providers.py
@@ -0,0 +1,53 @@
1
+ # Changelog
2
+
3
+ All notable changes to Felix Agent SDK will be documented in this file.
4
+
5
+ ## [0.1.0] — 2026-03-19
6
+
7
+ Initial public release of the Felix Agent SDK.
8
+
9
+ ### Core Geometry
10
+ - `HelixGeometry` — 3D parametric helix with `get_position(t)`, `get_radius(z)`, `get_angle_at_t(t)`, `get_tangent_vector(t)`, `approximate_arc_length()`
11
+ - `HelixConfig` — named presets: `default()`, `research_heavy()`, `fast_convergence()`
12
+ - `HelixPosition` — phase-aware wrapper with exploration/analysis/synthesis boundaries
13
+
14
+ ### Agents
15
+ - `Agent` base class with helix-aware positioning, temperature, and lifecycle
16
+ - `LLMAgent` with provider integration, position-aware prompting, meta-cognitive evaluation
17
+ - `ResearchAgent`, `AnalysisAgent`, `CriticAgent` specialized agents
18
+ - `AgentFactory` with `create_agent()`, `create_specialized_team()`, custom type registration
19
+
20
+ ### Communication
21
+ - `CentralPost` hub with O(N) message routing, phase-aware delivery, performance tracking
22
+ - `AgentRegistry` with capacity management, role indexing, performance history
23
+ - `Spoke` + `SpokeManager` with per-type handler registration, lazy async support
24
+ - `Message` and `MessageType` enums for structured inter-agent communication
25
+
26
+ ### Memory
27
+ - `KnowledgeStore` with confidence-tagged entries, domain filtering, relationship graph
28
+ - `TaskMemory` with pattern recognition, strategy recommendations, execution history
29
+ - `ContextCompressor` with hierarchical summarization strategies
30
+ - Pluggable backend interface with `SQLiteBackend` as default
31
+
32
+ ### Providers
33
+ - `BaseProvider` abstract interface: `complete()`, `stream()`, `count_tokens()`
34
+ - `AnthropicProvider` — Claude models
35
+ - `OpenAIProvider` — GPT models and OpenAI-compatible APIs
36
+ - `LocalProvider` — LM Studio, Ollama via OpenAI-compatible endpoint
37
+ - `auto_detect_provider()` — environment-based provider selection
38
+
39
+ ### Workflows
40
+ - `FelixWorkflow` orchestrator: team spawn → rounds → convergence check → synthesis
41
+ - `WorkflowConfig` with helix config, team composition, confidence threshold, synthesis strategy
42
+ - `CollaborativeContextBuilder` with relevance scoring and deduplication
43
+ - `WorkflowSynthesizer` with BEST_RESULT, COMPRESSED_MERGE, ROUND_ROBIN strategies
44
+ - Pre-built templates: `research_config()`, `analysis_config()`, `review_config()`
45
+
46
+ ### Tokens
47
+ - `TokenBudget` with position-aware allocation (exploration vs synthesis split)
48
+
49
+ ### Infrastructure
50
+ - Pip-installable package with optional provider dependencies
51
+ - 659 tests (unit + integration)
52
+ - Python 3.10+ support
53
+ - MIT license
@@ -0,0 +1,114 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Hard Rules
6
+
7
+ 1. Use a venv at `.venv` for all development, testing, and execution.
8
+ 2. When porting code from the original Felix framework (`https://github.com/CalebisGross/felix`), Caleb's architecture decisions take precedence. Core algorithms stay identical; only the interface layer changes.
9
+ 3. Git attribution for ported/refactored code:
10
+ - **Ported code** (Caleb's algorithms, unchanged): `git commit --author="Caleb Gross <209704970+CalebisGross@users.noreply.github.com>"`
11
+ - **Refactored code** (Caleb's logic, new interfaces): add `Co-authored-by: Caleb Gross <209704970+CalebisGross@users.noreply.github.com>` trailer
12
+ - **New code** (provider layer, configs, tests, docs): normal commits
13
+ 4. Never commit `.env`, credentials, `*.db` files, or `felix-agent-sdk-structure.md` (internal design doc).
14
+ 5. All PRs require review from `@CalebisGross` (enforced via CODEOWNERS).
15
+
16
+ ## Project Overview
17
+
18
+ `felix-agent-sdk` is a pip-installable Python SDK that extracts and repackages the internal Felix Framework into a provider-agnostic, open-source package for external developers.
19
+
20
+ - **GitHub org:** [AppSprout-dev](https://github.com/AppSprout-dev)
21
+ - **Public SDK repo:** `AppSprout-dev/felix-agent-sdk`
22
+ - **Private Felix source:** `AppSprout-dev/felix` (original by Caleb Gross)
23
+ - **Team:** Jason Bennett (@jkbennitt) — SDK lead. Caleb Gross (@CalebisGross) — original Felix author, required reviewer.
24
+
25
+ ## Build & Run Commands
26
+
27
+ ```bash
28
+ # Setup
29
+ python -m venv .venv
30
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
31
+ pip install -e ".[dev]"
32
+
33
+ # Install with specific provider
34
+ pip install -e ".[anthropic]" # Claude models
35
+ pip install -e ".[openai]" # OpenAI models
36
+ pip install -e ".[local]" # LM Studio / Ollama
37
+ pip install -e ".[all]" # Everything
38
+
39
+ # Testing
40
+ pytest tests/
41
+ pytest tests/unit/
42
+ pytest tests/ -v --cov=src
43
+
44
+ # Linting & type checking
45
+ ruff check src/
46
+ ruff format src/
47
+ mypy src/
48
+ ```
49
+
50
+ ## Architecture
51
+
52
+ ### Package Layout
53
+
54
+ ```
55
+ src/felix_agent_sdk/
56
+ ├── __init__.py # Public API surface + version
57
+ ├── _version.py # Single source of truth for version
58
+ ├── core/ # HelixGeometry, HelixConfig, HelixPosition
59
+ ├── agents/ # Agent, LLMAgent, specialized agents, AgentFactory
60
+ ├── communication/ # CentralPost, Spoke, messages, AgentRegistry
61
+ ├── memory/ # KnowledgeStore, TaskMemory, compression, pluggable backends
62
+ ├── providers/ # BaseProvider, Anthropic, OpenAI, Local (IMPLEMENTED)
63
+ ├── spawning/ # DynamicSpawning, ConfidenceMonitor, ContentAnalyzer
64
+ ├── workflows/ # Felix workflow runner + templates
65
+ ├── tokens/ # TokenBudgetManager, provider-aware counting
66
+ ├── streaming/ # StreamEvent types, StreamHandler
67
+ └── utils/ # Logging, config loading, common types
68
+ ```
69
+
70
+ ### Key Design Decisions
71
+
72
+ - **Provider abstraction** is the critical layer. Every provider implements `BaseProvider` with `complete()`, `stream()`, `count_tokens()`. This decouples all agent logic from specific LLM APIs.
73
+ - **`openai_provider.py`** (not `openai.py`) avoids shadowing the `openai` package import.
74
+ - **Helix model:** agents traverse `t ∈ [0,1]` along a 3D spiral. Top (t=0) = exploration, high temperature, broad search. Bottom (t=1) = synthesis, low temperature, focused output. Default: top_radius=3.0, bottom_radius=0.5, height=8.0, turns=2.0.
75
+ - **Hub-spoke O(N)** communication via CentralPost. All messages route through the hub, never direct agent-to-agent mesh (O(N²)).
76
+ - **Memory** uses pluggable backends with SQLite as default.
77
+ - **Dynamic spawning** is confidence-driven. If team confidence drops below threshold, new agents spawn automatically.
78
+
79
+ ### Porting Reference
80
+
81
+ The original Felix source is at `https://github.com/CalebisGross/felix`. Key files to port:
82
+
83
+ | Felix source | SDK target | Notes |
84
+ |---|---|---|
85
+ | `src/core/helix_geometry.py` (186 lines) | `core/helix.py` | Add HelixConfig presets, HelixPosition |
86
+ | `src/agents/agent.py` (372 lines) | `agents/base.py` | Extract AgentState, clean interface |
87
+ | `src/agents/llm_agent.py` (2130 lines) | `agents/llm_agent.py` | Wire to BaseProvider (biggest refactor) |
88
+ | `src/agents/specialized_agents.py` (578 lines) | `agents/specialized.py` | Keep Research, Analysis, Critic |
89
+ | `src/agents/dynamic_spawning.py` (1204 lines) | `spawning/` | Split into focused modules |
90
+ | `src/communication/central_post.py` (3210 lines) | `communication/` | Extract AgentRegistry, decouple memory |
91
+ | `src/communication/spoke.py` (514 lines) | `communication/spoke.py` | Minimal changes |
92
+ | `src/memory/knowledge_store.py` (2953 lines) | `memory/` | Add pluggable backend interface |
93
+ | `src/memory/task_memory.py` (705 lines) | `memory/` | Pattern recognition |
94
+ | `src/memory/context_compression.py` (564 lines) | `memory/` | Compression strategies |
95
+ | `src/llm/token_budget.py` (331 lines) | `tokens/budget.py` | Provider-aware counting |
96
+ | `src/workflows/felix_workflow.py` | `workflows/` | Add template system |
97
+
98
+ ### What NOT to Port
99
+
100
+ - Tkinter/PySide6 GUI code
101
+ - `exp/` benchmarking scripts (write new ones)
102
+ - `linear_pipeline.py` (research baseline)
103
+ - `lm_studio_client.py` / `multi_server_client.py` (replaced by provider layer)
104
+ - CLI, API, execution/trust system, knowledge daemon
105
+
106
+ ## Phased Implementation
107
+
108
+ - **Phase 1** (current): Package skeleton + provider layer
109
+ - **Phase 2** `feat/core-geometry`: Port HelixGeometry, add HelixConfig/HelixPosition
110
+ - **Phase 3** `feat/providers`: Tests for provider layer
111
+ - **Phase 4** `feat/agents`: Port agent classes, wire to BaseProvider
112
+ - **Phase 5** `feat/communication`: Port CentralPost, Spoke, messages
113
+ - **Phase 6** `feat/memory`: Port KnowledgeStore, TaskMemory, ContextCompressor
114
+ - **Phase 7** `feat/workflows`: Port workflow runner + templates
@@ -0,0 +1,50 @@
1
+ # Contributing to Felix Agent SDK
2
+
3
+ Thank you for contributing! This document covers setting up your development environment.
4
+
5
+ ## Development Setup
6
+
7
+ ```bash
8
+ git clone https://github.com/AppSprout-dev/felix-agent-sdk.git
9
+ cd felix-agent-sdk
10
+ python -m venv .venv
11
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
12
+ pip install -e ".[dev]"
13
+ ```
14
+
15
+ ## Running Tests
16
+
17
+ ```bash
18
+ pytest tests/
19
+ pytest tests/ -v --cov=src
20
+ ```
21
+
22
+ ## Code Style
23
+
24
+ We use `ruff` for linting and formatting:
25
+
26
+ ```bash
27
+ ruff check src/
28
+ ruff format src/
29
+ mypy src/
30
+ ```
31
+
32
+ ## Submitting Changes
33
+
34
+ 1. Fork the repo and create a feature branch from `main`
35
+ 2. Write tests for new functionality
36
+ 3. Ensure `pytest` and `ruff` pass
37
+ 4. Open a pull request — `@CalebisGross` will review core modules
38
+
39
+ ## Branch Protection
40
+
41
+ The `main` branch requires at least one approving review before merge.
42
+ Direct pushes to `main` are not permitted after initial setup.
43
+
44
+ ## Git Attribution
45
+
46
+ When porting code from the original Felix framework:
47
+
48
+ - **Unchanged algorithms**: Use `git commit --author="Caleb Gross <209704970+CalebisGross@users.noreply.github.com>"`
49
+ - **Refactored code**: Add `Co-authored-by: Caleb Gross <209704970+CalebisGross@users.noreply.github.com>` trailer
50
+ - **New code**: Normal commits
@@ -0,0 +1,29 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Felix Framework
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ NOTICE: This is the Community Edition license. For commercial deployments,
26
+ enterprise features, or air-gapped certifications, contact the maintainers
27
+ about commercial licensing options.
28
+
29
+ For commercial licensing inquiries, contact: [caleb@appsprout.dev]