symfonic-core 4.9.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.
- symfonic_core-4.9.0/.claude/settings.local.json +124 -0
- symfonic_core-4.9.0/.env.example +8 -0
- symfonic_core-4.9.0/.gitignore +36 -0
- symfonic_core-4.9.0/CHANGELOG.md +73 -0
- symfonic_core-4.9.0/CLAUDE.md +159 -0
- symfonic_core-4.9.0/PKG-INFO +289 -0
- symfonic_core-4.9.0/README.md +213 -0
- symfonic_core-4.9.0/docker-compose.yml +79 -0
- symfonic_core-4.9.0/docs/concepts/agent.md +307 -0
- symfonic_core-4.9.0/docs/concepts/api-reference.md +524 -0
- symfonic_core-4.9.0/docs/concepts/architecture.md +212 -0
- symfonic_core-4.9.0/docs/concepts/capabilities.md +102 -0
- symfonic_core-4.9.0/docs/concepts/examples.md +342 -0
- symfonic_core-4.9.0/docs/concepts/integration.md +380 -0
- symfonic_core-4.9.0/docs/concepts/memory.md +267 -0
- symfonic_core-4.9.0/docs/ideas/santo-grial.md +20 -0
- symfonic_core-4.9.0/examples/advanced/README.md +29 -0
- symfonic_core-4.9.0/examples/agent/basic_agent.py +43 -0
- symfonic_core-4.9.0/examples/agent/fastapi_app.py +54 -0
- symfonic_core-4.9.0/examples/agent_with_memory/__main__.py +99 -0
- symfonic_core-4.9.0/examples/callback_logging/__main__.py +66 -0
- symfonic_core-4.9.0/examples/demo_app/__init__.py +1 -0
- symfonic_core-4.9.0/examples/demo_app/__main__.py +207 -0
- symfonic_core-4.9.0/examples/demo_app/capabilities/__init__.py +0 -0
- symfonic_core-4.9.0/examples/demo_app/capabilities/demo_fetch.py +29 -0
- symfonic_core-4.9.0/examples/demo_app/capabilities/demo_search.py +45 -0
- symfonic_core-4.9.0/examples/demo_app/deps.py +18 -0
- symfonic_core-4.9.0/examples/demo_app/e2e_demo.py +82 -0
- symfonic_core-4.9.0/examples/demo_app/fixtures/fetch/example.html +1 -0
- symfonic_core-4.9.0/examples/demo_app/fixtures/search/results.json +5 -0
- symfonic_core-4.9.0/examples/demo_app/real_demo.py +127 -0
- symfonic_core-4.9.0/examples/demo_app/sections/__init__.py +0 -0
- symfonic_core-4.9.0/examples/demo_app/sections/agent_instructions.py +25 -0
- symfonic_core-4.9.0/examples/demo_app/sections/context_loader.py +29 -0
- symfonic_core-4.9.0/examples/demo_app/sections/memory_section.py +21 -0
- symfonic_core-4.9.0/examples/demo_app/sections/skills_section.py +22 -0
- symfonic_core-4.9.0/examples/demo_app/state.py +23 -0
- symfonic_core-4.9.0/examples/demo_app/utils/__init__.py +0 -0
- symfonic_core-4.9.0/examples/demo_app/utils/fixtures.py +9 -0
- symfonic_core-4.9.0/examples/demo_app/utils/stdout_hook.py +45 -0
- symfonic_core-4.9.0/examples/e2e_basic_agent/__main__.py +161 -0
- symfonic_core-4.9.0/examples/full_demo/Dockerfile.worker +16 -0
- symfonic_core-4.9.0/examples/full_demo/README.md +309 -0
- symfonic_core-4.9.0/examples/full_demo/__init__.py +1 -0
- symfonic_core-4.9.0/examples/full_demo/__main__.py +5 -0
- symfonic_core-4.9.0/examples/full_demo/domain_config.py +281 -0
- symfonic_core-4.9.0/examples/full_demo/exports/.gitignore +2 -0
- symfonic_core-4.9.0/examples/full_demo/exports/ads_chart_03938efc.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/daily_trend_a61de88c.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/daily_trend_a7c3cbbb.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/daily_trend_fe675672.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/executive_report_2281d87d.pdf +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/executive_report_cda82f8a.pdf +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/inventory_chart_264a2e4c.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/inventory_chart_ec10ec94.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/inventory_report_a92e3cfd.pdf +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/sales_chart_068506d6.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/sales_chart_58851c78.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/sales_chart_b2cb926e.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/exports/sales_chart_de2b72c4.png +0 -0
- symfonic_core-4.9.0/examples/full_demo/infra/__init__.py +10 -0
- symfonic_core-4.9.0/examples/full_demo/infra/celery_adapter.py +112 -0
- symfonic_core-4.9.0/examples/full_demo/infra/celery_app.py +44 -0
- symfonic_core-4.9.0/examples/full_demo/infra/tasks.py +218 -0
- symfonic_core-4.9.0/examples/full_demo/infra/telemetry.py +246 -0
- symfonic_core-4.9.0/examples/full_demo/mock_provider.py +240 -0
- symfonic_core-4.9.0/examples/full_demo/models/__init__.py +79 -0
- symfonic_core-4.9.0/examples/full_demo/models/billing.py +250 -0
- symfonic_core-4.9.0/examples/full_demo/models/chat.py +157 -0
- symfonic_core-4.9.0/examples/full_demo/models/finding.py +173 -0
- symfonic_core-4.9.0/examples/full_demo/models/migrations.py +308 -0
- symfonic_core-4.9.0/examples/full_demo/models/prompt_versions.py +78 -0
- symfonic_core-4.9.0/examples/full_demo/models/trace.py +294 -0
- symfonic_core-4.9.0/examples/full_demo/observability.py +178 -0
- symfonic_core-4.9.0/examples/full_demo/requirements.txt +6 -0
- symfonic_core-4.9.0/examples/full_demo/seed.py +71 -0
- symfonic_core-4.9.0/examples/full_demo/server.py +1334 -0
- symfonic_core-4.9.0/examples/full_demo/static/app.js +1740 -0
- symfonic_core-4.9.0/examples/full_demo/static/index.html +777 -0
- symfonic_core-4.9.0/examples/full_demo/static/observability.css +389 -0
- symfonic_core-4.9.0/examples/full_demo/static/observability.js +1275 -0
- symfonic_core-4.9.0/examples/full_demo/static/workflows.js +222 -0
- symfonic_core-4.9.0/examples/full_demo/tools/__init__.py +12 -0
- symfonic_core-4.9.0/examples/full_demo/tools/amazon_fetch.py +208 -0
- symfonic_core-4.9.0/examples/full_demo/tools/anomaly_detection.py +170 -0
- symfonic_core-4.9.0/examples/full_demo/tools/chart_gen.py +209 -0
- symfonic_core-4.9.0/examples/full_demo/tools/demo_knowledge.py +235 -0
- symfonic_core-4.9.0/examples/full_demo/tools/executor.py +299 -0
- symfonic_core-4.9.0/examples/full_demo/tools/knowledge_search.py +61 -0
- symfonic_core-4.9.0/examples/full_demo/tools/langchain_tools.py +91 -0
- symfonic_core-4.9.0/examples/full_demo/tools/multimodal_report.py +199 -0
- symfonic_core-4.9.0/examples/full_demo/tools/pdf_report.py +286 -0
- symfonic_core-4.9.0/examples/full_demo/tools/resolvers.py +64 -0
- symfonic_core-4.9.0/examples/full_demo/tools/sync_pg_to_mongo.py +100 -0
- symfonic_core-4.9.0/examples/memory_agent/__init__.py +0 -0
- symfonic_core-4.9.0/examples/memory_agent/__main__.py +44 -0
- symfonic_core-4.9.0/examples/minimal_agent/__main__.py +42 -0
- symfonic_core-4.9.0/examples/plugins/__init__.py +28 -0
- symfonic_core-4.9.0/examples/plugins/amazon_growth.py +191 -0
- symfonic_core-4.9.0/examples/plugins/penal_mexicano.py +233 -0
- symfonic_core-4.9.0/examples/real_agent/__main__.py +52 -0
- symfonic_core-4.9.0/examples/real_agent_with_memory/__init__.py +0 -0
- symfonic_core-4.9.0/examples/real_agent_with_memory/__main__.py +106 -0
- symfonic_core-4.9.0/examples/real_skill_registry/__init__.py +0 -0
- symfonic_core-4.9.0/examples/real_skill_registry/__main__.py +94 -0
- symfonic_core-4.9.0/examples/real_tool_registry/__init__.py +0 -0
- symfonic_core-4.9.0/examples/real_tool_registry/__main__.py +132 -0
- symfonic_core-4.9.0/examples/server_v1.py +49 -0
- symfonic_core-4.9.0/examples/skill_agent/__init__.py +0 -0
- symfonic_core-4.9.0/examples/skill_agent/__main__.py +42 -0
- symfonic_core-4.9.0/examples/skill_registry/__main__.py +89 -0
- symfonic_core-4.9.0/examples/tool_agent/__init__.py +0 -0
- symfonic_core-4.9.0/examples/tool_agent/__main__.py +49 -0
- symfonic_core-4.9.0/examples/tool_registry_demo/__main__.py +120 -0
- symfonic_core-4.9.0/pyproject.toml +130 -0
- symfonic_core-4.9.0/scripts/generate_docs.sh +36 -0
- symfonic_core-4.9.0/services/amazon_mock/Dockerfile +11 -0
- symfonic_core-4.9.0/services/amazon_mock/__init__.py +1 -0
- symfonic_core-4.9.0/services/amazon_mock/app.py +133 -0
- symfonic_core-4.9.0/services/amazon_mock/generators.py +260 -0
- symfonic_core-4.9.0/src/symfonic/agent/__init__.py +66 -0
- symfonic_core-4.9.0/src/symfonic/agent/cli/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/agent/cli/main.py +119 -0
- symfonic_core-4.9.0/src/symfonic/agent/config.py +103 -0
- symfonic_core-4.9.0/src/symfonic/agent/domain.py +74 -0
- symfonic_core-4.9.0/src/symfonic/agent/engine.py +1496 -0
- symfonic_core-4.9.0/src/symfonic/agent/factory.py +161 -0
- symfonic_core-4.9.0/src/symfonic/agent/fastapi/__init__.py +4 -0
- symfonic_core-4.9.0/src/symfonic/agent/fastapi/dependencies.py +45 -0
- symfonic_core-4.9.0/src/symfonic/agent/fastapi/router.py +531 -0
- symfonic_core-4.9.0/src/symfonic/agent/observability.py +154 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/__init__.py +16 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/db_section.py +167 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/extraction_prompt.py +107 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/system_prompt.py +159 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/templates/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/templates/extraction.txt +148 -0
- symfonic_core-4.9.0/src/symfonic/agent/prompts/templates/hms_system.txt +118 -0
- symfonic_core-4.9.0/src/symfonic/agent/scheduler.py +143 -0
- symfonic_core-4.9.0/src/symfonic/agent/sessions.py +84 -0
- symfonic_core-4.9.0/src/symfonic/agent/types.py +185 -0
- symfonic_core-4.9.0/src/symfonic/core/__init__.py +56 -0
- symfonic_core-4.9.0/src/symfonic/core/agents/__init__.py +5 -0
- symfonic_core-4.9.0/src/symfonic/core/agents/in_memory.py +35 -0
- symfonic_core-4.9.0/src/symfonic/core/agents/loader.py +14 -0
- symfonic_core-4.9.0/src/symfonic/core/agents/schema.py +26 -0
- symfonic_core-4.9.0/src/symfonic/core/callbacks/__init__.py +7 -0
- symfonic_core-4.9.0/src/symfonic/core/callbacks/manager.py +79 -0
- symfonic_core-4.9.0/src/symfonic/core/callbacks/noop.py +37 -0
- symfonic_core-4.9.0/src/symfonic/core/callbacks/protocol.py +36 -0
- symfonic_core-4.9.0/src/symfonic/core/capabilities/__init__.py +10 -0
- symfonic_core-4.9.0/src/symfonic/core/capabilities/firecrawl.py +73 -0
- symfonic_core-4.9.0/src/symfonic/core/capabilities/openai_search.py +75 -0
- symfonic_core-4.9.0/src/symfonic/core/capabilities/protocols.py +43 -0
- symfonic_core-4.9.0/src/symfonic/core/config.py +61 -0
- symfonic_core-4.9.0/src/symfonic/core/contracts/__init__.py +47 -0
- symfonic_core-4.9.0/src/symfonic/core/contracts/callbacks.py +58 -0
- symfonic_core-4.9.0/src/symfonic/core/contracts/errors.py +61 -0
- symfonic_core-4.9.0/src/symfonic/core/contracts/types.py +108 -0
- symfonic_core-4.9.0/src/symfonic/core/deps.py +145 -0
- symfonic_core-4.9.0/src/symfonic/core/documents/__init__.py +5 -0
- symfonic_core-4.9.0/src/symfonic/core/documents/in_memory.py +44 -0
- symfonic_core-4.9.0/src/symfonic/core/documents/loader.py +14 -0
- symfonic_core-4.9.0/src/symfonic/core/documents/schema.py +5 -0
- symfonic_core-4.9.0/src/symfonic/core/documents/truncation.py +21 -0
- symfonic_core-4.9.0/src/symfonic/core/edges/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/core/edges/tool_condition.py +27 -0
- symfonic_core-4.9.0/src/symfonic/core/events.py +28 -0
- symfonic_core-4.9.0/src/symfonic/core/graph.py +142 -0
- symfonic_core-4.9.0/src/symfonic/core/learning/__init__.py +12 -0
- symfonic_core-4.9.0/src/symfonic/core/learning/consolidation.py +176 -0
- symfonic_core-4.9.0/src/symfonic/core/learning/models.py +33 -0
- symfonic_core-4.9.0/src/symfonic/core/learning/phases.py +329 -0
- symfonic_core-4.9.0/src/symfonic/core/learning/refiner.py +154 -0
- symfonic_core-4.9.0/src/symfonic/core/logging/__init__.py +6 -0
- symfonic_core-4.9.0/src/symfonic/core/logging/console.py +34 -0
- symfonic_core-4.9.0/src/symfonic/core/logging/protocol.py +22 -0
- symfonic_core-4.9.0/src/symfonic/core/models.py +51 -0
- symfonic_core-4.9.0/src/symfonic/core/nodes/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/core/nodes/compaction.py +116 -0
- symfonic_core-4.9.0/src/symfonic/core/nodes/context_injection.py +102 -0
- symfonic_core-4.9.0/src/symfonic/core/nodes/react.py +143 -0
- symfonic_core-4.9.0/src/symfonic/core/observability/__init__.py +19 -0
- symfonic_core-4.9.0/src/symfonic/core/observability/decorators.py +147 -0
- symfonic_core-4.9.0/src/symfonic/core/observability/hooks.py +68 -0
- symfonic_core-4.9.0/src/symfonic/core/observability/protocol.py +73 -0
- symfonic_core-4.9.0/src/symfonic/core/orchestration.py +28 -0
- symfonic_core-4.9.0/src/symfonic/core/plugins/__init__.py +15 -0
- symfonic_core-4.9.0/src/symfonic/core/plugins/base.py +73 -0
- symfonic_core-4.9.0/src/symfonic/core/plugins/section.py +76 -0
- symfonic_core-4.9.0/src/symfonic/core/presets.py +116 -0
- symfonic_core-4.9.0/src/symfonic/core/prompt/__init__.py +6 -0
- symfonic_core-4.9.0/src/symfonic/core/prompt/_timeout.py +21 -0
- symfonic_core-4.9.0/src/symfonic/core/prompt/builder.py +132 -0
- symfonic_core-4.9.0/src/symfonic/core/prompt/caching.py +50 -0
- symfonic_core-4.9.0/src/symfonic/core/prompt/sections.py +130 -0
- symfonic_core-4.9.0/src/symfonic/core/protocols.py +128 -0
- symfonic_core-4.9.0/src/symfonic/core/providers.py +56 -0
- symfonic_core-4.9.0/src/symfonic/core/py.typed +0 -0
- symfonic_core-4.9.0/src/symfonic/core/resilience.py +21 -0
- symfonic_core-4.9.0/src/symfonic/core/runtime.py +255 -0
- symfonic_core-4.9.0/src/symfonic/core/scope.py +34 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/__init__.py +5 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/filter.py +15 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/formatter.py +15 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/in_memory.py +29 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/loader.py +31 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/markdown_utils.py +15 -0
- symfonic_core-4.9.0/src/symfonic/core/skills/schema.py +5 -0
- symfonic_core-4.9.0/src/symfonic/core/state.py +60 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/__init__.py +30 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/adapters/__init__.py +6 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/adapters/_shared.py +12 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/adapters/anthropic_adapter.py +112 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/adapters/openai_adapter.py +96 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/event_processor.py +37 -0
- symfonic_core-4.9.0/src/symfonic/core/streaming/transpiler.py +216 -0
- symfonic_core-4.9.0/src/symfonic/core/testing/__init__.py +76 -0
- symfonic_core-4.9.0/src/symfonic/core/tool_interface.py +76 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/_resolve.py +60 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/agent_tools.py +39 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/chart_tools.py +23 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/helpers.py +21 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/memory_tools.py +48 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/registry.py +197 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/skill_tools.py +43 -0
- symfonic_core-4.9.0/src/symfonic/core/tools/web_tools.py +43 -0
- symfonic_core-4.9.0/src/symfonic/infra/__init__.py +22 -0
- symfonic_core-4.9.0/src/symfonic/infra/protocols.py +121 -0
- symfonic_core-4.9.0/src/symfonic/infra/trace.py +168 -0
- symfonic_core-4.9.0/src/symfonic/knowledge/__init__.py +18 -0
- symfonic_core-4.9.0/src/symfonic/knowledge/adapters/__init__.py +16 -0
- symfonic_core-4.9.0/src/symfonic/knowledge/adapters/chroma.py +117 -0
- symfonic_core-4.9.0/src/symfonic/knowledge/models.py +41 -0
- symfonic_core-4.9.0/src/symfonic/knowledge/protocols.py +51 -0
- symfonic_core-4.9.0/src/symfonic/memory/__init__.py +54 -0
- symfonic_core-4.9.0/src/symfonic/memory/_internal/__init__.py +0 -0
- symfonic_core-4.9.0/src/symfonic/memory/_internal/extraction/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/_internal/extraction/service.py +93 -0
- symfonic_core-4.9.0/src/symfonic/memory/_internal/llm/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/_internal/llm/response_parser.py +36 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/__init__.py +14 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/chroma.py +108 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/in_memory.py +232 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/mongodb.py +375 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/pool.py +122 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/postgres_graph.py +353 -0
- symfonic_core-4.9.0/src/symfonic/memory/backends/postgres_vector.py +142 -0
- symfonic_core-4.9.0/src/symfonic/memory/compaction/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/compaction/engine.py +129 -0
- symfonic_core-4.9.0/src/symfonic/memory/compaction/strategies.py +68 -0
- symfonic_core-4.9.0/src/symfonic/memory/graph/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/graph/scoring.py +141 -0
- symfonic_core-4.9.0/src/symfonic/memory/graph/store.py +125 -0
- symfonic_core-4.9.0/src/symfonic/memory/graph/traversal.py +125 -0
- symfonic_core-4.9.0/src/symfonic/memory/janitor.py +269 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/__init__.py +18 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/episodic.py +127 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/procedural/__init__.py +11 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/procedural/catalog.py +63 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/procedural/layer.py +123 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/procedural/router.py +143 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/prospective.py +106 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/semantic.py +127 -0
- symfonic_core-4.9.0/src/symfonic/memory/layers/working.py +123 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/__init__.py +21 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/context.py +84 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/edge.py +47 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/entry.py +74 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/node.py +60 -0
- symfonic_core-4.9.0/src/symfonic/memory/models/operation.py +72 -0
- symfonic_core-4.9.0/src/symfonic/memory/orchestrator/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/orchestrator/config.py +98 -0
- symfonic_core-4.9.0/src/symfonic/memory/orchestrator/factory.py +303 -0
- symfonic_core-4.9.0/src/symfonic/memory/orchestrator/orchestrator.py +227 -0
- symfonic_core-4.9.0/src/symfonic/memory/prompts/__init__.py +42 -0
- symfonic_core-4.9.0/src/symfonic/memory/prompts/compaction.txt +46 -0
- symfonic_core-4.9.0/src/symfonic/memory/prompts/router.txt +27 -0
- symfonic_core-4.9.0/src/symfonic/memory/prompts/system.txt +64 -0
- symfonic_core-4.9.0/src/symfonic/memory/protocols.py +204 -0
- symfonic_core-4.9.0/src/symfonic/memory/py.typed +0 -0
- symfonic_core-4.9.0/src/symfonic/memory/retrieval/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/memory/retrieval/discovery.py +110 -0
- symfonic_core-4.9.0/src/symfonic/memory/retrieval/engine.py +186 -0
- symfonic_core-4.9.0/src/symfonic/memory/retrieval/filters.py +60 -0
- symfonic_core-4.9.0/src/symfonic/memory/retrieval/spreading.py +111 -0
- symfonic_core-4.9.0/src/symfonic/memory/types.py +106 -0
- symfonic_core-4.9.0/src/symfonic/tools/__init__.py +1 -0
- symfonic_core-4.9.0/src/symfonic/tools/learning.py +103 -0
- symfonic_core-4.9.0/src/symfonic/tools/mcp/__init__.py +20 -0
- symfonic_core-4.9.0/src/symfonic/tools/mcp/models.py +40 -0
- symfonic_core-4.9.0/src/symfonic/tools/mcp/protocol.py +58 -0
- symfonic_core-4.9.0/src/symfonic/tools/mcp/provider.py +272 -0
- symfonic_core-4.9.0/tests/__init__.py +0 -0
- symfonic_core-4.9.0/tests/agent/__init__.py +0 -0
- symfonic_core-4.9.0/tests/agent/test_activation_engine.py +113 -0
- symfonic_core-4.9.0/tests/agent/test_cli.py +83 -0
- symfonic_core-4.9.0/tests/agent/test_consolidation_e2e.py +319 -0
- symfonic_core-4.9.0/tests/agent/test_db_section.py +334 -0
- symfonic_core-4.9.0/tests/agent/test_domain.py +116 -0
- symfonic_core-4.9.0/tests/agent/test_e2e.py +237 -0
- symfonic_core-4.9.0/tests/agent/test_engine.py +1086 -0
- symfonic_core-4.9.0/tests/agent/test_factory.py +152 -0
- symfonic_core-4.9.0/tests/agent/test_fastapi.py +530 -0
- symfonic_core-4.9.0/tests/agent/test_history_injection.py +197 -0
- symfonic_core-4.9.0/tests/agent/test_janitor.py +409 -0
- symfonic_core-4.9.0/tests/agent/test_procedures.py +306 -0
- symfonic_core-4.9.0/tests/agent/test_prompts.py +425 -0
- symfonic_core-4.9.0/tests/agent/test_rich_hydration.py +160 -0
- symfonic_core-4.9.0/tests/agent/test_scheduler.py +159 -0
- symfonic_core-4.9.0/tests/agent/test_sessions.py +107 -0
- symfonic_core-4.9.0/tests/agent/test_stream_typed.py +505 -0
- symfonic_core-4.9.0/tests/agent/test_types.py +258 -0
- symfonic_core-4.9.0/tests/cassettes/__init__.py +0 -0
- symfonic_core-4.9.0/tests/cassettes/fixtures/bare_json_extract.json +31 -0
- symfonic_core-4.9.0/tests/cassettes/fixtures/graph_ops_bare_keyword.json +26 -0
- symfonic_core-4.9.0/tests/cassettes/fixtures/greeting.json +64 -0
- symfonic_core-4.9.0/tests/cassettes/fixtures/identity_graph_ops.json +31 -0
- symfonic_core-4.9.0/tests/cassettes/fixtures/identity_store.json +57 -0
- symfonic_core-4.9.0/tests/cassettes/record.py +71 -0
- symfonic_core-4.9.0/tests/cassettes/recorder.py +50 -0
- symfonic_core-4.9.0/tests/contracts/__init__.py +0 -0
- symfonic_core-4.9.0/tests/contracts/conftest.py +31 -0
- symfonic_core-4.9.0/tests/contracts/test_agent_store_contract.py +51 -0
- symfonic_core-4.9.0/tests/contracts/test_document_store_contract.py +63 -0
- symfonic_core-4.9.0/tests/contracts/test_skill_store_contract.py +42 -0
- symfonic_core-4.9.0/tests/doubles.py +124 -0
- symfonic_core-4.9.0/tests/integration/__init__.py +0 -0
- symfonic_core-4.9.0/tests/integration/test_callback_integration.py +203 -0
- symfonic_core-4.9.0/tests/integration/test_example_validation.py +147 -0
- symfonic_core-4.9.0/tests/integration/test_minimal_agent.py +114 -0
- symfonic_core-4.9.0/tests/integration/test_phase2_examples.py +235 -0
- symfonic_core-4.9.0/tests/integration/test_phase3_integration.py +290 -0
- symfonic_core-4.9.0/tests/integration/test_tool_store_integration.py +209 -0
- symfonic_core-4.9.0/tests/integration/test_vcr_agent.py +260 -0
- symfonic_core-4.9.0/tests/memory/__init__.py +0 -0
- symfonic_core-4.9.0/tests/memory/conftest.py +124 -0
- symfonic_core-4.9.0/tests/memory/integration/__init__.py +0 -0
- symfonic_core-4.9.0/tests/memory/integration/test_orchestrator.py +443 -0
- symfonic_core-4.9.0/tests/memory/integration/test_postgres_integration.py +242 -0
- symfonic_core-4.9.0/tests/memory/unit/__init__.py +0 -0
- symfonic_core-4.9.0/tests/memory/unit/test_catalog.py +67 -0
- symfonic_core-4.9.0/tests/memory/unit/test_compaction.py +172 -0
- symfonic_core-4.9.0/tests/memory/unit/test_config.py +72 -0
- symfonic_core-4.9.0/tests/memory/unit/test_discovery.py +225 -0
- symfonic_core-4.9.0/tests/memory/unit/test_extraction_service.py +44 -0
- symfonic_core-4.9.0/tests/memory/unit/test_factory_gaps.py +50 -0
- symfonic_core-4.9.0/tests/memory/unit/test_graph.py +109 -0
- symfonic_core-4.9.0/tests/memory/unit/test_in_memory.py +317 -0
- symfonic_core-4.9.0/tests/memory/unit/test_layers.py +341 -0
- symfonic_core-4.9.0/tests/memory/unit/test_models.py +122 -0
- symfonic_core-4.9.0/tests/memory/unit/test_mongodb.py +639 -0
- symfonic_core-4.9.0/tests/memory/unit/test_pool_gaps.py +54 -0
- symfonic_core-4.9.0/tests/memory/unit/test_postgres.py +511 -0
- symfonic_core-4.9.0/tests/memory/unit/test_prompts.py +35 -0
- symfonic_core-4.9.0/tests/memory/unit/test_response_parser.py +44 -0
- symfonic_core-4.9.0/tests/memory/unit/test_retrieval.py +116 -0
- symfonic_core-4.9.0/tests/memory/unit/test_router.py +94 -0
- symfonic_core-4.9.0/tests/memory/unit/test_scoring.py +128 -0
- symfonic_core-4.9.0/tests/memory/unit/test_small_gaps.py +404 -0
- symfonic_core-4.9.0/tests/memory/unit/test_spreading.py +276 -0
- symfonic_core-4.9.0/tests/memory/unit/test_store_distinct.py +117 -0
- symfonic_core-4.9.0/tests/memory/unit/test_traversal.py +128 -0
- symfonic_core-4.9.0/tests/memory/unit/test_types.py +66 -0
- symfonic_core-4.9.0/tests/unit/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/agents/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/agents/test_in_memory_agent_store.py +57 -0
- symfonic_core-4.9.0/tests/unit/agents/test_loader.py +33 -0
- symfonic_core-4.9.0/tests/unit/agents/test_schema.py +39 -0
- symfonic_core-4.9.0/tests/unit/capabilities/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/capabilities/test_capabilities.py +125 -0
- symfonic_core-4.9.0/tests/unit/capabilities/test_firecrawl.py +167 -0
- symfonic_core-4.9.0/tests/unit/capabilities/test_openai_search.py +115 -0
- symfonic_core-4.9.0/tests/unit/core/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/core/test_config.py +62 -0
- symfonic_core-4.9.0/tests/unit/core/test_contracts.py +323 -0
- symfonic_core-4.9.0/tests/unit/core/test_deps.py +123 -0
- symfonic_core-4.9.0/tests/unit/core/test_doubles.py +138 -0
- symfonic_core-4.9.0/tests/unit/core/test_events.py +62 -0
- symfonic_core-4.9.0/tests/unit/core/test_graph.py +103 -0
- symfonic_core-4.9.0/tests/unit/core/test_logging.py +49 -0
- symfonic_core-4.9.0/tests/unit/core/test_models.py +116 -0
- symfonic_core-4.9.0/tests/unit/core/test_orchestration.py +31 -0
- symfonic_core-4.9.0/tests/unit/core/test_package.py +37 -0
- symfonic_core-4.9.0/tests/unit/core/test_protocol_memory_flusher.py +38 -0
- symfonic_core-4.9.0/tests/unit/core/test_protocols.py +160 -0
- symfonic_core-4.9.0/tests/unit/core/test_providers.py +38 -0
- symfonic_core-4.9.0/tests/unit/core/test_resilience.py +45 -0
- symfonic_core-4.9.0/tests/unit/core/test_scope.py +37 -0
- symfonic_core-4.9.0/tests/unit/core/test_state.py +38 -0
- symfonic_core-4.9.0/tests/unit/core/test_testing.py +69 -0
- symfonic_core-4.9.0/tests/unit/core/test_tool_interface.py +153 -0
- symfonic_core-4.9.0/tests/unit/demo/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/demo/test_anomaly_detection.py +400 -0
- symfonic_core-4.9.0/tests/unit/demo/test_billing.py +480 -0
- symfonic_core-4.9.0/tests/unit/demo/test_capabilities.py +80 -0
- symfonic_core-4.9.0/tests/unit/demo/test_celery_adapter.py +424 -0
- symfonic_core-4.9.0/tests/unit/demo/test_deps.py +29 -0
- symfonic_core-4.9.0/tests/unit/demo/test_dual_write.py +293 -0
- symfonic_core-4.9.0/tests/unit/demo/test_fixtures.py +24 -0
- symfonic_core-4.9.0/tests/unit/demo/test_jarvio_learning.py +102 -0
- symfonic_core-4.9.0/tests/unit/demo/test_knowledge_search.py +184 -0
- symfonic_core-4.9.0/tests/unit/demo/test_memory_graph.py +128 -0
- symfonic_core-4.9.0/tests/unit/demo/test_migrations.py +76 -0
- symfonic_core-4.9.0/tests/unit/demo/test_multimodal_report.py +366 -0
- symfonic_core-4.9.0/tests/unit/demo/test_resolvers.py +240 -0
- symfonic_core-4.9.0/tests/unit/demo/test_sections.py +119 -0
- symfonic_core-4.9.0/tests/unit/demo/test_state.py +44 -0
- symfonic_core-4.9.0/tests/unit/demo/test_sync_pg_to_mongo.py +247 -0
- symfonic_core-4.9.0/tests/unit/demo/test_telemetry.py +291 -0
- symfonic_core-4.9.0/tests/unit/demo/test_trace_store.py +312 -0
- symfonic_core-4.9.0/tests/unit/documents/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/documents/test_in_memory_document_store.py +99 -0
- symfonic_core-4.9.0/tests/unit/documents/test_loader.py +34 -0
- symfonic_core-4.9.0/tests/unit/documents/test_truncation.py +42 -0
- symfonic_core-4.9.0/tests/unit/edges/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/edges/test_tool_condition.py +33 -0
- symfonic_core-4.9.0/tests/unit/infra/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/infra/test_protocols.py +109 -0
- symfonic_core-4.9.0/tests/unit/infra/test_trace.py +203 -0
- symfonic_core-4.9.0/tests/unit/knowledge/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/knowledge/test_knowledge.py +344 -0
- symfonic_core-4.9.0/tests/unit/learning/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/learning/test_learning.py +445 -0
- symfonic_core-4.9.0/tests/unit/nodes/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/nodes/test_compaction.py +377 -0
- symfonic_core-4.9.0/tests/unit/nodes/test_compaction_flush.py +52 -0
- symfonic_core-4.9.0/tests/unit/nodes/test_context_injection.py +134 -0
- symfonic_core-4.9.0/tests/unit/nodes/test_react.py +247 -0
- symfonic_core-4.9.0/tests/unit/observability/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/observability/test_decorators.py +206 -0
- symfonic_core-4.9.0/tests/unit/observability/test_hooks.py +36 -0
- symfonic_core-4.9.0/tests/unit/observability/test_protocol_isp.py +129 -0
- symfonic_core-4.9.0/tests/unit/plugins/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/plugins/test_domain_plugins.py +324 -0
- symfonic_core-4.9.0/tests/unit/plugins/test_plugin_base.py +354 -0
- symfonic_core-4.9.0/tests/unit/prompt/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/prompt/test_builder.py +142 -0
- symfonic_core-4.9.0/tests/unit/prompt/test_caching.py +350 -0
- symfonic_core-4.9.0/tests/unit/prompt/test_sections.py +134 -0
- symfonic_core-4.9.0/tests/unit/prompt/test_timeout.py +44 -0
- symfonic_core-4.9.0/tests/unit/skills/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/skills/test_filter.py +41 -0
- symfonic_core-4.9.0/tests/unit/skills/test_formatter.py +39 -0
- symfonic_core-4.9.0/tests/unit/skills/test_in_memory_skill_store.py +53 -0
- symfonic_core-4.9.0/tests/unit/skills/test_loader.py +63 -0
- symfonic_core-4.9.0/tests/unit/skills/test_markdown_utils.py +49 -0
- symfonic_core-4.9.0/tests/unit/streaming/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/streaming/test_anthropic_adapter.py +180 -0
- symfonic_core-4.9.0/tests/unit/streaming/test_event_processor.py +110 -0
- symfonic_core-4.9.0/tests/unit/streaming/test_openai_adapter.py +183 -0
- symfonic_core-4.9.0/tests/unit/streaming/test_streaming_init.py +72 -0
- symfonic_core-4.9.0/tests/unit/streaming/test_transpiler.py +545 -0
- symfonic_core-4.9.0/tests/unit/test_activation_log.py +94 -0
- symfonic_core-4.9.0/tests/unit/test_callback_contracts.py +131 -0
- symfonic_core-4.9.0/tests/unit/test_callback_deps.py +56 -0
- symfonic_core-4.9.0/tests/unit/test_callback_manager.py +205 -0
- symfonic_core-4.9.0/tests/unit/test_callback_protocol.py +78 -0
- symfonic_core-4.9.0/tests/unit/test_critical_paths.py +222 -0
- symfonic_core-4.9.0/tests/unit/test_decorator_bug_fixes.py +234 -0
- symfonic_core-4.9.0/tests/unit/test_import_graph.py +66 -0
- symfonic_core-4.9.0/tests/unit/test_mock_blindspot_audit.py +1072 -0
- symfonic_core-4.9.0/tests/unit/test_observed_node_callbacks.py +199 -0
- symfonic_core-4.9.0/tests/unit/test_phase2_coverage_gaps.py +570 -0
- symfonic_core-4.9.0/tests/unit/test_phase3_critical_paths.py +578 -0
- symfonic_core-4.9.0/tests/unit/test_public_api.py +72 -0
- symfonic_core-4.9.0/tests/unit/test_runtime_callbacks.py +237 -0
- symfonic_core-4.9.0/tests/unit/test_runtime_timeout.py +66 -0
- symfonic_core-4.9.0/tests/unit/test_sleep_consolidation.py +440 -0
- symfonic_core-4.9.0/tests/unit/test_thinking_memory.py +336 -0
- symfonic_core-4.9.0/tests/unit/tools/__init__.py +0 -0
- symfonic_core-4.9.0/tests/unit/tools/test_agent_tools.py +139 -0
- symfonic_core-4.9.0/tests/unit/tools/test_chart_tools.py +58 -0
- symfonic_core-4.9.0/tests/unit/tools/test_helpers.py +84 -0
- symfonic_core-4.9.0/tests/unit/tools/test_mcp.py +414 -0
- symfonic_core-4.9.0/tests/unit/tools/test_memory_tools.py +140 -0
- symfonic_core-4.9.0/tests/unit/tools/test_registry.py +120 -0
- symfonic_core-4.9.0/tests/unit/tools/test_resolve.py +90 -0
- symfonic_core-4.9.0/tests/unit/tools/test_skill_tools.py +124 -0
- symfonic_core-4.9.0/tests/unit/tools/test_web_tools.py +155 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"mcp__claude_ai_Notion__notion-fetch",
|
|
5
|
+
"mcp__claude_ai_Notion__notion-search",
|
|
6
|
+
"Bash(python3 -m venv .venv)",
|
|
7
|
+
"Bash(source .venv/bin/activate)",
|
|
8
|
+
"Bash(pip install:*)",
|
|
9
|
+
"Bash(python -c \":*)",
|
|
10
|
+
"Bash(python -c \"import langgraph.graph; print\\(dir\\(langgraph.graph\\)\\)\")",
|
|
11
|
+
"Bash(pytest tests/ -v --tb=long)",
|
|
12
|
+
"Bash(pytest tests/ -v --tb=line)",
|
|
13
|
+
"Bash(pytest tests/ -v --tb=short)",
|
|
14
|
+
"Bash(pytest tests/ --cov=symfonic.core --cov-report=term-missing)",
|
|
15
|
+
"Bash(python -m examples.minimal_agent)",
|
|
16
|
+
"mcp__claude_ai_Notion__notion-update-page",
|
|
17
|
+
"Bash(mcm team:*)",
|
|
18
|
+
"Bash(mcm store:*)",
|
|
19
|
+
"Bash(mcm query:*)",
|
|
20
|
+
"Bash(ruff check:*)",
|
|
21
|
+
"Bash(git add:*)",
|
|
22
|
+
"Bash(git push:*)",
|
|
23
|
+
"Bash(git commit:*)",
|
|
24
|
+
"Bash(find src/symfonic/core -name \"*.py\" -exec wc -l {} +)",
|
|
25
|
+
"Bash(find tests:*)",
|
|
26
|
+
"Bash(pytest tests/unit/observability/test_decorators.py -v --tb=short)",
|
|
27
|
+
"Bash(python -m examples.real_agent \"What is 2+2? Answer in one word.\")",
|
|
28
|
+
"Bash(pytest tests/ --cov=symfonic.core --cov-report=term-missing -v)",
|
|
29
|
+
"Bash(pytest tests/ -v)",
|
|
30
|
+
"Bash(pytest tests/ -q --tb=line)",
|
|
31
|
+
"WebFetch(domain:www.notion.so)",
|
|
32
|
+
"Bash(source /Users/amielsinue/Development/amsidev/products/symfonic/.venv/bin/activate)",
|
|
33
|
+
"Bash(pytest tests/ -v --tb=short --cov=symfonic.core --cov-report=term-missing)",
|
|
34
|
+
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\(json.dumps\\({k:v for k,v in d.items\\(\\) if ''''mcp'''' in k.lower\\(\\) or ''''server'''' in k.lower\\(\\) or ''''notion'''' in str\\(v\\).lower\\(\\)}, indent=2\\)\\)\")",
|
|
35
|
+
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\(json.dumps\\(d, indent=2\\)\\)\")",
|
|
36
|
+
"Bash(python -c \"import pydantic; print\\(pydantic.__version__\\)\")",
|
|
37
|
+
"Bash(pytest tests/ --co -q)",
|
|
38
|
+
"Bash(pytest tests/ --cov=symfonic.core --cov-report=term-missing -q)",
|
|
39
|
+
"Bash(pytest tests/ -v --tb=no -q)",
|
|
40
|
+
"Bash(python -m examples.agent_with_memory)",
|
|
41
|
+
"Bash(python -m examples.skill_registry)",
|
|
42
|
+
"Bash(python -m examples.tool_registry_demo)",
|
|
43
|
+
"Bash(pytest tests/integration/test_phase2_examples.py -v --tb=short)",
|
|
44
|
+
"Bash(pytest tests/ --cov=symfonic.core --cov-report=term-missing --tb=short)",
|
|
45
|
+
"Bash(python -m examples.real_agent_with_memory)",
|
|
46
|
+
"Bash(python -m examples.real_skill_registry)",
|
|
47
|
+
"Bash(python -m examples.real_tool_registry)",
|
|
48
|
+
"Bash(grep -rn 'def has' /Users/amielsinue/Development/amsidev/products/symfonic/src/symfonic/core/ --include=*.py)",
|
|
49
|
+
"Bash(pytest /Users/amielsinue/Development/amsidev/products/symfonic/tests/ -q --tb=line)",
|
|
50
|
+
"Bash(pytest tests/unit/test_import_graph.py tests/unit/streaming/ tests/unit/capabilities/ -v --tb=short)",
|
|
51
|
+
"Bash(pytest tests/unit/prompt/ tests/unit/streaming/test_event_processor.py tests/unit/capabilities/test_firecrawl.py tests/unit/capabilities/test_openai_search.py -v --tb=short)",
|
|
52
|
+
"Bash(pytest tests/ -q --tb=short)",
|
|
53
|
+
"Bash(python -m examples.e2e_basic_agent)",
|
|
54
|
+
"Bash(grep -E \"Miss|FAIL|[0-9]+$\")",
|
|
55
|
+
"Bash(python -m examples.demo_app)",
|
|
56
|
+
"Bash(python -m examples.demo_app \"What is symfonic?\" --mode degraded --verbose)",
|
|
57
|
+
"Bash(python -m examples.demo_app \"Test error\" --mode capability_error --verbose)",
|
|
58
|
+
"Bash(ls:*)",
|
|
59
|
+
"Bash(.venv/bin/python -c \"import dotenv; print\\('ok'\\)\" 2>&1)",
|
|
60
|
+
"Bash(.venv/bin/python -m examples.demo_app \"What skills do you have?\" 2>&1)",
|
|
61
|
+
"Bash(.venv/bin/python -m examples.demo_app \"Test\" --verbose --mode capability_error 2>&1)",
|
|
62
|
+
"Bash(ANTHROPIC_API_KEY= .venv/bin/python -m examples.demo_app \"Test\" --real)",
|
|
63
|
+
"Bash(echo \"EXIT: $?\")",
|
|
64
|
+
"Bash(.venv/bin/python -m pytest tests/unit/demo/ -q --tb=short 2>&1)",
|
|
65
|
+
"Bash(.venv/bin/python -m pytest tests/ -q --tb=line 2>&1)",
|
|
66
|
+
"Bash(python -m examples.demo_app \"What skills do you have?\" --verbose)",
|
|
67
|
+
"Bash(python -m examples.demo_app \"What skills do you have?\" --real)",
|
|
68
|
+
"Bash(python -m examples.demo_app \"What skills?\" --verbose)",
|
|
69
|
+
"Bash(python -m examples.demo_app \"Fetch data\" --mode capability_error --verbose)",
|
|
70
|
+
"Bash(pytest tests/unit/demo/ tests/integration/ -q --tb=short)",
|
|
71
|
+
"Bash(.venv/bin/pip index:*)",
|
|
72
|
+
"Bash(python -m examples.demo_app --verbose)",
|
|
73
|
+
"Bash(python -m examples.memory_agent)",
|
|
74
|
+
"Bash(python -m examples.skill_agent)",
|
|
75
|
+
"Bash(python -m examples.tool_agent)",
|
|
76
|
+
"Bash(python -m examples.demo_app --mode capability_error)",
|
|
77
|
+
"Bash(pdoc symfonic.core --output-dir docs/api)",
|
|
78
|
+
"Bash(for d:*)",
|
|
79
|
+
"Bash(do echo:*)",
|
|
80
|
+
"Read(//Users/amielsinue/Development/amsidev/products/symfonic/examples/**)",
|
|
81
|
+
"Bash(done)",
|
|
82
|
+
"Bash(.venv/bin/python -m pytest --co -q)",
|
|
83
|
+
"Bash(.venv/bin/python -m build --help)",
|
|
84
|
+
"Bash(.venv/bin/pip install:*)",
|
|
85
|
+
"Bash(.venv/bin/python -m build 2>&1)",
|
|
86
|
+
"Bash(chmod:*)",
|
|
87
|
+
"Bash(PYTHONPATH=src .venv/bin/python -m pdoc --output-directory docs/api --docformat google symfonic.core 2>&1)",
|
|
88
|
+
"Bash(PYTHONPATH=src .venv/bin/python -m pytest tests/integration/test_example_validation.py -v 2>&1)",
|
|
89
|
+
"Bash(PYTHONPATH=src .venv/bin/python -m pytest --tb=short -q 2>&1)",
|
|
90
|
+
"Bash(python -m build)",
|
|
91
|
+
"Bash(twine upload:*)",
|
|
92
|
+
"Bash(pytest tests/unit/test_callback_contracts.py tests/unit/test_callback_protocol.py -q --tb=short)",
|
|
93
|
+
"Bash(pip show:*)",
|
|
94
|
+
"Bash(python -c \"import symfonic.core; print\\(symfonic.core.__file__\\)\")",
|
|
95
|
+
"Bash(python -c \"import sys; print\\([p for p in sys.path if ''symfonic'' in p or ''src'' in p]\\)\")",
|
|
96
|
+
"Bash(python -c \"import symfonic.core.contracts; print\\(symfonic.core.contracts.__file__\\)\")",
|
|
97
|
+
"Bash(python -c \"from symfonic.core.contracts.callbacks import AgentStartEvent; print\\(AgentStartEvent\\)\")",
|
|
98
|
+
"Bash(python -m pytest tests/unit/test_callback_contracts.py -q --tb=short)",
|
|
99
|
+
"Bash(source /Users/amielsinue/Development/amsidev/products/symfonic-core/.venv/bin/activate)",
|
|
100
|
+
"Bash(pytest tests/unit/test_callback_contracts.py -q --tb=short)",
|
|
101
|
+
"Bash(python -c \"import symfonic.core.contracts.callbacks; print\\(''ok''\\)\")",
|
|
102
|
+
"Bash(pytest --co tests/unit/test_critical_paths.py)",
|
|
103
|
+
"Bash(python:*)",
|
|
104
|
+
"Bash(/Users/amielsinue/.pyenv/versions/3.12.9/envs/venv/bin/python -c \"import symfonic.core.contracts.callbacks; print\\('ok'\\)\" 2>&1)",
|
|
105
|
+
"Bash(/Users/amielsinue/.pyenv/versions/3.12.9/envs/venv/bin/pip install:*)",
|
|
106
|
+
"Bash(/Users/amielsinue/.pyenv/versions/3.12.9/envs/venv/bin/python -c \"from symfonic.core.contracts.callbacks import AgentStartEvent; print\\('ok'\\)\" 2>&1)",
|
|
107
|
+
"Bash(pytest:*)",
|
|
108
|
+
"Bash(python3 -c \":*)",
|
|
109
|
+
"Bash(poetry run:*)",
|
|
110
|
+
"Bash(.venv/bin/pytest --tb=short -q)",
|
|
111
|
+
"Bash(/Users/amielsinue/Development/amsidev/products/symfonic-core/.venv/bin/python -m pytest --tb=short -q)",
|
|
112
|
+
"Bash(uv run:*)",
|
|
113
|
+
"Bash(.venv/bin/pytest tests/ --tb=short -q)",
|
|
114
|
+
"Bash(find /Users/amielsinue/Development/amsidev/products/symfonic-core/src -name testing* -type f)",
|
|
115
|
+
"Bash(find /Users/amielsinue/Development/amsidev/products/symfonic-core/src -path */testing*)",
|
|
116
|
+
"Bash(find . -name doubles.py -path */tests/*)",
|
|
117
|
+
"Bash(git checkout:*)",
|
|
118
|
+
"Bash(gh pr:*)",
|
|
119
|
+
"Bash(grep -rn from.*nodes src/symfonic/core/deps.py src/symfonic/core/providers.py src/symfonic/core/graph.py src/symfonic/core/runtime.py)",
|
|
120
|
+
"Bash(.venv/bin/pytest --co -q)",
|
|
121
|
+
"Bash(python3 -m pytest --co -q)"
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Symfonic Core — Environment Variables
|
|
2
|
+
# Copy to .env and fill in your values: cp .env.example .env
|
|
3
|
+
|
|
4
|
+
# Required for examples/real_agent and AnthropicProvider
|
|
5
|
+
ANTHROPIC_API_KEY=sk-ant-your-key-here
|
|
6
|
+
|
|
7
|
+
# Optional: Override default model (default: claude-sonnet-4-20250514)
|
|
8
|
+
# SYMFONIC_MODEL_NAME=claude-sonnet-4-20250514
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
*.egg
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
|
|
13
|
+
# Testing
|
|
14
|
+
.coverage
|
|
15
|
+
htmlcov/
|
|
16
|
+
.pytest_cache/
|
|
17
|
+
|
|
18
|
+
# IDE
|
|
19
|
+
.idea/
|
|
20
|
+
.vscode/
|
|
21
|
+
*.swp
|
|
22
|
+
|
|
23
|
+
# Tools
|
|
24
|
+
.ruff_cache/
|
|
25
|
+
.mypy_cache/
|
|
26
|
+
|
|
27
|
+
# Environment
|
|
28
|
+
.env
|
|
29
|
+
|
|
30
|
+
# Generated docs
|
|
31
|
+
docs/api/
|
|
32
|
+
|
|
33
|
+
# Agent memory (per-developer)
|
|
34
|
+
.agent/
|
|
35
|
+
**/__pycache__/
|
|
36
|
+
.DS_Store
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to symfonic-core will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2026-03-19
|
|
9
|
+
|
|
10
|
+
Initial release of symfonic-core.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
#### Phase 1 -- Graph Primitives
|
|
15
|
+
- `AgentGraph` for declarative node/edge wiring
|
|
16
|
+
- `AgentRuntime` execution engine with LangGraph compilation
|
|
17
|
+
- `BaseAgentDeps` protocol-based dependency injection container
|
|
18
|
+
- `BaseAgentState` TypedDict-based state schema
|
|
19
|
+
- `TenantScope` for multi-tenant isolation
|
|
20
|
+
- `ModelProvider` abstract LLM provider interface
|
|
21
|
+
- `GraphPreset` pre-built graph configurations
|
|
22
|
+
- `AgentConfig`, `ModelConfig`, `CompactionConfig` configuration models
|
|
23
|
+
- Node implementations: context injection, compaction, react
|
|
24
|
+
- Edge definitions with tool condition routing
|
|
25
|
+
- `ObservabilityHook` lifecycle tracing
|
|
26
|
+
|
|
27
|
+
#### Phase 2 -- Tools & Storage
|
|
28
|
+
- `ToolRegistry` with capability-based tool filtering
|
|
29
|
+
- `DocumentStore` protocol and `InMemoryDocumentStore` implementation
|
|
30
|
+
- `SkillStore` protocol and `InMemorySkillStore` implementation
|
|
31
|
+
- `AgentStore` protocol and `InMemoryAgentStore` implementation
|
|
32
|
+
- Memory tools: `memory_read`, `memory_write`, `memory_search`
|
|
33
|
+
- Skill tools: filtering, formatting, markdown utilities
|
|
34
|
+
- Agent tools and chart tools
|
|
35
|
+
- Web tools with capability-gated access
|
|
36
|
+
- `MissingCapabilityError` for clear DI failure messages
|
|
37
|
+
|
|
38
|
+
#### Phase 3 -- Prompt & Streaming
|
|
39
|
+
- `PromptBuilder` with composable, prioritized sections
|
|
40
|
+
- Built-in sections: `ScopeSection`, `MemorySection`, `SkillsSection`, `StaticSection`
|
|
41
|
+
- Stream event types: `TextDeltaEvent`, `MessageEndEvent`, `ExtensionEvent`
|
|
42
|
+
- `process_stream_events` for stream consumption
|
|
43
|
+
- Anthropic and OpenAI streaming adapters
|
|
44
|
+
- `CapabilityError` with structured error codes and metadata
|
|
45
|
+
- External capability contracts (Firecrawl, OpenAI Search)
|
|
46
|
+
- `ContextCollisionError` for context injection conflicts
|
|
47
|
+
|
|
48
|
+
#### Phase 4 -- Hardening
|
|
49
|
+
- 700 unit and integration tests
|
|
50
|
+
- Contract tests for `DocumentStore`, `SkillStore`, `AgentStore`
|
|
51
|
+
- Mock blindspot audit (41 tests verifying test doubles)
|
|
52
|
+
- Critical path tests across all phases
|
|
53
|
+
- Phase 2 and Phase 3 coverage gap tests
|
|
54
|
+
- Import graph validation (no circular dependencies)
|
|
55
|
+
- Public API surface test
|
|
56
|
+
|
|
57
|
+
#### Phase 5 -- Documentation & Examples
|
|
58
|
+
- 5 curated examples: `minimal_agent`, `tool_agent`, `skill_agent`,
|
|
59
|
+
`agent_with_memory`, `e2e_basic_agent`
|
|
60
|
+
- `demo_app` with mock, real, and e2e modes
|
|
61
|
+
- CI example validation test suite (25 tests)
|
|
62
|
+
- API reference generation via pdoc
|
|
63
|
+
- Conceptual documentation: architecture, capabilities, examples learning path
|
|
64
|
+
- Advanced examples directory structure
|
|
65
|
+
- `pyproject.toml` with hatch build and internal PyPI publish config
|
|
66
|
+
- README with installation, quickstart, and API surface overview
|
|
67
|
+
|
|
68
|
+
### Infrastructure
|
|
69
|
+
- Python 3.11+ with `py.typed` marker for PEP 561
|
|
70
|
+
- Hatchling build backend
|
|
71
|
+
- pytest + pytest-asyncio + pytest-cov test stack
|
|
72
|
+
- ruff linter and mypy strict type checking
|
|
73
|
+
- Internal PyPI at `https://gitea-teotl.amsiops.io/api/packages/AmSiDev/pypi`
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<!-- MCM:BEGIN - Auto-generated by mcm init. Edit freely, MCM section preserved on updates. -->
|
|
2
|
+
# symfonic - Claude Instructions
|
|
3
|
+
|
|
4
|
+
## Core Policies (Quick Reference)
|
|
5
|
+
|
|
6
|
+
### Code Quality
|
|
7
|
+
- **SOLID principles** - Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion
|
|
8
|
+
- **Max 300 lines per file** - Split larger files into modules
|
|
9
|
+
- **One class per file** - Favor composition over inheritance
|
|
10
|
+
|
|
11
|
+
### Testing
|
|
12
|
+
- **Prefer TDD when feasible** - test first, then implementation
|
|
13
|
+
- **If tests exist:** add/update tests for changed behavior and run relevant suites
|
|
14
|
+
- **If tests do not exist:** propose minimal test setup and commands
|
|
15
|
+
|
|
16
|
+
### Output (Memory-First)
|
|
17
|
+
- **Default:** Verbal response + memory entry (importance 6-8)
|
|
18
|
+
- **Create files only when:** User explicitly requests
|
|
19
|
+
- **Code files:** Full implementations to `src/`, `tests/` (never summarize)
|
|
20
|
+
|
|
21
|
+
### Memory
|
|
22
|
+
- **Personal DB:** `.agent/memory/memory.db` (per-developer, gitignored)
|
|
23
|
+
- **Team Memory:** `.agent/team/*.md` (shared, git-committed)
|
|
24
|
+
- **Never store:** API keys, passwords, credentials, PII
|
|
25
|
+
- **Importance:** 9-10 critical, 7-8 significant, 5-6 context
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Auto-Delegation
|
|
30
|
+
|
|
31
|
+
When requests match these domains, delegate to specialized agents via Task tool.
|
|
32
|
+
|
|
33
|
+
| Request Contains | Spawn Agent | Example |
|
|
34
|
+
|-----------------|-------------|---------|
|
|
35
|
+
| Docker, CI/CD, containers | `devops-engineer` | "Add Docker config" |
|
|
36
|
+
| Terraform, AWS, IaC | `terraform-engineer` | "Create S3 bucket" |
|
|
37
|
+
| FastAPI, Pydantic | `python-fastapi-pro` | "Add API endpoint" |
|
|
38
|
+
| React, TypeScript | `react-typescript-specialist` | "Create React form" |
|
|
39
|
+
| Flutter, Dart | `flutter-expert` | "Build Flutter screen" |
|
|
40
|
+
| Laravel, PHP | `php-pro` | "Add migration" |
|
|
41
|
+
| pytest, API tests | `api-backend-tester` | "Write API tests" |
|
|
42
|
+
| E2E, Playwright | `api-frontend-tester` | "Add E2E tests" |
|
|
43
|
+
| Architecture | `system-architect` | "Design microservice" |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## File Discovery (Token Efficiency)
|
|
48
|
+
|
|
49
|
+
### 1. Memory Query (Preferred)
|
|
50
|
+
```bash
|
|
51
|
+
mcm query "authentication login" --claude
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Code Structure Search
|
|
55
|
+
```bash
|
|
56
|
+
mcm query "function_name" --tags "code-structure" --claude
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 3. Glob/Grep (For pattern matching)
|
|
60
|
+
```bash
|
|
61
|
+
Glob("**/*.go")
|
|
62
|
+
Grep("func authenticate", type="go")
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Memory-First Workflow
|
|
68
|
+
|
|
69
|
+
**Before starting any task:**
|
|
70
|
+
|
|
71
|
+
1. **Check auto-injected context** - Use it if relevant
|
|
72
|
+
2. **Query memory** - `mcm query "topic" --claude`
|
|
73
|
+
3. **Targeted reads only** - Read specific lines, not entire files
|
|
74
|
+
4. **Store insights** - Important decisions (importance 7-8)
|
|
75
|
+
|
|
76
|
+
**Decision Tree:**
|
|
77
|
+
- Looking for past decisions? -> `mcm query "topic" --claude`
|
|
78
|
+
- Looking for code by concept? -> `mcm query --tags "code-structure"`
|
|
79
|
+
- Need to discover files? -> Glob/Grep
|
|
80
|
+
- None work? -> broader exploration
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Memory System
|
|
85
|
+
|
|
86
|
+
- **Personal DB:** `.agent/memory/memory.db` (per-developer, gitignored)
|
|
87
|
+
- **Team Memory:** `.agent/team/*.md` (shared, git-committed)
|
|
88
|
+
- **Hooks:** Auto-injected context via SessionStart, UserPromptSubmit, PreCompact
|
|
89
|
+
|
|
90
|
+
### Commands
|
|
91
|
+
```bash
|
|
92
|
+
mcm query "search terms" --claude # Search memory
|
|
93
|
+
mcm store "insight" --importance 7 # Store personal entry
|
|
94
|
+
mcm stats # View statistics
|
|
95
|
+
mcm index # Index code structure
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Team Memory
|
|
99
|
+
|
|
100
|
+
Store team-worthy decisions so all developers and agents share context:
|
|
101
|
+
```bash
|
|
102
|
+
mcm team add --type decision --title "Use RS256 JWT" --importance 9 \
|
|
103
|
+
--tags auth,security "We chose RS256 over HS256 because..."
|
|
104
|
+
mcm team list # Show active entries
|
|
105
|
+
mcm team supersede <old-id> --by <new-id> # Mark as replaced
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Store to TEAM memory (`mcm team add`) when another developer would need this.**
|
|
109
|
+
Choose the type based on what the entry IS, not where you found it:
|
|
110
|
+
|
|
111
|
+
| Type | When to use | Ask yourself |
|
|
112
|
+
|------|-------------|--------------|
|
|
113
|
+
| `decision` | A choice was made between alternatives | "Why did we pick X over Y?" |
|
|
114
|
+
| `convention` | A pattern or rule the team must follow | "Should everyone do it this way?" |
|
|
115
|
+
| `infrastructure` | A fact about servers, services, or deployment | "Where is X? How do I connect to Y?" |
|
|
116
|
+
| `issue` | A bug, gotcha, or workaround | "Will someone else hit this same problem?" |
|
|
117
|
+
| `api-contract` | An API shape, endpoint, or schema | "What does this endpoint expect/return?" |
|
|
118
|
+
| `plan` | A feature plan or roadmap item | "What are we building and in what order?" |
|
|
119
|
+
|
|
120
|
+
**Store to PERSONAL memory (`mcm store`) when:**
|
|
121
|
+
- Session-specific debugging notes
|
|
122
|
+
- Local deployment paths and personal workflow
|
|
123
|
+
- Exploration results that may not be final
|
|
124
|
+
- Temporary context for current task
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Project-Specific
|
|
129
|
+
|
|
130
|
+
### Technology Stack
|
|
131
|
+
<!-- List your tech stack -->
|
|
132
|
+
|
|
133
|
+
### Code Style
|
|
134
|
+
<!-- Describe coding conventions -->
|
|
135
|
+
|
|
136
|
+
### Architecture Notes
|
|
137
|
+
<!-- Key architectural decisions -->
|
|
138
|
+
|
|
139
|
+
### Common Tasks
|
|
140
|
+
<!-- Frequent operations -->
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Quick Reference
|
|
145
|
+
|
|
146
|
+
| Need To | Action |
|
|
147
|
+
|---------|--------|
|
|
148
|
+
| Find past decisions | `mcm query "topic" --claude` |
|
|
149
|
+
| Find code by concept | `mcm query --tags "code-structure"` |
|
|
150
|
+
| Find code by pattern | Use Grep tool |
|
|
151
|
+
| Store personal insight | `mcm store "insight" --importance 7` |
|
|
152
|
+
| Store team decision | `mcm team add --type decision --title "..." "body"` |
|
|
153
|
+
| List team knowledge | `mcm team list` |
|
|
154
|
+
| Index codebase | `mcm index` |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
*Edit this file for your project. Run `mcm index` after setup.*
|
|
159
|
+
<!-- MCM:END -->
|