dialectical-framework 1.4.0__tar.gz → 1.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/PKG-INFO +1 -1
  2. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/pyproject.toml +1 -1
  3. dialectical_framework-1.4.2/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +28 -0
  4. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/add_input.py +10 -0
  5. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/source_digest.py +64 -33
  6. dialectical_framework-1.4.0/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +0 -92
  7. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/LICENSE +0 -0
  8. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/README.md +0 -0
  9. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/__init__.py +0 -0
  10. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/__init__.py +0 -0
  11. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/agent_context.py +0 -0
  12. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/__init__.py +0 -0
  13. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/analyst.py +0 -0
  14. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/__init__.py +0 -0
  15. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +0 -0
  16. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +0 -0
  17. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +0 -0
  18. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +0 -0
  19. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +0 -0
  20. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +0 -0
  21. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/system_prompts.py +0 -0
  22. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/tools/__init__.py +0 -0
  23. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/tools/create_dx_input.py +0 -0
  24. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/analyst/tools/place_statement.py +0 -0
  25. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/apps.py +0 -0
  26. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/conversation_facilitator.py +0 -0
  27. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/execution_report.py +0 -0
  28. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/__init__.py +0 -0
  29. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/explorer.py +0 -0
  30. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/skills/__init__.py +0 -0
  31. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +0 -0
  32. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +0 -0
  33. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/skills/generate_synthesis.py +0 -0
  34. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/system_prompts.py +0 -0
  35. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/tools/__init__.py +0 -0
  36. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +0 -0
  37. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/tools/expand_nexus.py +0 -0
  38. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/tools/generate_synthesis.py +0 -0
  39. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/explorer/tools/present_exploration.py +0 -0
  40. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/__init__.py +0 -0
  41. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/__init__.py +0 -0
  42. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +0 -0
  43. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/discard.py +0 -0
  44. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +0 -0
  45. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +0 -0
  46. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +0 -0
  47. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +0 -0
  48. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/read_digest.py +0 -0
  49. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/orchestrator/tools/read_input.py +0 -0
  50. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
  51. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/agents/stream_events.py +0 -0
  52. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/__init__.py +0 -0
  53. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/ac_re_taxonomy.py +0 -0
  54. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/action_extraction.py +0 -0
  55. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/ai_dto/__init__.py +0 -0
  56. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
  57. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
  58. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
  59. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/antithesis_extraction.py +0 -0
  60. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/aspect_classification.py +0 -0
  61. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/aspect_generation.py +0 -0
  62. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/__init__.py +0 -0
  63. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
  64. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +0 -0
  65. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
  66. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
  67. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
  68. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
  69. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
  70. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
  71. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
  72. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/control_statements_check.py +0 -0
  73. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/create_dx_input.py +0 -0
  74. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/create_nexus.py +0 -0
  75. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
  76. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/discard.py +0 -0
  77. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
  78. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/expand_nexus.py +0 -0
  79. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
  80. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/perspective_validation.py +0 -0
  81. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +0 -0
  82. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/statement_classification.py +0 -0
  83. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/statement_deduplication.py +0 -0
  84. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/statement_placement.py +0 -0
  85. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/synthesis_generation.py +0 -0
  86. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/thesis_extraction.py +0 -0
  87. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
  88. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/concerns/transformation_generation.py +0 -0
  89. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/dialectical_reasoning.py +0 -0
  90. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/enums/__init__.py +0 -0
  91. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/enums/causality_preset.py +0 -0
  92. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/enums/di.py +0 -0
  93. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/events/__init__.py +0 -0
  94. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/events/graph_event.py +0 -0
  95. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/events/graph_event_bus.py +0 -0
  96. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/exceptions/__init__.py +0 -0
  97. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/exceptions/node_errors.py +0 -0
  98. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
  99. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/__init__.py +0 -0
  100. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
  101. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/dialexity_input_resolver.py +0 -0
  102. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/estimation_manager.py +0 -0
  103. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/mixins/__init__.py +0 -0
  104. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
  105. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
  106. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
  107. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/__init__.py +0 -0
  108. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/assessable_entity.py +0 -0
  109. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
  110. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/case.py +0 -0
  111. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
  112. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/estimation.py +0 -0
  113. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/ideas.py +0 -0
  114. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/input.py +0 -0
  115. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
  116. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/perspective.py +0 -0
  117. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/polarity.py +0 -0
  118. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/rationale.py +0 -0
  119. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/statement.py +0 -0
  120. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
  121. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
  122. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/transition.py +0 -0
  123. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
  124. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationship_manager.py +0 -0
  125. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/__init__.py +0 -0
  126. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
  127. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
  128. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
  129. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +0 -0
  130. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
  131. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
  132. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +0 -0
  133. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
  134. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
  135. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
  136. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
  137. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
  138. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
  139. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
  140. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
  141. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
  142. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
  143. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
  144. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/polarity_relationship.py +0 -0
  145. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
  146. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
  147. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
  148. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/__init__.py +0 -0
  149. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
  150. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
  151. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/input_repository.py +0 -0
  152. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
  153. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/node_repository.py +0 -0
  154. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/perspective_repository.py +0 -0
  155. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/polarity_repository.py +0 -0
  156. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
  157. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/statement_repository.py +0 -0
  158. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/transformation_repository.py +0 -0
  159. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
  160. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/scope_context.py +0 -0
  161. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
  162. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/wheel_segment.py +0 -0
  163. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
  164. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/protocols/__init__.py +0 -0
  165. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/protocols/has_config.py +0 -0
  166. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/protocols/input_resolver.py +0 -0
  167. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/settings.py +0 -0
  168. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/__init__.py +0 -0
  169. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
  170. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/concurrency.py +0 -0
  171. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/dc_replace.py +0 -0
  172. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
  173. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/edge_context.py +0 -0
  174. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/effect_logger.py +0 -0
  175. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/input_context.py +0 -0
  176. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/order_transitions.py +0 -0
  177. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/src/dialectical_framework/utils/sequence_generation.py +0 -0
  178. {dialectical_framework-1.4.0 → dialectical_framework-1.4.2}/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.4.0
3
+ Version: 1.4.2
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.4.0"
3
+ version = "1.4.2"
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,28 @@
1
+ """
2
+ digest_input: Tool for generating/refining the living digest of an Input source.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Annotated
8
+
9
+ from mirascope import llm
10
+ from pydantic import Field
11
+
12
+ from dialectical_framework.concerns.source_digest import SourceDigest
13
+
14
+
15
+ @llm.tool
16
+ async def digest_input(
17
+ input_hash: Annotated[str, Field(description="Hash of the Input node to digest")],
18
+ context: Annotated[
19
+ str,
20
+ Field(
21
+ description="Direction for the digest: user guidance, framework state, or focus instructions"
22
+ ),
23
+ ] = "",
24
+ ) -> str:
25
+ """Generate or refine the analytical digest of an input source. Use to build initial understanding of new inputs, or to sharpen the digest with user direction or framework learnings."""
26
+ concern = SourceDigest()
27
+ await concern.resolve(input_hash=input_hash, context=context)
28
+ return str(concern.report)
@@ -28,6 +28,16 @@ class AddInput(ReasonableConcern[Input]):
28
28
 
29
29
  input_node = Input(content=content)
30
30
  input_node.commit()
31
+
32
+ already_connected = any(
33
+ node._id == input_node._id for node, _ in case.inputs.all()
34
+ )
35
+ if already_connected:
36
+ self._report.ok = True
37
+ self._report.summary = f"Input {input_node.short_hash} already exists"
38
+ self._report.artifacts["input_hash"] = input_node.short_hash
39
+ return input_node
40
+
31
41
  case.inputs.connect(input_node)
32
42
 
33
43
  self._report.node_created(input_node)
@@ -3,30 +3,39 @@ SourceDigest: Concern for generating and refining the living digest of an Input
3
3
 
4
4
  The digest is the framework's evolving understanding of a source — not a naked summary,
5
5
  but a directed analytical document shaped by both the source material and user/framework
6
- guidance. It focuses on dialectical material: tensions, oppositions, values, assertions.
6
+ guidance.
7
7
 
8
- Usage:
9
- # Initial digest
8
+ Programmatic usage:
10
9
  concern = SourceDigest()
11
- digest = await concern.resolve(content="Full text of the article...")
10
+ input_node = await concern.resolve(input_hash="abc123")
12
11
 
13
12
  # Refine with context
14
13
  concern = SourceDigest()
15
- digest = await concern.resolve(
16
- content="Full text...",
17
- existing_digest="Previous understanding...",
14
+ input_node = await concern.resolve(
15
+ input_hash="abc123",
18
16
  context="User says: focus on regulatory tensions",
19
17
  )
20
18
  """
21
19
 
22
20
  from __future__ import annotations
23
21
 
22
+ from typing import Union
23
+
24
+ from dependency_injector.wiring import Provide, inject
25
+ from gqlalchemy import Memgraph, Neo4j
24
26
  from pydantic import BaseModel, Field
25
27
 
26
28
  from dialectical_framework.agents.conversation_facilitator import \
27
29
  ConversationFacilitator
28
30
  from dialectical_framework.agents.reasonable_concern import ReasonableConcern
31
+ from dialectical_framework.enums.di import DI
32
+ from dialectical_framework.graph.nodes.input import Input
33
+ from dialectical_framework.graph.repositories.node_repository import \
34
+ NodeRepository
29
35
  from dialectical_framework.protocols.has_config import SettingsAware
36
+ from dialectical_framework.protocols.input_resolver import InputResolver
37
+
38
+ DIGEST_THRESHOLD = 1500
30
39
 
31
40
  SYSTEM_PROMPT = """You are an analytical reader producing a **digest** — a living document that captures understanding of a source.
32
41
 
@@ -50,44 +59,73 @@ class DigestDto(BaseModel):
50
59
  """Structured output for digest generation."""
51
60
 
52
61
  digest: str = Field(
53
- description="The analytical digest text — focused on dialectical material"
62
+ description="The analytical digest text"
54
63
  )
55
64
  reasoning: str = Field(
56
65
  description="Brief explanation of what was emphasized and why"
57
66
  )
58
67
 
59
68
 
60
- class SourceDigest(ReasonableConcern[str], SettingsAware):
69
+ class SourceDigest(ReasonableConcern[Input], SettingsAware):
61
70
  """
62
- Generates or refines the analytical digest of an Input source.
71
+ Generates or refines the analytical digest for an Input node.
63
72
 
64
- The digest captures the framework's evolving understanding of a source,
65
- shaped by both the content itself and any direction from the user or
66
- framework state (perspectives discovered, user guidance, etc.).
73
+ Resolves the full content, applies threshold logic (short content
74
+ is used as its own digest without an LLM call), then persists the
75
+ result back to the Input's digest field.
76
+
77
+ Programmatic usage:
78
+ concern = SourceDigest()
79
+ input_node = await concern.resolve(input_hash="abc123", context="focus on X")
67
80
  """
68
81
 
69
82
  def __init__(self) -> None:
70
83
  self._conversation = ConversationFacilitator()
71
84
 
85
+ @inject
72
86
  async def resolve(
87
+ self,
88
+ input_hash: str,
89
+ context: str = "",
90
+ input_resolver: InputResolver = Provide[DI.input_resolver],
91
+ graph_db: Union[Memgraph, Neo4j] = Provide[DI.graph_db],
92
+ ) -> Input:
93
+ repo = NodeRepository()
94
+ input_node = repo.find_by_hash(input_hash, node_type=Input)
95
+
96
+ if not input_node:
97
+ raise ValueError(f"Input not found: {input_hash}")
98
+
99
+ resolved_content = await input_resolver.resolve(input_node)
100
+ if not resolved_content:
101
+ raise ValueError(f"Input {input_hash} has no resolvable content")
102
+
103
+ if len(resolved_content) <= DIGEST_THRESHOLD and not input_node.digest:
104
+ new_digest = resolved_content
105
+ self._report.summary = f"Content compact enough to use as digest for input {input_node.short_hash}"
106
+ else:
107
+ new_digest = await self._generate_digest(
108
+ content=resolved_content,
109
+ existing_digest=input_node.digest,
110
+ context=context,
111
+ )
112
+ self._report.summary = f"Digest {'refined' if input_node.digest else 'created'} for input {input_node.short_hash}"
113
+
114
+ input_node.digest = new_digest
115
+ input_node.save()
116
+
117
+ self._report.ok = True
118
+ self._report.artifacts["input_hash"] = input_node.short_hash
119
+ self._report.artifacts["digest"] = new_digest
120
+
121
+ return input_node
122
+
123
+ async def _generate_digest(
73
124
  self,
74
125
  content: str,
75
126
  existing_digest: str | None = None,
76
127
  context: str = "",
77
128
  ) -> str:
78
- """
79
- Generate or refine a digest for source content.
80
-
81
- Args:
82
- content: The full resolved source text
83
- existing_digest: Current digest if refining (None for initial creation)
84
- context: Direction from user or framework state that should shape
85
- the digest (e.g., "focus on ethical arguments",
86
- "we've identified tension between growth and stability")
87
-
88
- Returns:
89
- The new digest text
90
- """
91
129
  self._conversation.set_system_prompt(SYSTEM_PROMPT)
92
130
 
93
131
  prompt = self._build_prompt(content, existing_digest, context)
@@ -97,13 +135,7 @@ class SourceDigest(ReasonableConcern[str], SettingsAware):
97
135
  user_content=prompt,
98
136
  )
99
137
 
100
- self._report.ok = True
101
138
  self._report.artifacts["reasoning"] = result.reasoning
102
- if existing_digest:
103
- self._report.summary = "Refined existing digest"
104
- else:
105
- self._report.summary = "Generated initial digest"
106
-
107
139
  return result.digest
108
140
 
109
141
  def _build_prompt(
@@ -112,7 +144,6 @@ class SourceDigest(ReasonableConcern[str], SettingsAware):
112
144
  existing_digest: str | None,
113
145
  context: str,
114
146
  ) -> str:
115
- """Build the user prompt based on whether this is creation or refinement."""
116
147
  sections = []
117
148
 
118
149
  if existing_digest:
@@ -1,92 +0,0 @@
1
- """
2
- DigestInput: Concern + tool for generating/refining the living digest of an Input source.
3
- """
4
-
5
- from __future__ import annotations
6
-
7
- from typing import Annotated, Union
8
-
9
- from dependency_injector.wiring import Provide, inject
10
- from gqlalchemy import Memgraph, Neo4j
11
- from mirascope import llm
12
- from pydantic import Field
13
-
14
- from dialectical_framework.agents.reasonable_concern import ReasonableConcern
15
- from dialectical_framework.concerns.source_digest import SourceDigest
16
- from dialectical_framework.enums.di import DI
17
- from dialectical_framework.graph.nodes.input import Input
18
- from dialectical_framework.graph.repositories.node_repository import \
19
- NodeRepository
20
- from dialectical_framework.protocols.input_resolver import InputResolver
21
-
22
-
23
- # Content shorter than this is used as its own digest (no LLM call needed)
24
- DIGEST_THRESHOLD = 1500
25
-
26
-
27
- class DigestInput(ReasonableConcern[Input]):
28
- """
29
- Generates or refines the digest for an Input node.
30
-
31
- Resolves the full content, runs SourceDigest with any provided context,
32
- and persists the result to the Input's digest field.
33
-
34
- Short content (under ~1500 chars) is used directly as the digest
35
- without an LLM call — it's already compact enough.
36
- """
37
-
38
- @inject
39
- async def resolve(
40
- self,
41
- input_hash: str,
42
- context: str = "",
43
- input_resolver: InputResolver = Provide[DI.input_resolver],
44
- graph_db: Union[Memgraph, Neo4j] = Provide[DI.graph_db],
45
- ) -> Input:
46
- repo = NodeRepository()
47
- input_node = repo.find_by_hash(input_hash, node_type=Input)
48
-
49
- if not input_node:
50
- raise ValueError(f"Input not found: {input_hash}")
51
-
52
- resolved_content = await input_resolver.resolve(input_node)
53
- if not resolved_content:
54
- raise ValueError(f"Input {input_hash} has no resolvable content")
55
-
56
- if len(resolved_content) <= DIGEST_THRESHOLD and not input_node.digest:
57
- new_digest = resolved_content
58
- self._report.summary = f"Content compact enough to use as digest for input {input_node.short_hash}"
59
- else:
60
- concern = SourceDigest()
61
- new_digest = await concern.resolve(
62
- content=resolved_content,
63
- existing_digest=input_node.digest,
64
- context=context,
65
- )
66
- self._report = self._report.merge(concern.report)
67
- self._report.summary = f"Digest {'refined' if input_node.digest else 'created'} for input {input_node.short_hash}"
68
-
69
- input_node.digest = new_digest
70
- input_node.save()
71
-
72
- self._report.ok = True
73
- self._report.artifacts["input_hash"] = input_node.short_hash
74
- self._report.artifacts["digest"] = new_digest
75
-
76
- return input_node
77
-
78
-
79
- @llm.tool
80
- async def digest_input(
81
- input_hash: Annotated[str, Field(description="Hash of the Input node to digest")],
82
- context: Annotated[
83
- str,
84
- Field(
85
- description="Direction for the digest: user guidance, framework state, or focus instructions"
86
- ),
87
- ] = "",
88
- ) -> str:
89
- """Generate or refine the analytical digest of an input source. Use to build initial understanding of new inputs, or to sharpen the digest with user direction or framework learnings."""
90
- concern = DigestInput()
91
- await concern.resolve(input_hash=input_hash, context=context)
92
- return str(concern.report)