dialectical-framework 1.6.5__tar.gz → 1.6.7__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 (199) hide show
  1. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/PKG-INFO +1 -1
  2. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/pyproject.toml +1 -1
  3. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/advisor.py +236 -0
  4. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/system_prompts.py +738 -0
  5. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/deepen.py +65 -0
  6. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/explore.py +154 -0
  7. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/scoped.py +193 -0
  8. dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/sync.py +32 -0
  9. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/analyst.py +2 -2
  10. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +60 -0
  11. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/system_prompts.py +27 -1
  12. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/apps.py +67 -7
  13. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/conversation_facilitator.py +27 -1
  14. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/explorer.py +65 -1
  15. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/system_prompts.py +52 -6
  16. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/present_exploration.py +64 -1
  17. {dialectical_framework-1.6.5/src/dialectical_framework/agents/analyst → dialectical_framework-1.6.7/src/dialectical_framework/agents/orchestrator}/tools/create_dx_input.py +7 -0
  18. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +1 -1
  19. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +90 -2
  20. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +49 -4
  21. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/action_extraction.py +3 -2
  22. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/control_statements_check.py +74 -11
  23. dialectical_framework-1.6.7/src/dialectical_framework/concerns/create_dx_input.py +146 -0
  24. dialectical_framework-1.6.7/src/dialectical_framework/concerns/dialectical_context.py +718 -0
  25. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/discard.py +5 -7
  26. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +1 -1
  27. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/scoring_scales.py +10 -5
  28. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_classification.py +138 -53
  29. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/synthesis_generation.py +5 -1
  30. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/transformation_generation.py +4 -0
  31. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/assessable_entity.py +1 -1
  32. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/estimation.py +26 -0
  33. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/perspective.py +27 -8
  34. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/input_repository.py +1 -1
  35. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/transformation_repository.py +44 -0
  36. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/settings.py +44 -5
  37. dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/advisor.py +0 -130
  38. dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/system_prompts.py +0 -363
  39. dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/tools/explore.py +0 -74
  40. dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/tools/sync.py +0 -20
  41. dialectical_framework-1.6.5/src/dialectical_framework/concerns/create_dx_input.py +0 -66
  42. dialectical_framework-1.6.5/src/dialectical_framework/concerns/dialectical_context.py +0 -405
  43. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/LICENSE +0 -0
  44. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/PATENTS +0 -0
  45. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/README.md +0 -0
  46. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/__init__.py +0 -0
  47. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/__init__.py +0 -0
  48. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/__init__.py +0 -0
  49. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/__init__.py +0 -0
  50. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/anchor.py +0 -0
  51. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/ingest.py +0 -0
  52. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/agent_context.py +0 -0
  53. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/__init__.py +0 -0
  54. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/__init__.py +0 -0
  55. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +0 -0
  56. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +0 -0
  57. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +0 -0
  58. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +0 -0
  59. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +0 -0
  60. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/tools/__init__.py +0 -0
  61. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/tools/place_statement.py +0 -0
  62. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/execution_report.py +0 -0
  63. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/__init__.py +0 -0
  64. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/__init__.py +0 -0
  65. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +0 -0
  66. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +0 -0
  67. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/generate_synthesis.py +0 -0
  68. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/__init__.py +0 -0
  69. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +0 -0
  70. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/expand_nexus.py +0 -0
  71. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/generate_synthesis.py +0 -0
  72. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/__init__.py +0 -0
  73. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/__init__.py +0 -0
  74. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +0 -0
  75. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +0 -0
  76. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/discard.py +0 -0
  77. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +0 -0
  78. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/read_digest.py +0 -0
  79. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/read_input.py +0 -0
  80. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
  81. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/stream_events.py +0 -0
  82. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/__init__.py +0 -0
  83. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ac_re_taxonomy.py +0 -0
  84. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/add_input.py +0 -0
  85. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/__init__.py +0 -0
  86. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
  87. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
  88. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
  89. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithesis_extraction.py +0 -0
  90. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithetical_thesis_detection.py +0 -0
  91. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/aspect_classification.py +0 -0
  92. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/aspect_generation.py +0 -0
  93. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/__init__.py +0 -0
  94. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
  95. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +0 -0
  96. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
  97. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
  98. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
  99. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
  100. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
  101. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
  102. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
  103. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/create_nexus.py +0 -0
  104. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
  105. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
  106. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/expand_nexus.py +0 -0
  107. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
  108. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/perspective_validation.py +0 -0
  109. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/source_digest.py +0 -0
  110. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_deduplication.py +0 -0
  111. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_headline.py +0 -0
  112. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_placement.py +0 -0
  113. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/thesis_extraction.py +0 -0
  114. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
  115. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/dialectical_reasoning.py +0 -0
  116. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/__init__.py +0 -0
  117. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/causality_preset.py +0 -0
  118. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/di.py +0 -0
  119. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/__init__.py +0 -0
  120. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/graph_event.py +0 -0
  121. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/graph_event_bus.py +0 -0
  122. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/__init__.py +0 -0
  123. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/node_errors.py +0 -0
  124. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
  125. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/__init__.py +0 -0
  126. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
  127. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/dialexity_input_resolver.py +0 -0
  128. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/estimation_manager.py +0 -0
  129. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/__init__.py +0 -0
  130. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
  131. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
  132. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
  133. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/__init__.py +0 -0
  134. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
  135. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/case.py +0 -0
  136. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
  137. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/ideas.py +0 -0
  138. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/input.py +0 -0
  139. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
  140. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/polarity.py +0 -0
  141. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/rationale.py +0 -0
  142. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/statement.py +0 -0
  143. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
  144. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
  145. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/transition.py +0 -0
  146. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
  147. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationship_manager.py +0 -0
  148. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/__init__.py +0 -0
  149. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
  150. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
  151. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
  152. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +0 -0
  153. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
  154. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
  155. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +0 -0
  156. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
  157. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
  158. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
  159. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
  160. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
  161. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
  162. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
  163. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
  164. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
  165. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
  166. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
  167. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/polarity_relationship.py +0 -0
  168. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
  169. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
  170. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
  171. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/rendering.py +0 -0
  172. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/__init__.py +0 -0
  173. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
  174. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
  175. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
  176. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/node_repository.py +0 -0
  177. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/perspective_repository.py +0 -0
  178. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/polarity_repository.py +0 -0
  179. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
  180. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/statement_repository.py +0 -0
  181. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
  182. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/scope_context.py +0 -0
  183. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
  184. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/wheel_segment.py +0 -0
  185. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
  186. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/__init__.py +0 -0
  187. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/has_config.py +0 -0
  188. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/input_resolver.py +0 -0
  189. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/__init__.py +0 -0
  190. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
  191. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/concurrency.py +0 -0
  192. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/dc_replace.py +0 -0
  193. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
  194. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/edge_context.py +0 -0
  195. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/effect_logger.py +0 -0
  196. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/input_context.py +0 -0
  197. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/order_transitions.py +0 -0
  198. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/sequence_generation.py +0 -0
  199. {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/use_brain.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dialectical-framework
3
- Version: 1.6.5
3
+ Version: 1.6.7
4
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
5
  License: MIT
6
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "dialectical-framework"
3
- version = "1.6.5"
3
+ version = "1.6.7"
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"
@@ -0,0 +1,236 @@
1
+ """
2
+ Advisor: Conversational agent for advisory apps.
3
+
4
+ Pure conversation — the framework runs silently in the background.
5
+ The user never sees framework terminology, just experiences progressively
6
+ wiser responses as dialectical understanding builds.
7
+
8
+ Two use cases:
9
+ - Fresh start: user talks, framework builds graph behind the scenes.
10
+ - Post-analysis: rich graph exists, advisor draws on it immediately.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import logging
16
+ from typing import AsyncGenerator, Optional
17
+
18
+ from pydantic import BaseModel, Field
19
+
20
+ from dialectical_framework.agents.advisor.system_prompts import \
21
+ system_prompt
22
+ from dialectical_framework.agents.agent_context import agent_scope
23
+ from dialectical_framework.agents.conversation_facilitator import \
24
+ ConversationFacilitator
25
+ from dialectical_framework.agents.stream_events import StreamEvent
26
+
27
+ logger = logging.getLogger(__name__)
28
+
29
+
30
+ class ChatResponse(BaseModel):
31
+ """Response from the advisor chat."""
32
+
33
+ message: str = Field(description="The assistant's response message")
34
+
35
+
36
+ class Advisor:
37
+ """
38
+ Conversational agent for advisory apps.
39
+
40
+ The host app is responsible for:
41
+ - Creating the Case and managing scope(sid)
42
+ - Persisting and loading conversation messages
43
+ - Wrapping chat() calls in `with scope(sid):`
44
+ - Optionally pre-computing dialectical_context via DialecticalContext
45
+
46
+ The system prompt is static after its first render: the Current
47
+ Understanding dump reflects the graph at construction time. Fresh graph
48
+ state flows through the conversation itself — tool results carry each
49
+ change, and the model calls `sync` when it wants a full re-dump. (One
50
+ exception: an exploration-pinned Advisor constructed without a precomputed
51
+ dialectical_context renders its scoped dump lazily on the first turn,
52
+ because __init__ is sync and DialecticalContext.resolve() is async. A
53
+ transient render failure retries on the next turn; only success — or a
54
+ vanished nexus — consumes the one shot.)
55
+
56
+ Usage (fresh start):
57
+ with scope(case.sid):
58
+ advisor = Advisor(app_preamble=COUNSELOR_APP)
59
+ response = await advisor.chat("My son started smoking...")
60
+
61
+ Usage (post-analysis, rich graph exists):
62
+ with scope(case.sid):
63
+ context = await DialecticalContext().resolve()
64
+ advisor = Advisor(app_preamble=COUNSELOR_APP, dialectical_context=context)
65
+ response = await advisor.chat("I want to talk through what we found...")
66
+
67
+ Usage (resuming conversation):
68
+ with scope(case.sid):
69
+ advisor = Advisor(app_preamble=COUNSELOR_APP, messages=saved_messages)
70
+ response = await advisor.chat("What about the other angle?")
71
+
72
+ Usage (Advisor mode of an exploration session — Explorer handover):
73
+ # User was chatting in Explorer (operator mode) and asks "what does
74
+ # this all mean for me?" — the host toggles to counsel mode by
75
+ # handing the SAME conversation to an Advisor pinned to the SAME
76
+ # exploration:
77
+ with scope(case.sid):
78
+ advisor = Advisor(
79
+ app_preamble=EXPLORATION_ADVISOR_APP,
80
+ nexus_hash=explorer.nexus_hash,
81
+ messages=explorer.messages,
82
+ )
83
+ response = await advisor.chat("So what does this all mean for me?")
84
+
85
+ # Toggling back to operator mode is the reverse handover:
86
+ # Explorer(nexus_hash=nx, messages=advisor.messages, ...)
87
+
88
+ This is a register toggle, not a different scope: same conversation,
89
+ same exploration, different head. The Advisor keeps its full
90
+ analytical power (it IS Analyst+Explorer behind one voice): it
91
+ anchors new tensions from the conversation and weaves them in. The
92
+ nexus pin is enforced in code: the tools close over nexus_hash — the
93
+ model cannot create sibling nexuses or reach outside the exploration.
94
+ Requires an active scope(sid) at construction (nexus is validated
95
+ against the DB). The host app drives the toggle — there is no
96
+ automatic agent-switching.
97
+ """
98
+
99
+ AGENT_NAME = "advisor"
100
+
101
+ def __init__(
102
+ self,
103
+ app_preamble: Optional[str] = None,
104
+ dialectical_context: Optional[str] = None,
105
+ messages: Optional[list] = None,
106
+ nexus_hash: Optional[str] = None,
107
+ ) -> None:
108
+ self._nexus_hash = nexus_hash
109
+ if nexus_hash:
110
+ self._validate_nexus(nexus_hash)
111
+ self._tools = _build_scoped_tools(nexus_hash)
112
+ else:
113
+ self._tools = _build_tools()
114
+ self._conversation = ConversationFacilitator(tools=self._tools)
115
+ if messages:
116
+ self._conversation._messages = list(messages)
117
+ self._app_preamble = app_preamble
118
+ # Scoped mode without a precomputed context: render the scoped dump
119
+ # lazily on turn 1 (init is sync; resolve() is async). One-shot —
120
+ # the system prompt is static after its first render.
121
+ self._pending_context_render = bool(nexus_hash and not dialectical_context)
122
+ self._conversation.set_system_prompt(
123
+ self._build_system_prompt(app_preamble, dialectical_context)
124
+ )
125
+
126
+ @staticmethod
127
+ def _validate_nexus(nexus_hash: str) -> None:
128
+ from dialectical_framework.graph.repositories.nexus_repository import \
129
+ NexusRepository
130
+
131
+ if NexusRepository().find_by_hash_prefix(nexus_hash) is None:
132
+ raise ValueError(f"Nexus not found: {nexus_hash}")
133
+
134
+ def _build_system_prompt(
135
+ self,
136
+ app_preamble: Optional[str] = None,
137
+ dialectical_context: Optional[str] = None,
138
+ ) -> str:
139
+ parts = []
140
+ if app_preamble:
141
+ parts.append(app_preamble)
142
+
143
+ context_text = (
144
+ dialectical_context
145
+ or "No prior understanding — this is a fresh conversation."
146
+ )
147
+ # Rendered at construction (not the import-time SYSTEM_PROMPT
148
+ # constant) so settings-derived prompt values (max_wheel_layer)
149
+ # reflect the live DI configuration.
150
+ engine = system_prompt(
151
+ tool_names=[t.__name__ for t in self._tools],
152
+ scoped_nexus_hash=self._nexus_hash,
153
+ )
154
+ parts.append(engine.replace("{dialectical_context}", context_text))
155
+
156
+ return "\n\n".join(parts)
157
+
158
+ async def chat(self, user_message: str) -> str:
159
+ with agent_scope(self.AGENT_NAME):
160
+ await self._render_pending_context()
161
+ result = await self._conversation.submit(ChatResponse, user_message)
162
+ return result.message
163
+
164
+ async def chat_stream(self, user_message: str) -> AsyncGenerator[StreamEvent, None]:
165
+ with agent_scope(self.AGENT_NAME):
166
+ await self._render_pending_context()
167
+ async for event in self._conversation.submit_stream(
168
+ ChatResponse, user_message
169
+ ):
170
+ yield event
171
+
172
+ async def _render_pending_context(self) -> None:
173
+ """One-shot deferred render of the scoped Current Understanding dump
174
+ (scoped construction without a precomputed dialectical_context).
175
+
176
+ One-shot on SUCCESS — a transient failure (DB blip) keeps the flag
177
+ set so the next turn retries, instead of leaving the whole session
178
+ with a prompt that claims rich understanding over an empty slot.
179
+ """
180
+ if not self._pending_context_render:
181
+ return
182
+ try:
183
+ from dialectical_framework.concerns.dialectical_context import \
184
+ DialecticalContext
185
+
186
+ context = await DialecticalContext(
187
+ nexus_hash=self._nexus_hash
188
+ ).resolve()
189
+ self._conversation.set_system_prompt(
190
+ self._build_system_prompt(self._app_preamble, context)
191
+ )
192
+ self._pending_context_render = False
193
+ except ValueError:
194
+ # Nexus disappeared — not transient, don't retry forever.
195
+ self._pending_context_render = False
196
+ logger.exception("Deferred dialectical context render failed")
197
+ except Exception:
198
+ # Fail-soft this turn; retry next turn. The model still reaches
199
+ # graph state through sync meanwhile.
200
+ logger.exception("Deferred dialectical context render failed")
201
+
202
+ @property
203
+ def messages(self) -> list:
204
+ return self._conversation._messages
205
+
206
+
207
+ def _build_tools() -> list:
208
+ from dialectical_framework.agents.advisor.tools.anchor import anchor
209
+ from dialectical_framework.agents.advisor.tools.deepen import deepen
210
+ from dialectical_framework.agents.advisor.tools.explore import explore
211
+ from dialectical_framework.agents.advisor.tools.ingest import ingest
212
+ from dialectical_framework.agents.advisor.tools.sync import sync
213
+ from dialectical_framework.agents.orchestrator.tools.inspect_node import \
214
+ inspect_node
215
+ from dialectical_framework.agents.orchestrator.tools.read_digest import \
216
+ read_digest
217
+ from dialectical_framework.agents.orchestrator.tools.discard import \
218
+ discard
219
+
220
+ return [
221
+ ingest,
222
+ anchor,
223
+ explore,
224
+ deepen,
225
+ sync,
226
+ inspect_node,
227
+ read_digest,
228
+ discard,
229
+ ]
230
+
231
+
232
+ def _build_scoped_tools(nexus_hash: str) -> list:
233
+ from dialectical_framework.agents.advisor.tools.scoped import \
234
+ build_scoped_tools
235
+
236
+ return build_scoped_tools(nexus_hash)