empathy-framework 5.2.1__py3-none-any.whl โ†’ 5.4.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.
Files changed (480) hide show
  1. empathy_framework-5.4.0.dist-info/METADATA +47 -0
  2. empathy_framework-5.4.0.dist-info/RECORD +8 -0
  3. {empathy_framework-5.2.1.dist-info โ†’ empathy_framework-5.4.0.dist-info}/top_level.txt +0 -1
  4. empathy_healthcare_plugin/__init__.py +12 -11
  5. empathy_llm_toolkit/__init__.py +12 -26
  6. empathy_os/__init__.py +12 -356
  7. empathy_software_plugin/__init__.py +12 -11
  8. empathy_framework-5.2.1.dist-info/METADATA +0 -1002
  9. empathy_framework-5.2.1.dist-info/RECORD +0 -478
  10. empathy_framework-5.2.1.dist-info/entry_points.txt +0 -26
  11. empathy_framework-5.2.1.dist-info/licenses/LICENSE +0 -201
  12. empathy_framework-5.2.1.dist-info/licenses/LICENSE_CHANGE_ANNOUNCEMENT.md +0 -101
  13. empathy_healthcare_plugin/monitors/__init__.py +0 -9
  14. empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +0 -315
  15. empathy_healthcare_plugin/monitors/monitoring/__init__.py +0 -44
  16. empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +0 -300
  17. empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +0 -214
  18. empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +0 -306
  19. empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +0 -389
  20. empathy_healthcare_plugin/protocols/cardiac.json +0 -93
  21. empathy_healthcare_plugin/protocols/post_operative.json +0 -92
  22. empathy_healthcare_plugin/protocols/respiratory.json +0 -92
  23. empathy_healthcare_plugin/protocols/sepsis.json +0 -141
  24. empathy_llm_toolkit/README.md +0 -553
  25. empathy_llm_toolkit/agent_factory/__init__.py +0 -53
  26. empathy_llm_toolkit/agent_factory/adapters/__init__.py +0 -85
  27. empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +0 -312
  28. empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +0 -483
  29. empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +0 -298
  30. empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +0 -362
  31. empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +0 -333
  32. empathy_llm_toolkit/agent_factory/adapters/native.py +0 -228
  33. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +0 -423
  34. empathy_llm_toolkit/agent_factory/base.py +0 -305
  35. empathy_llm_toolkit/agent_factory/crews/__init__.py +0 -67
  36. empathy_llm_toolkit/agent_factory/crews/code_review.py +0 -1113
  37. empathy_llm_toolkit/agent_factory/crews/health_check.py +0 -1262
  38. empathy_llm_toolkit/agent_factory/crews/refactoring.py +0 -1128
  39. empathy_llm_toolkit/agent_factory/crews/security_audit.py +0 -1018
  40. empathy_llm_toolkit/agent_factory/decorators.py +0 -287
  41. empathy_llm_toolkit/agent_factory/factory.py +0 -558
  42. empathy_llm_toolkit/agent_factory/framework.py +0 -193
  43. empathy_llm_toolkit/agent_factory/memory_integration.py +0 -328
  44. empathy_llm_toolkit/agent_factory/resilient.py +0 -320
  45. empathy_llm_toolkit/agents_md/__init__.py +0 -22
  46. empathy_llm_toolkit/agents_md/loader.py +0 -218
  47. empathy_llm_toolkit/agents_md/parser.py +0 -271
  48. empathy_llm_toolkit/agents_md/registry.py +0 -307
  49. empathy_llm_toolkit/claude_memory.py +0 -466
  50. empathy_llm_toolkit/cli/__init__.py +0 -8
  51. empathy_llm_toolkit/cli/sync_claude.py +0 -487
  52. empathy_llm_toolkit/code_health.py +0 -1313
  53. empathy_llm_toolkit/commands/__init__.py +0 -51
  54. empathy_llm_toolkit/commands/context.py +0 -375
  55. empathy_llm_toolkit/commands/loader.py +0 -301
  56. empathy_llm_toolkit/commands/models.py +0 -231
  57. empathy_llm_toolkit/commands/parser.py +0 -371
  58. empathy_llm_toolkit/commands/registry.py +0 -429
  59. empathy_llm_toolkit/config/__init__.py +0 -29
  60. empathy_llm_toolkit/config/unified.py +0 -291
  61. empathy_llm_toolkit/context/__init__.py +0 -22
  62. empathy_llm_toolkit/context/compaction.py +0 -455
  63. empathy_llm_toolkit/context/manager.py +0 -434
  64. empathy_llm_toolkit/contextual_patterns.py +0 -361
  65. empathy_llm_toolkit/core.py +0 -907
  66. empathy_llm_toolkit/git_pattern_extractor.py +0 -435
  67. empathy_llm_toolkit/hooks/__init__.py +0 -24
  68. empathy_llm_toolkit/hooks/config.py +0 -306
  69. empathy_llm_toolkit/hooks/executor.py +0 -289
  70. empathy_llm_toolkit/hooks/registry.py +0 -302
  71. empathy_llm_toolkit/hooks/scripts/__init__.py +0 -39
  72. empathy_llm_toolkit/hooks/scripts/evaluate_session.py +0 -201
  73. empathy_llm_toolkit/hooks/scripts/first_time_init.py +0 -285
  74. empathy_llm_toolkit/hooks/scripts/pre_compact.py +0 -207
  75. empathy_llm_toolkit/hooks/scripts/session_end.py +0 -183
  76. empathy_llm_toolkit/hooks/scripts/session_start.py +0 -163
  77. empathy_llm_toolkit/hooks/scripts/suggest_compact.py +0 -225
  78. empathy_llm_toolkit/learning/__init__.py +0 -30
  79. empathy_llm_toolkit/learning/evaluator.py +0 -438
  80. empathy_llm_toolkit/learning/extractor.py +0 -514
  81. empathy_llm_toolkit/learning/storage.py +0 -560
  82. empathy_llm_toolkit/levels.py +0 -227
  83. empathy_llm_toolkit/pattern_confidence.py +0 -414
  84. empathy_llm_toolkit/pattern_resolver.py +0 -272
  85. empathy_llm_toolkit/pattern_summary.py +0 -350
  86. empathy_llm_toolkit/providers.py +0 -967
  87. empathy_llm_toolkit/routing/__init__.py +0 -32
  88. empathy_llm_toolkit/routing/model_router.py +0 -362
  89. empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +0 -413
  90. empathy_llm_toolkit/security/PHASE2_COMPLETE.md +0 -384
  91. empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +0 -271
  92. empathy_llm_toolkit/security/QUICK_REFERENCE.md +0 -316
  93. empathy_llm_toolkit/security/README.md +0 -262
  94. empathy_llm_toolkit/security/__init__.py +0 -62
  95. empathy_llm_toolkit/security/audit_logger.py +0 -929
  96. empathy_llm_toolkit/security/audit_logger_example.py +0 -152
  97. empathy_llm_toolkit/security/pii_scrubber.py +0 -640
  98. empathy_llm_toolkit/security/secrets_detector.py +0 -678
  99. empathy_llm_toolkit/security/secrets_detector_example.py +0 -304
  100. empathy_llm_toolkit/security/secure_memdocs.py +0 -1192
  101. empathy_llm_toolkit/security/secure_memdocs_example.py +0 -278
  102. empathy_llm_toolkit/session_status.py +0 -745
  103. empathy_llm_toolkit/state.py +0 -246
  104. empathy_llm_toolkit/utils/__init__.py +0 -5
  105. empathy_llm_toolkit/utils/tokens.py +0 -349
  106. empathy_os/adaptive/__init__.py +0 -13
  107. empathy_os/adaptive/task_complexity.py +0 -127
  108. empathy_os/agent_monitoring.py +0 -414
  109. empathy_os/cache/__init__.py +0 -117
  110. empathy_os/cache/base.py +0 -166
  111. empathy_os/cache/dependency_manager.py +0 -256
  112. empathy_os/cache/hash_only.py +0 -251
  113. empathy_os/cache/hybrid.py +0 -453
  114. empathy_os/cache/storage.py +0 -285
  115. empathy_os/cache_monitor.py +0 -356
  116. empathy_os/cache_stats.py +0 -298
  117. empathy_os/cli/__init__.py +0 -152
  118. empathy_os/cli/__main__.py +0 -12
  119. empathy_os/cli/commands/__init__.py +0 -1
  120. empathy_os/cli/commands/batch.py +0 -256
  121. empathy_os/cli/commands/cache.py +0 -248
  122. empathy_os/cli/commands/help.py +0 -331
  123. empathy_os/cli/commands/info.py +0 -140
  124. empathy_os/cli/commands/inspect.py +0 -436
  125. empathy_os/cli/commands/inspection.py +0 -57
  126. empathy_os/cli/commands/memory.py +0 -48
  127. empathy_os/cli/commands/metrics.py +0 -92
  128. empathy_os/cli/commands/orchestrate.py +0 -184
  129. empathy_os/cli/commands/patterns.py +0 -207
  130. empathy_os/cli/commands/profiling.py +0 -198
  131. empathy_os/cli/commands/provider.py +0 -98
  132. empathy_os/cli/commands/routing.py +0 -285
  133. empathy_os/cli/commands/setup.py +0 -96
  134. empathy_os/cli/commands/status.py +0 -235
  135. empathy_os/cli/commands/sync.py +0 -166
  136. empathy_os/cli/commands/tier.py +0 -121
  137. empathy_os/cli/commands/utilities.py +0 -114
  138. empathy_os/cli/commands/workflow.py +0 -575
  139. empathy_os/cli/core.py +0 -32
  140. empathy_os/cli/parsers/__init__.py +0 -68
  141. empathy_os/cli/parsers/batch.py +0 -118
  142. empathy_os/cli/parsers/cache 2.py +0 -65
  143. empathy_os/cli/parsers/cache.py +0 -65
  144. empathy_os/cli/parsers/help.py +0 -41
  145. empathy_os/cli/parsers/info.py +0 -26
  146. empathy_os/cli/parsers/inspect.py +0 -66
  147. empathy_os/cli/parsers/metrics.py +0 -42
  148. empathy_os/cli/parsers/orchestrate.py +0 -61
  149. empathy_os/cli/parsers/patterns.py +0 -54
  150. empathy_os/cli/parsers/provider.py +0 -40
  151. empathy_os/cli/parsers/routing.py +0 -110
  152. empathy_os/cli/parsers/setup.py +0 -42
  153. empathy_os/cli/parsers/status.py +0 -47
  154. empathy_os/cli/parsers/sync.py +0 -31
  155. empathy_os/cli/parsers/tier.py +0 -33
  156. empathy_os/cli/parsers/workflow.py +0 -77
  157. empathy_os/cli/utils/__init__.py +0 -1
  158. empathy_os/cli/utils/data.py +0 -242
  159. empathy_os/cli/utils/helpers.py +0 -68
  160. empathy_os/cli_legacy.py +0 -3957
  161. empathy_os/cli_minimal.py +0 -1159
  162. empathy_os/cli_router 2.py +0 -416
  163. empathy_os/cli_router.py +0 -437
  164. empathy_os/cli_unified.py +0 -814
  165. empathy_os/config/__init__.py +0 -66
  166. empathy_os/config/xml_config.py +0 -286
  167. empathy_os/config.py +0 -532
  168. empathy_os/coordination.py +0 -870
  169. empathy_os/core.py +0 -1511
  170. empathy_os/core_modules/__init__.py +0 -15
  171. empathy_os/cost_tracker.py +0 -626
  172. empathy_os/dashboard/__init__.py +0 -41
  173. empathy_os/dashboard/app 2.py +0 -512
  174. empathy_os/dashboard/app.py +0 -512
  175. empathy_os/dashboard/simple_server 2.py +0 -403
  176. empathy_os/dashboard/simple_server.py +0 -403
  177. empathy_os/dashboard/standalone_server 2.py +0 -536
  178. empathy_os/dashboard/standalone_server.py +0 -547
  179. empathy_os/discovery.py +0 -306
  180. empathy_os/emergence.py +0 -306
  181. empathy_os/exceptions.py +0 -123
  182. empathy_os/feedback_loops.py +0 -373
  183. empathy_os/hot_reload/README.md +0 -473
  184. empathy_os/hot_reload/__init__.py +0 -62
  185. empathy_os/hot_reload/config.py +0 -83
  186. empathy_os/hot_reload/integration.py +0 -229
  187. empathy_os/hot_reload/reloader.py +0 -298
  188. empathy_os/hot_reload/watcher.py +0 -183
  189. empathy_os/hot_reload/websocket.py +0 -177
  190. empathy_os/levels.py +0 -577
  191. empathy_os/leverage_points.py +0 -441
  192. empathy_os/logging_config.py +0 -261
  193. empathy_os/mcp/__init__.py +0 -10
  194. empathy_os/mcp/server.py +0 -506
  195. empathy_os/memory/__init__.py +0 -237
  196. empathy_os/memory/claude_memory.py +0 -469
  197. empathy_os/memory/config.py +0 -224
  198. empathy_os/memory/control_panel.py +0 -1290
  199. empathy_os/memory/control_panel_support.py +0 -145
  200. empathy_os/memory/cross_session.py +0 -845
  201. empathy_os/memory/edges.py +0 -179
  202. empathy_os/memory/encryption.py +0 -159
  203. empathy_os/memory/file_session.py +0 -770
  204. empathy_os/memory/graph.py +0 -570
  205. empathy_os/memory/long_term.py +0 -913
  206. empathy_os/memory/long_term_types.py +0 -99
  207. empathy_os/memory/mixins/__init__.py +0 -25
  208. empathy_os/memory/mixins/backend_init_mixin.py +0 -244
  209. empathy_os/memory/mixins/capabilities_mixin.py +0 -199
  210. empathy_os/memory/mixins/handoff_mixin.py +0 -208
  211. empathy_os/memory/mixins/lifecycle_mixin.py +0 -49
  212. empathy_os/memory/mixins/long_term_mixin.py +0 -352
  213. empathy_os/memory/mixins/promotion_mixin.py +0 -109
  214. empathy_os/memory/mixins/short_term_mixin.py +0 -182
  215. empathy_os/memory/nodes.py +0 -179
  216. empathy_os/memory/redis_bootstrap.py +0 -540
  217. empathy_os/memory/security/__init__.py +0 -31
  218. empathy_os/memory/security/audit_logger.py +0 -932
  219. empathy_os/memory/security/pii_scrubber.py +0 -640
  220. empathy_os/memory/security/secrets_detector.py +0 -678
  221. empathy_os/memory/short_term.py +0 -2150
  222. empathy_os/memory/simple_storage.py +0 -302
  223. empathy_os/memory/storage/__init__.py +0 -15
  224. empathy_os/memory/storage_backend.py +0 -167
  225. empathy_os/memory/summary_index.py +0 -583
  226. empathy_os/memory/types.py +0 -441
  227. empathy_os/memory/unified.py +0 -182
  228. empathy_os/meta_workflows/__init__.py +0 -74
  229. empathy_os/meta_workflows/agent_creator.py +0 -248
  230. empathy_os/meta_workflows/builtin_templates.py +0 -567
  231. empathy_os/meta_workflows/cli_commands/__init__.py +0 -56
  232. empathy_os/meta_workflows/cli_commands/agent_commands.py +0 -321
  233. empathy_os/meta_workflows/cli_commands/analytics_commands.py +0 -442
  234. empathy_os/meta_workflows/cli_commands/config_commands.py +0 -232
  235. empathy_os/meta_workflows/cli_commands/memory_commands.py +0 -182
  236. empathy_os/meta_workflows/cli_commands/template_commands.py +0 -354
  237. empathy_os/meta_workflows/cli_commands/workflow_commands.py +0 -382
  238. empathy_os/meta_workflows/cli_meta_workflows.py +0 -59
  239. empathy_os/meta_workflows/form_engine.py +0 -292
  240. empathy_os/meta_workflows/intent_detector.py +0 -409
  241. empathy_os/meta_workflows/models.py +0 -569
  242. empathy_os/meta_workflows/pattern_learner.py +0 -738
  243. empathy_os/meta_workflows/plan_generator.py +0 -384
  244. empathy_os/meta_workflows/session_context.py +0 -397
  245. empathy_os/meta_workflows/template_registry.py +0 -229
  246. empathy_os/meta_workflows/workflow.py +0 -984
  247. empathy_os/metrics/__init__.py +0 -12
  248. empathy_os/metrics/collector.py +0 -31
  249. empathy_os/metrics/prompt_metrics.py +0 -194
  250. empathy_os/models/__init__.py +0 -172
  251. empathy_os/models/__main__.py +0 -13
  252. empathy_os/models/adaptive_routing 2.py +0 -437
  253. empathy_os/models/adaptive_routing.py +0 -437
  254. empathy_os/models/auth_cli.py +0 -444
  255. empathy_os/models/auth_strategy.py +0 -450
  256. empathy_os/models/cli.py +0 -655
  257. empathy_os/models/empathy_executor.py +0 -354
  258. empathy_os/models/executor.py +0 -257
  259. empathy_os/models/fallback.py +0 -762
  260. empathy_os/models/provider_config.py +0 -282
  261. empathy_os/models/registry.py +0 -472
  262. empathy_os/models/tasks.py +0 -359
  263. empathy_os/models/telemetry/__init__.py +0 -71
  264. empathy_os/models/telemetry/analytics.py +0 -594
  265. empathy_os/models/telemetry/backend.py +0 -196
  266. empathy_os/models/telemetry/data_models.py +0 -431
  267. empathy_os/models/telemetry/storage.py +0 -489
  268. empathy_os/models/token_estimator.py +0 -420
  269. empathy_os/models/validation.py +0 -280
  270. empathy_os/monitoring/__init__.py +0 -52
  271. empathy_os/monitoring/alerts.py +0 -946
  272. empathy_os/monitoring/alerts_cli.py +0 -448
  273. empathy_os/monitoring/multi_backend.py +0 -271
  274. empathy_os/monitoring/otel_backend.py +0 -362
  275. empathy_os/optimization/__init__.py +0 -19
  276. empathy_os/optimization/context_optimizer.py +0 -272
  277. empathy_os/orchestration/__init__.py +0 -67
  278. empathy_os/orchestration/agent_templates.py +0 -707
  279. empathy_os/orchestration/config_store.py +0 -499
  280. empathy_os/orchestration/execution_strategies.py +0 -2111
  281. empathy_os/orchestration/meta_orchestrator.py +0 -1168
  282. empathy_os/orchestration/pattern_learner.py +0 -696
  283. empathy_os/orchestration/real_tools.py +0 -931
  284. empathy_os/pattern_cache.py +0 -187
  285. empathy_os/pattern_library.py +0 -542
  286. empathy_os/patterns/debugging/all_patterns.json +0 -81
  287. empathy_os/patterns/debugging/workflow_20260107_1770825e.json +0 -77
  288. empathy_os/patterns/refactoring_memory.json +0 -89
  289. empathy_os/persistence.py +0 -564
  290. empathy_os/platform_utils.py +0 -265
  291. empathy_os/plugins/__init__.py +0 -28
  292. empathy_os/plugins/base.py +0 -361
  293. empathy_os/plugins/registry.py +0 -268
  294. empathy_os/project_index/__init__.py +0 -32
  295. empathy_os/project_index/cli.py +0 -335
  296. empathy_os/project_index/index.py +0 -667
  297. empathy_os/project_index/models.py +0 -504
  298. empathy_os/project_index/reports.py +0 -474
  299. empathy_os/project_index/scanner.py +0 -777
  300. empathy_os/project_index/scanner_parallel 2.py +0 -291
  301. empathy_os/project_index/scanner_parallel.py +0 -291
  302. empathy_os/prompts/__init__.py +0 -61
  303. empathy_os/prompts/config.py +0 -77
  304. empathy_os/prompts/context.py +0 -177
  305. empathy_os/prompts/parser.py +0 -285
  306. empathy_os/prompts/registry.py +0 -313
  307. empathy_os/prompts/templates.py +0 -208
  308. empathy_os/redis_config.py +0 -302
  309. empathy_os/redis_memory.py +0 -799
  310. empathy_os/resilience/__init__.py +0 -56
  311. empathy_os/resilience/circuit_breaker.py +0 -256
  312. empathy_os/resilience/fallback.py +0 -179
  313. empathy_os/resilience/health.py +0 -300
  314. empathy_os/resilience/retry.py +0 -209
  315. empathy_os/resilience/timeout.py +0 -135
  316. empathy_os/routing/__init__.py +0 -43
  317. empathy_os/routing/chain_executor.py +0 -433
  318. empathy_os/routing/classifier.py +0 -217
  319. empathy_os/routing/smart_router.py +0 -234
  320. empathy_os/routing/workflow_registry.py +0 -343
  321. empathy_os/scaffolding/README.md +0 -589
  322. empathy_os/scaffolding/__init__.py +0 -35
  323. empathy_os/scaffolding/__main__.py +0 -14
  324. empathy_os/scaffolding/cli.py +0 -240
  325. empathy_os/socratic/__init__.py +0 -256
  326. empathy_os/socratic/ab_testing.py +0 -958
  327. empathy_os/socratic/blueprint.py +0 -533
  328. empathy_os/socratic/cli.py +0 -703
  329. empathy_os/socratic/collaboration.py +0 -1114
  330. empathy_os/socratic/domain_templates.py +0 -924
  331. empathy_os/socratic/embeddings.py +0 -738
  332. empathy_os/socratic/engine.py +0 -794
  333. empathy_os/socratic/explainer.py +0 -682
  334. empathy_os/socratic/feedback.py +0 -772
  335. empathy_os/socratic/forms.py +0 -629
  336. empathy_os/socratic/generator.py +0 -732
  337. empathy_os/socratic/llm_analyzer.py +0 -637
  338. empathy_os/socratic/mcp_server.py +0 -702
  339. empathy_os/socratic/session.py +0 -312
  340. empathy_os/socratic/storage.py +0 -667
  341. empathy_os/socratic/success.py +0 -730
  342. empathy_os/socratic/visual_editor.py +0 -860
  343. empathy_os/socratic/web_ui.py +0 -958
  344. empathy_os/telemetry/__init__.py +0 -39
  345. empathy_os/telemetry/agent_coordination 2.py +0 -478
  346. empathy_os/telemetry/agent_coordination.py +0 -476
  347. empathy_os/telemetry/agent_tracking 2.py +0 -350
  348. empathy_os/telemetry/agent_tracking.py +0 -348
  349. empathy_os/telemetry/approval_gates 2.py +0 -563
  350. empathy_os/telemetry/approval_gates.py +0 -551
  351. empathy_os/telemetry/cli.py +0 -1231
  352. empathy_os/telemetry/commands/__init__.py +0 -14
  353. empathy_os/telemetry/commands/dashboard_commands.py +0 -696
  354. empathy_os/telemetry/event_streaming 2.py +0 -405
  355. empathy_os/telemetry/event_streaming.py +0 -405
  356. empathy_os/telemetry/feedback_loop 2.py +0 -557
  357. empathy_os/telemetry/feedback_loop.py +0 -554
  358. empathy_os/telemetry/usage_tracker.py +0 -591
  359. empathy_os/templates.py +0 -754
  360. empathy_os/test_generator/__init__.py +0 -38
  361. empathy_os/test_generator/__main__.py +0 -14
  362. empathy_os/test_generator/cli.py +0 -234
  363. empathy_os/test_generator/generator.py +0 -355
  364. empathy_os/test_generator/risk_analyzer.py +0 -216
  365. empathy_os/tier_recommender.py +0 -384
  366. empathy_os/tools.py +0 -183
  367. empathy_os/trust/__init__.py +0 -28
  368. empathy_os/trust/circuit_breaker.py +0 -579
  369. empathy_os/trust_building.py +0 -527
  370. empathy_os/validation/__init__.py +0 -19
  371. empathy_os/validation/xml_validator.py +0 -281
  372. empathy_os/vscode_bridge 2.py +0 -173
  373. empathy_os/vscode_bridge.py +0 -173
  374. empathy_os/workflow_commands.py +0 -780
  375. empathy_os/workflow_patterns/__init__.py +0 -33
  376. empathy_os/workflow_patterns/behavior.py +0 -249
  377. empathy_os/workflow_patterns/core.py +0 -76
  378. empathy_os/workflow_patterns/output.py +0 -99
  379. empathy_os/workflow_patterns/registry.py +0 -255
  380. empathy_os/workflow_patterns/structural.py +0 -288
  381. empathy_os/workflows/__init__.py +0 -539
  382. empathy_os/workflows/autonomous_test_gen.py +0 -1268
  383. empathy_os/workflows/base.py +0 -2667
  384. empathy_os/workflows/batch_processing.py +0 -342
  385. empathy_os/workflows/bug_predict.py +0 -1084
  386. empathy_os/workflows/builder.py +0 -273
  387. empathy_os/workflows/caching.py +0 -253
  388. empathy_os/workflows/code_review.py +0 -1048
  389. empathy_os/workflows/code_review_adapters.py +0 -312
  390. empathy_os/workflows/code_review_pipeline.py +0 -722
  391. empathy_os/workflows/config.py +0 -645
  392. empathy_os/workflows/dependency_check.py +0 -644
  393. empathy_os/workflows/document_gen/__init__.py +0 -25
  394. empathy_os/workflows/document_gen/config.py +0 -30
  395. empathy_os/workflows/document_gen/report_formatter.py +0 -162
  396. empathy_os/workflows/document_gen/workflow.py +0 -1426
  397. empathy_os/workflows/document_gen.py +0 -29
  398. empathy_os/workflows/document_manager.py +0 -216
  399. empathy_os/workflows/document_manager_README.md +0 -134
  400. empathy_os/workflows/documentation_orchestrator.py +0 -1205
  401. empathy_os/workflows/history.py +0 -510
  402. empathy_os/workflows/keyboard_shortcuts/__init__.py +0 -39
  403. empathy_os/workflows/keyboard_shortcuts/generators.py +0 -391
  404. empathy_os/workflows/keyboard_shortcuts/parsers.py +0 -416
  405. empathy_os/workflows/keyboard_shortcuts/prompts.py +0 -295
  406. empathy_os/workflows/keyboard_shortcuts/schema.py +0 -193
  407. empathy_os/workflows/keyboard_shortcuts/workflow.py +0 -509
  408. empathy_os/workflows/llm_base.py +0 -363
  409. empathy_os/workflows/manage_docs.py +0 -87
  410. empathy_os/workflows/manage_docs_README.md +0 -134
  411. empathy_os/workflows/manage_documentation.py +0 -821
  412. empathy_os/workflows/new_sample_workflow1.py +0 -149
  413. empathy_os/workflows/new_sample_workflow1_README.md +0 -150
  414. empathy_os/workflows/orchestrated_health_check.py +0 -849
  415. empathy_os/workflows/orchestrated_release_prep.py +0 -600
  416. empathy_os/workflows/output.py +0 -410
  417. empathy_os/workflows/perf_audit.py +0 -863
  418. empathy_os/workflows/pr_review.py +0 -762
  419. empathy_os/workflows/progress.py +0 -779
  420. empathy_os/workflows/progress_server.py +0 -322
  421. empathy_os/workflows/progressive/README 2.md +0 -454
  422. empathy_os/workflows/progressive/README.md +0 -454
  423. empathy_os/workflows/progressive/__init__ 2.py +0 -92
  424. empathy_os/workflows/progressive/__init__.py +0 -82
  425. empathy_os/workflows/progressive/cli 2.py +0 -242
  426. empathy_os/workflows/progressive/cli.py +0 -219
  427. empathy_os/workflows/progressive/core 2.py +0 -488
  428. empathy_os/workflows/progressive/core.py +0 -488
  429. empathy_os/workflows/progressive/orchestrator 2.py +0 -701
  430. empathy_os/workflows/progressive/orchestrator.py +0 -723
  431. empathy_os/workflows/progressive/reports 2.py +0 -528
  432. empathy_os/workflows/progressive/reports.py +0 -520
  433. empathy_os/workflows/progressive/telemetry 2.py +0 -280
  434. empathy_os/workflows/progressive/telemetry.py +0 -274
  435. empathy_os/workflows/progressive/test_gen 2.py +0 -514
  436. empathy_os/workflows/progressive/test_gen.py +0 -495
  437. empathy_os/workflows/progressive/workflow 2.py +0 -628
  438. empathy_os/workflows/progressive/workflow.py +0 -589
  439. empathy_os/workflows/refactor_plan.py +0 -694
  440. empathy_os/workflows/release_prep.py +0 -895
  441. empathy_os/workflows/release_prep_crew.py +0 -969
  442. empathy_os/workflows/research_synthesis.py +0 -404
  443. empathy_os/workflows/routing.py +0 -168
  444. empathy_os/workflows/secure_release.py +0 -593
  445. empathy_os/workflows/security_adapters.py +0 -297
  446. empathy_os/workflows/security_audit.py +0 -1329
  447. empathy_os/workflows/security_audit_phase3.py +0 -355
  448. empathy_os/workflows/seo_optimization.py +0 -633
  449. empathy_os/workflows/step_config.py +0 -234
  450. empathy_os/workflows/telemetry_mixin.py +0 -269
  451. empathy_os/workflows/test5.py +0 -125
  452. empathy_os/workflows/test5_README.md +0 -158
  453. empathy_os/workflows/test_coverage_boost_crew.py +0 -849
  454. empathy_os/workflows/test_gen/__init__.py +0 -52
  455. empathy_os/workflows/test_gen/ast_analyzer.py +0 -249
  456. empathy_os/workflows/test_gen/config.py +0 -88
  457. empathy_os/workflows/test_gen/data_models.py +0 -38
  458. empathy_os/workflows/test_gen/report_formatter.py +0 -289
  459. empathy_os/workflows/test_gen/test_templates.py +0 -381
  460. empathy_os/workflows/test_gen/workflow.py +0 -655
  461. empathy_os/workflows/test_gen.py +0 -54
  462. empathy_os/workflows/test_gen_behavioral.py +0 -477
  463. empathy_os/workflows/test_gen_parallel.py +0 -341
  464. empathy_os/workflows/test_lifecycle.py +0 -526
  465. empathy_os/workflows/test_maintenance.py +0 -627
  466. empathy_os/workflows/test_maintenance_cli.py +0 -590
  467. empathy_os/workflows/test_maintenance_crew.py +0 -840
  468. empathy_os/workflows/test_runner.py +0 -622
  469. empathy_os/workflows/tier_tracking.py +0 -531
  470. empathy_os/workflows/xml_enhanced_crew.py +0 -285
  471. empathy_software_plugin/SOFTWARE_PLUGIN_README.md +0 -57
  472. empathy_software_plugin/cli/__init__.py +0 -120
  473. empathy_software_plugin/cli/inspect.py +0 -362
  474. empathy_software_plugin/cli.py +0 -574
  475. empathy_software_plugin/plugin.py +0 -188
  476. workflow_scaffolding/__init__.py +0 -11
  477. workflow_scaffolding/__main__.py +0 -12
  478. workflow_scaffolding/cli.py +0 -206
  479. workflow_scaffolding/generator.py +0 -265
  480. {empathy_framework-5.2.1.dist-info โ†’ empathy_framework-5.4.0.dist-info}/WHEEL +0 -0
@@ -1,629 +0,0 @@
1
- """Socratic Forms System
2
-
3
- Structured questionnaires with branching logic for gathering requirements.
4
-
5
- Supports multiple field types:
6
- - Single select (radio buttons)
7
- - Multi-select (checkboxes)
8
- - Text input (short answer)
9
- - Text area (long form)
10
- - Slider (numeric range)
11
- - Conditional fields (appear based on previous answers)
12
-
13
- Copyright 2026 Smart-AI-Memory
14
- Licensed under Fair Source License 0.9
15
- """
16
-
17
- from __future__ import annotations
18
-
19
- from collections.abc import Callable
20
- from dataclasses import dataclass, field
21
- from enum import Enum
22
- from typing import Any
23
-
24
-
25
- class FieldType(Enum):
26
- """Types of form fields."""
27
-
28
- # Single selection from options
29
- SINGLE_SELECT = "single_select"
30
-
31
- # Multiple selection from options
32
- MULTI_SELECT = "multi_select"
33
-
34
- # Short text input
35
- TEXT = "text"
36
-
37
- # Long text input
38
- TEXT_AREA = "text_area"
39
-
40
- # Numeric slider with range
41
- SLIDER = "slider"
42
-
43
- # Yes/No toggle
44
- BOOLEAN = "boolean"
45
-
46
- # Numeric input
47
- NUMBER = "number"
48
-
49
- # Grouped fields (sub-form)
50
- GROUP = "group"
51
-
52
-
53
- @dataclass
54
- class FieldOption:
55
- """An option for select-type fields."""
56
-
57
- # Option value (stored in response)
58
- value: str
59
-
60
- # Display label
61
- label: str
62
-
63
- # Optional description/help text
64
- description: str = ""
65
-
66
- # Optional icon or emoji
67
- icon: str = ""
68
-
69
- # Whether this is the recommended option
70
- recommended: bool = False
71
-
72
- # Conditions that enable/disable this option
73
- enabled_when: dict[str, Any] | None = None
74
-
75
-
76
- @dataclass
77
- class FieldValidation:
78
- """Validation rules for a field."""
79
-
80
- # Whether field is required
81
- required: bool = False
82
-
83
- # Minimum length (for text fields)
84
- min_length: int | None = None
85
-
86
- # Maximum length (for text fields)
87
- max_length: int | None = None
88
-
89
- # Minimum value (for numeric fields)
90
- min_value: float | None = None
91
-
92
- # Maximum value (for numeric fields)
93
- max_value: float | None = None
94
-
95
- # Regex pattern (for text fields)
96
- pattern: str | None = None
97
-
98
- # Custom validation function
99
- custom_validator: Callable[[Any], tuple[bool, str]] | None = None
100
-
101
- # Error message template
102
- error_message: str = "Invalid value"
103
-
104
-
105
- @dataclass
106
- class FormField:
107
- """A single field in a Socratic form.
108
-
109
- Example:
110
- >>> field = FormField(
111
- ... id="languages",
112
- ... field_type=FieldType.MULTI_SELECT,
113
- ... label="What programming languages does your team use?",
114
- ... help_text="Select all that apply",
115
- ... options=[
116
- ... FieldOption("python", "Python", recommended=True),
117
- ... FieldOption("typescript", "TypeScript"),
118
- ... FieldOption("javascript", "JavaScript"),
119
- ... FieldOption("go", "Go"),
120
- ... FieldOption("rust", "Rust"),
121
- ... ],
122
- ... validation=FieldValidation(required=True)
123
- ... )
124
- """
125
-
126
- # Unique field identifier
127
- id: str
128
-
129
- # Type of field
130
- field_type: FieldType
131
-
132
- # Display label (the question)
133
- label: str
134
-
135
- # Help text explaining the question
136
- help_text: str = ""
137
-
138
- # Placeholder text for input fields
139
- placeholder: str = ""
140
-
141
- # Options for select fields
142
- options: list[FieldOption] = field(default_factory=list)
143
-
144
- # Default value
145
- default: Any = None
146
-
147
- # Validation rules
148
- validation: FieldValidation = field(default_factory=FieldValidation)
149
-
150
- # Conditions for showing this field (based on other answers)
151
- show_when: dict[str, Any] | None = None
152
-
153
- # Category/section this field belongs to
154
- category: str = "general"
155
-
156
- # Order within category
157
- order: int = 0
158
-
159
- # Additional metadata
160
- metadata: dict[str, Any] = field(default_factory=dict)
161
-
162
- def validate(self, value: Any) -> tuple[bool, str]:
163
- """Validate a value for this field.
164
-
165
- Args:
166
- value: The value to validate
167
-
168
- Returns:
169
- Tuple of (is_valid, error_message)
170
- """
171
- v = self.validation
172
-
173
- # Check required
174
- if v.required:
175
- if value is None:
176
- return False, f"{self.label} is required"
177
- if isinstance(value, str) and not value.strip():
178
- return False, f"{self.label} is required"
179
- if isinstance(value, list) and not value:
180
- return False, f"Please select at least one option for {self.label}"
181
-
182
- # Skip further validation if empty and not required
183
- if value is None or (isinstance(value, str) and not value.strip()):
184
- return True, ""
185
-
186
- # Check string length
187
- if isinstance(value, str):
188
- if v.min_length and len(value) < v.min_length:
189
- return False, f"Minimum {v.min_length} characters required"
190
- if v.max_length and len(value) > v.max_length:
191
- return False, f"Maximum {v.max_length} characters allowed"
192
-
193
- # Check numeric range
194
- if isinstance(value, (int, float)):
195
- if v.min_value is not None and value < v.min_value:
196
- return False, f"Value must be at least {v.min_value}"
197
- if v.max_value is not None and value > v.max_value:
198
- return False, f"Value must be at most {v.max_value}"
199
-
200
- # Check pattern
201
- if v.pattern and isinstance(value, str):
202
- import re
203
-
204
- if not re.match(v.pattern, value):
205
- return False, v.error_message
206
-
207
- # Custom validation
208
- if v.custom_validator:
209
- return v.custom_validator(value)
210
-
211
- return True, ""
212
-
213
- def should_show(self, current_answers: dict[str, Any]) -> bool:
214
- """Check if this field should be shown based on current answers.
215
-
216
- Args:
217
- current_answers: Dictionary of field_id -> value
218
-
219
- Returns:
220
- True if field should be shown
221
- """
222
- if self.show_when is None:
223
- return True
224
-
225
- for field_id, expected in self.show_when.items():
226
- actual = current_answers.get(field_id)
227
-
228
- # Handle "any of" conditions (list of acceptable values)
229
- if isinstance(expected, list):
230
- if actual not in expected:
231
- # Also check if actual is a list (multi-select)
232
- if isinstance(actual, list):
233
- if not any(v in expected for v in actual):
234
- return False
235
- else:
236
- return False
237
- # Handle exact match
238
- elif actual != expected:
239
- return False
240
-
241
- return True
242
-
243
-
244
- @dataclass
245
- class Form:
246
- """A Socratic questionnaire form.
247
-
248
- Example:
249
- >>> form = Form(
250
- ... id="code_review_setup",
251
- ... title="Code Review Configuration",
252
- ... description="Help us understand your code review needs",
253
- ... fields=[
254
- ... FormField(
255
- ... id="languages",
256
- ... field_type=FieldType.MULTI_SELECT,
257
- ... label="What languages?",
258
- ... options=[...]
259
- ... ),
260
- ... FormField(
261
- ... id="team_size",
262
- ... field_type=FieldType.SLIDER,
263
- ... label="How large is your team?",
264
- ... validation=FieldValidation(min_value=1, max_value=100)
265
- ... ),
266
- ... ]
267
- ... )
268
- """
269
-
270
- # Unique form identifier
271
- id: str
272
-
273
- # Form title
274
- title: str
275
-
276
- # Form description/instructions
277
- description: str = ""
278
-
279
- # Fields in this form
280
- fields: list[FormField] = field(default_factory=list)
281
-
282
- # Round number (for multi-round questioning)
283
- round_number: int = 1
284
-
285
- # Progress indicator (0-1)
286
- progress: float = 0.0
287
-
288
- # Whether this is the final form
289
- is_final: bool = False
290
-
291
- # Category groupings for display
292
- categories: list[str] = field(default_factory=list)
293
-
294
- def get_visible_fields(self, current_answers: dict[str, Any]) -> list[FormField]:
295
- """Get fields that should be visible based on current answers.
296
-
297
- Args:
298
- current_answers: Dictionary of answered field values
299
-
300
- Returns:
301
- List of visible FormField objects
302
- """
303
- return [f for f in self.fields if f.should_show(current_answers)]
304
-
305
- def get_fields_by_category(
306
- self,
307
- current_answers: dict[str, Any] | None = None,
308
- ) -> dict[str, list[FormField]]:
309
- """Get fields grouped by category.
310
-
311
- Args:
312
- current_answers: Optional answers for visibility filtering
313
-
314
- Returns:
315
- Dictionary mapping category name to list of fields
316
- """
317
- current_answers = current_answers or {}
318
- result: dict[str, list[FormField]] = {}
319
-
320
- for f in self.fields:
321
- if f.should_show(current_answers):
322
- if f.category not in result:
323
- result[f.category] = []
324
- result[f.category].append(f)
325
-
326
- # Sort fields within each category
327
- for category in result:
328
- result[category].sort(key=lambda x: x.order)
329
-
330
- return result
331
-
332
- def to_dict(self) -> dict[str, Any]:
333
- """Serialize form to dictionary for JSON/API response."""
334
- return {
335
- "id": self.id,
336
- "title": self.title,
337
- "description": self.description,
338
- "round_number": self.round_number,
339
- "progress": self.progress,
340
- "is_final": self.is_final,
341
- "categories": self.categories,
342
- "fields": [
343
- {
344
- "id": f.id,
345
- "type": f.field_type.value,
346
- "label": f.label,
347
- "help_text": f.help_text,
348
- "placeholder": f.placeholder,
349
- "default": f.default,
350
- "category": f.category,
351
- "options": (
352
- [
353
- {
354
- "value": o.value,
355
- "label": o.label,
356
- "description": o.description,
357
- "icon": o.icon,
358
- "recommended": o.recommended,
359
- }
360
- for o in f.options
361
- ]
362
- if f.options
363
- else []
364
- ),
365
- "validation": {
366
- "required": f.validation.required,
367
- "min_length": f.validation.min_length,
368
- "max_length": f.validation.max_length,
369
- "min_value": f.validation.min_value,
370
- "max_value": f.validation.max_value,
371
- "pattern": f.validation.pattern,
372
- },
373
- "show_when": f.show_when,
374
- }
375
- for f in self.fields
376
- ],
377
- }
378
-
379
-
380
- @dataclass
381
- class ValidationResult:
382
- """Result of validating a form response."""
383
-
384
- # Whether validation passed
385
- is_valid: bool
386
-
387
- # Field-level errors (field_id -> error message)
388
- field_errors: dict[str, str] = field(default_factory=dict)
389
-
390
- # Form-level errors
391
- form_errors: list[str] = field(default_factory=list)
392
-
393
- @property
394
- def all_errors(self) -> list[str]:
395
- """Get all errors as a flat list."""
396
- errors = list(self.form_errors)
397
- errors.extend(f"{k}: {v}" for k, v in self.field_errors.items())
398
- return errors
399
-
400
-
401
- @dataclass
402
- class FormResponse:
403
- """A user's response to a form.
404
-
405
- Example:
406
- >>> response = FormResponse(
407
- ... form_id="code_review_setup",
408
- ... answers={
409
- ... "languages": ["python", "typescript"],
410
- ... "team_size": 8,
411
- ... "focus_areas": ["security", "performance"]
412
- ... }
413
- ... )
414
- """
415
-
416
- # ID of the form being responded to
417
- form_id: str
418
-
419
- # Answers keyed by field ID
420
- answers: dict[str, Any] = field(default_factory=dict)
421
-
422
- # When the response was submitted
423
- submitted_at: str = ""
424
-
425
- # Whether the user skipped optional questions
426
- skipped_fields: list[str] = field(default_factory=list)
427
-
428
- # Additional notes from user
429
- notes: str = ""
430
-
431
- def validate(self, form: Form) -> ValidationResult:
432
- """Validate this response against a form.
433
-
434
- Args:
435
- form: The Form to validate against
436
-
437
- Returns:
438
- ValidationResult with any errors
439
- """
440
- result = ValidationResult(is_valid=True)
441
-
442
- # Get visible fields based on current answers
443
- visible_fields = form.get_visible_fields(self.answers)
444
-
445
- for f in visible_fields:
446
- value = self.answers.get(f.id)
447
- is_valid, error = f.validate(value)
448
-
449
- if not is_valid:
450
- result.is_valid = False
451
- result.field_errors[f.id] = error
452
-
453
- return result
454
-
455
-
456
- # =============================================================================
457
- # FORM BUILDER HELPERS
458
- # =============================================================================
459
-
460
-
461
- def create_language_field(
462
- id: str = "languages",
463
- required: bool = True,
464
- ) -> FormField:
465
- """Create a standard programming language selection field."""
466
- return FormField(
467
- id=id,
468
- field_type=FieldType.MULTI_SELECT,
469
- label="What programming languages does your team primarily use?",
470
- help_text="Select all that apply. This helps us customize analysis tools.",
471
- options=[
472
- FieldOption("python", "Python", icon="๐Ÿ", recommended=True),
473
- FieldOption("typescript", "TypeScript", icon="๐Ÿ“˜"),
474
- FieldOption("javascript", "JavaScript", icon="๐Ÿ“’"),
475
- FieldOption("java", "Java", icon="โ˜•"),
476
- FieldOption("go", "Go", icon="๐Ÿน"),
477
- FieldOption("rust", "Rust", icon="๐Ÿฆ€"),
478
- FieldOption("csharp", "C#", icon="๐ŸŽฏ"),
479
- FieldOption("cpp", "C++", icon="โšก"),
480
- FieldOption("ruby", "Ruby", icon="๐Ÿ’Ž"),
481
- FieldOption("php", "PHP", icon="๐Ÿ˜"),
482
- FieldOption("other", "Other", icon="๐Ÿ”ง"),
483
- ],
484
- validation=FieldValidation(required=required),
485
- category="technical",
486
- )
487
-
488
-
489
- def create_quality_focus_field(
490
- id: str = "quality_focus",
491
- required: bool = True,
492
- ) -> FormField:
493
- """Create a quality focus area selection field."""
494
- return FormField(
495
- id=id,
496
- field_type=FieldType.MULTI_SELECT,
497
- label="What quality attributes are most important?",
498
- help_text="Select your top priorities. We'll optimize agents for these.",
499
- options=[
500
- FieldOption(
501
- "security",
502
- "Security",
503
- description="Vulnerability detection, secure coding practices",
504
- icon="๐Ÿ”’",
505
- ),
506
- FieldOption(
507
- "performance",
508
- "Performance",
509
- description="Speed, memory usage, scalability",
510
- icon="โšก",
511
- ),
512
- FieldOption(
513
- "maintainability",
514
- "Maintainability",
515
- description="Code clarity, documentation, modularity",
516
- icon="๐Ÿงฉ",
517
- ),
518
- FieldOption(
519
- "reliability",
520
- "Reliability",
521
- description="Error handling, edge cases, stability",
522
- icon="๐Ÿ›ก๏ธ",
523
- ),
524
- FieldOption(
525
- "testability",
526
- "Testability",
527
- description="Test coverage, test quality, mocking",
528
- icon="๐Ÿงช",
529
- ),
530
- ],
531
- validation=FieldValidation(required=required),
532
- category="quality",
533
- )
534
-
535
-
536
- def create_team_size_field(
537
- id: str = "team_size",
538
- required: bool = False,
539
- ) -> FormField:
540
- """Create a team size input field."""
541
- return FormField(
542
- id=id,
543
- field_type=FieldType.SINGLE_SELECT,
544
- label="How large is your development team?",
545
- help_text="This helps us calibrate review thoroughness.",
546
- options=[
547
- FieldOption("solo", "Solo developer", description="Just me"),
548
- FieldOption("small", "Small team (2-5)", description="Close collaboration"),
549
- FieldOption("medium", "Medium team (6-15)", description="Multiple reviewers"),
550
- FieldOption("large", "Large team (16+)", description="Formal review process"),
551
- ],
552
- validation=FieldValidation(required=required),
553
- category="context",
554
- )
555
-
556
-
557
- def create_automation_level_field(
558
- id: str = "automation_level",
559
- required: bool = True,
560
- ) -> FormField:
561
- """Create an automation preference field."""
562
- return FormField(
563
- id=id,
564
- field_type=FieldType.SINGLE_SELECT,
565
- label="How much automation do you want?",
566
- help_text="Higher automation means less human intervention required.",
567
- options=[
568
- FieldOption(
569
- "advisory",
570
- "Advisory Only",
571
- description="Suggestions for humans to review and apply",
572
- icon="๐Ÿ’ก",
573
- ),
574
- FieldOption(
575
- "semi_auto",
576
- "Semi-Automated",
577
- description="Auto-fix simple issues, flag complex ones",
578
- icon="โš™๏ธ",
579
- recommended=True,
580
- ),
581
- FieldOption(
582
- "fully_auto",
583
- "Fully Automated",
584
- description="Auto-fix everything possible, minimal human review",
585
- icon="๐Ÿค–",
586
- ),
587
- ],
588
- validation=FieldValidation(required=required),
589
- category="preferences",
590
- )
591
-
592
-
593
- def create_goal_text_field(
594
- id: str = "goal",
595
- required: bool = True,
596
- ) -> FormField:
597
- """Create the initial goal capture field."""
598
- return FormField(
599
- id=id,
600
- field_type=FieldType.TEXT_AREA,
601
- label="What do you want to accomplish?",
602
- help_text=(
603
- "Describe your goal in your own words. Be as specific as you like - "
604
- "we'll ask clarifying questions if needed."
605
- ),
606
- placeholder="e.g., I want to automate code reviews to catch security issues...",
607
- validation=FieldValidation(
608
- required=required,
609
- min_length=10,
610
- max_length=2000,
611
- ),
612
- category="goal",
613
- )
614
-
615
-
616
- def create_additional_context_field(
617
- id: str = "additional_context",
618
- required: bool = False,
619
- ) -> FormField:
620
- """Create an optional additional context field."""
621
- return FormField(
622
- id=id,
623
- field_type=FieldType.TEXT_AREA,
624
- label="Anything else we should know?",
625
- help_text="Optional: Share any additional context, constraints, or preferences.",
626
- placeholder="e.g., We use a monorepo, have strict SLAs, prefer verbose output...",
627
- validation=FieldValidation(max_length=1000),
628
- category="context",
629
- )