dialectical-framework 0.4.4__py3-none-any.whl
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/__init__.py +43 -0
- dialectical_framework/ai_dto/__init__.py +0 -0
- dialectical_framework/ai_dto/causal_cycle_assessment_dto.py +16 -0
- dialectical_framework/ai_dto/causal_cycle_dto.py +16 -0
- dialectical_framework/ai_dto/causal_cycles_deck_dto.py +11 -0
- dialectical_framework/ai_dto/dialectical_component_dto.py +16 -0
- dialectical_framework/ai_dto/dialectical_components_deck_dto.py +12 -0
- dialectical_framework/ai_dto/dto_mapper.py +103 -0
- dialectical_framework/ai_dto/reciprocal_solution_dto.py +24 -0
- dialectical_framework/analyst/__init__.py +1 -0
- dialectical_framework/analyst/audit/__init__.py +0 -0
- dialectical_framework/analyst/consultant.py +30 -0
- dialectical_framework/analyst/decorator_action_reflection.py +28 -0
- dialectical_framework/analyst/decorator_discrete_spiral.py +30 -0
- dialectical_framework/analyst/domain/__init__.py +0 -0
- dialectical_framework/analyst/domain/assessable_cycle.py +128 -0
- dialectical_framework/analyst/domain/cycle.py +133 -0
- dialectical_framework/analyst/domain/interpretation.py +16 -0
- dialectical_framework/analyst/domain/rationale.py +116 -0
- dialectical_framework/analyst/domain/spiral.py +47 -0
- dialectical_framework/analyst/domain/transformation.py +24 -0
- dialectical_framework/analyst/domain/transition.py +160 -0
- dialectical_framework/analyst/domain/transition_cell_to_cell.py +29 -0
- dialectical_framework/analyst/domain/transition_segment_to_segment.py +16 -0
- dialectical_framework/analyst/strategic_consultant.py +32 -0
- dialectical_framework/analyst/think_action_reflection.py +217 -0
- dialectical_framework/analyst/think_constructive_convergence.py +87 -0
- dialectical_framework/analyst/wheel_builder_transition_calculator.py +157 -0
- dialectical_framework/brain.py +81 -0
- dialectical_framework/dialectical_analysis.py +14 -0
- dialectical_framework/dialectical_component.py +111 -0
- dialectical_framework/dialectical_components_deck.py +48 -0
- dialectical_framework/dialectical_reasoning.py +105 -0
- dialectical_framework/directed_graph.py +419 -0
- dialectical_framework/enums/__init__.py +0 -0
- dialectical_framework/enums/causality_type.py +10 -0
- dialectical_framework/enums/di.py +11 -0
- dialectical_framework/enums/dialectical_reasoning_mode.py +9 -0
- dialectical_framework/enums/predicate.py +9 -0
- dialectical_framework/protocols/__init__.py +0 -0
- dialectical_framework/protocols/assessable.py +141 -0
- dialectical_framework/protocols/causality_sequencer.py +111 -0
- dialectical_framework/protocols/content_fidelity_evaluator.py +16 -0
- dialectical_framework/protocols/has_brain.py +18 -0
- dialectical_framework/protocols/has_config.py +18 -0
- dialectical_framework/protocols/ratable.py +79 -0
- dialectical_framework/protocols/reloadable.py +7 -0
- dialectical_framework/protocols/thesis_extractor.py +15 -0
- dialectical_framework/settings.py +77 -0
- dialectical_framework/synthesis.py +7 -0
- dialectical_framework/synthesist/__init__.py +1 -0
- dialectical_framework/synthesist/causality/__init__.py +0 -0
- dialectical_framework/synthesist/causality/causality_sequencer_balanced.py +398 -0
- dialectical_framework/synthesist/causality/causality_sequencer_desirable.py +55 -0
- dialectical_framework/synthesist/causality/causality_sequencer_feasible.py +55 -0
- dialectical_framework/synthesist/causality/causality_sequencer_realistic.py +56 -0
- dialectical_framework/synthesist/concepts/__init__.py +0 -0
- dialectical_framework/synthesist/concepts/thesis_extractor_basic.py +135 -0
- dialectical_framework/synthesist/polarity/__init__.py +0 -0
- dialectical_framework/synthesist/polarity/polarity_reasoner.py +700 -0
- dialectical_framework/synthesist/polarity/reason_blind.py +62 -0
- dialectical_framework/synthesist/polarity/reason_conversational.py +91 -0
- dialectical_framework/synthesist/polarity/reason_fast.py +177 -0
- dialectical_framework/synthesist/polarity/reason_fast_and_simple.py +52 -0
- dialectical_framework/synthesist/polarity/reason_fast_polarized_conflict.py +55 -0
- dialectical_framework/synthesist/reverse_engineer.py +401 -0
- dialectical_framework/synthesist/wheel_builder.py +337 -0
- dialectical_framework/utils/__init__.py +1 -0
- dialectical_framework/utils/dc_replace.py +42 -0
- dialectical_framework/utils/decompose_probability_uniformly.py +15 -0
- dialectical_framework/utils/extend_tpl.py +12 -0
- dialectical_framework/utils/gm.py +12 -0
- dialectical_framework/utils/is_async.py +13 -0
- dialectical_framework/utils/use_brain.py +80 -0
- dialectical_framework/validator/__init__.py +1 -0
- dialectical_framework/validator/basic_checks.py +75 -0
- dialectical_framework/validator/check.py +12 -0
- dialectical_framework/wheel.py +395 -0
- dialectical_framework/wheel_segment.py +203 -0
- dialectical_framework/wisdom_unit.py +185 -0
- dialectical_framework-0.4.4.dist-info/LICENSE +21 -0
- dialectical_framework-0.4.4.dist-info/METADATA +123 -0
- dialectical_framework-0.4.4.dist-info/RECORD +84 -0
- dialectical_framework-0.4.4.dist-info/WHEEL +4 -0
@@ -0,0 +1,185 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import TYPE_CHECKING
|
4
|
+
|
5
|
+
from pydantic import Field
|
6
|
+
|
7
|
+
from dialectical_framework.protocols.assessable import Assessable
|
8
|
+
from dialectical_framework.dialectical_component import DialecticalComponent
|
9
|
+
from dialectical_framework.enums.dialectical_reasoning_mode import \
|
10
|
+
DialecticalReasoningMode
|
11
|
+
from dialectical_framework.synthesis import Synthesis
|
12
|
+
from dialectical_framework.wheel_segment import WheelSegment
|
13
|
+
|
14
|
+
if TYPE_CHECKING:
|
15
|
+
from dialectical_framework.analyst.domain.transformation import \
|
16
|
+
Transformation
|
17
|
+
|
18
|
+
ALIAS_A = "A"
|
19
|
+
ALIAS_A_PLUS = "A+"
|
20
|
+
ALIAS_A_MINUS = "A-"
|
21
|
+
|
22
|
+
|
23
|
+
class WisdomUnit(WheelSegment):
|
24
|
+
"""
|
25
|
+
A basic "molecule" in the dialectical framework, which makes up a diagonal relationship (complementary opposing pieces of the wheel).
|
26
|
+
It's very restrictive to avoid any additional fields.
|
27
|
+
However, it's flexible that the fields can be set by the field name or by alias.
|
28
|
+
"""
|
29
|
+
|
30
|
+
reasoning_mode: DialecticalReasoningMode = Field(
|
31
|
+
default_factory=lambda: DialecticalReasoningMode.GENERAL_CONCEPTS,
|
32
|
+
description="The type of dialectical reasoning strategy used to construct this wisdom unit (e.g., 'General Concepts' = default, 'Problem/Solution', 'Action Plan/Steps')",
|
33
|
+
)
|
34
|
+
|
35
|
+
a_plus: DialecticalComponent | None = Field(
|
36
|
+
default=None,
|
37
|
+
description="The positive side of the antithesis: A+",
|
38
|
+
alias=ALIAS_A_PLUS,
|
39
|
+
)
|
40
|
+
|
41
|
+
a: DialecticalComponent | None = Field(
|
42
|
+
default=None, description="The antithesis: A", alias=ALIAS_A
|
43
|
+
)
|
44
|
+
|
45
|
+
a_minus: DialecticalComponent | None = Field(
|
46
|
+
default=None,
|
47
|
+
description="The negative side of the antithesis: A-",
|
48
|
+
alias=ALIAS_A_MINUS,
|
49
|
+
)
|
50
|
+
|
51
|
+
synthesis: Synthesis | None = Field(
|
52
|
+
default=None, description="The synthesis of the wisdom unit."
|
53
|
+
)
|
54
|
+
|
55
|
+
transformation: Transformation | None = Field(
|
56
|
+
default=None, description="The transformative cycle."
|
57
|
+
)
|
58
|
+
|
59
|
+
def _get_sub_assessables(self) -> list[Assessable]:
|
60
|
+
result = super()._get_sub_assessables()
|
61
|
+
if self.a:
|
62
|
+
result.append(self.a)
|
63
|
+
if self.a_minus:
|
64
|
+
result.append(self.a_minus)
|
65
|
+
if self.a_plus:
|
66
|
+
result.append(self.a_plus)
|
67
|
+
if self.synthesis:
|
68
|
+
result.append(self.synthesis)
|
69
|
+
if self.transformation:
|
70
|
+
result.append(self.transformation)
|
71
|
+
return result
|
72
|
+
|
73
|
+
def _calculate_contextual_fidelity_for_sub_elements_excl_rationales(self, *, mutate: bool = True) -> list[float]:
|
74
|
+
"""
|
75
|
+
Calculates the context fidelity score for this wisdom unit as the geometric mean
|
76
|
+
of its constituent DialecticalComponent's scores, including those from its synthesis,
|
77
|
+
and weighted rationale opinions.
|
78
|
+
Components with a context_fidelity_score of 0.0 or None are excluded from the calculation.
|
79
|
+
"""
|
80
|
+
parts = []
|
81
|
+
|
82
|
+
# Collect from dialectical components
|
83
|
+
for f in self.field_to_alias.keys():
|
84
|
+
dc = getattr(self, f)
|
85
|
+
if isinstance(dc, DialecticalComponent):
|
86
|
+
fidelity = dc.calculate_contextual_fidelity(mutate=mutate)
|
87
|
+
parts.append(fidelity)
|
88
|
+
|
89
|
+
# Collect scores from Synthesis (S+, S-) components if present
|
90
|
+
if self.synthesis is not None:
|
91
|
+
# Synthesis is also a WheelSegment, so it has its own components (T/T+ equivalent to S+/S-)
|
92
|
+
for f in self.synthesis.field_to_alias.keys():
|
93
|
+
dc = getattr(self.synthesis, f)
|
94
|
+
if isinstance(dc, DialecticalComponent):
|
95
|
+
fidelity = dc.calculate_contextual_fidelity(mutate=mutate)
|
96
|
+
parts.append(fidelity)
|
97
|
+
|
98
|
+
# Collect fidelity from transformation
|
99
|
+
if self.transformation is not None:
|
100
|
+
# We don't take transitions, we take the aggregated thing on purpose
|
101
|
+
fidelity = self.transformation.calculate_contextual_fidelity(mutate=mutate)
|
102
|
+
parts.append(fidelity)
|
103
|
+
|
104
|
+
return parts
|
105
|
+
|
106
|
+
def calculate_probability(self, *, mutate: bool = True) -> float | None:
|
107
|
+
"""
|
108
|
+
Calculate probability from the transformation cycle.
|
109
|
+
This represents the structural feasibility of the dialectical transformation,
|
110
|
+
not expert opinions about it (those influence contextual_fidelity).
|
111
|
+
|
112
|
+
IMPORTANT: we don't use opinion probabilities here, because only the structural relationship matters.
|
113
|
+
"""
|
114
|
+
if self.transformation is None:
|
115
|
+
probability = None
|
116
|
+
else:
|
117
|
+
probability = self.transformation.calculate_probability(mutate=mutate)
|
118
|
+
|
119
|
+
if mutate:
|
120
|
+
self.probability = probability
|
121
|
+
return probability
|
122
|
+
|
123
|
+
def extract_segment_t(self) -> WheelSegment:
|
124
|
+
# TODO: maybe it's enough to return self, because the interface is still WheelSegment?
|
125
|
+
return WheelSegment(
|
126
|
+
t=self.t,
|
127
|
+
t_plus=self.t_plus,
|
128
|
+
t_minus=self.t_minus,
|
129
|
+
)
|
130
|
+
|
131
|
+
def extract_segment_a(self) -> WheelSegment:
|
132
|
+
return WheelSegment(
|
133
|
+
t=self.a,
|
134
|
+
t_plus=self.a_plus,
|
135
|
+
t_minus=self.a_minus,
|
136
|
+
)
|
137
|
+
|
138
|
+
def swap_segments(self, mutate: bool = True) -> WisdomUnit:
|
139
|
+
"""
|
140
|
+
Swap thesis (T, T+, T−) and antithesis (A, A+, A−) components.
|
141
|
+
|
142
|
+
Parameters
|
143
|
+
----------
|
144
|
+
mutate : bool, default True
|
145
|
+
• True – perform the swap in-place and return *self*
|
146
|
+
• False – leave *self* unchanged and return a **new** `WisdomUnit`
|
147
|
+
whose positions are swapped.
|
148
|
+
|
149
|
+
Returns
|
150
|
+
-------
|
151
|
+
WisdomUnit
|
152
|
+
The mutated instance (if ``mutate``) or the newly created,
|
153
|
+
swapped copy.
|
154
|
+
"""
|
155
|
+
# Choose the object we will modify.
|
156
|
+
target: WisdomUnit = self if mutate else self.model_copy()
|
157
|
+
|
158
|
+
# Swap each corresponding pair.
|
159
|
+
target.t, target.a = target.a, target.t
|
160
|
+
target.t_plus, target.a_plus = target.a_plus, target.t_plus
|
161
|
+
target.t_minus, target.a_minus = target.a_minus, target.t_minus
|
162
|
+
|
163
|
+
return target
|
164
|
+
|
165
|
+
def pretty(self) -> str:
|
166
|
+
ws_formatted = super().pretty()
|
167
|
+
if self.synthesis and self.synthesis.t_plus:
|
168
|
+
return ws_formatted + f"\nSynthesis: {self.synthesis.pretty()}"
|
169
|
+
else:
|
170
|
+
return ws_formatted
|
171
|
+
|
172
|
+
def add_indexes_to_aliases(self, human_friendly_index: int):
|
173
|
+
super().add_indexes_to_aliases(human_friendly_index)
|
174
|
+
if self.synthesis:
|
175
|
+
self.synthesis.add_indexes_to_aliases(human_friendly_index)
|
176
|
+
|
177
|
+
def set_dialectical_component_as_copy_from_another_segment(
|
178
|
+
self, wheel_segment: WheelSegment, dc_field: str
|
179
|
+
):
|
180
|
+
if not hasattr(wheel_segment, dc_field):
|
181
|
+
setattr(self, dc_field, None)
|
182
|
+
return
|
183
|
+
|
184
|
+
c: DialecticalComponent | None = getattr(wheel_segment, dc_field)
|
185
|
+
setattr(self, dc_field, c.model_copy() if c else None)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 Dialexity
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,123 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: dialectical-framework
|
3
|
+
Version: 0.4.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
|
+
License: MIT
|
6
|
+
Keywords: dialectics,reasoning,ai,philosophy,logic
|
7
|
+
Author: Evaldas Taroza
|
8
|
+
Author-email: evaldas@dialexity.com
|
9
|
+
Requires-Python: >=3.11,<4.0
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
11
|
+
Classifier: Intended Audience :: Developers
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
19
|
+
Requires-Dist: dependency-injector (>=4.48.1,<5.0.0)
|
20
|
+
Requires-Dist: mirascope[anthropic,azure,bedrock,langfuse,litellm,openai,tenacity] (>=1.25.6,<2.0.0)
|
21
|
+
Requires-Dist: python-dotenv (>=1.1.1,<2.0.0)
|
22
|
+
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
23
|
+
Project-URL: Homepage, https://github.com/dialexity/dialectical-framework
|
24
|
+
Project-URL: Repository, https://github.com/dialexity/dialectical-framework
|
25
|
+
Description-Content-Type: text/markdown
|
26
|
+
|
27
|
+
# Dialectical Framework
|
28
|
+
Turn stories, strategies, or systems into insight. Auto-generate Dialectical Wheels (DWs) from any text to reveal blind spots, surface polarities, and trace dynamic paths toward synthesis.
|
29
|
+
DWs are semantic maps that expose tension, transformation, and coherence within a system—whether narrative, ethical, organizational, or technological.
|
30
|
+
|
31
|
+
## What It Does:
|
32
|
+
- Converts natural language into Dialectical Wheels (DWs)
|
33
|
+
- Highlights thesis–antithesis tensions and feedback loops
|
34
|
+
- Reveals overlooked leverage points and systemic blind-spots
|
35
|
+
- Maps decisions, ethics, or mindsets across dialectical structures
|
36
|
+
|
37
|
+
## Built for:
|
38
|
+
- Systems optimization
|
39
|
+
- Wisdom mining & decision diagnostics
|
40
|
+
- Augmented intelligence / narrative AI
|
41
|
+
- Ethical modeling & polarity navigation
|
42
|
+
|
43
|
+
## Useful for:
|
44
|
+
- Consultants, coaches, facilitators, and system designers
|
45
|
+
- Storytellers, educators, and regenerative thinkers
|
46
|
+
- Strategists, SDD/BIMA practitioners, values-driven innovators
|
47
|
+
|
48
|
+
## Learn more:
|
49
|
+
- [Dialectical Wheels Overview](https://dialexity.com/blog/dialectical-wheels-for-systems-optimization/)
|
50
|
+
- [Wisdom Mining & Tokenomics](https://dialexity.com/blog/dialectical-token-dlt/)
|
51
|
+
- [Dialectical Ethics](https://dialexity.com/blog/dialectical-ethics/)
|
52
|
+
- [Earlier Work](https://dialexity.com/blog/wp-content/uploads/2023/11/Moral-Wisdom-from-Ontology-1.pdf)
|
53
|
+
|
54
|
+
# Development
|
55
|
+
|
56
|
+
## Contributors Welcome!
|
57
|
+
|
58
|
+
We invite developers, philosophers, cognitive scientists, and regenerative ecosystem builders to co-create with us.
|
59
|
+
|
60
|
+
## Setup
|
61
|
+
|
62
|
+
Behind the scenes we heavily rely on [Mirascope](https://mirascope.com/)
|
63
|
+
|
64
|
+
## Environment Variables
|
65
|
+
|
66
|
+
| Variable Name | Description | Example Value |
|
67
|
+
|----------------------------------|--------------------------------------|---------------|
|
68
|
+
| DIALEXITY_DEFAULT_MODEL | Default model name for the framework | gpt-4 |
|
69
|
+
| DIALEXITY_DEFAULT_MODEL_PROVIDER | Model provider (required) | openai |
|
70
|
+
|
71
|
+
You can store these in a `.env` file or export them in your environment.
|
72
|
+
|
73
|
+
These will specify the default "brain" for your reasoning.
|
74
|
+
|
75
|
+
## Architecture
|
76
|
+
|
77
|
+
At the core of the dialectical framework is a dialectical wheel. It is a fancy semantic graph where nodes are statements or concepts and edges are relationships such as "opposite of," "complementary to," etc. To make the graph more readable, it's depicted as a 2D wheel.
|
78
|
+
|
79
|
+
| Simple | More Complicated |
|
80
|
+
|-----------------------------------------------------|------------------------------------------------------|
|
81
|
+
|  |  |
|
82
|
+
|
83
|
+
The main architectural parts are:
|
84
|
+
- Wheel
|
85
|
+
- Wheel Segment
|
86
|
+
- Wisdom Unit
|
87
|
+
- Dialectical Component
|
88
|
+
- Transition
|
89
|
+
|
90
|
+
|
91
|
+
**Wheel** is composed of segments. Think of a dialectical wheel as a pizza, a segment is a slice of pizza. In the simplest case it represents some thesis (a statement, a concept, an action, a thought, an idea, etc.). A thesis can have positive and negative things related to it. Hence, a segment of a wheel is composed of these dialectical components: a thesis (T), positive side of that thesis (T+) and a negative side of that thesis (T-). In more detailed wheels, a segment could have more than 3 layers.
|
92
|
+
|
93
|
+
If we take two opposite segments, we get the basic (and the most important) structure: **Wisdom Unit** (half-wheel, verified by diagonal constraints: control statements). It's composed of:
|
94
|
+
|
95
|
+
| Dialectical Component | Description |
|
96
|
+
|-----------------------|----------------------------------|
|
97
|
+
| T- | Negative side of the main thesis |
|
98
|
+
| T | The thesis |
|
99
|
+
| T+ | Positive side of the main thesis |
|
100
|
+
| A+ | Positive side of the antithesis |
|
101
|
+
| A | The antithesis |
|
102
|
+
| A- | Negative side of the antithesis |
|
103
|
+
|
104
|
+
In a Wheel, segments next to each other are related. We wrap that relationship into a **Transition**. Practically, a Transition is a recipe for how to go from one segment to another in a way that we approach synthesis. Essentially, it shows how the negative side of a given thesis (Tn-) converts into the positive side of the following thesis (T(n+1)+). If we were to look at a wheel as a sliced pizza, the lines that separate the slices would be Transitions.
|
105
|
+
|
106
|
+
If we derive Transitions in a Wheel with only 2 segments (aka half-wheel), they are symmetrical and represent a special kind of Wisdom Unit, we call it Action (Ac) and Reflection (Re). As any Wisdom Unit, Action and Reflection must be verified by diagonal constraints as well.
|
107
|
+
|
108
|
+
## Prototyping & App Ideas
|
109
|
+
|
110
|
+
### Simple Win-Win Finder
|
111
|
+

|
112
|
+
|
113
|
+
### Eye-Opener
|
114
|
+
Working beta product [Eye Opener](https://app.dialexity.com/aiapps/eye-opener). It's a tool that analyzes text and generates a visual map of its underlying structure and hidden assumptions. The core feature is a graph-like interface we call the Dialectical Wheel, that shows the delayed dialectical responses ("blind spots").
|
115
|
+
|
116
|
+
### Argument Inspector
|
117
|
+
Working beta product [Argument Inspector](https://dialexity.com/start). Useful for analysts and mediators/facilitators to deeper understand the case.
|
118
|
+
|
119
|
+
### Atlas of Feelings
|
120
|
+
[The Atlas of Feelings](https://dialexity.com/blog/atlas-of-feelings-character-qualities/) is the Plutchik's wheel converted into the „vortex“ model, whereby the most gentle emotions are inside of the wheel, whereas the rudest are outside. As everything is interconnected with dialectical rules, we can understand human nature better.
|
121
|
+
|
122
|
+
### "Spiral" Lila game
|
123
|
+
In [this blog post](https://dialexity.com/blog/spiral-lila-with-character-traits/) we explain how the ancient Lila (Leela) game has been elevated to a new level.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
dialectical_framework/__init__.py,sha256=7lLfeZlmh9fPD2QHMPp4e7yKw7Xo-nE6OA1t5V5YXYE,1763
|
2
|
+
dialectical_framework/ai_dto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
dialectical_framework/ai_dto/causal_cycle_assessment_dto.py,sha256=6Y7Yjrrvk6B7EyCLWx-ueNeC_9hIOlU4kIIjY4cECtM,514
|
4
|
+
dialectical_framework/ai_dto/causal_cycle_dto.py,sha256=lCGrKUk-Fg_6rsc5RWcaT26ZmvchU-Yw03u8ta8sjWQ,486
|
5
|
+
dialectical_framework/ai_dto/causal_cycles_deck_dto.py,sha256=PU2v5U4WUJJbAxrOHTh4X0o3YOkzcv47bIr3vM2X_3w,356
|
6
|
+
dialectical_framework/ai_dto/dialectical_component_dto.py,sha256=Fa44bFdLITNSfkGT6CRwkCPgTdkCMs4qnJqvg9iZg9w,510
|
7
|
+
dialectical_framework/ai_dto/dialectical_components_deck_dto.py,sha256=IzWohRcfnpFKYbnXK_BCY85aDua1K_XgcwBvp2GErH4,474
|
8
|
+
dialectical_framework/ai_dto/dto_mapper.py,sha256=qG2iNh1PU_cHc82cOcasYpucmN4JS7yO6-lizjvv7BI,3661
|
9
|
+
dialectical_framework/ai_dto/reciprocal_solution_dto.py,sha256=0eVHr-iHmjPpc9_csE93nz5dYgcvILvxlwK8KHBelR4,892
|
10
|
+
dialectical_framework/analyst/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
11
|
+
dialectical_framework/analyst/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
+
dialectical_framework/analyst/consultant.py,sha256=5Ra2qw84kOgsO-o6OWjK1yUzfacXvB60cC35SBAY3Bw,862
|
13
|
+
dialectical_framework/analyst/decorator_action_reflection.py,sha256=ql99tLWDKoEZ1idBLxn64g1-XLhROFG4Srb_1YdstME,1123
|
14
|
+
dialectical_framework/analyst/decorator_discrete_spiral.py,sha256=UZZRENaaUdD_pfgcwLS19T1utN1_pJekZMt4ZkNr3gQ,1232
|
15
|
+
dialectical_framework/analyst/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
dialectical_framework/analyst/domain/assessable_cycle.py,sha256=vWIlkx9LePDhzHKz4wRsvit2fxD09U0YDHkBO1I5cQ8,4901
|
17
|
+
dialectical_framework/analyst/domain/cycle.py,sha256=hgftf437hCOaVUgV__t38ilKrGKdjafX9_1DGphM16c,4798
|
18
|
+
dialectical_framework/analyst/domain/interpretation.py,sha256=UoDQ8ThkHQHy9HC0q95VpPqSfDGN441ofqLqbIvK9Ig,539
|
19
|
+
dialectical_framework/analyst/domain/rationale.py,sha256=3gJ_aUNZyh7HpRWchb0ZK1cKnVM5NJqRgUDWcOb6rDQ,4965
|
20
|
+
dialectical_framework/analyst/domain/spiral.py,sha256=950jLteX1LDu-6mdS-i04tGBmIQA220PG7FFOxzXIBY,1589
|
21
|
+
dialectical_framework/analyst/domain/transformation.py,sha256=FZcqyJb9b5YT7Jt_aZ77r25RQzR2mRg31keI9p3N4QA,827
|
22
|
+
dialectical_framework/analyst/domain/transition.py,sha256=85p6ul_F2_KoG631t0v7vnb1qb849DOT9CgLxjCbYWo,6119
|
23
|
+
dialectical_framework/analyst/domain/transition_cell_to_cell.py,sha256=Y14jcccoQqhQm9-m7HUYTZIdeZmlghHQy8ww3VPvhks,931
|
24
|
+
dialectical_framework/analyst/domain/transition_segment_to_segment.py,sha256=gPoYM3Ev5vF4UWpLhCZtV92YTfFcpmp-aYDsSdi8w5A,560
|
25
|
+
dialectical_framework/analyst/strategic_consultant.py,sha256=Iz48nTbPYckZYWc7PSc0zRwDVuCMqo_cbBxiU7ez0_U,1000
|
26
|
+
dialectical_framework/analyst/think_action_reflection.py,sha256=AWHD0kSiyPpH_r2H2_YZgmYNLQRUvvGyqbocu4JgLYQ,8828
|
27
|
+
dialectical_framework/analyst/think_constructive_convergence.py,sha256=83-LvaxM3N7DZpfVLonazCVi5URtaxnAXajigjHaIro,3940
|
28
|
+
dialectical_framework/analyst/wheel_builder_transition_calculator.py,sha256=C3ejfFNYiuy5tYmcU7mvDQab-PTrwuawZqo5nd1rYFI,6652
|
29
|
+
dialectical_framework/brain.py,sha256=C4zFnZjOrvU1-v-rNHcj33cDQq4ks7p1DSC_llGEh5w,3454
|
30
|
+
dialectical_framework/dialectical_analysis.py,sha256=bTKzAQYtvsrC1f3OGMh-PYBxr4YHe9qFPKZ4WrsBZw0,341
|
31
|
+
dialectical_framework/dialectical_component.py,sha256=itejXLuyNlQFl_gs0YL8TFOd5V4-qL6qckRL1PqOPJI,4276
|
32
|
+
dialectical_framework/dialectical_components_deck.py,sha256=Jr0ibukWDx8JQPmo5ang9tKPvzW-rVkq8-igTOZlC9s,1876
|
33
|
+
dialectical_framework/dialectical_reasoning.py,sha256=yc_ZsdCy2-_ciisdN5aATZ_WVy35wYbUaGwVal4BUVw,3904
|
34
|
+
dialectical_framework/directed_graph.py,sha256=4OM_Jiy9etT1iwoSelH8_EcyXDlE2uNjTBhCtH6IAvM,17753
|
35
|
+
dialectical_framework/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
+
dialectical_framework/enums/causality_type.py,sha256=LZJA7keU2ucgTR-ec35lUsp3-zJ7JX0a39tnZNvJWPY,200
|
37
|
+
dialectical_framework/enums/di.py,sha256=vzMmsXhENEkVmw_hqKtNgxr35bF-gOoQo5aDRKk-8_M,296
|
38
|
+
dialectical_framework/enums/dialectical_reasoning_mode.py,sha256=NVvTaYrfpsIfwbI3XREQvRJc5zyaE5Z6CTojtDvEoio,225
|
39
|
+
dialectical_framework/enums/predicate.py,sha256=iFMxhvyhOy5v3HWF3Ntweg_eUfdDjbeg88NoQd6Ks9g,210
|
40
|
+
dialectical_framework/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
+
dialectical_framework/protocols/assessable.py,sha256=uXSQxaYETekqUnOk5NIwk4EEcIRNMokH_zMfrI5o4MY,5476
|
42
|
+
dialectical_framework/protocols/causality_sequencer.py,sha256=yoPcmYklMAGHXnGoRM_NN1oW-2uKVWnHpeoZoI7h0D4,4369
|
43
|
+
dialectical_framework/protocols/content_fidelity_evaluator.py,sha256=_XEeUUdUk5UFbpiSzmfg4JLwN8Wz30wcJHy0KifnbSk,577
|
44
|
+
dialectical_framework/protocols/has_brain.py,sha256=Ed_reh4k6y9WHKeZF-pzyz_au3_lYQSlNk8xp7EG3B8,397
|
45
|
+
dialectical_framework/protocols/has_config.py,sha256=BSDtIFBtHdgVkitONN_JBDS1npHdEqPA_0huNIaODZ4,435
|
46
|
+
dialectical_framework/protocols/ratable.py,sha256=MqxXylUfBnpWd729VtuQTpOop1Qtu7FbC5StdZBH4xI,3231
|
47
|
+
dialectical_framework/protocols/reloadable.py,sha256=Rxg98PJa-Iir30LC96Ivsbmdy8zm2hWj8LnntNABr2Q,149
|
48
|
+
dialectical_framework/protocols/thesis_extractor.py,sha256=Ho4B4SGn8vJ8j8HO9t2i1gMzxre7jWG071Yoys6CgXY,517
|
49
|
+
dialectical_framework/settings.py,sha256=i6eSLX3L_h9ZZCJh82phQ-Fh46Yt_KXilHwph85zADY,2821
|
50
|
+
dialectical_framework/synthesis.py,sha256=u1tSwrVobraIm5k2oAEd2r7jWGpMWtJ8LMMe2ZwyWPY,140
|
51
|
+
dialectical_framework/synthesist/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
52
|
+
dialectical_framework/synthesist/causality/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
+
dialectical_framework/synthesist/causality/causality_sequencer_balanced.py,sha256=UNtC63P-dqotqajeM2zRoqDE1L_AFMnHjFGXHw7cuyI,17821
|
54
|
+
dialectical_framework/synthesist/causality/causality_sequencer_desirable.py,sha256=y0fZdiufhnLJBaWCCeuvwDDz_QqjeyLhUCTveTCF9pk,2485
|
55
|
+
dialectical_framework/synthesist/causality/causality_sequencer_feasible.py,sha256=GXMhKxzFHwcw2pUOmskW0soiYHbfzG1-oA5ck-ZxQuQ,2486
|
56
|
+
dialectical_framework/synthesist/causality/causality_sequencer_realistic.py,sha256=_Zn64vqGaTjnsFd79HumGwJ2e-jQOFqRcODKKTgXxDQ,2473
|
57
|
+
dialectical_framework/synthesist/concepts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
|
+
dialectical_framework/synthesist/concepts/thesis_extractor_basic.py,sha256=jxZFdUTwMbDPfZeZmLQlyNNDT8khtdrFa4rFvCGKMVg,5493
|
59
|
+
dialectical_framework/synthesist/polarity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
+
dialectical_framework/synthesist/polarity/polarity_reasoner.py,sha256=4NLol_gWNGP9N_DZddYAcFGjiImDNH1DSUIsUXftqXY,31884
|
61
|
+
dialectical_framework/synthesist/polarity/reason_blind.py,sha256=Ay0ORM9igUIoUGK1C3ktXsrVRb-vf07VVnT_79yJkHE,2030
|
62
|
+
dialectical_framework/synthesist/polarity/reason_conversational.py,sha256=jFyWG7DQR4Tx2BgQ47-ZmtUWGpTVRLKaXI8jv_gX5AY,2816
|
63
|
+
dialectical_framework/synthesist/polarity/reason_fast.py,sha256=m7yFq0DstquUFE6WdVPu7K5oz1BMP3IZNmNcRy1Ci4Q,7934
|
64
|
+
dialectical_framework/synthesist/polarity/reason_fast_and_simple.py,sha256=X1tAH6hjQe6z2znaXCYoVONGN8jcw1EoECaqiW_XJP0,2241
|
65
|
+
dialectical_framework/synthesist/polarity/reason_fast_polarized_conflict.py,sha256=mLTN7IfQ4qQYPyID4fMOw0jKAMa4IEm8Bxx6Ukntoxg,2236
|
66
|
+
dialectical_framework/synthesist/reverse_engineer.py,sha256=-WVhCvx5eiVJAW9zjVJzGLvj5dezOUKGUzjTNDHrvfk,15799
|
67
|
+
dialectical_framework/synthesist/wheel_builder.py,sha256=-drSkbAaLNiFOa1MM5z_7_AzwSLlqhWBEsTJo-nI8J0,13494
|
68
|
+
dialectical_framework/utils/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
69
|
+
dialectical_framework/utils/dc_replace.py,sha256=IstdBlkJIeymcMcahGixrs10kTpm07M6vlL-6ISAr7Q,1730
|
70
|
+
dialectical_framework/utils/decompose_probability_uniformly.py,sha256=Da57nb2_66bqaOmh7F6JVDwQYvGx_PWlzuhwUZuthnU,490
|
71
|
+
dialectical_framework/utils/extend_tpl.py,sha256=SsnBiunAFlpAfgY536YkHl5CD8kD3DqpQzIf-Wb4GuM,296
|
72
|
+
dialectical_framework/utils/gm.py,sha256=eokGwQYCTkehEpvt78CjW5JA6l3MDsikV_CzQUp-TOs,473
|
73
|
+
dialectical_framework/utils/is_async.py,sha256=cDcYDy_Xd0Pla2HnHCBZZqUOytG0Rx1kSfEZ0hZAskI,338
|
74
|
+
dialectical_framework/utils/use_brain.py,sha256=v1bDy0b56Pw0kJLx6G4lWvZMGIrhlFwLZiEEEoQGGfk,3269
|
75
|
+
dialectical_framework/validator/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
76
|
+
dialectical_framework/validator/basic_checks.py,sha256=jLo3vWi6g7obMM-5vkIZqxi469cYMgbjJCUpzi48rYQ,2740
|
77
|
+
dialectical_framework/validator/check.py,sha256=hzcfdCfa3WVLrtMyj2Ghuk80jg9kuipQjWFhiTV3acI,382
|
78
|
+
dialectical_framework/wheel.py,sha256=0kAQ1_Ozru43DPWiXPipUN0S0_sZh58edSA9iqwQYBY,15689
|
79
|
+
dialectical_framework/wheel_segment.py,sha256=aJFyi1_uZd7IKnnkrShy5LZVFVlCNfvOjw5yRYAfYUw,7086
|
80
|
+
dialectical_framework/wisdom_unit.py,sha256=h6KQdh_G9CYbCi2lwhiV2YiP-mCFc9dLPn--e2peZZg,6964
|
81
|
+
dialectical_framework-0.4.4.dist-info/LICENSE,sha256=F4XQYrUdTugbGBdh0_PS1XmwEOAOUPnFokoKuukKDp4,1066
|
82
|
+
dialectical_framework-0.4.4.dist-info/METADATA,sha256=xOIOfVGKESHZvgT86mA6AzNVOqx_I1qbruwHbOakMXg,7421
|
83
|
+
dialectical_framework-0.4.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
84
|
+
dialectical_framework-0.4.4.dist-info/RECORD,,
|