attune-ai 2.0.0__py3-none-any.whl
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/__init__.py +358 -0
- attune/adaptive/__init__.py +13 -0
- attune/adaptive/task_complexity.py +127 -0
- attune/agent_monitoring.py +414 -0
- attune/cache/__init__.py +117 -0
- attune/cache/base.py +166 -0
- attune/cache/dependency_manager.py +256 -0
- attune/cache/hash_only.py +251 -0
- attune/cache/hybrid.py +457 -0
- attune/cache/storage.py +285 -0
- attune/cache_monitor.py +356 -0
- attune/cache_stats.py +298 -0
- attune/cli/__init__.py +152 -0
- attune/cli/__main__.py +12 -0
- attune/cli/commands/__init__.py +1 -0
- attune/cli/commands/batch.py +264 -0
- attune/cli/commands/cache.py +248 -0
- attune/cli/commands/help.py +331 -0
- attune/cli/commands/info.py +140 -0
- attune/cli/commands/inspect.py +436 -0
- attune/cli/commands/inspection.py +57 -0
- attune/cli/commands/memory.py +48 -0
- attune/cli/commands/metrics.py +92 -0
- attune/cli/commands/orchestrate.py +184 -0
- attune/cli/commands/patterns.py +207 -0
- attune/cli/commands/profiling.py +202 -0
- attune/cli/commands/provider.py +98 -0
- attune/cli/commands/routing.py +285 -0
- attune/cli/commands/setup.py +96 -0
- attune/cli/commands/status.py +235 -0
- attune/cli/commands/sync.py +166 -0
- attune/cli/commands/tier.py +121 -0
- attune/cli/commands/utilities.py +114 -0
- attune/cli/commands/workflow.py +579 -0
- attune/cli/core.py +32 -0
- attune/cli/parsers/__init__.py +68 -0
- attune/cli/parsers/batch.py +118 -0
- attune/cli/parsers/cache.py +65 -0
- attune/cli/parsers/help.py +41 -0
- attune/cli/parsers/info.py +26 -0
- attune/cli/parsers/inspect.py +66 -0
- attune/cli/parsers/metrics.py +42 -0
- attune/cli/parsers/orchestrate.py +61 -0
- attune/cli/parsers/patterns.py +54 -0
- attune/cli/parsers/provider.py +40 -0
- attune/cli/parsers/routing.py +110 -0
- attune/cli/parsers/setup.py +42 -0
- attune/cli/parsers/status.py +47 -0
- attune/cli/parsers/sync.py +31 -0
- attune/cli/parsers/tier.py +33 -0
- attune/cli/parsers/workflow.py +77 -0
- attune/cli/utils/__init__.py +1 -0
- attune/cli/utils/data.py +242 -0
- attune/cli/utils/helpers.py +68 -0
- attune/cli_legacy.py +3957 -0
- attune/cli_minimal.py +1159 -0
- attune/cli_router.py +437 -0
- attune/cli_unified.py +814 -0
- attune/config/__init__.py +66 -0
- attune/config/xml_config.py +286 -0
- attune/config.py +545 -0
- attune/coordination.py +870 -0
- attune/core.py +1511 -0
- attune/core_modules/__init__.py +15 -0
- attune/cost_tracker.py +626 -0
- attune/dashboard/__init__.py +41 -0
- attune/dashboard/app.py +512 -0
- attune/dashboard/simple_server.py +435 -0
- attune/dashboard/standalone_server.py +547 -0
- attune/discovery.py +306 -0
- attune/emergence.py +306 -0
- attune/exceptions.py +123 -0
- attune/feedback_loops.py +373 -0
- attune/hot_reload/README.md +473 -0
- attune/hot_reload/__init__.py +62 -0
- attune/hot_reload/config.py +83 -0
- attune/hot_reload/integration.py +229 -0
- attune/hot_reload/reloader.py +298 -0
- attune/hot_reload/watcher.py +183 -0
- attune/hot_reload/websocket.py +177 -0
- attune/levels.py +577 -0
- attune/leverage_points.py +441 -0
- attune/logging_config.py +261 -0
- attune/mcp/__init__.py +10 -0
- attune/mcp/server.py +506 -0
- attune/memory/__init__.py +237 -0
- attune/memory/claude_memory.py +469 -0
- attune/memory/config.py +224 -0
- attune/memory/control_panel.py +1290 -0
- attune/memory/control_panel_support.py +145 -0
- attune/memory/cross_session.py +845 -0
- attune/memory/edges.py +179 -0
- attune/memory/encryption.py +159 -0
- attune/memory/file_session.py +770 -0
- attune/memory/graph.py +570 -0
- attune/memory/long_term.py +913 -0
- attune/memory/long_term_types.py +99 -0
- attune/memory/mixins/__init__.py +25 -0
- attune/memory/mixins/backend_init_mixin.py +249 -0
- attune/memory/mixins/capabilities_mixin.py +208 -0
- attune/memory/mixins/handoff_mixin.py +208 -0
- attune/memory/mixins/lifecycle_mixin.py +49 -0
- attune/memory/mixins/long_term_mixin.py +352 -0
- attune/memory/mixins/promotion_mixin.py +109 -0
- attune/memory/mixins/short_term_mixin.py +182 -0
- attune/memory/nodes.py +179 -0
- attune/memory/redis_bootstrap.py +540 -0
- attune/memory/security/__init__.py +31 -0
- attune/memory/security/audit_logger.py +932 -0
- attune/memory/security/pii_scrubber.py +640 -0
- attune/memory/security/secrets_detector.py +678 -0
- attune/memory/short_term.py +2192 -0
- attune/memory/simple_storage.py +302 -0
- attune/memory/storage/__init__.py +15 -0
- attune/memory/storage_backend.py +167 -0
- attune/memory/summary_index.py +583 -0
- attune/memory/types.py +446 -0
- attune/memory/unified.py +182 -0
- attune/meta_workflows/__init__.py +74 -0
- attune/meta_workflows/agent_creator.py +248 -0
- attune/meta_workflows/builtin_templates.py +567 -0
- attune/meta_workflows/cli_commands/__init__.py +56 -0
- attune/meta_workflows/cli_commands/agent_commands.py +321 -0
- attune/meta_workflows/cli_commands/analytics_commands.py +442 -0
- attune/meta_workflows/cli_commands/config_commands.py +232 -0
- attune/meta_workflows/cli_commands/memory_commands.py +182 -0
- attune/meta_workflows/cli_commands/template_commands.py +354 -0
- attune/meta_workflows/cli_commands/workflow_commands.py +382 -0
- attune/meta_workflows/cli_meta_workflows.py +59 -0
- attune/meta_workflows/form_engine.py +292 -0
- attune/meta_workflows/intent_detector.py +409 -0
- attune/meta_workflows/models.py +569 -0
- attune/meta_workflows/pattern_learner.py +738 -0
- attune/meta_workflows/plan_generator.py +384 -0
- attune/meta_workflows/session_context.py +397 -0
- attune/meta_workflows/template_registry.py +229 -0
- attune/meta_workflows/workflow.py +984 -0
- attune/metrics/__init__.py +12 -0
- attune/metrics/collector.py +31 -0
- attune/metrics/prompt_metrics.py +194 -0
- attune/models/__init__.py +172 -0
- attune/models/__main__.py +13 -0
- attune/models/adaptive_routing.py +437 -0
- attune/models/auth_cli.py +444 -0
- attune/models/auth_strategy.py +450 -0
- attune/models/cli.py +655 -0
- attune/models/empathy_executor.py +354 -0
- attune/models/executor.py +257 -0
- attune/models/fallback.py +762 -0
- attune/models/provider_config.py +282 -0
- attune/models/registry.py +472 -0
- attune/models/tasks.py +359 -0
- attune/models/telemetry/__init__.py +71 -0
- attune/models/telemetry/analytics.py +594 -0
- attune/models/telemetry/backend.py +196 -0
- attune/models/telemetry/data_models.py +431 -0
- attune/models/telemetry/storage.py +489 -0
- attune/models/token_estimator.py +420 -0
- attune/models/validation.py +280 -0
- attune/monitoring/__init__.py +52 -0
- attune/monitoring/alerts.py +946 -0
- attune/monitoring/alerts_cli.py +448 -0
- attune/monitoring/multi_backend.py +271 -0
- attune/monitoring/otel_backend.py +362 -0
- attune/optimization/__init__.py +19 -0
- attune/optimization/context_optimizer.py +272 -0
- attune/orchestration/__init__.py +67 -0
- attune/orchestration/agent_templates.py +707 -0
- attune/orchestration/config_store.py +499 -0
- attune/orchestration/execution_strategies.py +2111 -0
- attune/orchestration/meta_orchestrator.py +1168 -0
- attune/orchestration/pattern_learner.py +696 -0
- attune/orchestration/real_tools.py +931 -0
- attune/pattern_cache.py +187 -0
- attune/pattern_library.py +542 -0
- attune/patterns/debugging/all_patterns.json +81 -0
- attune/patterns/debugging/workflow_20260107_1770825e.json +77 -0
- attune/patterns/refactoring_memory.json +89 -0
- attune/persistence.py +564 -0
- attune/platform_utils.py +265 -0
- attune/plugins/__init__.py +28 -0
- attune/plugins/base.py +361 -0
- attune/plugins/registry.py +268 -0
- attune/project_index/__init__.py +32 -0
- attune/project_index/cli.py +335 -0
- attune/project_index/index.py +667 -0
- attune/project_index/models.py +504 -0
- attune/project_index/reports.py +474 -0
- attune/project_index/scanner.py +777 -0
- attune/project_index/scanner_parallel.py +291 -0
- attune/prompts/__init__.py +61 -0
- attune/prompts/config.py +77 -0
- attune/prompts/context.py +177 -0
- attune/prompts/parser.py +285 -0
- attune/prompts/registry.py +313 -0
- attune/prompts/templates.py +208 -0
- attune/redis_config.py +302 -0
- attune/redis_memory.py +799 -0
- attune/resilience/__init__.py +56 -0
- attune/resilience/circuit_breaker.py +256 -0
- attune/resilience/fallback.py +179 -0
- attune/resilience/health.py +300 -0
- attune/resilience/retry.py +209 -0
- attune/resilience/timeout.py +135 -0
- attune/routing/__init__.py +43 -0
- attune/routing/chain_executor.py +433 -0
- attune/routing/classifier.py +217 -0
- attune/routing/smart_router.py +234 -0
- attune/routing/workflow_registry.py +343 -0
- attune/scaffolding/README.md +589 -0
- attune/scaffolding/__init__.py +35 -0
- attune/scaffolding/__main__.py +14 -0
- attune/scaffolding/cli.py +240 -0
- attune/scaffolding/templates/base_wizard.py.jinja2 +121 -0
- attune/scaffolding/templates/coach_wizard.py.jinja2 +321 -0
- attune/scaffolding/templates/domain_wizard.py.jinja2 +408 -0
- attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +203 -0
- attune/socratic/__init__.py +256 -0
- attune/socratic/ab_testing.py +958 -0
- attune/socratic/blueprint.py +533 -0
- attune/socratic/cli.py +703 -0
- attune/socratic/collaboration.py +1114 -0
- attune/socratic/domain_templates.py +924 -0
- attune/socratic/embeddings.py +738 -0
- attune/socratic/engine.py +794 -0
- attune/socratic/explainer.py +682 -0
- attune/socratic/feedback.py +772 -0
- attune/socratic/forms.py +629 -0
- attune/socratic/generator.py +732 -0
- attune/socratic/llm_analyzer.py +637 -0
- attune/socratic/mcp_server.py +702 -0
- attune/socratic/session.py +312 -0
- attune/socratic/storage.py +667 -0
- attune/socratic/success.py +730 -0
- attune/socratic/visual_editor.py +860 -0
- attune/socratic/web_ui.py +958 -0
- attune/telemetry/__init__.py +39 -0
- attune/telemetry/agent_coordination.py +475 -0
- attune/telemetry/agent_tracking.py +367 -0
- attune/telemetry/approval_gates.py +545 -0
- attune/telemetry/cli.py +1231 -0
- attune/telemetry/commands/__init__.py +14 -0
- attune/telemetry/commands/dashboard_commands.py +696 -0
- attune/telemetry/event_streaming.py +409 -0
- attune/telemetry/feedback_loop.py +567 -0
- attune/telemetry/usage_tracker.py +591 -0
- attune/templates.py +754 -0
- attune/test_generator/__init__.py +38 -0
- attune/test_generator/__main__.py +14 -0
- attune/test_generator/cli.py +234 -0
- attune/test_generator/generator.py +355 -0
- attune/test_generator/risk_analyzer.py +216 -0
- attune/test_generator/templates/unit_test.py.jinja2 +272 -0
- attune/tier_recommender.py +384 -0
- attune/tools.py +183 -0
- attune/trust/__init__.py +28 -0
- attune/trust/circuit_breaker.py +579 -0
- attune/trust_building.py +527 -0
- attune/validation/__init__.py +19 -0
- attune/validation/xml_validator.py +281 -0
- attune/vscode_bridge.py +173 -0
- attune/workflow_commands.py +780 -0
- attune/workflow_patterns/__init__.py +33 -0
- attune/workflow_patterns/behavior.py +249 -0
- attune/workflow_patterns/core.py +76 -0
- attune/workflow_patterns/output.py +99 -0
- attune/workflow_patterns/registry.py +255 -0
- attune/workflow_patterns/structural.py +288 -0
- attune/workflows/__init__.py +539 -0
- attune/workflows/autonomous_test_gen.py +1268 -0
- attune/workflows/base.py +2667 -0
- attune/workflows/batch_processing.py +342 -0
- attune/workflows/bug_predict.py +1084 -0
- attune/workflows/builder.py +273 -0
- attune/workflows/caching.py +253 -0
- attune/workflows/code_review.py +1048 -0
- attune/workflows/code_review_adapters.py +312 -0
- attune/workflows/code_review_pipeline.py +722 -0
- attune/workflows/config.py +645 -0
- attune/workflows/dependency_check.py +644 -0
- attune/workflows/document_gen/__init__.py +25 -0
- attune/workflows/document_gen/config.py +30 -0
- attune/workflows/document_gen/report_formatter.py +162 -0
- attune/workflows/document_gen/workflow.py +1426 -0
- attune/workflows/document_manager.py +216 -0
- attune/workflows/document_manager_README.md +134 -0
- attune/workflows/documentation_orchestrator.py +1205 -0
- attune/workflows/history.py +510 -0
- attune/workflows/keyboard_shortcuts/__init__.py +39 -0
- attune/workflows/keyboard_shortcuts/generators.py +391 -0
- attune/workflows/keyboard_shortcuts/parsers.py +416 -0
- attune/workflows/keyboard_shortcuts/prompts.py +295 -0
- attune/workflows/keyboard_shortcuts/schema.py +193 -0
- attune/workflows/keyboard_shortcuts/workflow.py +509 -0
- attune/workflows/llm_base.py +363 -0
- attune/workflows/manage_docs.py +87 -0
- attune/workflows/manage_docs_README.md +134 -0
- attune/workflows/manage_documentation.py +821 -0
- attune/workflows/new_sample_workflow1.py +149 -0
- attune/workflows/new_sample_workflow1_README.md +150 -0
- attune/workflows/orchestrated_health_check.py +849 -0
- attune/workflows/orchestrated_release_prep.py +600 -0
- attune/workflows/output.py +413 -0
- attune/workflows/perf_audit.py +863 -0
- attune/workflows/pr_review.py +762 -0
- attune/workflows/progress.py +785 -0
- attune/workflows/progress_server.py +322 -0
- attune/workflows/progressive/README 2.md +454 -0
- attune/workflows/progressive/README.md +454 -0
- attune/workflows/progressive/__init__.py +82 -0
- attune/workflows/progressive/cli.py +219 -0
- attune/workflows/progressive/core.py +488 -0
- attune/workflows/progressive/orchestrator.py +723 -0
- attune/workflows/progressive/reports.py +520 -0
- attune/workflows/progressive/telemetry.py +274 -0
- attune/workflows/progressive/test_gen.py +495 -0
- attune/workflows/progressive/workflow.py +589 -0
- attune/workflows/refactor_plan.py +694 -0
- attune/workflows/release_prep.py +895 -0
- attune/workflows/release_prep_crew.py +969 -0
- attune/workflows/research_synthesis.py +404 -0
- attune/workflows/routing.py +168 -0
- attune/workflows/secure_release.py +593 -0
- attune/workflows/security_adapters.py +297 -0
- attune/workflows/security_audit.py +1329 -0
- attune/workflows/security_audit_phase3.py +355 -0
- attune/workflows/seo_optimization.py +633 -0
- attune/workflows/step_config.py +234 -0
- attune/workflows/telemetry_mixin.py +269 -0
- attune/workflows/test5.py +125 -0
- attune/workflows/test5_README.md +158 -0
- attune/workflows/test_coverage_boost_crew.py +849 -0
- attune/workflows/test_gen/__init__.py +52 -0
- attune/workflows/test_gen/ast_analyzer.py +249 -0
- attune/workflows/test_gen/config.py +88 -0
- attune/workflows/test_gen/data_models.py +38 -0
- attune/workflows/test_gen/report_formatter.py +289 -0
- attune/workflows/test_gen/test_templates.py +381 -0
- attune/workflows/test_gen/workflow.py +655 -0
- attune/workflows/test_gen.py +54 -0
- attune/workflows/test_gen_behavioral.py +477 -0
- attune/workflows/test_gen_parallel.py +341 -0
- attune/workflows/test_lifecycle.py +526 -0
- attune/workflows/test_maintenance.py +627 -0
- attune/workflows/test_maintenance_cli.py +590 -0
- attune/workflows/test_maintenance_crew.py +840 -0
- attune/workflows/test_runner.py +622 -0
- attune/workflows/tier_tracking.py +531 -0
- attune/workflows/xml_enhanced_crew.py +285 -0
- attune_ai-2.0.0.dist-info/METADATA +1026 -0
- attune_ai-2.0.0.dist-info/RECORD +457 -0
- attune_ai-2.0.0.dist-info/WHEEL +5 -0
- attune_ai-2.0.0.dist-info/entry_points.txt +26 -0
- attune_ai-2.0.0.dist-info/licenses/LICENSE +201 -0
- attune_ai-2.0.0.dist-info/licenses/LICENSE_CHANGE_ANNOUNCEMENT.md +101 -0
- attune_ai-2.0.0.dist-info/top_level.txt +5 -0
- attune_healthcare/__init__.py +13 -0
- attune_healthcare/monitors/__init__.py +9 -0
- attune_healthcare/monitors/clinical_protocol_monitor.py +315 -0
- attune_healthcare/monitors/monitoring/__init__.py +44 -0
- attune_healthcare/monitors/monitoring/protocol_checker.py +300 -0
- attune_healthcare/monitors/monitoring/protocol_loader.py +214 -0
- attune_healthcare/monitors/monitoring/sensor_parsers.py +306 -0
- attune_healthcare/monitors/monitoring/trajectory_analyzer.py +389 -0
- attune_llm/README.md +553 -0
- attune_llm/__init__.py +28 -0
- attune_llm/agent_factory/__init__.py +53 -0
- attune_llm/agent_factory/adapters/__init__.py +85 -0
- attune_llm/agent_factory/adapters/autogen_adapter.py +312 -0
- attune_llm/agent_factory/adapters/crewai_adapter.py +483 -0
- attune_llm/agent_factory/adapters/haystack_adapter.py +298 -0
- attune_llm/agent_factory/adapters/langchain_adapter.py +362 -0
- attune_llm/agent_factory/adapters/langgraph_adapter.py +333 -0
- attune_llm/agent_factory/adapters/native.py +228 -0
- attune_llm/agent_factory/adapters/wizard_adapter.py +423 -0
- attune_llm/agent_factory/base.py +305 -0
- attune_llm/agent_factory/crews/__init__.py +67 -0
- attune_llm/agent_factory/crews/code_review.py +1113 -0
- attune_llm/agent_factory/crews/health_check.py +1262 -0
- attune_llm/agent_factory/crews/refactoring.py +1128 -0
- attune_llm/agent_factory/crews/security_audit.py +1018 -0
- attune_llm/agent_factory/decorators.py +287 -0
- attune_llm/agent_factory/factory.py +558 -0
- attune_llm/agent_factory/framework.py +193 -0
- attune_llm/agent_factory/memory_integration.py +328 -0
- attune_llm/agent_factory/resilient.py +320 -0
- attune_llm/agents_md/__init__.py +22 -0
- attune_llm/agents_md/loader.py +218 -0
- attune_llm/agents_md/parser.py +271 -0
- attune_llm/agents_md/registry.py +307 -0
- attune_llm/claude_memory.py +466 -0
- attune_llm/cli/__init__.py +8 -0
- attune_llm/cli/sync_claude.py +487 -0
- attune_llm/code_health.py +1313 -0
- attune_llm/commands/__init__.py +51 -0
- attune_llm/commands/context.py +375 -0
- attune_llm/commands/loader.py +301 -0
- attune_llm/commands/models.py +231 -0
- attune_llm/commands/parser.py +371 -0
- attune_llm/commands/registry.py +429 -0
- attune_llm/config/__init__.py +29 -0
- attune_llm/config/unified.py +291 -0
- attune_llm/context/__init__.py +22 -0
- attune_llm/context/compaction.py +455 -0
- attune_llm/context/manager.py +434 -0
- attune_llm/contextual_patterns.py +361 -0
- attune_llm/core.py +907 -0
- attune_llm/git_pattern_extractor.py +435 -0
- attune_llm/hooks/__init__.py +24 -0
- attune_llm/hooks/config.py +306 -0
- attune_llm/hooks/executor.py +289 -0
- attune_llm/hooks/registry.py +302 -0
- attune_llm/hooks/scripts/__init__.py +39 -0
- attune_llm/hooks/scripts/evaluate_session.py +201 -0
- attune_llm/hooks/scripts/first_time_init.py +285 -0
- attune_llm/hooks/scripts/pre_compact.py +207 -0
- attune_llm/hooks/scripts/session_end.py +183 -0
- attune_llm/hooks/scripts/session_start.py +163 -0
- attune_llm/hooks/scripts/suggest_compact.py +225 -0
- attune_llm/learning/__init__.py +30 -0
- attune_llm/learning/evaluator.py +438 -0
- attune_llm/learning/extractor.py +514 -0
- attune_llm/learning/storage.py +560 -0
- attune_llm/levels.py +227 -0
- attune_llm/pattern_confidence.py +414 -0
- attune_llm/pattern_resolver.py +272 -0
- attune_llm/pattern_summary.py +350 -0
- attune_llm/providers.py +967 -0
- attune_llm/routing/__init__.py +32 -0
- attune_llm/routing/model_router.py +362 -0
- attune_llm/security/IMPLEMENTATION_SUMMARY.md +413 -0
- attune_llm/security/PHASE2_COMPLETE.md +384 -0
- attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- attune_llm/security/QUICK_REFERENCE.md +316 -0
- attune_llm/security/README.md +262 -0
- attune_llm/security/__init__.py +62 -0
- attune_llm/security/audit_logger.py +929 -0
- attune_llm/security/audit_logger_example.py +152 -0
- attune_llm/security/pii_scrubber.py +640 -0
- attune_llm/security/secrets_detector.py +678 -0
- attune_llm/security/secrets_detector_example.py +304 -0
- attune_llm/security/secure_memdocs.py +1192 -0
- attune_llm/security/secure_memdocs_example.py +278 -0
- attune_llm/session_status.py +745 -0
- attune_llm/state.py +246 -0
- attune_llm/utils/__init__.py +5 -0
- attune_llm/utils/tokens.py +349 -0
- attune_software/SOFTWARE_PLUGIN_README.md +57 -0
- attune_software/__init__.py +13 -0
- attune_software/cli/__init__.py +120 -0
- attune_software/cli/inspect.py +362 -0
- attune_software/cli.py +574 -0
- attune_software/plugin.py +188 -0
- workflow_scaffolding/__init__.py +11 -0
- workflow_scaffolding/__main__.py +12 -0
- workflow_scaffolding/cli.py +206 -0
- workflow_scaffolding/generator.py +265 -0
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
# Wizard Scaffolding System
|
|
2
|
+
|
|
3
|
+
**Fast, pattern-based wizard creation for Empathy Framework**
|
|
4
|
+
|
|
5
|
+
Generate production-ready wizards in 10 minutes instead of 2 hours using proven patterns extracted from 78 existing wizards.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
- [Quick Start](#quick-start)
|
|
12
|
+
- [Methodologies](#methodologies)
|
|
13
|
+
- [Commands](#commands)
|
|
14
|
+
- [Patterns](#patterns)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Advanced Usage](#advanced-usage)
|
|
17
|
+
- [Troubleshooting](#troubleshooting)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
### Create Your First Wizard
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Recommended: Pattern-Compose methodology
|
|
27
|
+
python -m scaffolding create patient_intake --domain healthcare
|
|
28
|
+
|
|
29
|
+
# This generates:
|
|
30
|
+
# - attune_llm/wizards/patient_intake_wizard.py (production-ready)
|
|
31
|
+
# - tests/unit/wizards/test_patient_intake_wizard.py (comprehensive tests)
|
|
32
|
+
# - tests/unit/wizards/fixtures_patient_intake.py (test fixtures)
|
|
33
|
+
# - attune_llm/wizards/patient_intake_README.md (documentation)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### View Available Patterns
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
python -m scaffolding list-patterns
|
|
40
|
+
|
|
41
|
+
# Output:
|
|
42
|
+
# STRUCTURAL (3 patterns):
|
|
43
|
+
# - linear_flow | Linear Flow | Reusability: 0.92
|
|
44
|
+
# - phased_processing | Phased Processing | Reusability: 0.82
|
|
45
|
+
# - session_based | Session Based | Reusability: 0.95
|
|
46
|
+
# ...
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Interactive Mode
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
python -m scaffolding create my_wizard --interactive --domain finance
|
|
53
|
+
|
|
54
|
+
# Prompts:
|
|
55
|
+
# Select patterns (comma-separated numbers, or 'all' for all):
|
|
56
|
+
# 1. Linear Flow - Step-by-step linear wizard flow
|
|
57
|
+
# 2. Structured Fields - Strongly typed field validation
|
|
58
|
+
# 3. Approval Pattern - Preview before finalize workflow
|
|
59
|
+
# 4. Educational Banner - Level-based user guidance
|
|
60
|
+
# >
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Methodologies
|
|
66
|
+
|
|
67
|
+
### Pattern-Compose (RECOMMENDED)
|
|
68
|
+
|
|
69
|
+
**Best for:** Most wizards (95% of use cases)
|
|
70
|
+
|
|
71
|
+
**Workflow:**
|
|
72
|
+
1. Recommends patterns based on domain and type
|
|
73
|
+
2. User selects patterns (or uses all recommended)
|
|
74
|
+
3. Generates complete wizard from patterns
|
|
75
|
+
4. Generates comprehensive tests automatically
|
|
76
|
+
5. Generates documentation
|
|
77
|
+
|
|
78
|
+
**Pros:**
|
|
79
|
+
- ✅ Fast (10 minutes)
|
|
80
|
+
- ✅ Leverages proven patterns (from 78 existing wizards)
|
|
81
|
+
- ✅ Automatic test generation
|
|
82
|
+
- ✅ High quality, consistent code
|
|
83
|
+
- ✅ Great for newcomers
|
|
84
|
+
|
|
85
|
+
**Example:**
|
|
86
|
+
```bash
|
|
87
|
+
python -m scaffolding create soap_note --domain healthcare --methodology pattern
|
|
88
|
+
|
|
89
|
+
# Generated files:
|
|
90
|
+
# - attune_llm/wizards/soap_note_wizard.py
|
|
91
|
+
# - tests/unit/wizards/test_soap_note_wizard.py (with risk-based priorities)
|
|
92
|
+
# - tests/unit/wizards/fixtures_soap_note.py
|
|
93
|
+
# - attune_llm/wizards/soap_note_README.md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### TDD-First
|
|
97
|
+
|
|
98
|
+
**Best for:** Experienced developers who prefer test-driven development
|
|
99
|
+
|
|
100
|
+
**Workflow:**
|
|
101
|
+
1. Generates comprehensive tests FIRST
|
|
102
|
+
2. Generates minimal wizard skeleton
|
|
103
|
+
3. User implements to make tests pass
|
|
104
|
+
4. Iterative red-green-refactor cycle
|
|
105
|
+
|
|
106
|
+
**Pros:**
|
|
107
|
+
- ✅ Tests drive design
|
|
108
|
+
- ✅ 100% coverage from start
|
|
109
|
+
- ✅ Prevents scope creep
|
|
110
|
+
- ✅ Great for complex logic
|
|
111
|
+
|
|
112
|
+
**Cons:**
|
|
113
|
+
- ⚠️ Slower (requires implementation time)
|
|
114
|
+
- ⚠️ Assumes TDD experience
|
|
115
|
+
|
|
116
|
+
**Example:**
|
|
117
|
+
```bash
|
|
118
|
+
python -m scaffolding create debugging --methodology tdd --domain software
|
|
119
|
+
|
|
120
|
+
# Generated files (tests first!):
|
|
121
|
+
# - tests/unit/wizards/test_debugging_wizard.py (comprehensive tests)
|
|
122
|
+
# - coach_wizards/debugging_wizard.py (minimal skeleton)
|
|
123
|
+
# - tests/unit/wizards/fixtures_debugging.py
|
|
124
|
+
|
|
125
|
+
# Next steps:
|
|
126
|
+
# 1. Run tests (they should fail): pytest tests/unit/wizards/test_debugging_wizard.py
|
|
127
|
+
# 2. Implement wizard methods to make tests pass
|
|
128
|
+
# 3. Refactor for quality
|
|
129
|
+
# 4. Repeat until all tests pass
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Commands
|
|
135
|
+
|
|
136
|
+
### `create` - Create a New Wizard
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
python -m scaffolding create <name> [OPTIONS]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Required Arguments:**
|
|
143
|
+
- `<name>` - Wizard name (snake_case, e.g., `patient_intake`)
|
|
144
|
+
|
|
145
|
+
**Options:**
|
|
146
|
+
- `--domain, -d` - Domain (e.g., healthcare, finance, legal)
|
|
147
|
+
- `--type, -t` - Wizard type (choices: domain, coach, ai; default: domain)
|
|
148
|
+
- `--methodology, -m` - Methodology (choices: pattern, tdd; default: pattern)
|
|
149
|
+
- `--patterns, -p` - Comma-separated pattern IDs (manual selection)
|
|
150
|
+
- `--interactive, -i` - Interactive pattern selection
|
|
151
|
+
|
|
152
|
+
**Examples:**
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Basic usage (recommended patterns automatically selected)
|
|
156
|
+
python -m scaffolding create patient_intake --domain healthcare
|
|
157
|
+
|
|
158
|
+
# TDD methodology
|
|
159
|
+
python -m scaffolding create my_wizard --methodology tdd --domain finance
|
|
160
|
+
|
|
161
|
+
# Interactive pattern selection
|
|
162
|
+
python -m scaffolding create my_wizard --interactive --domain legal
|
|
163
|
+
|
|
164
|
+
# Manual pattern selection
|
|
165
|
+
python -m scaffolding create my_wizard --patterns linear_flow,approval,structured_fields
|
|
166
|
+
|
|
167
|
+
# Coach wizard type
|
|
168
|
+
python -m scaffolding create debugging --domain software --type coach
|
|
169
|
+
|
|
170
|
+
# AI wizard type
|
|
171
|
+
python -m scaffolding create code_fix --domain software --type ai
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### `list-patterns` - View Available Patterns
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
python -m scaffolding list-patterns
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Output:**
|
|
181
|
+
- Patterns grouped by category (structural, input, validation, behavior, empathy)
|
|
182
|
+
- Pattern ID, name, and reusability score
|
|
183
|
+
- Total patterns and average reusability
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Patterns
|
|
188
|
+
|
|
189
|
+
### Pattern Categories
|
|
190
|
+
|
|
191
|
+
| Category | Description | Example Patterns |
|
|
192
|
+
|----------|-------------|------------------|
|
|
193
|
+
| **Structural** | Wizard flow and architecture | linear_flow, phased_processing |
|
|
194
|
+
| **Input** | How wizards receive data | structured_fields, code_analysis_input |
|
|
195
|
+
| **Validation** | Data validation approaches | step_validation, approval |
|
|
196
|
+
| **Behavior** | Wizard capabilities | risk_assessment, prediction, fix_application |
|
|
197
|
+
| **Empathy** | User experience enhancements | empathy_level, educational_banner, user_guidance |
|
|
198
|
+
|
|
199
|
+
### Recommended Patterns by Domain
|
|
200
|
+
|
|
201
|
+
#### Healthcare Wizards
|
|
202
|
+
- `linear_flow` - Step-by-step workflow
|
|
203
|
+
- `structured_fields` - HIPAA-compliant field validation
|
|
204
|
+
- `approval` - Preview before finalize (critical for medical notes)
|
|
205
|
+
- `educational_banner` - Level 2+ empathy for guidance
|
|
206
|
+
|
|
207
|
+
#### Coach Wizards (Software Development)
|
|
208
|
+
- `code_analysis_input` - Parse and analyze code
|
|
209
|
+
- `risk_assessment` - Identify code risks
|
|
210
|
+
- `prediction` - Predict future issues
|
|
211
|
+
- `fix_application` - Suggest and apply fixes
|
|
212
|
+
|
|
213
|
+
#### AI Wizards
|
|
214
|
+
- `phased_processing` - Multi-phase execution
|
|
215
|
+
- `context_based_input` - Rich context handling
|
|
216
|
+
- `ai_enhancement` - LLM-powered capabilities
|
|
217
|
+
|
|
218
|
+
#### Finance Wizards
|
|
219
|
+
- `approval` - Required for financial transactions
|
|
220
|
+
- `risk_assessment` - Financial risk analysis
|
|
221
|
+
- `step_validation` - Strict step sequencing
|
|
222
|
+
|
|
223
|
+
### Pattern Details
|
|
224
|
+
|
|
225
|
+
Run `python -m scaffolding list-patterns` to see:
|
|
226
|
+
- All 15 patterns
|
|
227
|
+
- Descriptions
|
|
228
|
+
- Reusability scores (0.0-1.0)
|
|
229
|
+
- Which wizards use each pattern
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Examples
|
|
234
|
+
|
|
235
|
+
### Example 1: Healthcare SOAP Note Wizard
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
python -m scaffolding create soap_note --domain healthcare
|
|
239
|
+
|
|
240
|
+
# Generated wizard includes:
|
|
241
|
+
# - 5-step linear flow (Subjective, Objective, Assessment, Plan, Review)
|
|
242
|
+
# - Structured fields with validation
|
|
243
|
+
# - Preview before save (approval pattern)
|
|
244
|
+
# - Educational banners (Level 2 empathy)
|
|
245
|
+
# - Comprehensive tests (90%+ coverage recommended)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Generated Code Structure:**
|
|
249
|
+
```python
|
|
250
|
+
# soap_note_wizard.py
|
|
251
|
+
@router.post("/start")
|
|
252
|
+
async def start_wizard(request: StartRequest) -> StartResponse:
|
|
253
|
+
# Initialize wizard session
|
|
254
|
+
# Returns wizard_id, current_step, total_steps, educational_banner
|
|
255
|
+
|
|
256
|
+
@router.post("/{wizard_id}/step")
|
|
257
|
+
async def submit_step(wizard_id: str, submission: StepSubmission) -> StepResult:
|
|
258
|
+
# Submit step data with validation
|
|
259
|
+
# Returns next_step_guidance (Level 2 empathy)
|
|
260
|
+
|
|
261
|
+
@router.post("/{wizard_id}/preview")
|
|
262
|
+
async def generate_preview(wizard_id: str) -> PreviewResult:
|
|
263
|
+
# Generate preview for user review (approval pattern)
|
|
264
|
+
|
|
265
|
+
@router.post("/{wizard_id}/save")
|
|
266
|
+
async def save_with_approval(wizard_id: str, request: SaveRequest) -> SaveResult:
|
|
267
|
+
# Save with user approval
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Example 2: Debugging Coach Wizard
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
python -m scaffolding create debugging --domain software --type coach
|
|
274
|
+
|
|
275
|
+
# Generated wizard includes:
|
|
276
|
+
# - Code analysis endpoint
|
|
277
|
+
# - Risk assessment
|
|
278
|
+
# - Prediction of future issues
|
|
279
|
+
# - Fix suggestions
|
|
280
|
+
# - Fix application with approval
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Generated Code Structure:**
|
|
284
|
+
```python
|
|
285
|
+
# debugging_wizard.py
|
|
286
|
+
@router.post("/analyze")
|
|
287
|
+
async def analyze_code(request: AnalysisRequest) -> AnalysisResult:
|
|
288
|
+
# Analyze code
|
|
289
|
+
# Returns analysis, risk_assessment, predictions, suggested_fixes
|
|
290
|
+
|
|
291
|
+
@router.post("/fix/apply")
|
|
292
|
+
async def apply_fix(request: FixRequest) -> FixResult:
|
|
293
|
+
# Apply fix with user approval
|
|
294
|
+
# Returns modified_code
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Example 3: TDD Approach for Custom Wizard
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
python -m scaffolding create invoice_processor --methodology tdd --domain finance
|
|
301
|
+
|
|
302
|
+
# Step 1: Generated tests (these will fail initially)
|
|
303
|
+
# tests/unit/wizards/test_invoice_processor_wizard.py
|
|
304
|
+
|
|
305
|
+
# Step 2: Implement to make tests pass
|
|
306
|
+
# wizards/invoice_processor_wizard.py
|
|
307
|
+
|
|
308
|
+
# Step 3: Run tests iteratively
|
|
309
|
+
pytest tests/unit/wizards/test_invoice_processor_wizard.py
|
|
310
|
+
|
|
311
|
+
# Tests include:
|
|
312
|
+
# - CRITICAL (Priority 1): Approval workflow, step validation
|
|
313
|
+
# - HIGH (Priority 2): Risk assessment
|
|
314
|
+
# - MEDIUM (Priority 3): Validation points
|
|
315
|
+
# - LOW (Priority 4): Success path
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Advanced Usage
|
|
321
|
+
|
|
322
|
+
### Custom Output Directory
|
|
323
|
+
|
|
324
|
+
```python
|
|
325
|
+
from scaffolding.methodologies.pattern_compose import PatternCompose
|
|
326
|
+
from pathlib import Path
|
|
327
|
+
|
|
328
|
+
method = PatternCompose()
|
|
329
|
+
result = method.create_wizard(
|
|
330
|
+
name="custom_wizard",
|
|
331
|
+
domain="custom",
|
|
332
|
+
wizard_type="domain",
|
|
333
|
+
output_dir=Path("custom/wizards"),
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
print(f"Generated files: {result['files']}")
|
|
337
|
+
print(f"Patterns used: {result['patterns']}")
|
|
338
|
+
print(f"Next steps: {result['next_steps']}")
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Programmatic Pattern Selection
|
|
342
|
+
|
|
343
|
+
```python
|
|
344
|
+
from patterns import get_pattern_registry
|
|
345
|
+
|
|
346
|
+
registry = get_pattern_registry()
|
|
347
|
+
|
|
348
|
+
# Get recommendations
|
|
349
|
+
recommended = registry.recommend_for_wizard(
|
|
350
|
+
wizard_type="domain",
|
|
351
|
+
domain="healthcare",
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
# Filter patterns
|
|
355
|
+
selected = [p.id for p in recommended if p.reusability_score > 0.8]
|
|
356
|
+
|
|
357
|
+
# Create wizard with selected patterns
|
|
358
|
+
method = PatternCompose()
|
|
359
|
+
result = method.create_wizard(
|
|
360
|
+
name="my_wizard",
|
|
361
|
+
domain="healthcare",
|
|
362
|
+
wizard_type="domain",
|
|
363
|
+
selected_patterns=selected,
|
|
364
|
+
)
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Integration with Wizard API
|
|
368
|
+
|
|
369
|
+
After generating a wizard, register it with the Wizard API:
|
|
370
|
+
|
|
371
|
+
```python
|
|
372
|
+
# backend/api/wizard_api.py
|
|
373
|
+
from wizards.soap_note_wizard import router as soap_note_router
|
|
374
|
+
|
|
375
|
+
# Register router
|
|
376
|
+
app.include_router(soap_note_router, prefix="/api/wizard")
|
|
377
|
+
|
|
378
|
+
# Register wizard class (for hot-reload)
|
|
379
|
+
from wizards.soap_note_wizard import SOAPNoteWizard
|
|
380
|
+
register_wizard("soap_note", SOAPNoteWizard)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Hot-Reload Integration
|
|
384
|
+
|
|
385
|
+
Generated wizards work seamlessly with hot-reload:
|
|
386
|
+
|
|
387
|
+
```python
|
|
388
|
+
# Enable hot-reload
|
|
389
|
+
export HOT_RELOAD_ENABLED=true
|
|
390
|
+
export HOT_RELOAD_WATCH_DIRS="wizards,coach_wizards,attune_llm/wizards"
|
|
391
|
+
|
|
392
|
+
# Start server
|
|
393
|
+
uvicorn backend.main:app --reload
|
|
394
|
+
|
|
395
|
+
# Edit generated wizard - server auto-reloads!
|
|
396
|
+
# vim wizards/soap_note_wizard.py
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Troubleshooting
|
|
402
|
+
|
|
403
|
+
### Issue: Generated wizard has import errors
|
|
404
|
+
|
|
405
|
+
**Cause:** Module paths differ based on wizard type
|
|
406
|
+
|
|
407
|
+
**Solution:**
|
|
408
|
+
- Domain wizards → `attune_llm/wizards/`
|
|
409
|
+
- Coach wizards → `coach_wizards/`
|
|
410
|
+
- AI wizards → `wizards/`
|
|
411
|
+
|
|
412
|
+
Verify wizard was generated in correct directory based on `--type` flag.
|
|
413
|
+
|
|
414
|
+
### Issue: Tests fail after generation
|
|
415
|
+
|
|
416
|
+
**Cause:** Generated tests are placeholders for custom logic
|
|
417
|
+
|
|
418
|
+
**Solution:**
|
|
419
|
+
1. Review generated tests
|
|
420
|
+
2. Implement custom logic in wizard
|
|
421
|
+
3. Update test expectations
|
|
422
|
+
4. Run: `pytest tests/unit/wizards/test_<name>_wizard.py`
|
|
423
|
+
|
|
424
|
+
### Issue: Pattern not found
|
|
425
|
+
|
|
426
|
+
**Cause:** Invalid pattern ID in `--patterns` flag
|
|
427
|
+
|
|
428
|
+
**Solution:**
|
|
429
|
+
Run `python -m scaffolding list-patterns` to see valid pattern IDs.
|
|
430
|
+
|
|
431
|
+
### Issue: Template rendering error
|
|
432
|
+
|
|
433
|
+
**Cause:** Missing context variables for template
|
|
434
|
+
|
|
435
|
+
**Solution:**
|
|
436
|
+
File a bug with:
|
|
437
|
+
```bash
|
|
438
|
+
python -m scaffolding create <name> --domain <domain> --type <type> 2>&1 | tee error.log
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Issue: Permission denied creating files
|
|
442
|
+
|
|
443
|
+
**Cause:** Output directory doesn't exist or lacks write permissions
|
|
444
|
+
|
|
445
|
+
**Solution:**
|
|
446
|
+
```bash
|
|
447
|
+
# Create output directory
|
|
448
|
+
mkdir -p wizards coach_wizards attune_llm/wizards tests/unit/wizards
|
|
449
|
+
|
|
450
|
+
# Fix permissions
|
|
451
|
+
chmod -R u+w wizards coach_wizards attune_llm/wizards tests/unit/wizards
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## Architecture
|
|
457
|
+
|
|
458
|
+
### How It Works
|
|
459
|
+
|
|
460
|
+
1. **Pattern Registry** - 15 pre-loaded patterns from 78 existing wizards
|
|
461
|
+
2. **Pattern Recommendation** - AI-powered pattern selection based on domain/type
|
|
462
|
+
3. **Template Selection** - Choose template based on wizard type and patterns
|
|
463
|
+
4. **Code Generation** - Jinja2 rendering with pattern-specific logic
|
|
464
|
+
5. **Test Generation** - Risk-based test prioritization via TestGenerator
|
|
465
|
+
6. **Documentation** - Auto-generated README with usage examples
|
|
466
|
+
|
|
467
|
+
### Directory Structure
|
|
468
|
+
|
|
469
|
+
```
|
|
470
|
+
scaffolding/
|
|
471
|
+
├── __init__.py # Package exports
|
|
472
|
+
├── __main__.py # Module entry point
|
|
473
|
+
├── cli.py # CLI commands (create, list-patterns)
|
|
474
|
+
├── README.md # This file
|
|
475
|
+
├── methodologies/
|
|
476
|
+
│ ├── __init__.py
|
|
477
|
+
│ ├── pattern_compose.py # Pattern-Compose methodology (RECOMMENDED)
|
|
478
|
+
│ └── tdd_first.py # TDD-First methodology
|
|
479
|
+
└── templates/
|
|
480
|
+
├── linear_flow_wizard.py.jinja2 # Linear flow template
|
|
481
|
+
├── coach_wizard.py.jinja2 # Coach wizard template
|
|
482
|
+
├── domain_wizard.py.jinja2 # Domain wizard template
|
|
483
|
+
└── base_wizard.py.jinja2 # Generic fallback
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### Integration Points
|
|
487
|
+
|
|
488
|
+
- **patterns/** - Pattern library and registry
|
|
489
|
+
- **test_generator/** - Risk-driven test generation
|
|
490
|
+
- **hot_reload/** - Hot-reload infrastructure for development
|
|
491
|
+
- **backend/api/wizard_api.py** - Wizard registration
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Next Steps
|
|
496
|
+
|
|
497
|
+
1. **Create your first wizard:**
|
|
498
|
+
```bash
|
|
499
|
+
python -m scaffolding create my_wizard --domain healthcare --interactive
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
2. **Review generated code:**
|
|
503
|
+
- Wizard implementation
|
|
504
|
+
- Generated tests
|
|
505
|
+
- README documentation
|
|
506
|
+
|
|
507
|
+
3. **Register with API:**
|
|
508
|
+
- Add to `backend/api/wizard_api.py`
|
|
509
|
+
- Test via API: `POST /api/wizard/my_wizard/start`
|
|
510
|
+
|
|
511
|
+
4. **Enable hot-reload:**
|
|
512
|
+
```bash
|
|
513
|
+
export HOT_RELOAD_ENABLED=true
|
|
514
|
+
uvicorn backend.main:app --reload
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
5. **Iterate and customize:**
|
|
518
|
+
- Edit generated wizard
|
|
519
|
+
- Add domain-specific logic
|
|
520
|
+
- Run tests: `pytest tests/unit/wizards/test_my_wizard_wizard.py`
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
## Contributing
|
|
525
|
+
|
|
526
|
+
### Adding New Patterns
|
|
527
|
+
|
|
528
|
+
1. Define pattern in `patterns/<category>.py`
|
|
529
|
+
2. Register in `patterns/registry.py`
|
|
530
|
+
3. Add pattern detection logic
|
|
531
|
+
4. Update recommendation algorithm
|
|
532
|
+
5. Add tests
|
|
533
|
+
|
|
534
|
+
### Adding New Templates
|
|
535
|
+
|
|
536
|
+
1. Create template in `scaffolding/templates/`
|
|
537
|
+
2. Update `PatternCompose._get_template_name()`
|
|
538
|
+
3. Add template context variables
|
|
539
|
+
4. Test with various pattern combinations
|
|
540
|
+
|
|
541
|
+
### Improving Methodologies
|
|
542
|
+
|
|
543
|
+
1. Create new methodology in `scaffolding/methodologies/`
|
|
544
|
+
2. Implement `create_wizard()` method
|
|
545
|
+
3. Add CLI integration in `scaffolding/cli.py`
|
|
546
|
+
4. Document in this README
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
## Performance
|
|
551
|
+
|
|
552
|
+
- **Pattern-Compose:** ~10 minutes (12x faster than manual)
|
|
553
|
+
- **TDD-First:** ~30 minutes (4x faster than manual)
|
|
554
|
+
- **Manual wizard creation:** ~2 hours
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## FAQ
|
|
559
|
+
|
|
560
|
+
**Q: Which methodology should I use?**
|
|
561
|
+
A: Pattern-Compose for 95% of wizards. TDD-First if you're experienced with TDD and have complex logic.
|
|
562
|
+
|
|
563
|
+
**Q: Can I modify generated code?**
|
|
564
|
+
A: Absolutely! Generated code is a starting point. Customize as needed.
|
|
565
|
+
|
|
566
|
+
**Q: How do I add custom patterns?**
|
|
567
|
+
A: See [Contributing](#contributing) → Adding New Patterns
|
|
568
|
+
|
|
569
|
+
**Q: Can I use multiple patterns?**
|
|
570
|
+
A: Yes! Most wizards use 3-5 patterns. Use `--interactive` to select.
|
|
571
|
+
|
|
572
|
+
**Q: How do I test generated wizards?**
|
|
573
|
+
A: Run `pytest tests/unit/wizards/test_<name>_wizard.py`
|
|
574
|
+
|
|
575
|
+
**Q: What's the difference between wizard types?**
|
|
576
|
+
A: Domain (business logic), Coach (code analysis), AI (LLM-powered)
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## License
|
|
581
|
+
|
|
582
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
583
|
+
Licensed under Fair Source 0.9
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
**Generated by:** Empathy Framework - Wizard Factory
|
|
588
|
+
**Version:** 1.8.0-alpha
|
|
589
|
+
**Last Updated:** 2025-01-05
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Methodology Scaffolding for Workflow Factory.
|
|
2
|
+
|
|
3
|
+
Provides CLI tools and methodologies for creating new workflows quickly
|
|
4
|
+
using proven patterns.
|
|
5
|
+
|
|
6
|
+
Methodologies:
|
|
7
|
+
- Pattern-Compose: Select patterns, compose workflow (Recommended)
|
|
8
|
+
- TDD-First: Write tests first, implement workflow
|
|
9
|
+
- Prototype-Refine: Quick prototype, then refactor
|
|
10
|
+
- Risk-Driven: Focus on high-risk paths first
|
|
11
|
+
- Empathy-Centered: Design for user experience
|
|
12
|
+
|
|
13
|
+
Usage:
|
|
14
|
+
# Create workflow using Pattern-Compose (recommended)
|
|
15
|
+
python -m scaffolding create my_workflow --domain healthcare
|
|
16
|
+
|
|
17
|
+
# Create with specific methodology
|
|
18
|
+
python -m scaffolding create my_workflow --methodology tdd
|
|
19
|
+
|
|
20
|
+
# Interactive mode
|
|
21
|
+
python -m scaffolding create my_workflow --interactive
|
|
22
|
+
|
|
23
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
24
|
+
Licensed under Fair Source 0.9
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from .methodologies.pattern_compose import PatternCompose
|
|
28
|
+
from .methodologies.tdd_first import TDDFirst
|
|
29
|
+
|
|
30
|
+
__all__ = [
|
|
31
|
+
"PatternCompose",
|
|
32
|
+
"TDDFirst",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
__version__ = "1.0.0"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Scaffolding module entry point.
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
python -m scaffolding create my_workflow --domain healthcare
|
|
5
|
+
python -m scaffolding list-patterns
|
|
6
|
+
|
|
7
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
8
|
+
Licensed under Fair Source 0.9
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from .cli import main
|
|
12
|
+
|
|
13
|
+
if __name__ == "__main__":
|
|
14
|
+
main()
|