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.
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/PKG-INFO +1 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/pyproject.toml +1 -1
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/advisor.py +236 -0
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/system_prompts.py +738 -0
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/deepen.py +65 -0
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/explore.py +154 -0
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/scoped.py +193 -0
- dialectical_framework-1.6.7/src/dialectical_framework/agents/advisor/tools/sync.py +32 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/analyst.py +2 -2
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +60 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/system_prompts.py +27 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/apps.py +67 -7
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/conversation_facilitator.py +27 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/explorer.py +65 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/system_prompts.py +52 -6
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/present_exploration.py +64 -1
- {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
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +1 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +90 -2
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +49 -4
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/action_extraction.py +3 -2
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/control_statements_check.py +74 -11
- dialectical_framework-1.6.7/src/dialectical_framework/concerns/create_dx_input.py +146 -0
- dialectical_framework-1.6.7/src/dialectical_framework/concerns/dialectical_context.py +718 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/discard.py +5 -7
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +1 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/scoring_scales.py +10 -5
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_classification.py +138 -53
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/synthesis_generation.py +5 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/transformation_generation.py +4 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/assessable_entity.py +1 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/estimation.py +26 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/perspective.py +27 -8
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/input_repository.py +1 -1
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/transformation_repository.py +44 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/settings.py +44 -5
- dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/advisor.py +0 -130
- dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/system_prompts.py +0 -363
- dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/tools/explore.py +0 -74
- dialectical_framework-1.6.5/src/dialectical_framework/agents/advisor/tools/sync.py +0 -20
- dialectical_framework-1.6.5/src/dialectical_framework/concerns/create_dx_input.py +0 -66
- dialectical_framework-1.6.5/src/dialectical_framework/concerns/dialectical_context.py +0 -405
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/LICENSE +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/PATENTS +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/README.md +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/anchor.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/advisor/tools/ingest.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/agent_context.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/tools/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/analyst/tools/place_statement.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/execution_report.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/skills/generate_synthesis.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/expand_nexus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/explorer/tools/generate_synthesis.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/discard.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/read_digest.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/orchestrator/tools/read_input.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/agents/stream_events.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ac_re_taxonomy.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/add_input.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithesis_extraction.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/antithetical_thesis_detection.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/aspect_classification.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/aspect_generation.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/create_nexus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/expand_nexus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/perspective_validation.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/source_digest.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_deduplication.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_headline.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/statement_placement.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/thesis_extraction.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/dialectical_reasoning.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/causality_preset.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/enums/di.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/graph_event.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/events/graph_event_bus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/node_errors.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/dialexity_input_resolver.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/estimation_manager.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/case.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/ideas.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/input.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/polarity.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/rationale.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/statement.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/transition.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationship_manager.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/polarity_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/rendering.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/node_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/perspective_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/polarity_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/statement_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/scope_context.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/wheel_segment.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/has_config.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/protocols/input_resolver.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/__init__.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/concurrency.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/dc_replace.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/edge_context.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/effect_logger.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/input_context.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/order_transitions.py +0 -0
- {dialectical_framework-1.6.5 → dialectical_framework-1.6.7}/src/dialectical_framework/utils/sequence_generation.py +0 -0
- {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.
|
|
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.
|
|
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)
|