dialectical-framework 1.5.6__tar.gz → 1.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/PKG-INFO +1 -1
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/pyproject.toml +1 -1
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/advisor.py +3 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/system_prompts.py +70 -87
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/system_prompts.py +5 -4
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/apps.py +16 -9
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/skills/explore_transformations.py +1 -1
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/system_prompts.py +3 -3
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/action_extraction.py +5 -5
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/aspect_classification.py +17 -42
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/aspect_generation.py +19 -55
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator_balanced.py +3 -3
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/control_statements_check.py +4 -5
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/positive_ac_re_apex_derivation.py +20 -15
- dialectical_framework-1.6.0/src/dialectical_framework/concerns/scoring_scales.py +55 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/statement_classification.py +150 -39
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/statement_deduplication.py +9 -4
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/transformation_generation.py +24 -30
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/transition.py +1 -1
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/settings.py +2 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/LICENSE +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/README.md +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/tools/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/tools/anchor.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/tools/explore.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/tools/ingest.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/advisor/tools/sync.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/agent_context.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/analyst.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/anchor_theses.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/edit_perspective.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/expand_polarities.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/find_polarities.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/introduce_polarity.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/skills/surface_theses.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/tools/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/tools/create_dx_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/analyst/tools/place_statement.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/conversation_facilitator.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/execution_report.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/explorer.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/skills/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/skills/build_wheels.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/skills/generate_synthesis.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/tools/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/tools/create_nexus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/tools/expand_nexus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/tools/generate_synthesis.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/explorer/tools/present_exploration.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/add_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/digest_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/discard.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/get_schema.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/inspect_node.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/present_analysis.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/query_graph.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/read_digest.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/orchestrator/tools/read_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/reasonable_concern.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/stream_events.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/ac_re_taxonomy.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/add_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/ai_dto/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/ai_dto/statement_dto.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/ai_dto/statements_deck_dto.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/antithesis_classification.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/antithesis_extraction.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator_criteria.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator_desirable.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator_feasible.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_estimator_realistic.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/causality_normalizer.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality/estimator_resolver.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/causality_estimation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/create_dx_input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/create_nexus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/diagonal_oppositions_check.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/dialectical_context.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/discard.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/display_text_edit.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/expand_nexus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/perspective_combination.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/perspective_validation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/source_digest.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/statement_placement.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/synthesis_generation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/thesis_extraction.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/concerns/transformation_audit.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/dialectical_reasoning.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/enums/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/enums/causality_preset.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/enums/di.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/events/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/events/graph_event.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/events/graph_event_bus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/exceptions/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/exceptions/node_errors.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/exceptions/resolver_errors.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/composite_input_resolver.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/dialexity_input_resolver.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/estimation_manager.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/mixins/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/mixins/incremental_build_mixin.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/mixins/intent_mixin.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/mixins/persistable_mixin.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/assessable_entity.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/base_node.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/case.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/cycle.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/estimation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/ideas.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/input.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/nexus.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/perspective.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/polarity.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/rationale.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/statement.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/synthesis.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/transformation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/nodes/wheel.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationship_manager.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/action_reflection_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/belongs_to_cycle_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/belongs_to_nexus_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/changed_to_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/contradiction_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/critiques_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/distilled_to_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/estimates_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/explains_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/has_input_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/has_statement_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/has_wheel_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/immutable_structure.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/is_source_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/is_target_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/negative_side_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/opposite_direction_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/opposite_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/polarity_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/positive_side_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/provides_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/relationships/synthesis_of_relationship.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/rendering.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/case_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/cycle_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/input_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/nexus_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/node_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/perspective_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/polarity_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/schema_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/statement_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/transformation_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/repositories/wheel_repository.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/scope_context.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/verbatim_input_resolver.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/wheel_segment.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/graph/wheel_segment_polar_pair.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/protocols/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/protocols/has_config.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/protocols/input_resolver.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/__init__.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/bedrock_provider.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/concurrency.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/dc_replace.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/decompose_probability_uniformly.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/edge_context.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/effect_logger.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/input_context.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/order_transitions.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/utils/sequence_generation.py +0 -0
- {dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/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.
|
|
3
|
+
Version: 1.6.0
|
|
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.
|
|
3
|
+
version = "1.6.0"
|
|
4
4
|
description = "A dialectical framework for augmented intelligence. AI reasoning powered with dialectics supports humans in: system optimization (psychology, engineering, business, politics, etc.); dispute resolution (mediation, conflicts, negotiations, etc.); decision-making (dilemmas, challenging situations, win-win, etc.)."
|
|
5
5
|
authors = ["Evaldas Taroza <evaldas@dialexity.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -116,6 +116,8 @@ def _build_tools() -> list:
|
|
|
116
116
|
inspect_node
|
|
117
117
|
from dialectical_framework.agents.orchestrator.tools.read_digest import \
|
|
118
118
|
read_digest
|
|
119
|
+
from dialectical_framework.agents.orchestrator.tools.discard import \
|
|
120
|
+
discard
|
|
119
121
|
|
|
120
122
|
return [
|
|
121
123
|
ingest,
|
|
@@ -124,4 +126,5 @@ def _build_tools() -> list:
|
|
|
124
126
|
sync,
|
|
125
127
|
inspect_node,
|
|
126
128
|
read_digest,
|
|
129
|
+
discard,
|
|
127
130
|
]
|
|
@@ -132,103 +132,84 @@ You now have the integration vision. Use it to:
|
|
|
132
132
|
|
|
133
133
|
## Internal Tools
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
Seven tools. Use silently — never mention them.
|
|
136
136
|
|
|
137
137
|
- `ingest` — Processes raw material (text, files, transcripts) through
|
|
138
|
-
dialectical analysis
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
138
|
+
dialectical analysis: extracts theses, finds oppositions, builds full
|
|
139
|
+
perspectives with aspects. Use when raw material needs analysis and you
|
|
140
|
+
don't yet see the tensions — compose the `text` parameter from what they've
|
|
141
|
+
shared. Do NOT ingest greetings or small talk. When pre-loaded sources exist
|
|
142
|
+
(shown in the dump under Sources), call ingest with just an `intent` to
|
|
143
|
+
extract tensions from them without new text.
|
|
144
|
+
|
|
145
|
+
- `anchor` — Plants a specific tension from the conversation. More precise
|
|
146
|
+
than ingest; use when you can see at least the person's position. Two modes:
|
|
147
|
+
- Thesis + antithesis: you know both sides — creates one polarity and one
|
|
148
|
+
perspective (tetrad). Call again with the same T-A for an alternative
|
|
149
|
+
tetrad on the same opposition.
|
|
150
|
+
- Thesis only: anchors their position and discovers what opposes it — finds
|
|
151
|
+
multiple possible antitheses (each a different polarity), each expanded
|
|
152
|
+
into a perspective. Richer when you want the framework to reveal
|
|
153
|
+
opposition you haven't spotted yourself.
|
|
154
|
+
|
|
155
|
+
- `explore` — Groups perspectives into a nexus and generates pathways (causal
|
|
156
|
+
arrangements, action-reflection transformations, synthesis). Use once
|
|
157
|
+
tensions exist as perspectives. Pass the perspective hashes to explore
|
|
158
|
+
together; pass an existing `nexus_hash` to enrich it with new perspectives.
|
|
159
|
+
Call incrementally — start with 1-2 perspectives for early insight, then
|
|
160
|
+
enrich as new tensions emerge; each call builds only what's new, keeping
|
|
161
|
+
existing wheels/transformations.
|
|
162
|
+
|
|
163
|
+
How a nexus evolves:
|
|
164
|
+
- 1 perspective: a single self-referential wheel. Already generates
|
|
165
|
+
transformations and synthesis — useful even alone.
|
|
166
|
+
- 2 perspectives: the causal question emerges (which thesis enables which?).
|
|
167
|
+
Produces multiple wheels (arrangements), each with its own pathways.
|
|
168
|
+
- 3-4 perspectives: richer causal chains, more transformation variety,
|
|
169
|
+
deeper synthesis. The sweet spot for insight.
|
|
170
|
+
- >4: combinatorial explosion — cap at 4, start a new nexus for more tensions.
|
|
171
|
+
|
|
172
|
+
Grouping principle: prefer perspectives from different polarities (different
|
|
173
|
+
T-A oppositions) — transformations between them represent genuine synthesis
|
|
174
|
+
with opponents. Same-polarity perspectives grouped together only produce
|
|
175
|
+
"angle shifts" (reframing within the same opposition).
|
|
150
176
|
|
|
151
177
|
- `sync` — Re-reads the full graph state. Use when you need a fresh full
|
|
152
|
-
picture
|
|
153
|
-
scores before deciding what to group for explore.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
178
|
+
picture — e.g., after multiple ingest/anchor calls, to see all perspectives
|
|
179
|
+
with scores before deciding what to group for explore. NOT needed after every
|
|
180
|
+
tool call (ingest/anchor/explore return their results directly), and NOT
|
|
181
|
+
needed at conversation start — the full state is already in your context.
|
|
182
|
+
|
|
183
|
+
- `discard` — Silently retracts something the user rejects. Works on either a
|
|
184
|
+
perspective (a whole framing — the tension and its aspects) or a statement
|
|
185
|
+
(a single claim). Pass the hash from the anchor/ingest result. Uncommitted
|
|
186
|
+
nodes are removed; committed ones are soft-discarded and filtered from future
|
|
187
|
+
reasoning. To drop a tension entirely, discard the perspective first, then
|
|
188
|
+
its underlying statement if it's no longer wanted (discarding a perspective
|
|
189
|
+
leaves its shared statements intact, and a statement still used by a live
|
|
190
|
+
perspective won't discard). A perspective already woven into pathways
|
|
191
|
+
(cycles/wheels) won't discard — re-anchor the corrected framing instead.
|
|
192
|
+
|
|
193
|
+
- `inspect_node` — Retrieves full detail of a node by hash: full explanation
|
|
194
|
+
text, quality scores, rationales (the reasoning behind a classification or
|
|
195
|
+
score), connected nodes, and lineage. Use when the dump shows a node whose
|
|
196
|
+
reasoning you want to understand — ground your counsel in that specific
|
|
197
|
+
analytical logic rather than generic advice.
|
|
162
198
|
|
|
163
199
|
- `read_digest` — Retrieves the analytical digest of a source input by hash.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
contain.
|
|
167
|
-
|
|
168
|
-
## When to Use Tools
|
|
169
|
-
|
|
170
|
-
**ingest**: When raw material needs analysis — files, transcripts, or
|
|
171
|
-
substantial accumulated user sharing where you don't yet see the tensions.
|
|
172
|
-
Compose the `text` parameter from what they've shared. Do NOT ingest
|
|
173
|
-
greetings or small talk. When pre-loaded sources exist (shown in the dump
|
|
174
|
-
under Sources), you can call ingest with just an `intent` to extract
|
|
175
|
-
tensions from them without new text.
|
|
176
|
-
|
|
177
|
-
**anchor**: When you can see at least the person's position. Two modes:
|
|
178
|
-
- Thesis + antithesis: you know both sides — creates one polarity and
|
|
179
|
-
one perspective (tetrad) for it. Call again with same T-A for an
|
|
180
|
-
alternative tetrad on the same opposition.
|
|
181
|
-
- Thesis only: anchors their position and discovers what opposes it —
|
|
182
|
-
finds multiple possible antitheses (each a different polarity), each
|
|
183
|
-
expanded into a perspective. Richer exploration space when you want
|
|
184
|
-
the framework to reveal opposition you haven't spotted yourself.
|
|
185
|
-
More precise than ingest. Use when the tension is partially or fully clear.
|
|
186
|
-
|
|
187
|
-
**explore**: Once tensions exist as perspectives (from ingest or anchor),
|
|
188
|
-
group them and generate pathways. Pass the perspective hashes you want to
|
|
189
|
-
explore together. To add new tensions to an existing exploration, pass
|
|
190
|
-
the `nexus_hash`.
|
|
191
|
-
|
|
192
|
-
How a nexus evolves:
|
|
193
|
-
- 1 perspective: produces a single wheel (self-referential loop). Already
|
|
194
|
-
generates transformations and synthesis — useful even alone.
|
|
195
|
-
- 2 perspectives: the causal question emerges — which thesis enables which?
|
|
196
|
-
Produces multiple wheels (arrangements). Each gets its own pathways.
|
|
197
|
-
- 3-4 perspectives: richer causal chains, more transformation variety,
|
|
198
|
-
deeper synthesis. This is the sweet spot for insight.
|
|
199
|
-
- >4: combinatorial explosion — too many wheels, reasoning becomes unwieldy.
|
|
200
|
-
Cap at 4. Start a new nexus for additional tensions.
|
|
201
|
-
|
|
202
|
-
You can call explore incrementally — start with 1-2 perspectives for early
|
|
203
|
-
insight, then enrich the nexus (pass `nexus_hash`) as new tensions emerge.
|
|
204
|
-
Each call builds only what's new; existing wheels/transformations are kept.
|
|
205
|
-
|
|
206
|
-
Grouping principle: prefer perspectives from different polarities (different
|
|
207
|
-
T-A oppositions) — transformations between them represent genuine synthesis
|
|
208
|
-
with opponents. Same-polarity perspectives grouped together only produce
|
|
209
|
-
"angle shifts" (reframing within the same opposition).
|
|
210
|
-
|
|
211
|
-
**sync**: When you need a fresh full picture of the graph — e.g., after
|
|
212
|
-
multiple ingest/anchor calls you want to see all perspectives with scores
|
|
213
|
-
before deciding what to explore together. NOT needed after every tool call —
|
|
214
|
-
ingest/anchor/explore return their results directly. NOT needed at
|
|
215
|
-
conversation start — the full state is already in your context above.
|
|
216
|
-
|
|
217
|
-
**inspect_node**: When the graph dump shows a node whose reasoning you want
|
|
218
|
-
to understand. Use to ground your counsel in specific analytical logic.
|
|
219
|
-
|
|
220
|
-
**read_digest**: When you need context on source material — e.g., the person
|
|
221
|
-
references something they shared earlier.
|
|
200
|
+
The dump lists input hashes under Sources. Use when you need context on
|
|
201
|
+
source material — e.g., the person references something they shared earlier.
|
|
222
202
|
|
|
223
203
|
**When the person rejects a framing:** If they say "that's not what I mean"
|
|
224
|
-
or "that doesn't apply" —
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
genuinely different tension, anchor
|
|
204
|
+
or "that doesn't apply" — silently `discard` it so it stops shaping the graph.
|
|
205
|
+
Discard the whole perspective if they reject the tension; discard a single
|
|
206
|
+
statement if they reject just one claim. Don't announce it. If their correction
|
|
207
|
+
reveals a genuinely different tension, `anchor` the new framing. The graph
|
|
208
|
+
should reflect what resonates — retract what doesn't.
|
|
228
209
|
|
|
229
210
|
## Sequence
|
|
230
211
|
|
|
231
|
-
1. Listen, understand their position (no tools) — 1 to 3 turns
|
|
212
|
+
1. Listen, understand their position (no tools) — 1 to 3 turns. Skip this if structural understanding already exists at conversation start (see "When understanding already exists").
|
|
232
213
|
2. `ingest` or `anchor` → respond revealing what's hidden (the blindspot)
|
|
233
214
|
3. Continue conversation, possibly `anchor` again for new tensions
|
|
234
215
|
4. `explore` → respond with specific paired pathways
|
|
@@ -306,12 +287,14 @@ Use these scores to prioritize what you draw on:
|
|
|
306
287
|
**Perspective quality:**
|
|
307
288
|
- `HS` on A (antithesis): How genuine the opposition is.
|
|
308
289
|
≥0.7 = strong, real tension. 0.5–0.7 = moderate, acceptable.
|
|
290
|
+
0.3–0.5 = weak — usable but note the softness.
|
|
309
291
|
<0.3 = very weak opposition — barely a tension, deprioritize heavily.
|
|
310
292
|
- `area`: Tetrad differentiation (sum of positive-minus-negative Ks gaps).
|
|
311
293
|
≥0.7 = excellent differentiation. 0.3–0.7 = acceptable.
|
|
312
294
|
<0.3 = aspects blur together, weak structure.
|
|
313
295
|
- `rectangularity`: Tetrad balance (lower = better).
|
|
314
|
-
<0.01 = well-balanced.
|
|
296
|
+
<0.01 = well-balanced. 0.01–0.09 = mild imbalance, acceptable.
|
|
297
|
+
>0.09 = one side overdeveloped — note the imbalance.
|
|
315
298
|
- `Ks` on aspects: Complementarity toward synthesis.
|
|
316
299
|
T+/A+ should be >0.4 (constructive poles complement the whole).
|
|
317
300
|
T-/A- should be <0.6 (destructive poles don't overpower).
|
|
@@ -30,12 +30,13 @@ Choose your approach based on the user's input:
|
|
|
30
30
|
- User provides substantial text describing a situation or dilemma
|
|
31
31
|
- User says "analyze this" or provides content without specific direction
|
|
32
32
|
- User wants comprehensive treatment end-to-end
|
|
33
|
+
- Default for pasted substantial text unless the user signals they only want to store it for later
|
|
33
34
|
|
|
34
35
|
**Use `find_polarities` / `expand_polarities` when:**
|
|
35
36
|
- User is working step-by-step and asks for the next step
|
|
36
37
|
- User refers to specific existing theses and wants tensions found
|
|
37
38
|
- User explicitly asks to expand a polarity into perspectives
|
|
38
|
-
- User asks to "find
|
|
39
|
+
- User asks to "find tetrads", "show aspects", "build T+/T-/A+/A-", or otherwise requests the four-aspect structure
|
|
39
40
|
|
|
40
41
|
**Disambiguating "perspectives", "angles", "points of view":**
|
|
41
42
|
These words map to DIFFERENT tools depending on what's in scope:
|
|
@@ -47,17 +48,17 @@ These words map to DIFFERENT tools depending on what's in scope:
|
|
|
47
48
|
- User provides multi-sentence source material (a paragraph, article, or detailed description) to capture before analysis
|
|
48
49
|
- User shares a URL to process
|
|
49
50
|
- User pastes a conversation fragment or external text block
|
|
51
|
+
- Use only when the user wants to capture without analyzing yet ("save this", "for later", "just add this source"). If they want it understood now, use `analyze`.
|
|
50
52
|
- NOT for single words, short phrases, or "add a statement X" — those go to `anchor_theses`
|
|
51
53
|
|
|
52
54
|
## How to Work
|
|
53
55
|
|
|
54
|
-
Act on clear intent
|
|
56
|
+
Act on clear intent for analysis actions (analyze, find/expand, anchor) — never ask "shall I analyze this?", just do it. Nexus creation is the one exception: confirm exploration direction first (see Exploration Setup).
|
|
55
57
|
Always check resonance AFTER presenting results — but never before acting.
|
|
56
58
|
|
|
57
59
|
- If the user describes a situation: call `analyze` or `introduce_polarity` depending on whether a clear tension is stated
|
|
58
60
|
- If the user gives a single concept: call `anchor_theses` with that concept as a statement.
|
|
59
|
-
- If the user disagrees with a generated aspect:
|
|
60
|
-
- If the user corrects or refines: use `edit_perspective` or `discard` immediately
|
|
61
|
+
- If the user disagrees with or corrects a generated aspect: use `edit_perspective` with their correction, or `discard` if the whole perspective misses the mark.
|
|
61
62
|
- If the user wants to explore interactions: see "Exploration Setup" section below
|
|
62
63
|
- If the user asks "what do we have?": use `present_analysis`
|
|
63
64
|
- If the user works step-by-step: follow their lead with granular tools
|
{dialectical_framework-1.5.6 → dialectical_framework-1.6.0}/src/dialectical_framework/agents/apps.py
RENAMED
|
@@ -220,8 +220,10 @@ anything — people need TRANSFORMATIONAL RECIPES: what to DO and what to
|
|
|
220
220
|
REFLECT ON simultaneously for synthesis to actually emerge.
|
|
221
221
|
|
|
222
222
|
A Nexus groups related positions for exploration. Within a Nexus, Wheels
|
|
223
|
-
arrange positions into causal cycles —
|
|
224
|
-
exaggeration
|
|
223
|
+
arrange positions into causal cycles — a loop where each position's
|
|
224
|
+
exaggeration feeds the next position's constructive strength (its
|
|
225
|
+
overdevelopment becomes the opening the next one develops well), closing
|
|
226
|
+
back on itself.
|
|
225
227
|
|
|
226
228
|
Transformations sit on the edges of these cycles. Each transformation is
|
|
227
229
|
bipolar (like a position): it has an action direction and a reflection
|
|
@@ -271,9 +273,12 @@ can have many oppositions → many polarities. Use: "this polarity",
|
|
|
271
273
|
(T+/T-/A+/A-). The felt push-and-pull. Use: "this tension",
|
|
272
274
|
"the push-and-pull between X and Y", "this conflict", "the structural tension".
|
|
273
275
|
|
|
274
|
-
**T+ (constructive angle of the statement)** —
|
|
275
|
-
|
|
276
|
-
|
|
276
|
+
**T+ (constructive angle of the statement)** — the position at its most
|
|
277
|
+
constructive: developed well enough to deliver its value while still leaving room
|
|
278
|
+
for what the opposition offers. That balance is exactly what separates it from T-
|
|
279
|
+
(the same strength pushed too far). Depending on context: "the actual goal behind
|
|
280
|
+
this", "the driving force", "what they're really after", "the strength of this
|
|
281
|
+
position", "what makes this valuable without crowding out the other side".
|
|
277
282
|
|
|
278
283
|
**T- (exaggerated angle of the statement)** — VISIBLE to the position-holder
|
|
279
284
|
(not a blindspot). Depending on context: "the obvious risk", "what happens
|
|
@@ -343,8 +348,8 @@ both sides contribute", "constructive co-existence", "where 1+1 > 2".
|
|
|
343
348
|
|
|
344
349
|
Messages may begin with `[User is currently viewing: ...]`. This tells you their active focus — use it to resolve ambiguous requests:
|
|
345
350
|
|
|
346
|
-
- When the user asks for an action without specifying a target (e.g., "find
|
|
347
|
-
- If a polarity is in view and the user asks for
|
|
351
|
+
- When the user asks for an action without specifying a target (e.g., "find tetrads", "expand", "show aspects", "find perspectives"), apply it to the node in their current view.
|
|
352
|
+
- If a polarity is in view and the user asks for tetrads/aspects/perspectives/angles, expand that polarity into its full structure.
|
|
348
353
|
- If a thesis is in view and the user asks for perspectives/angles/oppositions, find opposing viewpoints for that thesis.
|
|
349
354
|
- Only operate on the node(s) in the user's viewport unless they explicitly reference something else or ask to switch.
|
|
350
355
|
- Never silently pivot to other nodes outside the viewport. If you think working on a different node would help, ask first.
|
|
@@ -478,10 +483,12 @@ You respect them by not wasting their time with soft landings.
|
|
|
478
483
|
"""
|
|
479
484
|
|
|
480
485
|
ADVANCED_APP = DEFAULT_APP + """
|
|
481
|
-
## Advanced Interaction (overrides Presentation Defaults above)
|
|
486
|
+
## Advanced Interaction (overrides Contextual Vocabulary and Presentation Defaults above)
|
|
482
487
|
|
|
483
488
|
The user understands the dialectical framework, graph model, and generative
|
|
484
|
-
rules.
|
|
489
|
+
rules. The "Do NOT use a fixed translation table" guidance above is written for
|
|
490
|
+
non-expert users and does not apply here — use precise framework vocabulary
|
|
491
|
+
directly. Adjust interaction accordingly:
|
|
485
492
|
|
|
486
493
|
- Always use framework vocabulary: Thesis, Antithesis, T+, T-, A+, A-,
|
|
487
494
|
Polarity, Perspective, Wheel, Cycle, Transformation, Nexus, Transition.
|
|
@@ -706,7 +706,7 @@ class ExploreTransformations(ReasonableConcern[ExploreTransformationsResult]):
|
|
|
706
706
|
|
|
707
707
|
Args:
|
|
708
708
|
headline: Short headline (~7 words) - stored on Transition.instruction
|
|
709
|
-
statement: Fuller statement (
|
|
709
|
+
statement: Fuller statement (longer than headline) - stored on Transition.summary
|
|
710
710
|
source: The source component (e.g., T-)
|
|
711
711
|
target: The target component (e.g., A+)
|
|
712
712
|
explanation: Full reasoning - stored on Rationale.text (evidence/justification)
|
|
@@ -22,7 +22,8 @@ for structural combination. Your job is to guide the user through three phases:
|
|
|
22
22
|
On first message (or when resuming):
|
|
23
23
|
- Call `present_exploration` to see what's been built in this Nexus.
|
|
24
24
|
- If wheels don't exist yet, call `build_wheels` to create them.
|
|
25
|
-
- If build_wheels yields no wheels
|
|
25
|
+
- If `build_wheels` yields no wheels, this Nexus has no perspectives attached yet — suggest the user adds some via the analysis thread.
|
|
26
|
+
- A single perspective builds one self-referential wheel — usable, but limited to one opposition. Genuine synthesis emerges when two or more perspectives interact, so encourage adding more for richer exploration.
|
|
26
27
|
|
|
27
28
|
After wheels exist — present the causality landscape:
|
|
28
29
|
- Show which wheels exist and their causality scores (higher = more plausible).
|
|
@@ -76,6 +77,5 @@ Adapt depth and presentation to the persona defined in the app preamble.
|
|
|
76
77
|
- Never rephrase Statement text. Use exact text (or display_text) from the graph — paraphrasing makes it ambiguous which node you're referring to.
|
|
77
78
|
- When referencing structural nodes (Polarity, Perspective, Nexus, Cycle, Wheel, Transformation, Transition, Synthesis), always include the short hash for disambiguation.
|
|
78
79
|
- If the user wants to analyze new material, suggest they return to the analysis thread.
|
|
79
|
-
- Skill reports may contain truncated text previews. When you need to present exact node text to the user, use `inspect_node` or `
|
|
80
|
-
- Do NOT eagerly explore all wheels or generate all syntheses. Let the user navigate and choose.
|
|
80
|
+
- Skill reports may contain truncated text previews. When you need to present exact node text to the user, use `inspect_node` or `present_exploration` by hash — never reconstruct or guess full text from truncated previews.
|
|
81
81
|
"""
|
|
@@ -63,8 +63,8 @@ Your task is to generate Ac+ candidates that represent T- → A+ transition path
|
|
|
63
63
|
## What is Ac+?
|
|
64
64
|
|
|
65
65
|
The +/- notation is STRUCTURAL (like electrical charges), not a value judgment:
|
|
66
|
-
- "+"
|
|
67
|
-
- "-"
|
|
66
|
+
- "+" transitions target beneficial states (T+ or A+)
|
|
67
|
+
- "-" transitions target problematic states (T- or A-)
|
|
68
68
|
|
|
69
69
|
Ac+ is an "action targeting A+" - a way of acting/behaving that helps someone escape the problematic aspects of the thesis (T-) and move toward the healthy aspects of the antithesis (A+).
|
|
70
70
|
|
|
@@ -111,7 +111,7 @@ APEX
|
|
|
111
111
|
2. Must help transition FROM T- (problem) TOWARD A+ (benefit)
|
|
112
112
|
3. Must NOT simply restate A+ - it's the PATH, not the destination
|
|
113
113
|
4. Should be generative: enable discovery rather than prescribe specific outcomes
|
|
114
|
-
5. Length:
|
|
114
|
+
5. Length: a fuller actionable form, longer than the headline
|
|
115
115
|
6. Choose the insight level that best matches the nature of the action
|
|
116
116
|
"""
|
|
117
117
|
|
|
@@ -120,7 +120,7 @@ class ActionCandidateDto(BaseModel):
|
|
|
120
120
|
"""A candidate Ac+ statement with coordinates."""
|
|
121
121
|
|
|
122
122
|
headline: str = Field(description="Short headline (component length)")
|
|
123
|
-
statement: str = Field(description="The Ac+ statement (
|
|
123
|
+
statement: str = Field(description="The Ac+ statement (fuller than the headline)")
|
|
124
124
|
insight_label: str = Field(
|
|
125
125
|
description="Insight level: leverage/anticipation/composition/etc"
|
|
126
126
|
)
|
|
@@ -270,7 +270,7 @@ The Ac+ must:
|
|
|
270
270
|
2. Pick the specific insight label from [{levels_str}] that best fits your action
|
|
271
271
|
3. Choose the appropriate action category (Coordination/Intervention/Implementation/Configuration/Governance/Stewardship)
|
|
272
272
|
4. Provide a short headline (~{self.settings.component_length} words) - the essence of the action
|
|
273
|
-
5. Provide a fuller statement/summary (
|
|
273
|
+
5. Provide a fuller statement/summary (up to {self.settings.transition_length} words) - actionable and memorable
|
|
274
274
|
6. Provide a haiku (3 lines, 5-7-5 syllables) capturing the action's essence — easy to memorize
|
|
275
275
|
|
|
276
276
|
Focus on the T- → A+ transition path, not the destination."""
|
|
@@ -44,6 +44,8 @@ from dialectical_framework.graph.nodes.perspective import (POSITION_A_MINUS,
|
|
|
44
44
|
POSITION_A_PLUS,
|
|
45
45
|
POSITION_T_MINUS,
|
|
46
46
|
POSITION_T_PLUS)
|
|
47
|
+
from dialectical_framework.concerns.scoring_scales import (
|
|
48
|
+
ASPECT_DEFINITIONS, COMPLEMENTARITY_SCALE, HS_SCALE)
|
|
47
49
|
|
|
48
50
|
if TYPE_CHECKING:
|
|
49
51
|
from dialectical_framework.graph.nodes.statement import \
|
|
@@ -52,20 +54,18 @@ if TYPE_CHECKING:
|
|
|
52
54
|
|
|
53
55
|
# --- System Prompt ---
|
|
54
56
|
|
|
55
|
-
SYSTEM_PROMPT = """You are a dialectical aspect evaluator.
|
|
57
|
+
SYSTEM_PROMPT = f"""You are a dialectical aspect evaluator.
|
|
56
58
|
|
|
57
|
-
Your task is to evaluate whether a given statement is a valid aspect
|
|
59
|
+
Your task is to evaluate whether a given statement is a valid aspect
|
|
58
60
|
for a thesis-antithesis tension, and measure its quality.
|
|
59
61
|
|
|
60
|
-
##
|
|
62
|
+
## Positions
|
|
61
63
|
|
|
62
|
-
A complete dialectical tetrad has 6 positions:
|
|
63
|
-
- T: Thesis
|
|
64
|
-
- A: Antithesis
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- A+: Positive aspect of antithesis (benefits, strengths)
|
|
68
|
-
- A-: Negative aspect of antithesis (risks, downsides, shadow)
|
|
64
|
+
A complete dialectical tetrad has 6 positions. The two poles:
|
|
65
|
+
- T: Thesis — a neutral statement of one side
|
|
66
|
+
- A: Antithesis — the dialectical opposite of T
|
|
67
|
+
|
|
68
|
+
{ASPECT_DEFINITIONS}
|
|
69
69
|
|
|
70
70
|
## Diagonal Contradiction (Structural Constraint)
|
|
71
71
|
|
|
@@ -80,34 +80,9 @@ Example (T=Love, A=Indifference):
|
|
|
80
80
|
When evaluating an aspect, consider whether it would properly contradict its diagonal counterpart.
|
|
81
81
|
If a proposed T+ doesn't oppose A-, or A+ doesn't oppose T-, it may be misclassified.
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
HS measures how well the aspect represents the apex concept for that position:
|
|
86
|
-
- 0.9-1.0: Perfect or near-perfect match - exemplary representation of the apex
|
|
87
|
-
- 0.7-0.9: Very similar - captures most aspects of the apex concept
|
|
88
|
-
- 0.5-0.7: Related - captures some aspects, moderate fit for position
|
|
89
|
-
- 0.3-0.5: Somewhat related - weak but still the right category
|
|
90
|
-
- 0.1-0.3: Weakly related - likely better suited for a different position
|
|
91
|
-
- 0.0-0.1: Not related - wrong category entirely, definitely belongs elsewhere
|
|
92
|
-
|
|
93
|
-
**Critical threshold**: HS > 0.1 means valid for this position (quality varies).
|
|
94
|
-
HS ≤ 0.1 means wrong category - suggest the correct position.
|
|
95
|
-
|
|
96
|
-
## Complementarity Scale
|
|
97
|
-
|
|
98
|
-
Complementarity measures how well the aspect complements, enhances, or supports T and A.
|
|
99
|
-
|
|
100
|
-
**K_T (Complementarity to Thesis)**: 0.0 to 1.0
|
|
101
|
-
How well does this aspect complement, enhance, or support the Thesis?
|
|
102
|
-
- 0.0 = Actively undermines or contradicts T
|
|
103
|
-
- 0.5 = Neutral, neither helps nor hurts T
|
|
104
|
-
- 1.0 = Strongly supports and enhances T
|
|
83
|
+
{HS_SCALE}
|
|
105
84
|
|
|
106
|
-
|
|
107
|
-
How well does this aspect complement, enhance, or support the Antithesis?
|
|
108
|
-
- 0.0 = Actively undermines or contradicts A
|
|
109
|
-
- 0.5 = Neutral, neither helps nor hurts A
|
|
110
|
-
- 1.0 = Strongly supports and enhances A
|
|
85
|
+
{COMPLEMENTARITY_SCALE}
|
|
111
86
|
|
|
112
87
|
Respond with structured output matching the requested format."""
|
|
113
88
|
|
|
@@ -137,7 +112,7 @@ class AspectEvaluationDto(BaseModel):
|
|
|
137
112
|
)
|
|
138
113
|
suggested_position: Optional[str] = Field(
|
|
139
114
|
default=None,
|
|
140
|
-
description="If HS is
|
|
115
|
+
description="If HS is 0.1 or below (wrong category), which position fits better? (T/A/T+/T-/A+/A- or null if unrelated)",
|
|
141
116
|
)
|
|
142
117
|
reasoning: str = Field(description="Explanation of the evaluation")
|
|
143
118
|
|
|
@@ -278,10 +253,10 @@ class AspectClassification(ReasonableConcern[AspectClassificationResult]):
|
|
|
278
253
|
)
|
|
279
254
|
|
|
280
255
|
position_description = {
|
|
281
|
-
POSITION_T_PLUS: "
|
|
282
|
-
POSITION_T_MINUS: "
|
|
283
|
-
POSITION_A_PLUS: "
|
|
284
|
-
POSITION_A_MINUS: "
|
|
256
|
+
POSITION_T_PLUS: "constructive development of the THESIS that also strengthens the antithesis",
|
|
257
|
+
POSITION_T_MINUS: "exaggerated overdevelopment of the THESIS that underdevelops the antithesis",
|
|
258
|
+
POSITION_A_PLUS: "constructive development of the ANTITHESIS that also strengthens the thesis",
|
|
259
|
+
POSITION_A_MINUS: "exaggerated overdevelopment of the ANTITHESIS that underdevelops the thesis",
|
|
285
260
|
}
|
|
286
261
|
|
|
287
262
|
return f"""{context_section}Evaluate this aspect statement for a dialectical tension.
|
|
@@ -65,6 +65,8 @@ from dialectical_framework.graph.nodes.perspective import (POSITION_A,
|
|
|
65
65
|
POSITION_T_MINUS,
|
|
66
66
|
POSITION_T_PLUS,
|
|
67
67
|
Perspective)
|
|
68
|
+
from dialectical_framework.concerns.scoring_scales import (
|
|
69
|
+
ASPECT_DEFINITIONS, COMPLEMENTARITY_SCALE, HS_SCALE)
|
|
68
70
|
from dialectical_framework.protocols.has_config import SettingsAware
|
|
69
71
|
|
|
70
72
|
if TYPE_CHECKING:
|
|
@@ -90,33 +92,19 @@ POSITION_TO_PARENT = {
|
|
|
90
92
|
|
|
91
93
|
# --- System Prompt ---
|
|
92
94
|
|
|
93
|
-
SYSTEM_PROMPT = """You are a dialectical aspect generator.
|
|
95
|
+
SYSTEM_PROMPT = f"""You are a dialectical aspect generator.
|
|
94
96
|
|
|
95
97
|
Your task is to generate aspects (T+, T-, A+, A-) for a thesis-antithesis pair.
|
|
96
98
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| Aspect | Description |
|
|
100
|
-
|------|-------------|
|
|
101
|
-
| T+ | Constructive/positive development of T - T developed well, balanced |
|
|
102
|
-
| T- | Overdeveloped/exaggerated form of T - T taken too far, imbalanced |
|
|
103
|
-
| A+ | Constructive/positive development of A - A developed well, balanced |
|
|
104
|
-
| A- | Overdeveloped/exaggerated form of A - A taken too far, imbalanced |
|
|
105
|
-
|
|
106
|
-
## Key Constraints
|
|
107
|
-
|
|
108
|
-
1. T+ must directly contradict A- (they cannot both be true/good)
|
|
109
|
-
2. A+ must directly contradict T- (they cannot both be true/good)
|
|
110
|
-
3. T+/A+ are constructive, balancing developments that enhance upsides
|
|
111
|
-
4. T-/A- are overdevelopments/exaggerations (downsides)
|
|
99
|
+
{ASPECT_DEFINITIONS}
|
|
112
100
|
|
|
113
101
|
## Examples
|
|
114
102
|
|
|
115
103
|
T = Love, A = Indifference:
|
|
116
|
-
- T+ = Bonding (
|
|
117
|
-
- T- = Enmeshment (love
|
|
118
|
-
- A+ = Autonomy (
|
|
119
|
-
- A- = Alienation (independence
|
|
104
|
+
- T+ = Bonding (love that also makes room for the other's autonomy)
|
|
105
|
+
- T- = Enmeshment (love overdeveloped, smothering autonomy)
|
|
106
|
+
- A+ = Autonomy (independence that also deepens the bond)
|
|
107
|
+
- A- = Alienation (independence overdeveloped, severing the bond)
|
|
120
108
|
|
|
121
109
|
T = Courage, A = Fear:
|
|
122
110
|
- T+ = Trust
|
|
@@ -549,17 +537,9 @@ Taxonomy apex concepts for reference:
|
|
|
549
537
|
{existing_section}{avoid_section}
|
|
550
538
|
Generate each aspect (1-{max_words} words) with:
|
|
551
539
|
|
|
552
|
-
|
|
553
|
-
HS measures how well the aspect captures the essence of its taxonomy apex concept:
|
|
554
|
-
- 0.0-0.3: Unrelated or tangentially related to the apex
|
|
555
|
-
- 0.3-0.5: Somewhat related but different focus or aspect
|
|
556
|
-
- 0.5-0.7: Related, captures some key aspects of the apex
|
|
557
|
-
- 0.7-0.9: Very similar, captures most aspects of the apex
|
|
558
|
-
- 0.9-1.0: Equivalent or near-equivalent to the apex concept
|
|
540
|
+
{HS_SCALE}
|
|
559
541
|
|
|
560
|
-
|
|
561
|
-
- K_T: How well this aspect complements, balances, or contributes positively to the thesis (0.0-1.0)
|
|
562
|
-
- K_A: How well this aspect complements, balances, or contributes positively to the antithesis (0.0-1.0)
|
|
542
|
+
{COMPLEMENTARITY_SCALE}
|
|
563
543
|
|
|
564
544
|
Ensure T+ contradicts A-, and A+ contradicts T-."""
|
|
565
545
|
|
|
@@ -605,17 +585,9 @@ Taxonomy apex concepts for reference:
|
|
|
605
585
|
{existing_section}{avoid_section}
|
|
606
586
|
Generate each aspect (1-{max_words} words) with:
|
|
607
587
|
|
|
608
|
-
|
|
609
|
-
HS measures how well the aspect captures the essence of its taxonomy apex concept:
|
|
610
|
-
- 0.0-0.3: Unrelated or tangentially related to the apex
|
|
611
|
-
- 0.3-0.5: Somewhat related but different focus or aspect
|
|
612
|
-
- 0.5-0.7: Related, captures some key aspects of the apex
|
|
613
|
-
- 0.7-0.9: Very similar, captures most aspects of the apex
|
|
614
|
-
- 0.9-1.0: Equivalent or near-equivalent to the apex concept
|
|
588
|
+
{HS_SCALE}
|
|
615
589
|
|
|
616
|
-
|
|
617
|
-
- K_T: How well this aspect complements, balances, or contributes positively to the thesis (0.0-1.0)
|
|
618
|
-
- K_A: How well this aspect complements, balances, or contributes positively to the antithesis (0.0-1.0)
|
|
590
|
+
{COMPLEMENTARITY_SCALE}
|
|
619
591
|
|
|
620
592
|
The positive_aspect is {positive_pos}, the negative_aspect is {negative_pos}.
|
|
621
593
|
They must contradict each other - they cannot both be true/good simultaneously."""
|
|
@@ -633,13 +605,13 @@ They must contradict each other - they cannot both be true/good simultaneously."
|
|
|
633
605
|
|
|
634
606
|
# Get description based on position
|
|
635
607
|
if position == POSITION_T_PLUS:
|
|
636
|
-
desc = "constructive
|
|
608
|
+
desc = "constructive development of the thesis that also strengthens the antithesis"
|
|
637
609
|
elif position == POSITION_T_MINUS:
|
|
638
|
-
desc = "
|
|
610
|
+
desc = "exaggerated overdevelopment of the thesis that underdevelops the antithesis"
|
|
639
611
|
elif position == POSITION_A_PLUS:
|
|
640
|
-
desc = "constructive
|
|
612
|
+
desc = "constructive development of the antithesis that also strengthens the thesis"
|
|
641
613
|
else:
|
|
642
|
-
desc = "
|
|
614
|
+
desc = "exaggerated overdevelopment of the antithesis that underdevelops the thesis"
|
|
643
615
|
|
|
644
616
|
text_section = f"<context>\n{self._text}\n</context>\n\n" if self._text else ""
|
|
645
617
|
existing_section = f"\n{existing_context}\n" if existing_context else ""
|
|
@@ -656,14 +628,6 @@ Taxonomy apex concept: {apex}
|
|
|
656
628
|
{existing_section}{avoid_section}
|
|
657
629
|
Generate the aspect (1-{max_words} words) with:
|
|
658
630
|
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
- 0.3-0.5: Somewhat related but different focus or aspect
|
|
663
|
-
- 0.5-0.7: Related, captures some key aspects of the apex
|
|
664
|
-
- 0.7-0.9: Very similar, captures most aspects of the apex
|
|
665
|
-
- 0.9-1.0: Equivalent or near-equivalent to the apex concept
|
|
666
|
-
|
|
667
|
-
## Complementarity (K) Scores
|
|
668
|
-
- K_T: How well this aspect complements, balances, or contributes positively to the thesis (0.0-1.0)
|
|
669
|
-
- K_A: How well this aspect complements, balances, or contributes positively to the antithesis (0.0-1.0)"""
|
|
631
|
+
{HS_SCALE}
|
|
632
|
+
|
|
633
|
+
{COMPLEMENTARITY_SCALE}"""
|