attune-ai 2.0.0__tar.gz → 2.0.2__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.0.0 → attune_ai-2.0.2}/CHANGELOG.md +34 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/PKG-INFO +63 -187
- {attune_ai-2.0.0 → attune_ai-2.0.2}/README.md +62 -186
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/PKG-INFO +63 -187
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/README.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/config.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/core.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/empathy-os.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/index.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/security-scanner 2.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/security-scanner.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/wizards.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/adaptive-learning-system.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/generated-plan-release-prep.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/sbar-clinical-handoff.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/simple-chatbot.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/webhook-event-integration.md +6 -6
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/choose-your-path.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/first-steps.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/index.md +4 -4
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/installation 2.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/installation.md +3 -3
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/mcp-integration 2.md +4 -4
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/mcp-integration.md +5 -5
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/getting-started/redis-setup.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/DISTRIBUTION_POLICY.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/MCP_PUBLISH_INSTRUCTIONS.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/MKDOCS_TUTORIAL.md +13 -13
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/RELEASE_PREPARATION.md +4 -4
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/WORKFLOW_PATTERNS.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/claude-memory-integration.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/five-levels-of-empathy.md +10 -10
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/foreword.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/how-to-read-this-book.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/pattern-catalog.md +2 -2
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/preface.md +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/signoz-integration.md +10 -10
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/teaching-ai-your-standards.md +4 -4
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/xml-enhanced-prompts.md +5 -5
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/index.md +4 -4
- {attune_ai-2.0.0 → attune_ai-2.0.2}/pyproject.toml +1 -1
- {attune_ai-2.0.0 → attune_ai-2.0.2}/.bandit +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/CODE_OF_CONDUCT.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/CONTRIBUTING.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/LICENSE +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/MANIFEST.in +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/SECURITY.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_B112.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_F541.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/SOURCES.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/dependency_links.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/entry_points.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/requires.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_ai.egg-info/top_level.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/clinical_protocol_monitor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/monitoring/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/monitoring/protocol_checker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/monitoring/protocol_loader.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/monitoring/sensor_parsers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_healthcare/monitors/monitoring/trajectory_analyzer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/autogen_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/crewai_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/haystack_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/langchain_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/langgraph_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/native.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/adapters/wizard_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/crews/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/crews/code_review.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/crews/health_check.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/crews/refactoring.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/crews/security_audit.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/decorators.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/factory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/framework.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/memory_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agent_factory/resilient.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agents_md/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agents_md/loader.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agents_md/parser.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/agents_md/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/claude_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/cli/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/cli/sync_claude.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/code_health.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/context.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/loader.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/models.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/parser.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/commands/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/config/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/config/unified.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/context/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/context/compaction.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/context/manager.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/contextual_patterns.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/git_pattern_extractor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/executor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/evaluate_session.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/first_time_init.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/pre_compact.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/session_end.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/session_start.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/hooks/scripts/suggest_compact.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/learning/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/learning/evaluator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/learning/extractor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/learning/storage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/levels.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/pattern_confidence.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/pattern_resolver.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/pattern_summary.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/providers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/routing/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/routing/model_router.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/IMPLEMENTATION_SUMMARY.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/PHASE2_COMPLETE.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/QUICK_REFERENCE.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/audit_logger.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/audit_logger_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/pii_scrubber.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/secrets_detector.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/secrets_detector_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/secure_memdocs.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/security/secure_memdocs_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/session_status.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/state.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/utils/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_llm/utils/tokens.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/SOFTWARE_PLUGIN_README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/cli/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/cli/inspect.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/attune_software/plugin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/llm-toolkit.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/memory 2.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/memory.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/meta-orchestration.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/multi-agent.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/pattern-library.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/persistence.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/software-wizards.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/workflows 2.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/api-reference/workflows.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/examples/multi-agent-team-coordination.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/PUBLISHING.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/healthcare-wizards.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/multi-model-workflows.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/docs/guides/trust-circuit-breaker.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/WIZARD_DASHBOARD_IMPLEMENTATION.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/WIZARD_DASHBOARD_STATE_MANAGEMENT.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/WIZARD_DASHBOARD_WIREFRAMES.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/adaptive_routing_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/adaptive_routing_workflow_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/adaptive_routing_workflow_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/agent_coordination_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/agent_coordination_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/agent_tracking_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/agent_tracking_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/anthropic_patterns_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/anthropic_patterns_simple_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/approval_gates_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/approval_gates_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/claude_memory/README-SECURITY.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/claude_memory/enterprise-CLAUDE-secure.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/claude_memory/example-with-imports.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/claude_memory/project-CLAUDE.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/claude_memory/user-CLAUDE.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/complete-workflow/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/complete-workflow/workflow_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/config/empathy.config.example.yml +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/coordinated_workflow_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/coordinated_workflow_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/dashboard_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/dashboard_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_end_to_end_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_memory_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_meta_workflows.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_progressive_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_security_complete.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/demos/demo_test_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/domain_wizards/all_domain_wizards_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/domain_wizards/healthcare_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/domain_wizards/tests/test_healthcare_wizard.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/event_streaming_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/event_streaming_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/feedback_loop_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/feedback_loop_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/hybrid_cli_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/interactive_team_creation.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/level_5_transformative/BLOG_POST.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/level_5_transformative/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/level_5_transformative/data/deployment_pipeline.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/level_5_transformative/data/healthcare_handoff_code.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/llm_toolkit_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/meta_orchestrator_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/multi_llm_usage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/orchestration/advanced_composition.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/orchestration/basic_usage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/orchestration/custom_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/progressive_test_gen_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/quickstart/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/quickstart.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/redis_exploration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/scanner_usage 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/scanner_usage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/security_integration_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/SOCRATIC_DEMO.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/complete_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/config.yaml +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/dashboard_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/live_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/seo_agent.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/utils.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/seo_optimization/with_memory_backend.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/simple_usage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/smart_team_quickstart.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/sonnet_opus_fallback_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/suggest_adaptive_routing 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/suggest_adaptive_routing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/test_approval_gates 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/test_approval_gates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/test_debugging_wizard.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflow_chaining_demo 2.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflow_chaining_demo.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflows/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflows/code_review_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflows/doc_gen_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflows/multi_model_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/examples/workflows/research_example.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/requirements.txt +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/setup.cfg +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/.empathy/discovery_stats.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/adaptive/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/adaptive/task_complexity.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/agent_monitoring.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/dependency_manager.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/hash_only.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/hybrid.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache/storage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache_monitor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cache_stats.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/__main__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/batch.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/cache.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/help.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/info.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/inspect.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/inspection.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/metrics.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/orchestrate.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/patterns.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/profiling.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/provider.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/routing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/setup.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/status.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/sync.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/tier.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/utilities.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/commands/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/batch.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/cache.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/help.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/info.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/inspect.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/metrics.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/orchestrate.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/patterns.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/provider.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/routing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/setup.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/status.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/sync.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/tier.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/parsers/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/utils/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/utils/data.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli/utils/helpers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli_legacy.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli_minimal.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli_router.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cli_unified.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/config/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/config/xml_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/coordination.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/core_modules/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/cost_tracker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/dashboard/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/dashboard/app.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/dashboard/simple_server.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/dashboard/standalone_server.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/discovery.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/emergence.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/exceptions.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/feedback_loops.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/reloader.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/watcher.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/hot_reload/websocket.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/levels.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/leverage_points.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/logging_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/mcp/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/mcp/server.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/claude_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/control_panel.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/control_panel_support.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/cross_session.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/edges.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/encryption.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/file_session.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/graph.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/long_term.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/long_term_types.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/backend_init_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/capabilities_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/handoff_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/lifecycle_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/long_term_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/promotion_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/mixins/short_term_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/nodes.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/redis_bootstrap.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/security/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/security/audit_logger.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/security/pii_scrubber.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/security/secrets_detector.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/short_term.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/simple_storage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/storage/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/storage_backend.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/summary_index.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/types.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/memory/unified.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/agent_creator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/builtin_templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/agent_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/analytics_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/config_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/memory_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/template_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_commands/workflow_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/cli_meta_workflows.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/form_engine.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/intent_detector.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/models.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/pattern_learner.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/plan_generator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/session_context.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/template_registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/meta_workflows/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/metrics/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/metrics/collector.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/metrics/prompt_metrics.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/__main__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/adaptive_routing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/auth_cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/auth_strategy.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/empathy_executor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/executor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/fallback.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/provider_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/tasks.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/telemetry/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/telemetry/analytics.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/telemetry/backend.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/telemetry/data_models.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/telemetry/storage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/token_estimator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/models/validation.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/monitoring/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/monitoring/alerts.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/monitoring/alerts_cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/monitoring/multi_backend.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/monitoring/otel_backend.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/optimization/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/optimization/context_optimizer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/agent_templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/config_store.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/execution_strategies.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/meta_orchestrator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/pattern_learner.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/orchestration/real_tools.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/pattern_cache.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/pattern_library.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/patterns/debugging/all_patterns.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/patterns/debugging/workflow_20260107_1770825e.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/patterns/refactoring_memory.json +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/persistence.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/platform_utils.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/plugins/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/plugins/base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/plugins/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/index.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/models.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/reports.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/scanner.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/project_index/scanner_parallel.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/context.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/parser.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/prompts/templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/redis_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/redis_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/circuit_breaker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/fallback.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/health.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/retry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/resilience/timeout.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/routing/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/routing/chain_executor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/routing/classifier.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/routing/smart_router.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/routing/workflow_registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/__main__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/templates/base_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/templates/coach_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/templates/domain_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/ab_testing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/blueprint.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/collaboration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/domain_templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/embeddings.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/engine.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/explainer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/feedback.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/forms.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/generator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/llm_analyzer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/mcp_server.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/session.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/storage.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/success.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/visual_editor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/socratic/web_ui.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/agent_coordination.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/agent_tracking.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/approval_gates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/commands/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/commands/dashboard_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/event_streaming.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/feedback_loop.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/telemetry/usage_tracker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/__main__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/generator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/risk_analyzer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/test_generator/templates/unit_test.py.jinja2 +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/tier_recommender.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/tools.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/trust/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/trust/circuit_breaker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/trust_building.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/validation/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/validation/xml_validator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/vscode_bridge.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/behavior.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/output.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflow_patterns/structural.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/autonomous_test_gen.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/batch_processing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/bug_predict.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/builder.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/caching.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/code_review.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/code_review_adapters.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/code_review_pipeline.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/dependency_check.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_gen/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_gen/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_gen/report_formatter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_gen/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_manager.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/document_manager_README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/documentation_orchestrator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/history.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/generators.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/parsers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/prompts.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/schema.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/keyboard_shortcuts/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/llm_base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/manage_docs.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/manage_docs_README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/manage_documentation.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/new_sample_workflow1.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/new_sample_workflow1_README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/orchestrated_health_check.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/orchestrated_release_prep.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/output.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/perf_audit.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/pr_review.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progress.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progress_server.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/README 2.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/orchestrator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/reports.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/telemetry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/test_gen.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/progressive/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/refactor_plan.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/release_prep.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/release_prep_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/research_synthesis.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/routing.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/secure_release.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/security_adapters.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/security_audit.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/security_audit_phase3.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/seo_optimization.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/step_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/telemetry_mixin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test5.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test5_README.md +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_coverage_boost_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/ast_analyzer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/data_models.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/report_formatter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/test_templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen/workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen_behavioral.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_gen_parallel.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_lifecycle.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_maintenance.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_maintenance_cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_maintenance_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/test_runner.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/tier_tracking.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/src/attune/workflows/xml_enhanced_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_agent_factory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_agent_factory_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_agent_factory_resilience.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_audit_logger.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_audit_logger_extended.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_baseline.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_book_production_agents.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_bug_predict_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_claude_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_claude_memory_extended.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_clinical_protocol_monitor.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_health.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_review.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_review_crew_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_review_pipeline.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_review_pipeline_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_code_review_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_control_panel.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_control_panel_security.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_coordination.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_core_reliability.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_cost_tracker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_dependency_check.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_dependency_check_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_discovery.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_document_gen.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_document_gen_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_emergence.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_empathy_llm_core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_empathy_llm_security.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_empathy_os.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_exceptions.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_executor_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_fallback.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_fallback_suite.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_feedback_loops.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_finding_extraction.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_graph.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_health_check.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_healthcare_plugin.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_intelligence_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_levels.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_leverage_points.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_agents.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_decorators.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_empathy_core.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_langgraph_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_levels.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_patterns.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_providers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_security.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_session_status.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_llm_toolkit_wizard_adapter.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_logging_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_long_term.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_memory_graph.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_model_registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_model_router.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_monitoring.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pattern_cache.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pattern_library.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_perf_audit_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_persistence.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pii_scrubber.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pii_scrubber_extended.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_platform_compat_ci.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_platform_utils.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_plugin_base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_plugin_registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pr_review.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_pr_review_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_production_smoke.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_progress.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_protocol_checker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_protocol_loader.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_provider_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_providers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_redis_bootstrap.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_redis_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_redis_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_redis_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_redis_memory_errors.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_refactor_golden.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_refactor_plan_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_refactoring.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_refactoring_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_registry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_release_prep.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_reporting.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_reports.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_resilience.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_sbar_wizard.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_scanner.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_scanner_exceptions.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_secrets_detector.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_secure_memdocs.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_secure_memdocs_extended.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_secure_release.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_secure_release_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_audit.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_audit_crew.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_audit_workflow.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_crew_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_negative_cases.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_security_scan.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_sensor_parsers.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_session_status.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_short_term.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_smart_router.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_smoke.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_sonnet_opus_fallback.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_state.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_step_config.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_summary_index.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_sync_claude.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_tech_debt_wizard.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_telemetry.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_templates.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_timeout.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_token_estimator.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_trajectory_analyzer.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_trust_building.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_trust_circuit_breaker.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_unified_memory.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_validation.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_wizard_outputs.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_wizard_site_comprehensive.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_workflow_base.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_workflow_commands.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_workflow_wizard_integration.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_xml_prompts.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/tests/test_xml_spec_generation.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/workflow_scaffolding/__init__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/workflow_scaffolding/__main__.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/workflow_scaffolding/cli.py +0 -0
- {attune_ai-2.0.0 → attune_ai-2.0.2}/workflow_scaffolding/generator.py +0 -0
|
@@ -7,6 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.2] - 2026-02-01
|
|
11
|
+
|
|
12
|
+
### Removed
|
|
13
|
+
|
|
14
|
+
- **README.md**: Removed outdated "Transitioning to Claude-Native Architecture" section
|
|
15
|
+
- Eliminated confusing timeline with old version numbers (v4.8.0, v5.0.0, v5.0.2)
|
|
16
|
+
- Package is already Claude-native, no need for transition messaging
|
|
17
|
+
- Cleaner, more focused README presentation
|
|
18
|
+
|
|
19
|
+
## [2.0.1] - 2026-02-01
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **README.md**: Consolidated version history into single "What's New in v2.0.0" section
|
|
24
|
+
- Removed confusing legacy version sections (v5.3.0, v5.1.0, v5.0.2, v4.9.0, v4.7.0)
|
|
25
|
+
- Clean, focused presentation of Attune AI features
|
|
26
|
+
- Updated test badge to show 13,489 tests collected
|
|
27
|
+
- Clarified $0 workflows caveat for 1M API context requirement
|
|
28
|
+
|
|
29
|
+
- **Website Branding**: Updated all references across 20+ pages
|
|
30
|
+
- "Empathy Framework" → "Attune AI"
|
|
31
|
+
- `empathy-framework` → `attune-ai` in all install commands
|
|
32
|
+
- GitHub URLs updated to `Smart-AI-Memory/attune-ai`
|
|
33
|
+
|
|
34
|
+
- **Documentation**: Comprehensive branding updates
|
|
35
|
+
- 1,116+ references updated across all markdown files
|
|
36
|
+
- All package names and commands updated
|
|
37
|
+
- Consistent "Attune AI" branding throughout
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- Markdown linting: Added proper blank lines around lists in README
|
|
42
|
+
- Accurate description of cost model for workflows
|
|
43
|
+
|
|
10
44
|
## [2.0.0] - 2026-02-01
|
|
11
45
|
|
|
12
46
|
### BREAKING CHANGES 🚨
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attune-ai
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
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,14 +421,14 @@ 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
426
|
**AI-powered developer workflows with cost optimization and pattern learning.**
|
|
427
427
|
|
|
428
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
|
-
[](https://github.com/Smart-AI-Memory/attune-ai/actions)
|
|
432
432
|
[](https://www.python.org)
|
|
433
433
|
[](LICENSE)
|
|
434
434
|
[](https://github.com/Smart-AI-Memory/attune-ai/blob/main/CHANGELOG.md)
|
|
@@ -439,188 +439,64 @@ pip install attune-ai[developer]
|
|
|
439
439
|
|
|
440
440
|
---
|
|
441
441
|
|
|
442
|
-
##
|
|
442
|
+
## What's New in v2.0.0
|
|
443
443
|
|
|
444
|
-
|
|
444
|
+
**🎉 Introducing Attune AI** - A fresh start with a new name and renewed focus:
|
|
445
445
|
|
|
446
|
-
|
|
447
|
-
- **📖 Flexible Context:** 200K via subscription for most tasks, up to 1M via API for large codebases
|
|
448
|
-
- **🧠 Extended Thinking:** See Claude's internal reasoning process
|
|
449
|
-
- **🔧 Advanced Tool Use:** Optimized for agentic workflows
|
|
446
|
+
**Package Rebrand**: `empathy-framework` is now `attune-ai`
|
|
450
447
|
|
|
451
|
-
|
|
448
|
+
- New package name, same powerful features
|
|
449
|
+
- All capabilities from v5.x preserved
|
|
450
|
+
- Starting fresh at v2.0.0 to mark the new brand
|
|
452
451
|
|
|
453
|
-
-
|
|
454
|
-
- ✅ **v5.0.0 (Jan 26, 2026):** Non-Anthropic providers removed (BREAKING - COMPLETE)
|
|
455
|
-
- ✅ **v5.0.2 (Jan 28, 2026):** Cost optimization suite with batch processing and caching monitoring
|
|
452
|
+
**🤖 Multi-Agent Orchestration** - Build and coordinate specialized AI agents:
|
|
456
453
|
|
|
457
|
-
**
|
|
454
|
+
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns
|
|
455
|
+
- **Custom Agents** - Create specialized agents for your workflow needs
|
|
456
|
+
- **LLM Agents** - Leverage Claude's advanced capabilities
|
|
457
|
+
- Dashboard at `http://localhost:8000` with `python examples/dashboard_demo.py` (requires Redis)
|
|
458
458
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
## What's New in v5.3.0
|
|
462
|
-
|
|
463
|
-
**🎨 Dashboard Enhancements** - Improved usability and clarity:
|
|
464
|
-
|
|
465
|
-
- **Agent Display Names** - Human-readable labels for agents in dashboard (e.g., "Code Analyzer" instead of UUID)
|
|
466
|
-
- **Comprehensive Help Panel** - 5-section accordion explaining dashboard features, use cases, and Redis setup
|
|
467
|
-
- **UX Improvements** - "Source Agent:" label clarity, "Redis Requires Enabling" status message
|
|
468
|
-
- **Browser Cache Busting** - Date-based versioning ensures updates appear immediately
|
|
469
|
-
|
|
470
|
-
**📚 Documentation Improvements**:
|
|
471
|
-
|
|
472
|
-
- Clarified flexible context strategy (200K subscription + 1M API routing)
|
|
473
|
-
- Added Redis requirement documentation for dashboard
|
|
474
|
-
- Root directory cleanup (8 archived files)
|
|
475
|
-
|
|
476
|
-
**🧪 Test Infrastructure**:
|
|
477
|
-
|
|
478
|
-
- Sequential test execution to fix import timing issues
|
|
479
|
-
- All agent tracking tests passing (19/19)
|
|
480
|
-
|
|
481
|
-
[See Full Changelog](CHANGELOG.md#530---2026-01-31)
|
|
482
|
-
|
|
483
|
-
---
|
|
484
|
-
|
|
485
|
-
## What's New in v5.1.0
|
|
486
|
-
|
|
487
|
-
**🤖 Multi-Agent Orchestration** - Full support for custom agents and Anthropic LLM agents:
|
|
488
|
-
|
|
489
|
-
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns:
|
|
490
|
-
- Agent heartbeats and status tracking
|
|
491
|
-
- Inter-agent coordination signals
|
|
492
|
-
- Event streaming across agent workflows
|
|
493
|
-
- Approval gates for human-in-the-loop
|
|
494
|
-
- Quality feedback and performance metrics
|
|
495
|
-
- Demo mode with test data generation
|
|
496
|
-
|
|
497
|
-
- **Custom Agents** - Build specialized agents for your workflow needs
|
|
498
|
-
- **LLM Agents from Anthropic** - Leverage Claude's advanced capabilities
|
|
499
|
-
- Dashboard accessible at `http://localhost:8000` with `python examples/dashboard_demo.py` **(Requires Redis)**
|
|
500
|
-
|
|
501
|
-
**🔐 Authentication Strategy System** - Intelligent routing between Claude subscriptions and Anthropic API:
|
|
502
|
-
|
|
503
|
-
```bash
|
|
504
|
-
# Interactive setup
|
|
505
|
-
python -m attune.models.auth_cli setup
|
|
506
|
-
|
|
507
|
-
# View current configuration
|
|
508
|
-
python -m attune.models.auth_cli status
|
|
509
|
-
|
|
510
|
-
# Get recommendation for a file
|
|
511
|
-
python -m attune.models.auth_cli recommend src/module.py
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
**💰 Automatic Cost Optimization** - Workflows choose the best auth method:
|
|
515
|
-
|
|
516
|
-
- Small/medium modules (<2000 LOC) → Claude subscription (free)
|
|
517
|
-
- Large modules (>2000 LOC) → Anthropic API (pay for what you need)
|
|
518
|
-
- 7 workflows integrated: document-gen, test-gen, code-review, bug-predict, security-audit, perf-audit, release-prep
|
|
519
|
-
- Auth mode tracking in all workflow outputs for telemetry
|
|
520
|
-
|
|
521
|
-
**🧪 Comprehensive Testing** - 7 new integration tests for auth strategy:
|
|
522
|
-
|
|
523
|
-
- All workflows tested with auth enabled/disabled
|
|
524
|
-
- API and subscription mode verification
|
|
525
|
-
- Cost tracking validation
|
|
526
|
-
|
|
527
|
-
**📖 Documentation** - 950+ lines across 3 guides:
|
|
528
|
-
|
|
529
|
-
- [AUTH_STRATEGY_GUIDE.md](docs/AUTH_STRATEGY_GUIDE.md) - User guide for configuration
|
|
530
|
-
- [AUTH_CLI_IMPLEMENTATION.md](docs/AUTH_CLI_IMPLEMENTATION.md) - CLI command reference
|
|
531
|
-
- [AUTH_WORKFLOW_INTEGRATIONS.md](docs/AUTH_WORKFLOW_INTEGRATIONS.md) - Integration patterns
|
|
532
|
-
|
|
533
|
-
[See Full Changelog](CHANGELOG.md#510---2026-01-29)
|
|
534
|
-
|
|
535
|
-
---
|
|
459
|
+
**💰 Intelligent Cost Optimization**:
|
|
536
460
|
|
|
537
|
-
|
|
461
|
+
- **Authentication Strategy** - Smart routing between Claude subscription (free) and Anthropic API
|
|
462
|
+
- **Batch API** - 50% cost savings for non-urgent tasks
|
|
463
|
+
- **Smart Tier Routing** - Automatic model selection saves 34-86% on costs
|
|
464
|
+
- **Precise Token Counting** - >98% accurate cost tracking
|
|
538
465
|
|
|
539
|
-
|
|
466
|
+
**⚡ Performance & Scale**:
|
|
540
467
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
```
|
|
468
|
+
- **18x Faster** - Redis caching, parallel scanning, incremental updates
|
|
469
|
+
- **99.9% Memory Reduction** - Generator expressions across 27 optimizations
|
|
470
|
+
- **Natural Language** - Use plain English for workflow commands
|
|
471
|
+
- **13,489 Tests** - Comprehensive test coverage (99.9% passing)
|
|
546
472
|
|
|
547
|
-
|
|
473
|
+
**🔐 Security & Quality**:
|
|
548
474
|
|
|
549
|
-
|
|
475
|
+
- **Automated Security Scanning** - 82% accuracy, blocks critical issues
|
|
476
|
+
- **Path Traversal Protection** - All file operations validated
|
|
477
|
+
- **HIPAA/GDPR Compliance** - Enterprise-ready security options
|
|
550
478
|
|
|
551
|
-
|
|
552
|
-
- 3-tier fallback: API → tiktoken (local) → heuristic
|
|
553
|
-
- Cache-aware cost calculation (25% write markup, 90% read discount)
|
|
479
|
+
**🧭 Developer Experience**:
|
|
554
480
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
empathy cache stats --verbose # Detailed token metrics
|
|
560
|
-
empathy cache stats --format json # Machine-readable output
|
|
561
|
-
```
|
|
481
|
+
- **MCP Integration** - 10 tools auto-discovered by Claude Code
|
|
482
|
+
- **Hub-Based Commands** - Organized workflows (`/dev`, `/testing`, `/release`, etc.)
|
|
483
|
+
- **Socratic Workflows** - Interactive discovery through guided questions
|
|
484
|
+
- **$0 Workflows** - Run via Claude Code with no API costs, unless a 1 million API context is required.
|
|
562
485
|
|
|
563
|
-
|
|
486
|
+
**Migration from Empathy Framework**:
|
|
564
487
|
|
|
565
488
|
```bash
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
empathy routing models --provider anthropic # Compare models
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
**🔧 Dashboard Fixes** - All 6 agent coordination patterns now operational:
|
|
572
|
-
- Agent heartbeats displaying correctly
|
|
573
|
-
- Event streaming functional
|
|
574
|
-
- Coordination signals working
|
|
575
|
-
- Approval gates operational
|
|
576
|
-
|
|
577
|
-
[See Full Changelog](CHANGELOG.md#502---2026-01-28) | [Batch API Guide](docs/BATCH_API_GUIDE.md) | [User API Docs](docs/USER_API_DOCUMENTATION.md)
|
|
489
|
+
# Old package
|
|
490
|
+
pip uninstall empathy-framework
|
|
578
491
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
## What's New in v4.9.0
|
|
582
|
-
|
|
583
|
-
**⚡ 18x Faster Performance** - Massive performance gains through Phase 2 optimizations:
|
|
584
|
-
|
|
585
|
-
- **Redis Two-Tier Caching:** 2x faster memory operations (37,000x for cached keys)
|
|
586
|
-
- **Generator Expressions:** 99.9% memory reduction across 27 optimizations
|
|
587
|
-
- **Parallel Scanning:** Multi-core processing enabled by default (2-4x faster)
|
|
588
|
-
- **Incremental Scanning:** Git diff-based updates (10x faster)
|
|
589
|
-
|
|
590
|
-
**🧭 Natural Language Workflows** - Use plain English instead of workflow names:
|
|
492
|
+
# New package
|
|
493
|
+
pip install attune-ai[developer]
|
|
591
494
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
/workflows "check code performance" # → perf-audit
|
|
595
|
-
/workflows "predict bugs" # → bug-predict
|
|
596
|
-
/plan "review my code" # → code-review
|
|
495
|
+
# Update imports in your code
|
|
496
|
+
# from empathy_os → from attune
|
|
597
497
|
```
|
|
598
498
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
- Combined workflow: 3.59s → 0.2s (**18x faster**)
|
|
602
|
-
- Full scan: 3,472 files in 0.98s (was 3.59s)
|
|
603
|
-
- Redis cached operations: 37ms → 0.001ms
|
|
604
|
-
|
|
605
|
-
**🎯 Improved Navigation:**
|
|
606
|
-
|
|
607
|
-
- Split `/workflow` into `/workflows` (automated analysis) and `/plan` (planning/review)
|
|
608
|
-
- Clearer hub organization with better categorization
|
|
609
|
-
- Natural language routing matches intent to workflow
|
|
610
|
-
|
|
611
|
-
[See CHANGELOG.md](CHANGELOG.md) | [Performance Docs](docs/REDIS_OPTIMIZATION_SUMMARY.md)
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
## What's New in v4.7.0
|
|
616
|
-
|
|
617
|
-
**$0 Workflows via Skills** - Multi-agent workflows run through Claude Code's Task tool instead of API calls. No additional cost with your Claude subscription.
|
|
618
|
-
|
|
619
|
-
**Socratic Workflows** - Interactive discovery through guided questions. Workflows ask what you need rather than requiring upfront configuration.
|
|
620
|
-
|
|
621
|
-
**Security Hardened** - Fixed critical vulnerabilities (path traversal, JWT, SSRF).
|
|
622
|
-
|
|
623
|
-
**Hub-Based Commands** - Organized workflows into intuitive command hubs.
|
|
499
|
+
[See Full Changelog](CHANGELOG.md) | [Migration Guide](docs/MIGRATION_GUIDE.md)
|
|
624
500
|
|
|
625
501
|
---
|
|
626
502
|
|
|
@@ -659,7 +535,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
659
535
|
/plan "review my code"
|
|
660
536
|
|
|
661
537
|
# Direct tool access via MCP (v5.1.1+):
|
|
662
|
-
# Claude Code automatically discovers
|
|
538
|
+
# Claude Code automatically discovers Attune AI tools through the MCP server
|
|
663
539
|
# Just describe what you need in natural language:
|
|
664
540
|
"Run a security audit on src/" → Invokes security_audit tool
|
|
665
541
|
"Generate tests for config.py" → Invokes test_generation tool
|
|
@@ -669,7 +545,7 @@ python -m attune.models.cli provider --set anthropic
|
|
|
669
545
|
|
|
670
546
|
**MCP Server Integration (v5.1.1+):**
|
|
671
547
|
|
|
672
|
-
|
|
548
|
+
Attune AI now includes a Model Context Protocol (MCP) server that exposes all workflows as native Claude Code tools:
|
|
673
549
|
|
|
674
550
|
- **10 Tools Available:** security_audit, bug_predict, code_review, test_generation, performance_audit, release_prep, auth_status, auth_recommend, telemetry_stats, dashboard_status
|
|
675
551
|
- **Automatic Discovery:** No manual configuration needed - Claude Code finds tools via `.claude/mcp.json`
|
|
@@ -691,9 +567,9 @@ See [.claude/MCP_TEST_RESULTS.md](.claude/MCP_TEST_RESULTS.md) for full integrat
|
|
|
691
567
|
**CLI:**
|
|
692
568
|
|
|
693
569
|
```bash
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
570
|
+
attune workflow run security-audit --path ./src
|
|
571
|
+
attune workflow run test-coverage --target 90
|
|
572
|
+
attune telemetry show # View cost savings
|
|
697
573
|
```
|
|
698
574
|
|
|
699
575
|
**Python:**
|
|
@@ -701,8 +577,8 @@ empathy telemetry show # View cost savings
|
|
|
701
577
|
```python
|
|
702
578
|
from attune import EmpathyOS
|
|
703
579
|
|
|
704
|
-
async with EmpathyOS() as
|
|
705
|
-
result = await
|
|
580
|
+
async with EmpathyOS() as attune:
|
|
581
|
+
result = await attune.level_2_guided(
|
|
706
582
|
"Review this code for security issues"
|
|
707
583
|
)
|
|
708
584
|
print(result["response"])
|
|
@@ -812,7 +688,7 @@ For programmatic use, smart tier routing saves 34-86%:
|
|
|
812
688
|
|
|
813
689
|
```bash
|
|
814
690
|
# Track API usage and savings
|
|
815
|
-
|
|
691
|
+
attune telemetry savings --days 30
|
|
816
692
|
```
|
|
817
693
|
|
|
818
694
|
---
|
|
@@ -823,10 +699,10 @@ empathy telemetry savings --days 30
|
|
|
823
699
|
|
|
824
700
|
```bash
|
|
825
701
|
# 4 parallel agents check release readiness
|
|
826
|
-
|
|
702
|
+
attune orchestrate release-prep
|
|
827
703
|
|
|
828
704
|
# Sequential coverage improvement
|
|
829
|
-
|
|
705
|
+
attune orchestrate test-coverage --target 90
|
|
830
706
|
```
|
|
831
707
|
|
|
832
708
|
### Response Caching
|
|
@@ -874,21 +750,21 @@ python -m attune.models.cli provider
|
|
|
874
750
|
python -m attune.models.cli provider --set hybrid
|
|
875
751
|
|
|
876
752
|
# Workflows
|
|
877
|
-
|
|
878
|
-
|
|
753
|
+
attune workflow list
|
|
754
|
+
attune workflow run <workflow-name>
|
|
879
755
|
|
|
880
756
|
# Cost tracking
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
757
|
+
attune telemetry show
|
|
758
|
+
attune telemetry savings --days 30
|
|
759
|
+
attune telemetry export --format csv
|
|
884
760
|
|
|
885
761
|
# Orchestration
|
|
886
|
-
|
|
887
|
-
|
|
762
|
+
attune orchestrate release-prep
|
|
763
|
+
attune orchestrate test-coverage --target 90
|
|
888
764
|
|
|
889
765
|
# Meta-workflows
|
|
890
|
-
|
|
891
|
-
|
|
766
|
+
attune meta-workflow list
|
|
767
|
+
attune meta-workflow run release-prep --real
|
|
892
768
|
```
|
|
893
769
|
|
|
894
770
|
---
|
|
@@ -934,7 +810,7 @@ export REDIS_URL="redis://localhost:6379"
|
|
|
934
810
|
|
|
935
811
|
## VSCode Extension
|
|
936
812
|
|
|
937
|
-
Install the
|
|
813
|
+
Install the Attune AI VSCode extension for:
|
|
938
814
|
|
|
939
815
|
- **Dashboard** - Health score, costs, patterns
|
|
940
816
|
- **One-Click Workflows** - Run from command palette
|
|
@@ -969,10 +845,10 @@ See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
|
969
845
|
|
|
970
846
|
```bash
|
|
971
847
|
# Run security audit locally
|
|
972
|
-
|
|
848
|
+
attune workflow run security-audit
|
|
973
849
|
|
|
974
850
|
# Scan specific directory
|
|
975
|
-
|
|
851
|
+
attune workflow run security-audit --input '{"path":"./src"}'
|
|
976
852
|
```
|
|
977
853
|
|
|
978
854
|
**Documentation:**
|