dialectical-framework 1.0.0__tar.gz → 1.1.0__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.
Files changed (172) hide show
  1. dialectical_framework-1.1.0/PKG-INFO +160 -0
  2. dialectical_framework-1.1.0/README.md +118 -0
  3. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/pyproject.toml +3 -3
  4. dialectical_framework-1.1.0/src/dialectical_framework/agents/agent_context.py +52 -0
  5. dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/analyst.py +401 -0
  6. dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +197 -0
  7. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +38 -9
  8. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +22 -2
  9. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +30 -6
  10. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +44 -82
  11. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +104 -234
  12. dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/system_prompts.py +100 -0
  13. dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/tools/create_dx_input.py +78 -0
  14. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/analyst/tools/place_statement.py +4 -2
  15. dialectical_framework-1.1.0/src/dialectical_framework/agents/apps.py +248 -0
  16. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/conversation_facilitator.py +22 -5
  17. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/execution_report.py +52 -3
  18. dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer/explorer.py +276 -0
  19. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +3 -3
  20. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +8 -3
  21. dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer/system_prompts.py +70 -0
  22. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +4 -4
  23. dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer/tools/present_exploration.py +203 -0
  24. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +3 -1
  25. dialectical_framework-1.0.0/src/dialectical_framework/agents/orchestrator/tools/reject.py → dialectical_framework-1.1.0/src/dialectical_framework/agents/orchestrator/tools/discard.py +35 -35
  26. dialectical_framework-1.1.0/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +191 -0
  27. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +20 -20
  28. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +3 -3
  29. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +5 -11
  30. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/ac_re_taxonomy.py +10 -2
  31. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/antithesis_extraction.py +204 -62
  32. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/perspective_validation.py +6 -0
  33. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/statement_deduplication.py +21 -17
  34. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/statement_placement.py +1 -1
  35. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/thesis_extraction.py +1 -1
  36. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/dialectical_reasoning.py +3 -0
  37. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/dialexity_input_resolver.py +12 -14
  38. dialectical_framework-1.1.0/src/dialectical_framework/graph/nodes/__init__.py +0 -0
  39. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/case.py +1 -1
  40. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/estimation.py +6 -3
  41. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/ideas.py +3 -2
  42. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/input.py +3 -3
  43. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/perspective.py +2 -2
  44. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/polarity.py +9 -2
  45. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/rationale.py +1 -1
  46. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/statement.py +6 -6
  47. dialectical_framework-1.1.0/src/dialectical_framework/graph/relationships/__init__.py +0 -0
  48. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +2 -2
  49. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +2 -2
  50. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/polarity_relationship.py +4 -7
  51. dialectical_framework-1.1.0/src/dialectical_framework/graph/repositories/__init__.py +0 -0
  52. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/node_repository.py +50 -7
  53. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/perspective_repository.py +3 -3
  54. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/polarity_repository.py +4 -4
  55. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/statement_repository.py +4 -4
  56. dialectical_framework-1.1.0/src/dialectical_framework/protocols/__init__.py +0 -0
  57. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/settings.py +5 -0
  58. dialectical_framework-1.1.0/src/dialectical_framework/utils/__init__.py +0 -0
  59. dialectical_framework-1.1.0/src/dialectical_framework/utils/effect_logger.py +107 -0
  60. dialectical_framework-1.0.0/PKG-INFO +0 -139
  61. dialectical_framework-1.0.0/README.md +0 -97
  62. dialectical_framework-1.0.0/src/dialectical_framework/__init__.py +0 -2
  63. dialectical_framework-1.0.0/src/dialectical_framework/agents/orchestrator/orchestrator.py +0 -407
  64. dialectical_framework-1.0.0/src/dialectical_framework/agents/orchestrator/system_prompts.py +0 -134
  65. dialectical_framework-1.0.0/src/dialectical_framework/exceptions/__init__.py +0 -3
  66. dialectical_framework-1.0.0/src/dialectical_framework/graph/mixins/__init__.py +0 -1
  67. dialectical_framework-1.0.0/src/dialectical_framework/graph/relationships/__init__.py +0 -1
  68. dialectical_framework-1.0.0/src/dialectical_framework/utils/__init__.py +0 -1
  69. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/LICENSE +0 -0
  70. {dialectical_framework-1.0.0/src/dialectical_framework/agents → dialectical_framework-1.1.0/src/dialectical_framework}/__init__.py +0 -0
  71. {dialectical_framework-1.0.0/src/dialectical_framework/agents/analyst → dialectical_framework-1.1.0/src/dialectical_framework/agents}/__init__.py +0 -0
  72. {dialectical_framework-1.0.0/src/dialectical_framework/agents/analyst/skills → dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst}/__init__.py +0 -0
  73. {dialectical_framework-1.0.0/src/dialectical_framework/agents/analyst/tools → dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/skills}/__init__.py +0 -0
  74. {dialectical_framework-1.0.0/src/dialectical_framework/agents/explorer → dialectical_framework-1.1.0/src/dialectical_framework/agents/analyst/tools}/__init__.py +0 -0
  75. {dialectical_framework-1.0.0/src/dialectical_framework/agents/explorer/skills → dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer}/__init__.py +0 -0
  76. {dialectical_framework-1.0.0/src/dialectical_framework/agents/explorer/tools → dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer/skills}/__init__.py +0 -0
  77. {dialectical_framework-1.0.0/src/dialectical_framework/agents/orchestrator → dialectical_framework-1.1.0/src/dialectical_framework/agents/explorer/tools}/__init__.py +0 -0
  78. {dialectical_framework-1.0.0/src/dialectical_framework/agents/orchestrator/tools → dialectical_framework-1.1.0/src/dialectical_framework/agents/orchestrator}/__init__.py +0 -0
  79. {dialectical_framework-1.0.0/src/dialectical_framework/concerns → dialectical_framework-1.1.0/src/dialectical_framework/agents/orchestrator/tools}/__init__.py +0 -0
  80. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
  81. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/agents/stream_events.py +0 -0
  82. {dialectical_framework-1.0.0/src/dialectical_framework/concerns/ai_dto → dialectical_framework-1.1.0/src/dialectical_framework/concerns}/__init__.py +0 -0
  83. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/action_extraction.py +0 -0
  84. {dialectical_framework-1.0.0/src/dialectical_framework/concerns/causality → dialectical_framework-1.1.0/src/dialectical_framework/concerns/ai_dto}/__init__.py +0 -0
  85. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
  86. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
  87. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
  88. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/aspect_classification.py +0 -0
  89. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/aspect_generation.py +0 -0
  90. {dialectical_framework-1.0.0/src/dialectical_framework/enums → dialectical_framework-1.1.0/src/dialectical_framework/concerns/causality}/__init__.py +0 -0
  91. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
  92. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +0 -0
  93. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
  94. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
  95. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
  96. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
  97. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
  98. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
  99. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
  100. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/control_statements_check.py +0 -0
  101. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
  102. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
  103. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
  104. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +0 -0
  105. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/statement_classification.py +0 -0
  106. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/synthesis_generation.py +0 -0
  107. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
  108. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/concerns/transformation_generation.py +0 -0
  109. {dialectical_framework-1.0.0/src/dialectical_framework/events → dialectical_framework-1.1.0/src/dialectical_framework/enums}/__init__.py +0 -0
  110. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/enums/causality_preset.py +0 -0
  111. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/enums/di.py +0 -0
  112. {dialectical_framework-1.0.0/src/dialectical_framework/graph → dialectical_framework-1.1.0/src/dialectical_framework/events}/__init__.py +0 -0
  113. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/events/graph_event.py +0 -0
  114. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/events/graph_event_bus.py +0 -0
  115. {dialectical_framework-1.0.0/src/dialectical_framework/graph/nodes → dialectical_framework-1.1.0/src/dialectical_framework/exceptions}/__init__.py +0 -0
  116. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/exceptions/node_errors.py +0 -0
  117. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
  118. {dialectical_framework-1.0.0/src/dialectical_framework/graph/repositories → dialectical_framework-1.1.0/src/dialectical_framework/graph}/__init__.py +0 -0
  119. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
  120. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/estimation_manager.py +0 -0
  121. {dialectical_framework-1.0.0/src/dialectical_framework/protocols → dialectical_framework-1.1.0/src/dialectical_framework/graph/mixins}/__init__.py +0 -0
  122. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
  123. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
  124. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
  125. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/assessable_entity.py +0 -0
  126. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
  127. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
  128. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
  129. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
  130. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
  131. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/transition.py +0 -0
  132. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
  133. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationship_manager.py +0 -0
  134. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
  135. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
  136. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
  137. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
  138. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
  139. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
  140. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
  141. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
  142. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
  143. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
  144. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
  145. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
  146. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
  147. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
  148. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
  149. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
  150. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
  151. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
  152. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
  153. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
  154. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
  155. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/input_repository.py +0 -0
  156. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
  157. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
  158. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/transformation_repository.py +0 -0
  159. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
  160. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/scope_context.py +0 -0
  161. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
  162. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/wheel_segment.py +0 -0
  163. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
  164. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/protocols/has_config.py +0 -0
  165. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/protocols/input_resolver.py +0 -0
  166. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
  167. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/dc_replace.py +0 -0
  168. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
  169. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/edge_context.py +0 -0
  170. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/order_transitions.py +0 -0
  171. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/sequence_generation.py +0 -0
  172. {dialectical_framework-1.0.0 → dialectical_framework-1.1.0}/src/dialectical_framework/utils/use_brain.py +0 -0
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.3
2
+ Name: dialectical-framework
3
+ Version: 1.1.0
4
+ Summary: A dialectical framework for augmented intelligence. AI reasoning powered with dialectics supports humans in: system optimization (psychology, engineering, business, politics, etc.); dispute resolution (mediation, conflicts, negotiations, etc.); decision-making (dilemmas, challenging situations, win-win, etc.).
5
+ License: MIT
6
+ Keywords: dialectics,dialectical-reasoning,synthesis,thesis-antithesis,ai,artificial-intelligence,llm,reasoning-framework,philosophy,logic,argumentation,conflict-resolution,decision-making,critical-thinking,semantic-graph,mirascope,pydantic,perspectives,polarity-reasoning
7
+ Author: Evaldas Taroza
8
+ Author-email: evaldas@dialexity.com
9
+ Requires-Python: >=3.11,<4.0
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Framework :: Pydantic
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Education
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Natural Language :: English
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Education
24
+ Classifier: Topic :: Office/Business :: Financial :: Investment
25
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
+ Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
27
+ Classifier: Topic :: Sociology
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Classifier: Topic :: Text Processing :: Linguistic
30
+ Requires-Dist: boto3 (>=1.43.4,<2.0.0)
31
+ Requires-Dist: broadcaster (>=0.3.1,<0.4.0)
32
+ Requires-Dist: dependency-injector (>=4.48.2,<5.0.0)
33
+ Requires-Dist: gqlalchemy (>=1.8.0,<2.0.0)
34
+ Requires-Dist: langfuse (>=4.5.1,<5.0.0)
35
+ Requires-Dist: mirascope[anthropic,openai,ops] (>=2.4.0,<3.0.0)
36
+ Requires-Dist: python-dotenv (>=1.2.1,<2.0.0)
37
+ Requires-Dist: tabulate (>=0.9.0,<0.10.0)
38
+ Project-URL: Homepage, https://github.com/dialexity/dialectical-framework
39
+ Project-URL: Repository, https://github.com/dialexity/dialectical-framework
40
+ Description-Content-Type: text/markdown
41
+
42
+ # Dialectical Framework
43
+
44
+ A reasoning framework for AI applications that need structured dialectical analysis. It curates a graph database through LLM-guided conversation, building up thesis-antithesis-synthesis structures from any domain.
45
+
46
+ The graph database **is** the state. Every interaction — extracting theses, finding oppositions, building wheels — writes semantic nodes and relationships into the graph. The framework is essentially a curation engine: an LLM orchestrator that progressively structures user input into dialectical knowledge graphs.
47
+
48
+ ## How It Works
49
+
50
+ 1. **Input** — User provides text, URLs, or ideas
51
+ 2. **Analysis** — LLM extracts theses, finds antitheses, generates aspects (T+, T-, A+, A-)
52
+ 3. **Graph curation** — Each insight is committed as nodes/relationships in the graph database
53
+ 4. **Exploration** — Perspectives are combined into Cycles, arranged into Wheels, and Transformations reveal paths toward synthesis
54
+
55
+ The graph accumulates structured reasoning over time. Applications query it, visualize it, or build on it.
56
+
57
+ ## Architecture
58
+
59
+ ```
60
+ Host Application (Chainlit, API, CLI)
61
+
62
+
63
+ Orchestrator (LLM + tools)
64
+
65
+
66
+ Graph Database (Memgraph / Neo4j)
67
+ ```
68
+
69
+ The Orchestrator is the main entry point. It manages an LLM conversation with tools that read and write the graph. The host app controls persona and session identity; the framework handles reasoning and graph curation.
70
+
71
+ ### Core Graph Structure
72
+
73
+ At the heart is the **Dialectical Wheel** — a semantic graph where nodes are statements and edges encode dialectical relationships (opposition, complementarity, transformation).
74
+
75
+ | Structure | Role |
76
+ |-----------|------|
77
+ | **Statement** | Atomic unit of meaning |
78
+ | **Perspective** | T/A opposition with aspects (T+, T-, A+, A-) |
79
+ | **Cycle** | Ordered sequence of Perspectives |
80
+ | **Wheel** | Concrete T-A arrangement implementing a Cycle |
81
+ | **Transformation** | Action-Reflection paths between segments |
82
+ | **Synthesis** | Emergent S+/S- from the Wheel's circular causality |
83
+
84
+ Think of a Wheel as a pizza: segments are slices (T, T+, T-), Perspectives are half-pizzas (thesis + opposing antithesis), and Transitions are the cuts between slices.
85
+
86
+ | Simple | Detailed |
87
+ |--------|----------|
88
+ | ![Wheel](https://raw.githubusercontent.com/dialexity/dialectical-framework/main/docs/wheel-scheme.png) | ![Wheel](https://raw.githubusercontent.com/dialexity/dialectical-framework/main/docs/wheel-scheme2.png) |
89
+
90
+ ## Integration
91
+
92
+ The framework is designed as a drop-in reasoning engine for AI applications that need dialectical analysis — decision support, systems thinking, mediation, ethical modeling.
93
+
94
+ ```python
95
+ from dialectical_framework.dialectical_reasoning import DialecticalReasoning
96
+ from dialectical_framework.settings import Settings
97
+ from dialectical_framework.agents.orchestrator.orchestrator import Orchestrator
98
+
99
+ # Initialize once
100
+ DialecticalReasoning.setup(Settings.from_env())
101
+
102
+ # Per-session usage
103
+ orchestrator = Orchestrator(app_preamble="You are a systems thinking coach...")
104
+
105
+ async for event in orchestrator.chat_stream("Analyze the tension between growth and sustainability"):
106
+ # ThinkingDelta, TextDelta, ToolStart, ToolResult, ResponseComplete
107
+ handle(event)
108
+ ```
109
+
110
+ ## Setup
111
+
112
+ ### Requirements
113
+
114
+ - Python 3.11+
115
+ - Memgraph or Neo4j
116
+ - An LLM provider (OpenAI, Anthropic, or any LiteLLM-compatible)
117
+
118
+ ### Install
119
+
120
+ ```bash
121
+ poetry install
122
+ ```
123
+
124
+ ### Environment Variables
125
+
126
+ | Variable | Description | Example |
127
+ |----------|-------------|---------|
128
+ | `DIALEXITY_DEFAULT_MODEL` | Model in provider/model format | `bedrock/anthropic.claude-sonnet-4-20250514-v1:0` |
129
+ | `DIALEXITY_GRAPH_DB_VENDOR` | Graph database | `memgraph` (default) or `neo4j` |
130
+ | `DIALEXITY_GRAPH_DB_HOST` | Database host | `127.0.0.1` |
131
+ | `DIALEXITY_GRAPH_DB_PORT` | Database port | `7687` |
132
+ | `DIALEXITY_THINKING_LEVEL` | Extended thinking budget | `medium`, `high`, `max` (optional) |
133
+
134
+ Store in `.env` or export in your environment.
135
+
136
+ ### Run Tests
137
+
138
+ ```bash
139
+ poetry run pytest # All tests (LLM mocked)
140
+ poetry run pytest -m llm # Only LLM-path tests (mocked)
141
+ poetry run pytest --real-llm # Hit real LLM provider
142
+ ```
143
+
144
+ ## Built With
145
+
146
+ - [Mirascope](https://mirascope.com/) — LLM abstraction
147
+ - [GQLAlchemy](https://memgraph.com/docs/gqlalchemy) — Graph ORM
148
+ - [dependency-injector](https://python-dependency-injector.ets-labs.org/) — DI container
149
+
150
+ ## Learn More
151
+
152
+ - [Dialectical Wheels Overview](https://dialexity.com/blog/dialectical-wheels-for-systems-optimization/)
153
+ - [Dialectical Ethics](https://dialexity.com/blog/dialectical-ethics/)
154
+ - [Earlier Work](https://dialexity.com/blog/wp-content/uploads/2023/11/Moral-Wisdom-from-Ontology-1.pdf)
155
+
156
+ ## Applications
157
+
158
+ - [Eye Opener](https://app.dialexity.com/aiapps/eye-opener) — Analyze text, reveal hidden assumptions
159
+ - [Argument Inspector](https://app.dialexity.com/aiapps/argument-inspector/) — Deep-dive into case arguments for analysts and mediators
160
+
@@ -0,0 +1,118 @@
1
+ # Dialectical Framework
2
+
3
+ A reasoning framework for AI applications that need structured dialectical analysis. It curates a graph database through LLM-guided conversation, building up thesis-antithesis-synthesis structures from any domain.
4
+
5
+ The graph database **is** the state. Every interaction — extracting theses, finding oppositions, building wheels — writes semantic nodes and relationships into the graph. The framework is essentially a curation engine: an LLM orchestrator that progressively structures user input into dialectical knowledge graphs.
6
+
7
+ ## How It Works
8
+
9
+ 1. **Input** — User provides text, URLs, or ideas
10
+ 2. **Analysis** — LLM extracts theses, finds antitheses, generates aspects (T+, T-, A+, A-)
11
+ 3. **Graph curation** — Each insight is committed as nodes/relationships in the graph database
12
+ 4. **Exploration** — Perspectives are combined into Cycles, arranged into Wheels, and Transformations reveal paths toward synthesis
13
+
14
+ The graph accumulates structured reasoning over time. Applications query it, visualize it, or build on it.
15
+
16
+ ## Architecture
17
+
18
+ ```
19
+ Host Application (Chainlit, API, CLI)
20
+
21
+
22
+ Orchestrator (LLM + tools)
23
+
24
+
25
+ Graph Database (Memgraph / Neo4j)
26
+ ```
27
+
28
+ The Orchestrator is the main entry point. It manages an LLM conversation with tools that read and write the graph. The host app controls persona and session identity; the framework handles reasoning and graph curation.
29
+
30
+ ### Core Graph Structure
31
+
32
+ At the heart is the **Dialectical Wheel** — a semantic graph where nodes are statements and edges encode dialectical relationships (opposition, complementarity, transformation).
33
+
34
+ | Structure | Role |
35
+ |-----------|------|
36
+ | **Statement** | Atomic unit of meaning |
37
+ | **Perspective** | T/A opposition with aspects (T+, T-, A+, A-) |
38
+ | **Cycle** | Ordered sequence of Perspectives |
39
+ | **Wheel** | Concrete T-A arrangement implementing a Cycle |
40
+ | **Transformation** | Action-Reflection paths between segments |
41
+ | **Synthesis** | Emergent S+/S- from the Wheel's circular causality |
42
+
43
+ Think of a Wheel as a pizza: segments are slices (T, T+, T-), Perspectives are half-pizzas (thesis + opposing antithesis), and Transitions are the cuts between slices.
44
+
45
+ | Simple | Detailed |
46
+ |--------|----------|
47
+ | ![Wheel](https://raw.githubusercontent.com/dialexity/dialectical-framework/main/docs/wheel-scheme.png) | ![Wheel](https://raw.githubusercontent.com/dialexity/dialectical-framework/main/docs/wheel-scheme2.png) |
48
+
49
+ ## Integration
50
+
51
+ The framework is designed as a drop-in reasoning engine for AI applications that need dialectical analysis — decision support, systems thinking, mediation, ethical modeling.
52
+
53
+ ```python
54
+ from dialectical_framework.dialectical_reasoning import DialecticalReasoning
55
+ from dialectical_framework.settings import Settings
56
+ from dialectical_framework.agents.orchestrator.orchestrator import Orchestrator
57
+
58
+ # Initialize once
59
+ DialecticalReasoning.setup(Settings.from_env())
60
+
61
+ # Per-session usage
62
+ orchestrator = Orchestrator(app_preamble="You are a systems thinking coach...")
63
+
64
+ async for event in orchestrator.chat_stream("Analyze the tension between growth and sustainability"):
65
+ # ThinkingDelta, TextDelta, ToolStart, ToolResult, ResponseComplete
66
+ handle(event)
67
+ ```
68
+
69
+ ## Setup
70
+
71
+ ### Requirements
72
+
73
+ - Python 3.11+
74
+ - Memgraph or Neo4j
75
+ - An LLM provider (OpenAI, Anthropic, or any LiteLLM-compatible)
76
+
77
+ ### Install
78
+
79
+ ```bash
80
+ poetry install
81
+ ```
82
+
83
+ ### Environment Variables
84
+
85
+ | Variable | Description | Example |
86
+ |----------|-------------|---------|
87
+ | `DIALEXITY_DEFAULT_MODEL` | Model in provider/model format | `bedrock/anthropic.claude-sonnet-4-20250514-v1:0` |
88
+ | `DIALEXITY_GRAPH_DB_VENDOR` | Graph database | `memgraph` (default) or `neo4j` |
89
+ | `DIALEXITY_GRAPH_DB_HOST` | Database host | `127.0.0.1` |
90
+ | `DIALEXITY_GRAPH_DB_PORT` | Database port | `7687` |
91
+ | `DIALEXITY_THINKING_LEVEL` | Extended thinking budget | `medium`, `high`, `max` (optional) |
92
+
93
+ Store in `.env` or export in your environment.
94
+
95
+ ### Run Tests
96
+
97
+ ```bash
98
+ poetry run pytest # All tests (LLM mocked)
99
+ poetry run pytest -m llm # Only LLM-path tests (mocked)
100
+ poetry run pytest --real-llm # Hit real LLM provider
101
+ ```
102
+
103
+ ## Built With
104
+
105
+ - [Mirascope](https://mirascope.com/) — LLM abstraction
106
+ - [GQLAlchemy](https://memgraph.com/docs/gqlalchemy) — Graph ORM
107
+ - [dependency-injector](https://python-dependency-injector.ets-labs.org/) — DI container
108
+
109
+ ## Learn More
110
+
111
+ - [Dialectical Wheels Overview](https://dialexity.com/blog/dialectical-wheels-for-systems-optimization/)
112
+ - [Dialectical Ethics](https://dialexity.com/blog/dialectical-ethics/)
113
+ - [Earlier Work](https://dialexity.com/blog/wp-content/uploads/2023/11/Moral-Wisdom-from-Ontology-1.pdf)
114
+
115
+ ## Applications
116
+
117
+ - [Eye Opener](https://app.dialexity.com/aiapps/eye-opener) — Analyze text, reveal hidden assumptions
118
+ - [Argument Inspector](https://app.dialexity.com/aiapps/argument-inspector/) — Deep-dive into case arguments for analysts and mediators
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "dialectical-framework"
3
- version = "1.0.0"
3
+ version = "1.1.0"
4
4
  description = "A dialectical framework for augmented intelligence. AI reasoning powered with dialectics supports humans in: system optimization (psychology, engineering, business, politics, etc.); dispute resolution (mediation, conflicts, negotiations, etc.); decision-making (dilemmas, challenging situations, win-win, etc.)."
5
5
  authors = ["Evaldas Taroza <evaldas@dialexity.com>"]
6
6
  readme = "README.md"
@@ -56,9 +56,9 @@ boto3 = "^1.43.4"
56
56
  broadcaster = "^0.3.1"
57
57
 
58
58
  [tool.poetry.group.dev.dependencies]
59
- pytest = "^8.4.1"
59
+ pytest = "^9.0.3"
60
60
  ipykernel = "^7.2.0"
61
- black = "^25.1.0"
61
+ black = "^26.3.1"
62
62
  isort = "^6.0.1"
63
63
  #flake8 = "^7.1.2"
64
64
  pytest-asyncio = "^1.1.0"
@@ -0,0 +1,52 @@
1
+ """
2
+ Agent context for the dialectical framework.
3
+
4
+ Provides async-safe agent name propagation using contextvars.
5
+ The framework sets the agent name inside chat methods; concerns read it
6
+ for effect logging.
7
+
8
+ Framework layer usage (inside Analyst/Explorer):
9
+ from dialectical_framework.agents.agent_context import agent_scope
10
+
11
+ with agent_scope("analyst"):
12
+ result = await self._conversation.submit(...)
13
+
14
+ Read usage (inside ExecutionReport, EffectLogger):
15
+ from dialectical_framework.agents.agent_context import get_current_agent
16
+
17
+ agent = get_current_agent() # "analyst" or None
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import contextvars
23
+ from typing import Optional
24
+
25
+
26
+ _current_agent: contextvars.ContextVar[Optional[str]] = contextvars.ContextVar(
27
+ 'current_agent', default=None
28
+ )
29
+
30
+
31
+ def get_current_agent() -> Optional[str]:
32
+ """Get the current agent name from context. Returns None if not set."""
33
+ return _current_agent.get()
34
+
35
+
36
+ class _AgentContextManager:
37
+ def __init__(self, name: str) -> None:
38
+ self._name = name
39
+ self._token: Optional[contextvars.Token] = None
40
+
41
+ def __enter__(self) -> str:
42
+ self._token = _current_agent.set(self._name)
43
+ return self._name
44
+
45
+ def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
46
+ if self._token is not None:
47
+ _current_agent.reset(self._token)
48
+
49
+
50
+ def agent_scope(name: str) -> _AgentContextManager:
51
+ """Context manager for setting agent name within chat methods."""
52
+ return _AgentContextManager(name)