dialectical-framework 1.4.0__tar.gz → 1.4.1__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.4.0 → dialectical_framework-1.4.1}/PKG-INFO +1 -1
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/pyproject.toml +1 -1
- dialectical_framework-1.4.1/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +28 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/source_digest.py +64 -33
- dialectical_framework-1.4.0/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +0 -92
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/LICENSE +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/README.md +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/agent_context.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/analyst.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/system_prompts.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/tools/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/tools/create_dx_input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/analyst/tools/place_statement.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/apps.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/conversation_facilitator.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/execution_report.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/explorer.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/skills/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/skills/generate_synthesis.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/system_prompts.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/tools/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/tools/expand_nexus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/tools/generate_synthesis.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/explorer/tools/present_exploration.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/discard.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/read_digest.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/orchestrator/tools/read_input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/stream_events.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/ac_re_taxonomy.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/action_extraction.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/add_input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/ai_dto/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/antithesis_extraction.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/aspect_classification.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/aspect_generation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/control_statements_check.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/create_dx_input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/create_nexus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/discard.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/expand_nexus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/perspective_validation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/statement_classification.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/statement_deduplication.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/statement_placement.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/synthesis_generation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/thesis_extraction.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/concerns/transformation_generation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/dialectical_reasoning.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/enums/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/enums/causality_preset.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/enums/di.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/events/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/events/graph_event.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/events/graph_event_bus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/exceptions/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/exceptions/node_errors.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/dialexity_input_resolver.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/estimation_manager.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/mixins/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/assessable_entity.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/case.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/estimation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/ideas.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/input.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/perspective.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/polarity.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/rationale.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/statement.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/transition.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationship_manager.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/polarity_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/input_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/node_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/perspective_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/polarity_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/statement_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/transformation_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/scope_context.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/wheel_segment.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/protocols/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/protocols/has_config.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/protocols/input_resolver.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/settings.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/__init__.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/concurrency.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/dc_replace.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/edge_context.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/effect_logger.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/input_context.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/order_transitions.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/utils/sequence_generation.py +0 -0
- {dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/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.
|
|
3
|
+
Version: 1.4.1
|
|
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.
|
|
3
|
+
version = "1.4.1"
|
|
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"
|
dialectical_framework-1.4.1/src/dialectical_framework/agents/orchestrator/tools/digest_input.py
ADDED
|
@@ -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)
|
|
@@ -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.
|
|
6
|
+
guidance.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
# Initial digest
|
|
8
|
+
Programmatic usage:
|
|
10
9
|
concern = SourceDigest()
|
|
11
|
-
|
|
10
|
+
input_node = await concern.resolve(input_hash="abc123")
|
|
12
11
|
|
|
13
12
|
# Refine with context
|
|
14
13
|
concern = SourceDigest()
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
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[
|
|
69
|
+
class SourceDigest(ReasonableConcern[Input], SettingsAware):
|
|
61
70
|
"""
|
|
62
|
-
Generates or refines the analytical digest
|
|
71
|
+
Generates or refines the analytical digest for an Input node.
|
|
63
72
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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:
|
dialectical_framework-1.4.0/src/dialectical_framework/agents/orchestrator/tools/digest_input.py
DELETED
|
@@ -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)
|
|
File without changes
|
|
File without changes
|
{dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/agents/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/enums/di.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dialectical_framework-1.4.0 → dialectical_framework-1.4.1}/src/dialectical_framework/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|