attune-ai 2.1.1__tar.gz → 2.1.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.1.1 → attune_ai-2.1.2}/CHANGELOG.md +13 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/PKG-INFO +179 -16
- {attune_ai-2.1.1 → attune_ai-2.1.2}/README.md +178 -15
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/PKG-INFO +179 -16
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/SOURCES.txt +1 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/pyproject.toml +1 -1
- attune_ai-2.1.2/src/attune/socratic_router.py +761 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/vscode_bridge.py +7 -4
- {attune_ai-2.1.1 → attune_ai-2.1.2}/.bandit +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/CODE_OF_CONDUCT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/CONTRIBUTING.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/LICENSE +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/MANIFEST.in +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/SECURITY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_B112.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_F541.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/dependency_links.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/entry_points.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/requires.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_ai.egg-info/top_level.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/clinical_protocol_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/monitoring/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/monitoring/protocol_checker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/monitoring/protocol_loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/monitoring/sensor_parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_healthcare/monitors/monitoring/trajectory_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/autogen_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/crewai_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/haystack_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/langchain_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/langgraph_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/native.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/adapters/wizard_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/crews/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/crews/code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/crews/health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/crews/refactoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/crews/security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/decorators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/factory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/framework.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/memory_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agent_factory/resilient.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agents_md/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agents_md/loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agents_md/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/agents_md/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/cli/sync_claude.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/code_health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/commands/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/config/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/config/unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/context/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/context/compaction.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/context/manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/contextual_patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/git_pattern_extractor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/evaluate_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/first_time_init.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/pre_compact.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/session_end.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/session_start.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/hooks/scripts/suggest_compact.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/learning/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/learning/evaluator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/learning/extractor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/learning/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/pattern_confidence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/pattern_resolver.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/pattern_summary.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/routing/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/routing/model_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/IMPLEMENTATION_SUMMARY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/PHASE2_COMPLETE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/QUICK_REFERENCE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/audit_logger_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/secrets_detector_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/secure_memdocs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/security/secure_memdocs_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/state.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/utils/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_llm/utils/tokens.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/SOFTWARE_PLUGIN_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/cli/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/attune_software/plugin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/config.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/core.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/empathy-os.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/llm-toolkit.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/memory.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/meta-orchestration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/multi-agent.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/pattern-library.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/persistence.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/security-scanner.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/software-wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/api-reference/workflows.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/adaptive-learning-system.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/generated-plan-release-prep.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/multi-agent-team-coordination.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/sbar-clinical-handoff.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/simple-chatbot.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/examples/webhook-event-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/choose-your-path.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/first-steps.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/installation.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/mcp-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/getting-started/redis-setup.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/DISTRIBUTION_POLICY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/MCP_PUBLISH_INSTRUCTIONS.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/MKDOCS_TUTORIAL.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/PUBLISHING.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/RELEASE_PREPARATION.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/WORKFLOW_PATTERNS.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/claude-memory-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/five-levels-of-empathy.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/foreword.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/healthcare-wizards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/how-to-read-this-book.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/multi-model-workflows.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/pattern-catalog.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/preface.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/signoz-integration.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/teaching-ai-your-standards.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/trust-circuit-breaker.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/guides/xml-enhanced-prompts.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/docs/index.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/WIZARD_DASHBOARD_IMPLEMENTATION.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/WIZARD_DASHBOARD_STATE_MANAGEMENT.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/WIZARD_DASHBOARD_WIREFRAMES.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/adaptive_routing_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/adaptive_routing_workflow_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/agent_coordination_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/agent_tracking_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/anthropic_patterns_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/anthropic_patterns_simple_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/approval_gates_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/claude_memory/README-SECURITY.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/claude_memory/enterprise-CLAUDE-secure.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/claude_memory/example-with-imports.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/claude_memory/project-CLAUDE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/claude_memory/user-CLAUDE.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/complete-workflow/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/complete-workflow/workflow_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/config/empathy.config.example.yml +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/coordinated_workflow_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/dashboard_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_end_to_end_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_memory_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_meta_workflows.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_progressive_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_security_complete.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/demos/demo_test_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/domain_wizards/all_domain_wizards_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/domain_wizards/healthcare_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/domain_wizards/tests/test_healthcare_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/event_streaming_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/feedback_loop_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/hybrid_cli_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/interactive_team_creation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/level_5_transformative/BLOG_POST.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/level_5_transformative/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/level_5_transformative/data/deployment_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/level_5_transformative/data/healthcare_handoff_code.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/llm_toolkit_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/meta_orchestrator_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/multi_llm_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/orchestration/advanced_composition.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/orchestration/basic_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/orchestration/custom_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/progressive_test_gen_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/quickstart/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/quickstart.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/redis_exploration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/scanner_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/security_integration_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/SOCRATIC_DEMO.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/complete_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/config.yaml +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/dashboard_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/live_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/seo_agent.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/seo_optimization/with_memory_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/simple_usage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/smart_team_quickstart.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/sonnet_opus_fallback_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/suggest_adaptive_routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/test_approval_gates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/test_debugging_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflow_chaining_demo.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflows/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflows/code_review_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflows/doc_gen_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflows/multi_model_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/examples/workflows/research_example.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/requirements.txt +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/setup.cfg +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/adaptive/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/adaptive/task_complexity.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/agent_monitoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/dependency_manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/hash_only.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/hybrid.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cache_stats.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/batch.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/help.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/info.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/inspection.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/orchestrate.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/profiling.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/provider.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/setup.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/sync.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/tier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/utilities.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/commands/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/batch.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/help.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/info.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/inspect.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/orchestrate.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/provider.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/setup.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/sync.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/tier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/parsers/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/utils/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/utils/data.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli/utils/helpers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli_legacy.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli_minimal.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cli_unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/config/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/config/xml_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/core_modules/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/cost_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/dashboard/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/dashboard/app.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/dashboard/simple_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/dashboard/standalone_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/discovery.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/emergence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/feedback_loops.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/reloader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/watcher.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/hot_reload/websocket.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/leverage_points.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/logging_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/mcp/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/mcp/server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/control_panel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/control_panel_support.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/cross_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/edges.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/encryption.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/file_session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/long_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/long_term_types.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/backend_init_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/capabilities_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/handoff_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/lifecycle_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/long_term_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/promotion_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/mixins/short_term_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/nodes.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/redis_bootstrap.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/security/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/security/audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/security/pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/security/secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/short_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/simple_storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/storage/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/storage_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/summary_index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/types.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/memory/unified.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/agent_creator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/builtin_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/agent_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/analytics_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/config_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/memory_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/template_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_commands/workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/cli_meta_workflows.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/form_engine.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/intent_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/pattern_learner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/plan_generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/session_context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/template_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/meta_workflows/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/metrics/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/metrics/collector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/metrics/prompt_metrics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/adaptive_routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/auth_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/auth_strategy.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/empathy_executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/provider_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/tasks.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/telemetry/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/telemetry/analytics.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/telemetry/backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/telemetry/data_models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/telemetry/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/token_estimator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/models/validation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/monitoring/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/monitoring/alerts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/monitoring/alerts_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/monitoring/multi_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/monitoring/otel_backend.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/optimization/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/optimization/context_optimizer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/agent_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/config_store.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/execution_strategies.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/meta_orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/pattern_learner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/orchestration/real_tools.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/pattern_cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/pattern_library.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/patterns/debugging/all_patterns.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/patterns/debugging/workflow_20260107_1770825e.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/patterns/refactoring_memory.json +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/persistence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/platform_utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/plugins/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/plugins/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/plugins/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/scanner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/project_index/scanner_parallel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/context.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/parser.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/prompts/templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/redis_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/redis_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/retry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/resilience/timeout.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/routing/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/routing/chain_executor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/routing/classifier.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/routing/smart_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/routing/workflow_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/templates/base_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/templates/coach_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/templates/domain_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/ab_testing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/blueprint.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/collaboration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/domain_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/embeddings.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/engine.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/explainer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/feedback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/forms.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/llm_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/mcp_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/session.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/storage.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/success.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/visual_editor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/socratic/web_ui.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/agent_coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/agent_tracking.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/approval_gates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/commands/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/commands/dashboard_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/event_streaming.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/feedback_loop.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/telemetry/usage_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/generator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/risk_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/test_generator/templates/unit_test.py.jinja2 +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/tier_recommender.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/tools.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/trust/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/trust/circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/trust_building.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/validation/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/validation/xml_validator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/behavior.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/output.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflow_patterns/structural.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/autonomous_test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/batch_processing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/bug_predict.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/builder.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/caching.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/code_review_adapters.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/code_review_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/dependency_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_gen/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_gen/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_gen/report_formatter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_gen/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_manager.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/document_manager_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/documentation_orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/history.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/generators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/prompts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/schema.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/keyboard_shortcuts/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/llm_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/manage_docs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/manage_docs_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/manage_documentation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/new_sample_workflow1.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/new_sample_workflow1_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/orchestrated_health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/orchestrated_release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/output.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/perf_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/pr_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progress.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progress_server.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/orchestrator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/telemetry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/progressive/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/refactor_plan.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/release_prep_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/research_synthesis.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/routing.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/secure_release.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/security_adapters.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/security_audit_phase3.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/seo_optimization.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/step_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/telemetry_mixin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test5.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test5_README.md +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_coverage_boost_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/ast_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/data_models.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/report_formatter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/test_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen/workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen_behavioral.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_gen_parallel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_lifecycle.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_maintenance.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_maintenance_cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_maintenance_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/test_runner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/tier_tracking.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/src/attune/workflows/xml_enhanced_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_agent_factory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_agent_factory_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_agent_factory_resilience.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_audit_logger.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_audit_logger_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_baseline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_book_production_agents.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_bug_predict_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_claude_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_claude_memory_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_clinical_protocol_monitor.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_health.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_review_crew_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_review_pipeline.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_review_pipeline_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_code_review_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_control_panel.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_control_panel_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_coordination.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_core_reliability.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_cost_tracker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_dependency_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_dependency_check_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_discovery.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_document_gen.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_document_gen_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_emergence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_empathy_llm_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_empathy_llm_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_empathy_os.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_executor_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_fallback_suite.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_feedback_loops.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_finding_extraction.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_health_check.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_healthcare_plugin.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_intelligence_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_leverage_points.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_agents.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_decorators.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_empathy_core.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_langgraph_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_levels.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_patterns.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_security.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_llm_toolkit_wizard_adapter.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_logging_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_long_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_memory_graph.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_model_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_model_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_monitoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pattern_cache.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pattern_library.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_perf_audit_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_persistence.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pii_scrubber.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pii_scrubber_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_platform_compat_ci.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_platform_utils.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_plugin_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_plugin_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pr_review.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_pr_review_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_production_smoke.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_progress.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_protocol_checker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_protocol_loader.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_provider_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_providers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_redis_bootstrap.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_redis_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_redis_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_redis_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_redis_memory_errors.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_refactor_golden.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_refactor_plan_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_refactoring.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_refactoring_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_registry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_release_prep.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_reporting.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_reports.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_resilience.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_sbar_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_scanner.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_scanner_exceptions.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_secrets_detector.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_secure_memdocs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_secure_memdocs_extended.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_secure_release.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_secure_release_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_audit.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_audit_crew.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_audit_workflow.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_crew_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_negative_cases.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_security_scan.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_sensor_parsers.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_session_status.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_short_term.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_smart_router.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_smoke.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_sonnet_opus_fallback.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_state.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_step_config.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_summary_index.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_sync_claude.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_tech_debt_wizard.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_telemetry.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_templates.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_timeout.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_token_estimator.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_trajectory_analyzer.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_trust_building.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_trust_circuit_breaker.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_unified_memory.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_validation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_wizard_outputs.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_wizard_site_comprehensive.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_workflow_base.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_workflow_commands.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_workflow_wizard_integration.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_xml_prompts.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/tests/test_xml_spec_generation.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/workflow_scaffolding/__init__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/workflow_scaffolding/__main__.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/workflow_scaffolding/cli.py +0 -0
- {attune_ai-2.1.1 → attune_ai-2.1.2}/workflow_scaffolding/generator.py +0 -0
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.2] - 2026-02-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **PyPI packaging**: Re-release to include `.attune` branding fix (2.1.1 was built before the fix was merged)
|
|
15
|
+
|
|
16
|
+
## [2.1.1] - 2026-02-02
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **vscode_bridge.py**: Updated `get_empathy_dir()` to use `.attune` directory (completes branding migration from `.empathy`)
|
|
21
|
+
- **test_vscode_bridge_coverage_boost.py**: Aligned test expectations with `.attune` directory naming
|
|
22
|
+
|
|
10
23
|
## [2.1.0] - 2026-02-01
|
|
11
24
|
|
|
12
25
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attune-ai
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.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,16 +421,17 @@ 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
|
+
# Empathy Framework
|
|
425
425
|
|
|
426
|
-
**AI-powered developer workflows with
|
|
426
|
+
**AI-powered developer workflows with cost optimization and pattern learning.**
|
|
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)
|
|
432
432
|
[](https://www.python.org)
|
|
433
433
|
[](LICENSE)
|
|
434
|
+
[](https://github.com/Smart-AI-Memory/attune-ai/blob/main/CHANGELOG.md)
|
|
434
435
|
|
|
435
436
|
```bash
|
|
436
437
|
pip install attune-ai[developer]
|
|
@@ -438,26 +439,188 @@ pip install attune-ai[developer]
|
|
|
438
439
|
|
|
439
440
|
---
|
|
440
441
|
|
|
441
|
-
##
|
|
442
|
+
## 🎯 Transitioning to Claude-Native Architecture
|
|
442
443
|
|
|
443
|
-
|
|
444
|
+
**Empathy Framework is evolving to focus exclusively on Anthropic/Claude** to unlock features impossible with multi-provider abstraction:
|
|
445
|
+
|
|
446
|
+
- **📦 Prompt Caching:** 90% cost reduction on repeated prompts
|
|
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
|
|
450
|
+
|
|
451
|
+
**Timeline:**
|
|
452
|
+
|
|
453
|
+
- ✅ **v4.8.0 (Jan 2026):** Deprecation warnings for OpenAI/Google/Ollama providers
|
|
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
|
|
456
|
+
|
|
457
|
+
**Migration Guide:** [docs/CLAUDE_NATIVE.md](docs/CLAUDE_NATIVE.md)
|
|
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:
|
|
444
502
|
|
|
445
503
|
```bash
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
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
|
|
449
512
|
```
|
|
450
513
|
|
|
451
|
-
|
|
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
|
+
---
|
|
536
|
+
|
|
537
|
+
## What's New in v5.0.2
|
|
538
|
+
|
|
539
|
+
**💰 50% Cost Savings with Batch API** - Process non-urgent tasks asynchronously:
|
|
540
|
+
|
|
541
|
+
```bash
|
|
542
|
+
empathy batch submit batch_requests.json # Submit batch job
|
|
543
|
+
empathy batch status msgbatch_abc123 # Check progress
|
|
544
|
+
empathy batch results msgbatch_abc123 output.json # Download results
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Perfect for: log analysis, report generation, bulk classification, test generation
|
|
548
|
+
|
|
549
|
+
**📊 Precise Token Counting** - >98% accurate cost tracking:
|
|
550
|
+
|
|
551
|
+
- Integrated Anthropic's `count_tokens()` API for billing-accurate measurements
|
|
552
|
+
- 3-tier fallback: API → tiktoken (local) → heuristic
|
|
553
|
+
- Cache-aware cost calculation (25% write markup, 90% read discount)
|
|
554
|
+
|
|
555
|
+
**📈 Cache Performance Monitoring** - Track your 20-30% caching savings:
|
|
556
|
+
|
|
557
|
+
```bash
|
|
558
|
+
empathy cache stats # Show hit rates and cost savings
|
|
559
|
+
empathy cache stats --verbose # Detailed token metrics
|
|
560
|
+
empathy cache stats --format json # Machine-readable output
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
**🧭 Adaptive Routing Analytics** - Intelligent tier recommendations:
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
empathy routing stats <workflow> # Performance metrics
|
|
567
|
+
empathy routing check --all # Tier upgrade recommendations
|
|
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)
|
|
578
|
+
|
|
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:
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
/workflows "find security vulnerabilities" # → security-audit
|
|
594
|
+
/workflows "check code performance" # → perf-audit
|
|
595
|
+
/workflows "predict bugs" # → bug-predict
|
|
596
|
+
/plan "review my code" # → code-review
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
**📊 Real-World Performance:**
|
|
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.
|
|
452
618
|
|
|
453
|
-
-
|
|
454
|
-
- ✅ **Validate work** → Tests, coverage, security audit
|
|
455
|
-
- 🚀 **Ship changes** → Commit, PR, release
|
|
456
|
-
- 📚 **Understand** → Explain code, generate docs
|
|
619
|
+
**Socratic Workflows** - Interactive discovery through guided questions. Workflows ask what you need rather than requiring upfront configuration.
|
|
457
620
|
|
|
458
|
-
**
|
|
621
|
+
**Security Hardened** - Fixed critical vulnerabilities (path traversal, JWT, SSRF).
|
|
459
622
|
|
|
460
|
-
|
|
623
|
+
**Hub-Based Commands** - Organized workflows into intuitive command hubs.
|
|
461
624
|
|
|
462
625
|
---
|
|
463
626
|
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Empathy Framework
|
|
2
2
|
|
|
3
|
-
**AI-powered developer workflows with
|
|
3
|
+
**AI-powered developer workflows with cost optimization and pattern learning.**
|
|
4
4
|
|
|
5
|
-
Run code review, debugging, testing, and release workflows from Claude Code.
|
|
5
|
+
Run code review, debugging, testing, and release workflows from your terminal or Claude Code. Smart tier routing saves 34-86% on LLM costs.
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/attune-ai/)
|
|
8
8
|
[-brightgreen)](https://github.com/Smart-AI-Memory/attune-ai/actions)
|
|
9
9
|
[](https://www.python.org)
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://github.com/Smart-AI-Memory/attune-ai/blob/main/CHANGELOG.md)
|
|
11
12
|
|
|
12
13
|
```bash
|
|
13
14
|
pip install attune-ai[developer]
|
|
@@ -15,26 +16,188 @@ pip install attune-ai[developer]
|
|
|
15
16
|
|
|
16
17
|
---
|
|
17
18
|
|
|
18
|
-
##
|
|
19
|
+
## 🎯 Transitioning to Claude-Native Architecture
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
**Empathy Framework is evolving to focus exclusively on Anthropic/Claude** to unlock features impossible with multi-provider abstraction:
|
|
22
|
+
|
|
23
|
+
- **📦 Prompt Caching:** 90% cost reduction on repeated prompts
|
|
24
|
+
- **📖 Flexible Context:** 200K via subscription for most tasks, up to 1M via API for large codebases
|
|
25
|
+
- **🧠 Extended Thinking:** See Claude's internal reasoning process
|
|
26
|
+
- **🔧 Advanced Tool Use:** Optimized for agentic workflows
|
|
27
|
+
|
|
28
|
+
**Timeline:**
|
|
29
|
+
|
|
30
|
+
- ✅ **v4.8.0 (Jan 2026):** Deprecation warnings for OpenAI/Google/Ollama providers
|
|
31
|
+
- ✅ **v5.0.0 (Jan 26, 2026):** Non-Anthropic providers removed (BREAKING - COMPLETE)
|
|
32
|
+
- ✅ **v5.0.2 (Jan 28, 2026):** Cost optimization suite with batch processing and caching monitoring
|
|
33
|
+
|
|
34
|
+
**Migration Guide:** [docs/CLAUDE_NATIVE.md](docs/CLAUDE_NATIVE.md)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## What's New in v5.3.0
|
|
39
|
+
|
|
40
|
+
**🎨 Dashboard Enhancements** - Improved usability and clarity:
|
|
41
|
+
|
|
42
|
+
- **Agent Display Names** - Human-readable labels for agents in dashboard (e.g., "Code Analyzer" instead of UUID)
|
|
43
|
+
- **Comprehensive Help Panel** - 5-section accordion explaining dashboard features, use cases, and Redis setup
|
|
44
|
+
- **UX Improvements** - "Source Agent:" label clarity, "Redis Requires Enabling" status message
|
|
45
|
+
- **Browser Cache Busting** - Date-based versioning ensures updates appear immediately
|
|
46
|
+
|
|
47
|
+
**📚 Documentation Improvements**:
|
|
48
|
+
|
|
49
|
+
- Clarified flexible context strategy (200K subscription + 1M API routing)
|
|
50
|
+
- Added Redis requirement documentation for dashboard
|
|
51
|
+
- Root directory cleanup (8 archived files)
|
|
52
|
+
|
|
53
|
+
**🧪 Test Infrastructure**:
|
|
54
|
+
|
|
55
|
+
- Sequential test execution to fix import timing issues
|
|
56
|
+
- All agent tracking tests passing (19/19)
|
|
57
|
+
|
|
58
|
+
[See Full Changelog](CHANGELOG.md#530---2026-01-31)
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## What's New in v5.1.0
|
|
63
|
+
|
|
64
|
+
**🤖 Multi-Agent Orchestration** - Full support for custom agents and Anthropic LLM agents:
|
|
65
|
+
|
|
66
|
+
- **Agent Coordination Dashboard** - Real-time monitoring with 6 coordination patterns:
|
|
67
|
+
- Agent heartbeats and status tracking
|
|
68
|
+
- Inter-agent coordination signals
|
|
69
|
+
- Event streaming across agent workflows
|
|
70
|
+
- Approval gates for human-in-the-loop
|
|
71
|
+
- Quality feedback and performance metrics
|
|
72
|
+
- Demo mode with test data generation
|
|
73
|
+
|
|
74
|
+
- **Custom Agents** - Build specialized agents for your workflow needs
|
|
75
|
+
- **LLM Agents from Anthropic** - Leverage Claude's advanced capabilities
|
|
76
|
+
- Dashboard accessible at `http://localhost:8000` with `python examples/dashboard_demo.py` **(Requires Redis)**
|
|
77
|
+
|
|
78
|
+
**🔐 Authentication Strategy System** - Intelligent routing between Claude subscriptions and Anthropic API:
|
|
21
79
|
|
|
22
80
|
```bash
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
81
|
+
# Interactive setup
|
|
82
|
+
python -m attune.models.auth_cli setup
|
|
83
|
+
|
|
84
|
+
# View current configuration
|
|
85
|
+
python -m attune.models.auth_cli status
|
|
86
|
+
|
|
87
|
+
# Get recommendation for a file
|
|
88
|
+
python -m attune.models.auth_cli recommend src/module.py
|
|
26
89
|
```
|
|
27
90
|
|
|
28
|
-
|
|
91
|
+
**💰 Automatic Cost Optimization** - Workflows choose the best auth method:
|
|
92
|
+
|
|
93
|
+
- Small/medium modules (<2000 LOC) → Claude subscription (free)
|
|
94
|
+
- Large modules (>2000 LOC) → Anthropic API (pay for what you need)
|
|
95
|
+
- 7 workflows integrated: document-gen, test-gen, code-review, bug-predict, security-audit, perf-audit, release-prep
|
|
96
|
+
- Auth mode tracking in all workflow outputs for telemetry
|
|
97
|
+
|
|
98
|
+
**🧪 Comprehensive Testing** - 7 new integration tests for auth strategy:
|
|
99
|
+
|
|
100
|
+
- All workflows tested with auth enabled/disabled
|
|
101
|
+
- API and subscription mode verification
|
|
102
|
+
- Cost tracking validation
|
|
103
|
+
|
|
104
|
+
**📖 Documentation** - 950+ lines across 3 guides:
|
|
105
|
+
|
|
106
|
+
- [AUTH_STRATEGY_GUIDE.md](docs/AUTH_STRATEGY_GUIDE.md) - User guide for configuration
|
|
107
|
+
- [AUTH_CLI_IMPLEMENTATION.md](docs/AUTH_CLI_IMPLEMENTATION.md) - CLI command reference
|
|
108
|
+
- [AUTH_WORKFLOW_INTEGRATIONS.md](docs/AUTH_WORKFLOW_INTEGRATIONS.md) - Integration patterns
|
|
109
|
+
|
|
110
|
+
[See Full Changelog](CHANGELOG.md#510---2026-01-29)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## What's New in v5.0.2
|
|
115
|
+
|
|
116
|
+
**💰 50% Cost Savings with Batch API** - Process non-urgent tasks asynchronously:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
empathy batch submit batch_requests.json # Submit batch job
|
|
120
|
+
empathy batch status msgbatch_abc123 # Check progress
|
|
121
|
+
empathy batch results msgbatch_abc123 output.json # Download results
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Perfect for: log analysis, report generation, bulk classification, test generation
|
|
125
|
+
|
|
126
|
+
**📊 Precise Token Counting** - >98% accurate cost tracking:
|
|
127
|
+
|
|
128
|
+
- Integrated Anthropic's `count_tokens()` API for billing-accurate measurements
|
|
129
|
+
- 3-tier fallback: API → tiktoken (local) → heuristic
|
|
130
|
+
- Cache-aware cost calculation (25% write markup, 90% read discount)
|
|
131
|
+
|
|
132
|
+
**📈 Cache Performance Monitoring** - Track your 20-30% caching savings:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
empathy cache stats # Show hit rates and cost savings
|
|
136
|
+
empathy cache stats --verbose # Detailed token metrics
|
|
137
|
+
empathy cache stats --format json # Machine-readable output
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**🧭 Adaptive Routing Analytics** - Intelligent tier recommendations:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
empathy routing stats <workflow> # Performance metrics
|
|
144
|
+
empathy routing check --all # Tier upgrade recommendations
|
|
145
|
+
empathy routing models --provider anthropic # Compare models
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**🔧 Dashboard Fixes** - All 6 agent coordination patterns now operational:
|
|
149
|
+
- Agent heartbeats displaying correctly
|
|
150
|
+
- Event streaming functional
|
|
151
|
+
- Coordination signals working
|
|
152
|
+
- Approval gates operational
|
|
153
|
+
|
|
154
|
+
[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)
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## What's New in v4.9.0
|
|
159
|
+
|
|
160
|
+
**⚡ 18x Faster Performance** - Massive performance gains through Phase 2 optimizations:
|
|
161
|
+
|
|
162
|
+
- **Redis Two-Tier Caching:** 2x faster memory operations (37,000x for cached keys)
|
|
163
|
+
- **Generator Expressions:** 99.9% memory reduction across 27 optimizations
|
|
164
|
+
- **Parallel Scanning:** Multi-core processing enabled by default (2-4x faster)
|
|
165
|
+
- **Incremental Scanning:** Git diff-based updates (10x faster)
|
|
166
|
+
|
|
167
|
+
**🧭 Natural Language Workflows** - Use plain English instead of workflow names:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
/workflows "find security vulnerabilities" # → security-audit
|
|
171
|
+
/workflows "check code performance" # → perf-audit
|
|
172
|
+
/workflows "predict bugs" # → bug-predict
|
|
173
|
+
/plan "review my code" # → code-review
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**📊 Real-World Performance:**
|
|
177
|
+
|
|
178
|
+
- Combined workflow: 3.59s → 0.2s (**18x faster**)
|
|
179
|
+
- Full scan: 3,472 files in 0.98s (was 3.59s)
|
|
180
|
+
- Redis cached operations: 37ms → 0.001ms
|
|
181
|
+
|
|
182
|
+
**🎯 Improved Navigation:**
|
|
183
|
+
|
|
184
|
+
- Split `/workflow` into `/workflows` (automated analysis) and `/plan` (planning/review)
|
|
185
|
+
- Clearer hub organization with better categorization
|
|
186
|
+
- Natural language routing matches intent to workflow
|
|
187
|
+
|
|
188
|
+
[See CHANGELOG.md](CHANGELOG.md) | [Performance Docs](docs/REDIS_OPTIMIZATION_SUMMARY.md)
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## What's New in v4.7.0
|
|
193
|
+
|
|
194
|
+
**$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.
|
|
29
195
|
|
|
30
|
-
-
|
|
31
|
-
- ✅ **Validate work** → Tests, coverage, security audit
|
|
32
|
-
- 🚀 **Ship changes** → Commit, PR, release
|
|
33
|
-
- 📚 **Understand** → Explain code, generate docs
|
|
196
|
+
**Socratic Workflows** - Interactive discovery through guided questions. Workflows ask what you need rather than requiring upfront configuration.
|
|
34
197
|
|
|
35
|
-
**
|
|
198
|
+
**Security Hardened** - Fixed critical vulnerabilities (path traversal, JWT, SSRF).
|
|
36
199
|
|
|
37
|
-
|
|
200
|
+
**Hub-Based Commands** - Organized workflows into intuitive command hubs.
|
|
38
201
|
|
|
39
202
|
---
|
|
40
203
|
|