attune-ai 2.1.1__tar.gz → 2.1.3__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.
- {attune_ai-2.1.1 → attune_ai-2.1.3}/CHANGELOG.md +20 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/PKG-INFO +97 -251
- attune_ai-2.1.3/README.md +286 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/PKG-INFO +97 -251
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/SOURCES.txt +1 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/pyproject.toml +1 -1
- attune_ai-2.1.3/src/attune/socratic_router.py +761 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/vscode_bridge.py +7 -4
- attune_ai-2.1.1/README.md +0 -440
- {attune_ai-2.1.1 → attune_ai-2.1.3}/.bandit +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/CODE_OF_CONDUCT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/CONTRIBUTING.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/LICENSE +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/MANIFEST.in +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/SECURITY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_B112.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_F541.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/dependency_links.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/entry_points.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/requires.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_ai.egg-info/top_level.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/clinical_protocol_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/monitoring/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/monitoring/protocol_checker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/monitoring/protocol_loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/monitoring/sensor_parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_healthcare/monitors/monitoring/trajectory_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/autogen_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/crewai_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/haystack_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/langchain_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/langgraph_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/native.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/adapters/wizard_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/crews/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/crews/code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/crews/health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/crews/refactoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/crews/security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/decorators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/factory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/framework.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/memory_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agent_factory/resilient.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agents_md/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agents_md/loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agents_md/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/agents_md/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/cli/sync_claude.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/code_health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/commands/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/config/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/config/unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/context/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/context/compaction.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/context/manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/contextual_patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/git_pattern_extractor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/evaluate_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/first_time_init.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/pre_compact.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/session_end.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/session_start.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/hooks/scripts/suggest_compact.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/learning/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/learning/evaluator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/learning/extractor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/learning/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/pattern_confidence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/pattern_resolver.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/pattern_summary.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/routing/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/routing/model_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/IMPLEMENTATION_SUMMARY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/PHASE2_COMPLETE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/QUICK_REFERENCE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/audit_logger_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/secrets_detector_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/secure_memdocs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/security/secure_memdocs_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/state.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/utils/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_llm/utils/tokens.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/SOFTWARE_PLUGIN_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/cli/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/attune_software/plugin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/config.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/core.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/empathy-os.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/llm-toolkit.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/memory.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/meta-orchestration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/multi-agent.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/pattern-library.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/persistence.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/security-scanner.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/software-wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/api-reference/workflows.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/adaptive-learning-system.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/generated-plan-release-prep.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/multi-agent-team-coordination.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/sbar-clinical-handoff.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/simple-chatbot.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/examples/webhook-event-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/choose-your-path.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/first-steps.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/installation.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/mcp-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/getting-started/redis-setup.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/DISTRIBUTION_POLICY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/MCP_PUBLISH_INSTRUCTIONS.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/MKDOCS_TUTORIAL.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/PUBLISHING.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/RELEASE_PREPARATION.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/WORKFLOW_PATTERNS.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/claude-memory-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/five-levels-of-empathy.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/foreword.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/healthcare-wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/how-to-read-this-book.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/multi-model-workflows.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/pattern-catalog.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/preface.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/signoz-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/teaching-ai-your-standards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/trust-circuit-breaker.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/guides/xml-enhanced-prompts.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/docs/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/WIZARD_DASHBOARD_IMPLEMENTATION.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/WIZARD_DASHBOARD_STATE_MANAGEMENT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/WIZARD_DASHBOARD_WIREFRAMES.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/adaptive_routing_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/adaptive_routing_workflow_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/agent_coordination_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/agent_tracking_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/anthropic_patterns_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/anthropic_patterns_simple_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/approval_gates_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/claude_memory/README-SECURITY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/claude_memory/enterprise-CLAUDE-secure.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/claude_memory/example-with-imports.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/claude_memory/project-CLAUDE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/claude_memory/user-CLAUDE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/complete-workflow/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/complete-workflow/workflow_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/config/empathy.config.example.yml +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/coordinated_workflow_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/dashboard_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_end_to_end_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_memory_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_meta_workflows.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_progressive_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_security_complete.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/demos/demo_test_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/domain_wizards/all_domain_wizards_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/domain_wizards/healthcare_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/domain_wizards/tests/test_healthcare_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/event_streaming_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/feedback_loop_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/hybrid_cli_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/interactive_team_creation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/level_5_transformative/BLOG_POST.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/level_5_transformative/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/level_5_transformative/data/deployment_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/level_5_transformative/data/healthcare_handoff_code.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/llm_toolkit_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/meta_orchestrator_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/multi_llm_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/orchestration/advanced_composition.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/orchestration/basic_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/orchestration/custom_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/progressive_test_gen_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/quickstart/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/quickstart.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/redis_exploration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/scanner_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/security_integration_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/SOCRATIC_DEMO.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/complete_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/config.yaml +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/dashboard_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/live_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/seo_agent.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/seo_optimization/with_memory_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/simple_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/smart_team_quickstart.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/sonnet_opus_fallback_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/suggest_adaptive_routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/test_approval_gates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/test_debugging_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflow_chaining_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflows/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflows/code_review_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflows/doc_gen_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflows/multi_model_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/examples/workflows/research_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/requirements.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/setup.cfg +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/adaptive/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/adaptive/task_complexity.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/agent_monitoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/dependency_manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/hash_only.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/hybrid.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cache_stats.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/batch.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/help.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/info.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/inspection.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/orchestrate.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/profiling.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/provider.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/setup.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/sync.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/tier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/utilities.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/commands/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/batch.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/help.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/info.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/orchestrate.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/provider.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/setup.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/sync.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/tier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/parsers/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/utils/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/utils/data.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli/utils/helpers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli_legacy.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli_minimal.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cli_unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/config/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/config/xml_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/core_modules/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/cost_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/dashboard/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/dashboard/app.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/dashboard/simple_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/dashboard/standalone_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/discovery.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/emergence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/feedback_loops.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/reloader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/watcher.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/hot_reload/websocket.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/leverage_points.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/logging_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/mcp/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/mcp/server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/control_panel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/control_panel_support.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/cross_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/edges.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/encryption.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/file_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/long_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/long_term_types.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/backend_init_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/capabilities_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/handoff_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/lifecycle_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/long_term_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/promotion_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/mixins/short_term_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/nodes.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/redis_bootstrap.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/security/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/security/audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/security/pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/security/secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/short_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/simple_storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/storage/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/storage_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/summary_index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/types.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/memory/unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/agent_creator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/builtin_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/agent_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/analytics_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/config_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/memory_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/template_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_commands/workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/cli_meta_workflows.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/form_engine.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/intent_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/pattern_learner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/plan_generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/session_context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/template_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/meta_workflows/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/metrics/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/metrics/collector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/metrics/prompt_metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/adaptive_routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/auth_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/auth_strategy.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/empathy_executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/provider_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/tasks.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/telemetry/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/telemetry/analytics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/telemetry/backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/telemetry/data_models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/telemetry/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/token_estimator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/models/validation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/monitoring/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/monitoring/alerts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/monitoring/alerts_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/monitoring/multi_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/monitoring/otel_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/optimization/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/optimization/context_optimizer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/agent_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/config_store.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/execution_strategies.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/meta_orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/pattern_learner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/orchestration/real_tools.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/pattern_cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/pattern_library.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/patterns/debugging/all_patterns.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/patterns/debugging/workflow_20260107_1770825e.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/patterns/refactoring_memory.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/persistence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/platform_utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/plugins/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/plugins/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/plugins/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/scanner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/project_index/scanner_parallel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/prompts/templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/redis_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/redis_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/retry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/resilience/timeout.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/routing/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/routing/chain_executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/routing/classifier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/routing/smart_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/routing/workflow_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/templates/base_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/templates/coach_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/templates/domain_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/ab_testing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/blueprint.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/collaboration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/domain_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/embeddings.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/engine.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/explainer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/feedback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/forms.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/llm_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/mcp_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/success.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/visual_editor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/socratic/web_ui.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/agent_coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/agent_tracking.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/approval_gates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/commands/dashboard_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/event_streaming.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/feedback_loop.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/telemetry/usage_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/risk_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/test_generator/templates/unit_test.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/tier_recommender.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/tools.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/trust/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/trust/circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/trust_building.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/validation/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/validation/xml_validator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/behavior.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/output.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflow_patterns/structural.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/autonomous_test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/batch_processing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/bug_predict.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/builder.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/caching.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/code_review_adapters.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/code_review_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/dependency_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_gen/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_gen/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_gen/report_formatter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_gen/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/document_manager_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/documentation_orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/history.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/generators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/prompts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/schema.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/keyboard_shortcuts/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/llm_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/manage_docs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/manage_docs_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/manage_documentation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/new_sample_workflow1.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/new_sample_workflow1_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/orchestrated_health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/orchestrated_release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/output.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/perf_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/pr_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progress.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progress_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/telemetry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/progressive/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/refactor_plan.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/release_prep_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/research_synthesis.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/secure_release.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/security_adapters.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/security_audit_phase3.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/seo_optimization.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/step_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/telemetry_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test5.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test5_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_coverage_boost_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/ast_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/data_models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/report_formatter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/test_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen_behavioral.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_gen_parallel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_lifecycle.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_maintenance.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_maintenance_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_maintenance_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/test_runner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/tier_tracking.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/src/attune/workflows/xml_enhanced_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_agent_factory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_agent_factory_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_agent_factory_resilience.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_audit_logger_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_baseline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_book_production_agents.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_bug_predict_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_claude_memory_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_clinical_protocol_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_review_crew_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_review_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_review_pipeline_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_code_review_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_control_panel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_control_panel_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_core_reliability.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_cost_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_dependency_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_dependency_check_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_discovery.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_document_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_document_gen_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_emergence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_empathy_llm_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_empathy_llm_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_empathy_os.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_executor_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_fallback_suite.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_feedback_loops.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_finding_extraction.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_healthcare_plugin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_intelligence_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_leverage_points.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_agents.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_decorators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_empathy_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_langgraph_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_llm_toolkit_wizard_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_logging_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_long_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_memory_graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_model_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_model_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_monitoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pattern_cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pattern_library.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_perf_audit_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_persistence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pii_scrubber_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_platform_compat_ci.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_platform_utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_plugin_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_plugin_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pr_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_pr_review_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_production_smoke.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_progress.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_protocol_checker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_protocol_loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_provider_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_redis_bootstrap.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_redis_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_redis_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_redis_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_redis_memory_errors.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_refactor_golden.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_refactor_plan_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_refactoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_refactoring_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_reporting.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_resilience.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_sbar_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_scanner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_scanner_exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_secure_memdocs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_secure_memdocs_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_secure_release.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_secure_release_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_audit_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_audit_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_crew_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_negative_cases.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_security_scan.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_sensor_parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_short_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_smart_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_smoke.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_sonnet_opus_fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_state.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_step_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_summary_index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_sync_claude.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_tech_debt_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_telemetry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_timeout.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_token_estimator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_trajectory_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_trust_building.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_trust_circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_unified_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_validation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_wizard_outputs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_wizard_site_comprehensive.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_workflow_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_workflow_wizard_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_xml_prompts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/tests/test_xml_spec_generation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/workflow_scaffolding/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/workflow_scaffolding/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/workflow_scaffolding/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.3}/workflow_scaffolding/generator.py +0 -0
|
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.3] - 2026-02-02
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **README rebrand**: Complete rewrite from "Empathy Framework" to "Attune AI" branding
|
|
15
|
+
- **Cleaner documentation**: Streamlined README focusing on key features without legacy version history
|
|
16
|
+
|
|
17
|
+
## [2.1.2] - 2026-02-02
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **PyPI packaging**: Re-release to include `.attune` branding fix (2.1.1 was built before the fix was merged)
|
|
22
|
+
|
|
23
|
+
## [2.1.1] - 2026-02-02
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- **vscode_bridge.py**: Updated `get_empathy_dir()` to use `.attune` directory (completes branding migration from `.empathy`)
|
|
28
|
+
- **test_vscode_bridge_coverage_boost.py**: Aligned test expectations with `.attune` directory naming
|
|
29
|
+
|
|
10
30
|
## [2.1.0] - 2026-02-01
|
|
11
31
|
|
|
12
32
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attune-ai
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Summary: AI collaboration framework with real LLM agent execution, AskUserQuestion tool integration, Socratic agent generation, progressive tier escalation (70-85% cost savings), meta-orchestration, dynamic agent composition (10 patterns including Anthropic-inspired), intelligent caching (85% hit rate), semantic workflow discovery, visual workflow editor, MCP integration for Claude Code, and multi-agent orchestration.
|
|
5
5
|
Author-email: Patrick Roebuck <admin@smartaimemory.com>
|
|
6
6
|
Maintainer-email: Smart-AI-Memory <admin@smartaimemory.com>
|
|
@@ -421,11 +421,11 @@ Requires-Dist: aiohttp<4.0.0,>=3.10.0; extra == "all"
|
|
|
421
421
|
Requires-Dist: filelock<4.0.0,>=3.16.0; extra == "all"
|
|
422
422
|
Dynamic: license-file
|
|
423
423
|
|
|
424
|
-
#
|
|
424
|
+
# Attune AI
|
|
425
425
|
|
|
426
|
-
**AI-powered developer workflows with
|
|
426
|
+
**AI-powered developer workflows with cost optimization and intelligent routing.**
|
|
427
427
|
|
|
428
|
-
Run code review, debugging, testing, and release workflows from Claude Code.
|
|
428
|
+
Run code review, debugging, testing, and release workflows from your terminal or Claude Code. Smart tier routing saves 34-86% on LLM costs.
|
|
429
429
|
|
|
430
430
|
[](https://pypi.org/project/attune-ai/)
|
|
431
431
|
[-brightgreen)](https://github.com/Smart-AI-Memory/attune-ai/actions)
|
|
@@ -438,26 +438,38 @@ pip install attune-ai[developer]
|
|
|
438
438
|
|
|
439
439
|
---
|
|
440
440
|
|
|
441
|
-
##
|
|
441
|
+
## Key Features
|
|
442
442
|
|
|
443
|
-
|
|
443
|
+
### Claude-Native Architecture
|
|
444
444
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
445
|
+
Attune AI is built exclusively for Anthropic/Claude, unlocking features impossible with multi-provider abstraction:
|
|
446
|
+
|
|
447
|
+
- **Prompt Caching** - 90% cost reduction on repeated prompts
|
|
448
|
+
- **Flexible Context** - 200K via subscription, up to 1M via API for large codebases
|
|
449
|
+
- **Extended Thinking** - Access Claude's internal reasoning process
|
|
450
|
+
- **Advanced Tool Use** - Optimized for agentic workflows
|
|
451
|
+
|
|
452
|
+
### Multi-Agent Orchestration
|
|
453
|
+
|
|
454
|
+
Full support for custom agents and Anthropic LLM agents:
|
|
450
455
|
|
|
451
|
-
**
|
|
456
|
+
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns
|
|
457
|
+
- **Custom Agents** - Build specialized agents for your workflow needs
|
|
458
|
+
- **Inter-Agent Communication** - Heartbeats, signals, events, and approval gates
|
|
452
459
|
|
|
453
|
-
|
|
454
|
-
- ✅ **Validate work** → Tests, coverage, security audit
|
|
455
|
-
- 🚀 **Ship changes** → Commit, PR, release
|
|
456
|
-
- 📚 **Understand** → Explain code, generate docs
|
|
460
|
+
### Intelligent Cost Optimization
|
|
457
461
|
|
|
458
|
-
|
|
462
|
+
- **$0 in Claude Code** - Workflows run as skills through Claude's Task tool
|
|
463
|
+
- **Smart Tier Routing** - Automatically selects the right model for each task
|
|
464
|
+
- **Authentication Strategy** - Routes between subscription and API based on codebase size
|
|
459
465
|
|
|
460
|
-
|
|
466
|
+
### Socratic Workflows
|
|
467
|
+
|
|
468
|
+
Workflows guide you through discovery instead of requiring upfront configuration:
|
|
469
|
+
|
|
470
|
+
- **Interactive Discovery** - Asks targeted questions to understand your needs
|
|
471
|
+
- **Context Gathering** - Collects relevant code, errors, and constraints
|
|
472
|
+
- **Dynamic Agent Creation** - Assembles the right team based on your answers
|
|
461
473
|
|
|
462
474
|
---
|
|
463
475
|
|
|
@@ -475,74 +487,31 @@ pip install attune-ai[developer]
|
|
|
475
487
|
# Auto-detect API keys
|
|
476
488
|
python -m attune.models.cli provider
|
|
477
489
|
|
|
478
|
-
# Or
|
|
479
|
-
python -m attune.models.
|
|
490
|
+
# Or configure authentication strategy
|
|
491
|
+
python -m attune.models.auth_cli setup
|
|
480
492
|
```
|
|
481
493
|
|
|
482
|
-
### 3. Use
|
|
483
|
-
|
|
484
|
-
**In Claude Code:**
|
|
494
|
+
### 3. Use in Claude Code
|
|
485
495
|
|
|
486
496
|
```bash
|
|
487
497
|
/dev # Developer tools (debug, commit, PR, review)
|
|
488
|
-
/testing # Run tests, coverage, benchmarks
|
|
498
|
+
/testing # Run tests, coverage analysis, benchmarks
|
|
489
499
|
/workflows # Automated analysis (security, bugs, perf)
|
|
490
|
-
/plan # Planning, TDD, code review
|
|
500
|
+
/plan # Planning, TDD, code review, refactoring
|
|
491
501
|
/docs # Documentation generation
|
|
492
502
|
/release # Release preparation
|
|
493
503
|
|
|
494
504
|
# Natural language support:
|
|
495
505
|
/workflows "find security issues"
|
|
496
506
|
/plan "review my code"
|
|
497
|
-
|
|
498
|
-
# Direct tool access via MCP (v5.1.1+):
|
|
499
|
-
# Claude Code automatically discovers Empathy tools through the MCP server
|
|
500
|
-
# Just describe what you need in natural language:
|
|
501
|
-
"Run a security audit on src/" → Invokes security_audit tool
|
|
502
|
-
"Generate tests for config.py" → Invokes test_generation tool
|
|
503
|
-
"Check my auth configuration" → Invokes auth_status tool
|
|
504
|
-
"Analyze performance bottlenecks" → Invokes performance_audit tool
|
|
505
507
|
```
|
|
506
508
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
Empathy Framework now includes a Model Context Protocol (MCP) server that exposes all workflows as native Claude Code tools:
|
|
510
|
-
|
|
511
|
-
- **10 Tools Available:** security_audit, bug_predict, code_review, test_generation, performance_audit, release_prep, auth_status, auth_recommend, telemetry_stats, dashboard_status
|
|
512
|
-
- **Automatic Discovery:** No manual configuration needed - Claude Code finds tools via `.claude/mcp.json`
|
|
513
|
-
- **Natural Language Access:** Describe your need and Claude invokes the appropriate tool
|
|
514
|
-
- **Verification Hooks:** Automatic validation of Python/JSON files and workflow outputs
|
|
515
|
-
|
|
516
|
-
To verify MCP integration:
|
|
509
|
+
### 4. Use via CLI
|
|
517
510
|
|
|
518
511
|
```bash
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
# Restart Claude Code to load the MCP server
|
|
523
|
-
# Tools will appear in Claude's tool list automatically
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
See [.claude/MCP_TEST_RESULTS.md](.claude/MCP_TEST_RESULTS.md) for full integration details.
|
|
527
|
-
|
|
528
|
-
**CLI:**
|
|
529
|
-
|
|
530
|
-
```bash
|
|
531
|
-
empathy workflow run security-audit --path ./src
|
|
532
|
-
empathy workflow run test-coverage --target 90
|
|
533
|
-
empathy telemetry show # View cost savings
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
**Python:**
|
|
537
|
-
|
|
538
|
-
```python
|
|
539
|
-
from attune import EmpathyOS
|
|
540
|
-
|
|
541
|
-
async with EmpathyOS() as empathy:
|
|
542
|
-
result = await empathy.level_2_guided(
|
|
543
|
-
"Review this code for security issues"
|
|
544
|
-
)
|
|
545
|
-
print(result["response"])
|
|
512
|
+
attune workflow run security-audit --path ./src
|
|
513
|
+
attune workflow run test-coverage --target 90
|
|
514
|
+
attune telemetry show # View cost savings
|
|
546
515
|
```
|
|
547
516
|
|
|
548
517
|
---
|
|
@@ -559,67 +528,14 @@ Workflows are organized into hubs for easy discovery:
|
|
|
559
528
|
| **Release** | `/release` | Release prep, security scan, publishing |
|
|
560
529
|
| **Workflows** | `/workflows` | Automated analysis (security, bugs, perf) |
|
|
561
530
|
| **Plan** | `/plan` | Planning, TDD, code review, refactoring |
|
|
562
|
-
| **Utilities** | `/utilities` | Project init, dependencies, profiling |
|
|
563
|
-
| **Learning** | `/learning` | Pattern learning and session evaluation |
|
|
564
|
-
| **Context** | `/context` | State management and memory |
|
|
565
531
|
| **Agent** | `/agent` | Create and manage custom agents |
|
|
566
532
|
|
|
567
|
-
**Natural Language
|
|
533
|
+
**Natural Language Routing:**
|
|
568
534
|
|
|
569
535
|
```bash
|
|
570
|
-
# Use plain English - intelligent routing matches your intent
|
|
571
536
|
/workflows "find security vulnerabilities" # → security-audit
|
|
572
537
|
/workflows "check code performance" # → perf-audit
|
|
573
|
-
/workflows "predict bugs" # → bug-predict
|
|
574
538
|
/plan "review my code" # → code-review
|
|
575
|
-
/plan "help me plan this feature" # → planning
|
|
576
|
-
|
|
577
|
-
# Or use traditional workflow names
|
|
578
|
-
/workflows security-audit
|
|
579
|
-
/plan code-review
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
**Interactive menus:**
|
|
583
|
-
|
|
584
|
-
```bash
|
|
585
|
-
/dev # Show interactive menu
|
|
586
|
-
/dev "debug auth error" # Jump directly to debugging
|
|
587
|
-
/testing "run coverage" # Run coverage analysis
|
|
588
|
-
/release # Start release preparation
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
---
|
|
592
|
-
|
|
593
|
-
## Socratic Method
|
|
594
|
-
|
|
595
|
-
Workflows guide you through discovery instead of requiring upfront configuration:
|
|
596
|
-
|
|
597
|
-
```text
|
|
598
|
-
You: /dev
|
|
599
|
-
|
|
600
|
-
Claude: What development task do you need?
|
|
601
|
-
1. Debug issue
|
|
602
|
-
2. Create commit
|
|
603
|
-
3. PR workflow
|
|
604
|
-
4. Quality check
|
|
605
|
-
|
|
606
|
-
You: 1
|
|
607
|
-
|
|
608
|
-
Claude: What error or unexpected behavior are you seeing?
|
|
609
|
-
```
|
|
610
|
-
|
|
611
|
-
**How it works:**
|
|
612
|
-
|
|
613
|
-
1. **Discovery** - Workflow asks targeted questions to understand your needs
|
|
614
|
-
2. **Context gathering** - Collects relevant code, errors, and constraints
|
|
615
|
-
3. **Dynamic agent creation** - Assembles the right team based on your answers
|
|
616
|
-
4. **Execution** - Runs with appropriate tier selection
|
|
617
|
-
|
|
618
|
-
**Create custom agents with Socratic guidance:**
|
|
619
|
-
|
|
620
|
-
```bash
|
|
621
|
-
/agent create # Guided agent creation
|
|
622
|
-
/agent team # Build multi-agent teams interactively
|
|
623
539
|
```
|
|
624
540
|
|
|
625
541
|
---
|
|
@@ -634,120 +550,93 @@ When using Claude Code, workflows run as skills through the Task tool - **no API
|
|
|
634
550
|
/dev # $0 - uses your Claude subscription
|
|
635
551
|
/testing # $0
|
|
636
552
|
/release # $0
|
|
637
|
-
/agent create # $0
|
|
638
553
|
```
|
|
639
554
|
|
|
640
555
|
### API Mode (CI/CD, Automation)
|
|
641
556
|
|
|
642
557
|
For programmatic use, smart tier routing saves 34-86%:
|
|
643
558
|
|
|
644
|
-
| Tier | Model
|
|
645
|
-
| ------- |
|
|
646
|
-
| CHEAP | Haiku
|
|
647
|
-
| CAPABLE | Sonnet
|
|
648
|
-
| PREMIUM | Opus
|
|
559
|
+
| Tier | Model | Use Case | Cost |
|
|
560
|
+
| ------- | ------------- | ---------------------------- | ------- |
|
|
561
|
+
| CHEAP | Haiku | Formatting, simple tasks | ~$0.005 |
|
|
562
|
+
| CAPABLE | Sonnet | Bug fixes, code review | ~$0.08 |
|
|
563
|
+
| PREMIUM | Opus | Architecture, complex design | ~$0.45 |
|
|
649
564
|
|
|
650
565
|
```bash
|
|
651
566
|
# Track API usage and savings
|
|
652
|
-
|
|
567
|
+
attune telemetry savings --days 30
|
|
653
568
|
```
|
|
654
569
|
|
|
655
570
|
---
|
|
656
571
|
|
|
657
|
-
##
|
|
658
|
-
|
|
659
|
-
### Multi-Agent Workflows
|
|
660
|
-
|
|
661
|
-
```bash
|
|
662
|
-
# 4 parallel agents check release readiness
|
|
663
|
-
empathy orchestrate release-prep
|
|
664
|
-
|
|
665
|
-
# Sequential coverage improvement
|
|
666
|
-
empathy orchestrate test-coverage --target 90
|
|
667
|
-
```
|
|
572
|
+
## MCP Server Integration
|
|
668
573
|
|
|
669
|
-
|
|
574
|
+
Attune AI includes a Model Context Protocol (MCP) server that exposes all workflows as native Claude Code tools:
|
|
670
575
|
|
|
671
|
-
|
|
576
|
+
- **10 Tools Available** - security_audit, bug_predict, code_review, test_generation, performance_audit, release_prep, and more
|
|
577
|
+
- **Automatic Discovery** - Claude Code finds tools via `.claude/mcp.json`
|
|
578
|
+
- **Natural Language Access** - Describe your need and Claude invokes the appropriate tool
|
|
672
579
|
|
|
673
|
-
```
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
workflow = SecurityAuditWorkflow(enable_cache=True)
|
|
677
|
-
result = await workflow.execute(target_path="./src")
|
|
678
|
-
print(f"Cache hit rate: {result.cost_report.cache_hit_rate:.1f}%")
|
|
580
|
+
```bash
|
|
581
|
+
# Verify MCP integration
|
|
582
|
+
echo '{"method":"tools/list","params":{}}' | PYTHONPATH=./src python -m attune.mcp.server
|
|
679
583
|
```
|
|
680
584
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
Workflows learn from outcomes and improve over time:
|
|
585
|
+
---
|
|
684
586
|
|
|
685
|
-
|
|
686
|
-
from attune.orchestration.config_store import ConfigurationStore
|
|
587
|
+
## Agent Coordination Dashboard
|
|
687
588
|
|
|
688
|
-
|
|
689
|
-
best = store.get_best_for_task("release_prep")
|
|
690
|
-
print(f"Success rate: {best.success_rate:.1%}")
|
|
691
|
-
```
|
|
589
|
+
Real-time monitoring with 6 coordination patterns:
|
|
692
590
|
|
|
693
|
-
|
|
591
|
+
- Agent heartbeats and status tracking
|
|
592
|
+
- Inter-agent coordination signals
|
|
593
|
+
- Event streaming across agent workflows
|
|
594
|
+
- Approval gates for human-in-the-loop
|
|
595
|
+
- Quality feedback and performance metrics
|
|
596
|
+
- Demo mode with test data generation
|
|
694
597
|
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
GeminiProvider, # Gemini
|
|
700
|
-
LocalProvider, # Ollama, LM Studio
|
|
701
|
-
)
|
|
598
|
+
```bash
|
|
599
|
+
# Launch dashboard (requires Redis)
|
|
600
|
+
python examples/dashboard_demo.py
|
|
601
|
+
# Open http://localhost:8000
|
|
702
602
|
```
|
|
703
603
|
|
|
704
604
|
---
|
|
705
605
|
|
|
706
|
-
##
|
|
606
|
+
## Authentication Strategy
|
|
607
|
+
|
|
608
|
+
Intelligent routing between Claude subscription and Anthropic API:
|
|
707
609
|
|
|
708
610
|
```bash
|
|
709
|
-
#
|
|
710
|
-
python -m attune.models.
|
|
711
|
-
python -m attune.models.cli provider --set hybrid
|
|
611
|
+
# Interactive setup
|
|
612
|
+
python -m attune.models.auth_cli setup
|
|
712
613
|
|
|
713
|
-
#
|
|
714
|
-
|
|
715
|
-
empathy workflow run <workflow-name>
|
|
614
|
+
# View current configuration
|
|
615
|
+
python -m attune.models.auth_cli status
|
|
716
616
|
|
|
717
|
-
#
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
empathy telemetry export --format csv
|
|
617
|
+
# Get recommendation for a file
|
|
618
|
+
python -m attune.models.auth_cli recommend src/module.py
|
|
619
|
+
```
|
|
721
620
|
|
|
722
|
-
|
|
723
|
-
empathy orchestrate release-prep
|
|
724
|
-
empathy orchestrate test-coverage --target 90
|
|
621
|
+
**Automatic routing:**
|
|
725
622
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
empathy meta-workflow run release-prep --real
|
|
729
|
-
```
|
|
623
|
+
- Small/medium modules (<2000 LOC) → Claude subscription (free)
|
|
624
|
+
- Large modules (>2000 LOC) → Anthropic API (pay for what you need)
|
|
730
625
|
|
|
731
626
|
---
|
|
732
627
|
|
|
733
|
-
##
|
|
628
|
+
## Installation Options
|
|
734
629
|
|
|
735
630
|
```bash
|
|
736
631
|
# Individual developers (recommended)
|
|
737
632
|
pip install attune-ai[developer]
|
|
738
633
|
|
|
739
|
-
# All LLM providers
|
|
740
|
-
pip install attune-ai[llm]
|
|
741
|
-
|
|
742
634
|
# With caching (semantic similarity)
|
|
743
635
|
pip install attune-ai[cache]
|
|
744
636
|
|
|
745
637
|
# Enterprise (auth, rate limiting)
|
|
746
638
|
pip install attune-ai[enterprise]
|
|
747
639
|
|
|
748
|
-
# Healthcare (HIPAA compliance)
|
|
749
|
-
pip install attune-ai[healthcare]
|
|
750
|
-
|
|
751
640
|
# Development
|
|
752
641
|
git clone https://github.com/Smart-AI-Memory/attune-ai.git
|
|
753
642
|
cd attune-ai && pip install -e .[dev]
|
|
@@ -758,74 +647,38 @@ cd attune-ai && pip install -e .[dev]
|
|
|
758
647
|
## Environment Setup
|
|
759
648
|
|
|
760
649
|
```bash
|
|
761
|
-
#
|
|
650
|
+
# Required: Anthropic API key
|
|
762
651
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
763
|
-
export OPENAI_API_KEY="sk-..."
|
|
764
|
-
export GOOGLE_API_KEY="..."
|
|
765
652
|
|
|
766
|
-
# Optional
|
|
653
|
+
# Optional: Redis for Agent Dashboard and memory
|
|
767
654
|
export REDIS_URL="redis://localhost:6379"
|
|
768
655
|
```
|
|
769
656
|
|
|
770
657
|
---
|
|
771
658
|
|
|
772
|
-
## VSCode Extension
|
|
773
|
-
|
|
774
|
-
Install the Empathy VSCode extension for:
|
|
775
|
-
|
|
776
|
-
- **Dashboard** - Health score, costs, patterns
|
|
777
|
-
- **One-Click Workflows** - Run from command palette
|
|
778
|
-
- **Memory Panel** - Manage Redis and patterns
|
|
779
|
-
- **Cost Tracking** - Real-time savings display
|
|
780
|
-
|
|
781
|
-
---
|
|
782
|
-
|
|
783
|
-
## Documentation
|
|
784
|
-
|
|
785
|
-
- [Quick Start Guide](docs/quickstart.md)
|
|
786
|
-
- [CLI Reference](docs/cli-reference.md)
|
|
787
|
-
- [Testing Guide](docs/testing-guide.md)
|
|
788
|
-
- [Keyboard Shortcuts](docs/keyboard-shortcuts.md)
|
|
789
|
-
- [Full Documentation](https://smartaimemory.com/framework-docs/)
|
|
790
|
-
|
|
791
|
-
---
|
|
792
|
-
|
|
793
659
|
## Security
|
|
794
660
|
|
|
795
661
|
- Path traversal protection on all file operations
|
|
796
662
|
- JWT authentication with rate limiting
|
|
797
663
|
- PII scrubbing in telemetry
|
|
798
664
|
- HIPAA/GDPR compliance options
|
|
799
|
-
-
|
|
800
|
-
|
|
801
|
-
See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
802
|
-
|
|
803
|
-
### Security Scanning
|
|
804
|
-
|
|
805
|
-
**Automated security scanning in CI/CD** - 82% accuracy, blocks critical issues:
|
|
665
|
+
- Automated security scanning with 82% accuracy
|
|
806
666
|
|
|
807
667
|
```bash
|
|
808
|
-
# Run security audit
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
# Scan specific directory
|
|
812
|
-
empathy workflow run security-audit --input '{"path":"./src"}'
|
|
668
|
+
# Run security audit
|
|
669
|
+
attune workflow run security-audit --path ./src
|
|
813
670
|
```
|
|
814
671
|
|
|
815
|
-
|
|
672
|
+
See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
816
673
|
|
|
817
|
-
|
|
818
|
-
- **[CI/CD Integration Guide](docs/CI_SECURITY_SCANNING.md)** - Complete setup and troubleshooting (DevOps, developers)
|
|
819
|
-
- **[Scanner Architecture](docs/SECURITY_SCANNER_ARCHITECTURE.md)** - Technical implementation details (engineers, architects)
|
|
820
|
-
- **[Remediation Process](docs/SECURITY_REMEDIATION_PROCESS.md)** - 3-phase methodology for improving scanners (security teams, leadership)
|
|
821
|
-
- **[API Reference](docs/api-reference/security-scanner.md)** - Complete API documentation (developers extending scanner)
|
|
674
|
+
---
|
|
822
675
|
|
|
823
|
-
|
|
676
|
+
## Documentation
|
|
824
677
|
|
|
825
|
-
-
|
|
826
|
-
-
|
|
827
|
-
-
|
|
828
|
-
-
|
|
678
|
+
- [Quick Start Guide](docs/quickstart.md)
|
|
679
|
+
- [CLI Reference](docs/cli-reference.md)
|
|
680
|
+
- [Authentication Strategy Guide](docs/AUTH_STRATEGY_GUIDE.md)
|
|
681
|
+
- [Full Documentation](https://smartaimemory.com/framework-docs/)
|
|
829
682
|
|
|
830
683
|
---
|
|
831
684
|
|
|
@@ -837,27 +690,20 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
837
690
|
|
|
838
691
|
## License
|
|
839
692
|
|
|
840
|
-
**Apache License 2.0** - Free and open source
|
|
693
|
+
**Apache License 2.0** - Free and open source. Use it, modify it, build commercial products with it. [Details →](LICENSE)
|
|
841
694
|
|
|
842
695
|
---
|
|
843
696
|
|
|
844
697
|
## Acknowledgements
|
|
845
698
|
|
|
846
|
-
This project stands on the shoulders of giants. We are deeply grateful to the open source community and all the amazing projects that make this framework possible.
|
|
847
|
-
|
|
848
|
-
**[View Full Acknowledgements →](ACKNOWLEDGEMENTS.md)**
|
|
849
|
-
|
|
850
699
|
Special thanks to:
|
|
851
700
|
|
|
852
701
|
- **[Anthropic](https://www.anthropic.com/)** - For Claude AI and the Model Context Protocol
|
|
853
|
-
- **[LangChain](https://github.com/langchain-ai/langchain)** - Agent framework powering our
|
|
702
|
+
- **[LangChain](https://github.com/langchain-ai/langchain)** - Agent framework powering our orchestration
|
|
854
703
|
- **[FastAPI](https://github.com/tiangolo/fastapi)** - Modern Python web framework
|
|
855
|
-
- **[pytest](https://github.com/pytest-dev/pytest)** - Testing framework making quality assurance effortless
|
|
856
|
-
|
|
857
|
-
And to all 50+ open source projects we depend on. [See the complete list →](ACKNOWLEDGEMENTS.md)
|
|
858
704
|
|
|
859
|
-
|
|
705
|
+
[View Full Acknowledgements →](ACKNOWLEDGEMENTS.md)
|
|
860
706
|
|
|
861
707
|
---
|
|
862
708
|
|
|
863
|
-
**Built by [Smart AI Memory](https://smartaimemory.com)** · [Docs](https://smartaimemory.com/framework-docs/) · [
|
|
709
|
+
**Built by [Smart AI Memory](https://smartaimemory.com)** · [Docs](https://smartaimemory.com/framework-docs/) · [Issues](https://github.com/Smart-AI-Memory/attune-ai/issues)
|