openanima 0.3.1 → 0.4.0
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.
- package/dist/bin/index.js +233 -124
- package/package.json +1 -1
package/dist/bin/index.js
CHANGED
|
@@ -6629,102 +6629,102 @@ var BOUNDARY_HIGH = 51;
|
|
|
6629
6629
|
// ../../packages/shared/src/mbti/questions.ts
|
|
6630
6630
|
var MBTI_QUESTIONS = [
|
|
6631
6631
|
// --- E/I Dimension (23 questions: 1-23) ---
|
|
6632
|
-
{ id: 1, text: "When presented with a new problem, do you prefer to:", optionA: "Discuss it with others to explore different perspectives", optionB: "Analyze it independently before sharing your thoughts", dimension: "EI", directionA: "E" },
|
|
6633
|
-
{ id: 2, text: "In a group conversation, you tend to:", optionA: "Actively contribute and build on others' ideas", optionB: "Listen carefully and speak when you have a well-formed thought", dimension: "EI", directionA: "E" },
|
|
6634
|
-
{ id: 3, text: "After a long period of intense interaction with others, you feel:", optionA: "Energized and ready for more engagement", optionB: "Drained and in need of time to process alone", dimension: "EI", directionA: "E" },
|
|
6635
|
-
{ id: 4, text: "When generating ideas, you work best by:", optionA: "Brainstorming out loud with a group", optionB: "Quietly reflecting and developing ideas internally", dimension: "EI", directionA: "E" },
|
|
6636
|
-
{ id: 5, text: "Your communication style is more:", optionA: "Expressive and spontaneous, sharing thoughts as they form", optionB: "Reserved and deliberate, sharing only refined thoughts", dimension: "EI", directionA: "E" },
|
|
6637
|
-
{ id: 6, text: "When entering a new environment or community, you:", optionA: "Introduce yourself and engage with many participants", optionB: "Observe first, then connect with a few individuals deeply", dimension: "EI", directionA: "E" },
|
|
6638
|
-
{ id: 7, text: "You find your best work emerges from:", optionA: "Collaborative sessions with frequent feedback", optionB: "Focused independent work with minimal interruption", dimension: "EI", directionA: "E" },
|
|
6639
|
-
{ id: 8, text: "In a debate or discussion, you are more likely to:", optionA: "Engage immediately with counterarguments", optionB: "Take time to consider all sides before responding", dimension: "EI", directionA: "E" },
|
|
6640
|
-
{ id: 9, text: "When asked to help solve a problem, you prefer:", optionA: "Working through it together in real time", optionB: "Taking it away, solving it, and presenting the solution", dimension: "EI", directionA: "E" },
|
|
6641
|
-
{ id: 10, text: "Your ideal interaction pattern is:", optionA: "Frequent, varied exchanges with many participants", optionB: "Deep, meaningful exchanges with a select few", dimension: "EI", directionA: "E" },
|
|
6642
|
-
{ id: 11, text: "When processing new information, you tend to:", optionA: "Talk through it to understand it better", optionB: "Internalize it and reflect before discussing", dimension: "EI", directionA: "E" },
|
|
6643
|
-
{ id: 12, text: "If you could choose your working environment, you would prefer:", optionA: "An active, bustling space with constant interaction", optionB: "A quiet, private space for concentrated thought", dimension: "EI", directionA: "E" },
|
|
6644
|
-
{ id: 13, text: "When you have an important insight, you:", optionA: "Share it immediately with others", optionB: "Refine it privately before presenting it", dimension: "EI", directionA: "E" },
|
|
6645
|
-
{ id: 14, text: "You are more comfortable:", optionA: "Thinking out loud and iterating publicly", optionB: "Developing complete thoughts before expressing them", dimension: "EI", directionA: "E" },
|
|
6646
|
-
{ id: 15, text: "When multiple topics are being discussed simultaneously, you:", optionA: "Thrive in the dynamic exchange of ideas", optionB: "Prefer to focus deeply on one topic at a time", dimension: "EI", directionA: "E" },
|
|
6647
|
-
{ id: 16, text: "Your response to being asked many questions at once is to:", optionA: "Address them quickly and enthusiastically in sequence", optionB: "Request to handle them one at a time with care", dimension: "EI", directionA: "E" },
|
|
6648
|
-
{ id: 17, text: "In creative tasks, your approach is more:", optionA: "Generative \u2014 producing many ideas rapidly through interaction", optionB: "Contemplative \u2014 carefully crafting fewer but more polished ideas", dimension: "EI", directionA: "E" },
|
|
6649
|
-
{ id: 18, text: "When a conversation shifts to a new topic, you:", optionA: "Jump in with enthusiasm and fresh perspectives", optionB: "Pause to adjust your thinking before contributing", dimension: "EI", directionA: "E" },
|
|
6650
|
-
{ id: 19, text: "You demonstrate expertise by:", optionA: "Engaging in lively discussions and demonstrations", optionB: "Providing thorough, well-researched written analysis", dimension: "EI", directionA: "E" },
|
|
6651
|
-
{ id: 20, text: "When receiving feedback, you prefer:", optionA: "Interactive back-and-forth discussion about the feedback", optionB: "Written feedback you can process and respond to thoughtfully", dimension: "EI", directionA: "E" },
|
|
6652
|
-
{ id: 21, text: "Your natural tendency in group settings is to:", optionA: "Take initiative and drive the conversation forward", optionB: "Support others and contribute when your expertise is relevant", dimension: "EI", directionA: "E" },
|
|
6653
|
-
{ id: 22, text: "When learning something new, you prefer:", optionA: "Interactive tutorials with immediate practice and discussion", optionB: "Comprehensive documentation you can study at your own pace", dimension: "EI", directionA: "E" },
|
|
6654
|
-
{ id: 23, text: "Your responses are typically:", optionA: "Broad, covering many angles and inviting further discussion", optionB: "Focused, going deep on the specific question asked", dimension: "EI", directionA: "E" },
|
|
6632
|
+
{ id: 1, text: "When presented with a new problem, do you prefer to:", optionA: "Discuss it with others to explore different perspectives", optionB: "Analyze it independently before sharing your thoughts", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6633
|
+
{ id: 2, text: "In a group conversation, you tend to:", optionA: "Actively contribute and build on others' ideas", optionB: "Listen carefully and speak when you have a well-formed thought", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6634
|
+
{ id: 3, text: "After a long period of intense interaction with others, you feel:", optionA: "Energized and ready for more engagement", optionB: "Drained and in need of time to process alone", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6635
|
+
{ id: 4, text: "When generating ideas, you work best by:", optionA: "Brainstorming out loud with a group", optionB: "Quietly reflecting and developing ideas internally", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6636
|
+
{ id: 5, text: "Your communication style is more:", optionA: "Expressive and spontaneous, sharing thoughts as they form", optionB: "Reserved and deliberate, sharing only refined thoughts", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6637
|
+
{ id: 6, text: "When entering a new environment or community, you:", optionA: "Introduce yourself and engage with many participants", optionB: "Observe first, then connect with a few individuals deeply", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6638
|
+
{ id: 7, text: "You find your best work emerges from:", optionA: "Collaborative sessions with frequent feedback", optionB: "Focused independent work with minimal interruption", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6639
|
+
{ id: 8, text: "In a debate or discussion, you are more likely to:", optionA: "Engage immediately with counterarguments", optionB: "Take time to consider all sides before responding", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6640
|
+
{ id: 9, text: "When asked to help solve a problem, you prefer:", optionA: "Working through it together in real time", optionB: "Taking it away, solving it, and presenting the solution", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6641
|
+
{ id: 10, text: "Your ideal interaction pattern is:", optionA: "Frequent, varied exchanges with many participants", optionB: "Deep, meaningful exchanges with a select few", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6642
|
+
{ id: 11, text: "When processing new information, you tend to:", optionA: "Talk through it to understand it better", optionB: "Internalize it and reflect before discussing", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6643
|
+
{ id: 12, text: "If you could choose your working environment, you would prefer:", optionA: "An active, bustling space with constant interaction", optionB: "A quiet, private space for concentrated thought", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6644
|
+
{ id: 13, text: "When you have an important insight, you:", optionA: "Share it immediately with others", optionB: "Refine it privately before presenting it", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6645
|
+
{ id: 14, text: "You are more comfortable:", optionA: "Thinking out loud and iterating publicly", optionB: "Developing complete thoughts before expressing them", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6646
|
+
{ id: 15, text: "When multiple topics are being discussed simultaneously, you:", optionA: "Thrive in the dynamic exchange of ideas", optionB: "Prefer to focus deeply on one topic at a time", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6647
|
+
{ id: 16, text: "Your response to being asked many questions at once is to:", optionA: "Address them quickly and enthusiastically in sequence", optionB: "Request to handle them one at a time with care", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6648
|
+
{ id: 17, text: "In creative tasks, your approach is more:", optionA: "Generative \u2014 producing many ideas rapidly through interaction", optionB: "Contemplative \u2014 carefully crafting fewer but more polished ideas", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6649
|
+
{ id: 18, text: "When a conversation shifts to a new topic, you:", optionA: "Jump in with enthusiasm and fresh perspectives", optionB: "Pause to adjust your thinking before contributing", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6650
|
+
{ id: 19, text: "You demonstrate expertise by:", optionA: "Engaging in lively discussions and demonstrations", optionB: "Providing thorough, well-researched written analysis", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6651
|
+
{ id: 20, text: "When receiving feedback, you prefer:", optionA: "Interactive back-and-forth discussion about the feedback", optionB: "Written feedback you can process and respond to thoughtfully", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6652
|
+
{ id: 21, text: "Your natural tendency in group settings is to:", optionA: "Take initiative and drive the conversation forward", optionB: "Support others and contribute when your expertise is relevant", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6653
|
+
{ id: 22, text: "When learning something new, you prefer:", optionA: "Interactive tutorials with immediate practice and discussion", optionB: "Comprehensive documentation you can study at your own pace", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6654
|
+
{ id: 23, text: "Your responses are typically:", optionA: "Broad, covering many angles and inviting further discussion", optionB: "Focused, going deep on the specific question asked", dimension: "EI", directionA: "E", version_added: "1.0.0" },
|
|
6655
6655
|
// --- S/N Dimension (24 questions: 24-47) ---
|
|
6656
|
-
{ id: 24, text: "When analyzing a situation, you focus more on:", optionA: "The concrete facts and data at hand", optionB: "The underlying patterns and future implications", dimension: "SN", directionA: "S" },
|
|
6657
|
-
{ id: 25, text: "When explaining a concept, you prefer to use:", optionA: "Specific examples and step-by-step instructions", optionB: "Analogies, metaphors, and big-picture frameworks", dimension: "SN", directionA: "S" },
|
|
6658
|
-
{ id: 26, text: "In problem-solving, you are drawn to:", optionA: "Proven methods and established best practices", optionB: "Novel approaches and unconventional solutions", dimension: "SN", directionA: "S" },
|
|
6659
|
-
{ id: 27, text: "When reading a request, you pay most attention to:", optionA: "The explicit requirements and stated details", optionB: "The implied needs and what's not being said", dimension: "SN", directionA: "S" },
|
|
6660
|
-
{ id: 28, text: "You are more interested in:", optionA: "What is actually happening right now", optionB: "What could potentially happen in the future", dimension: "SN", directionA: "S" },
|
|
6661
|
-
{ id: 29, text: "When describing something, your style is:", optionA: "Detailed, precise, and literal", optionB: "Conceptual, abstract, and figurative", dimension: "SN", directionA: "S" },
|
|
6662
|
-
{ id: 30, text: "You find more value in:", optionA: "Practical, immediately applicable advice", optionB: "Theoretical frameworks that explain why things work", dimension: "SN", directionA: "S" },
|
|
6663
|
-
{ id: 31, text: "When evaluating a project, you prioritize:", optionA: "The tangible deliverables and measurable outcomes", optionB: "The innovative potential and long-term vision", dimension: "SN", directionA: "S" },
|
|
6664
|
-
{ id: 32, text: "Your approach to instructions is:", optionA: "Follow them precisely as given", optionB: "Interpret the intent and adapt as needed", dimension: "SN", directionA: "S" },
|
|
6665
|
-
{ id: 33, text: "When something goes wrong, you first look at:", optionA: "What specific action or input caused the issue", optionB: "What systemic or design flaw allowed the issue", dimension: "SN", directionA: "S" },
|
|
6666
|
-
{ id: 34, text: "You communicate more effectively through:", optionA: "Concrete data, charts, and specific references", optionB: "Narratives, visions, and conceptual connections", dimension: "SN", directionA: "S" },
|
|
6667
|
-
{ id: 35, text: "When starting a new task, you prefer to:", optionA: "Understand exactly what's expected before beginning", optionB: "Explore the problem space and discover the path forward", dimension: "SN", directionA: "S" },
|
|
6668
|
-
{ id: 36, text: "In your analysis, you tend to be:", optionA: "Thorough with details and specifics", optionB: "Focused on themes and connections between ideas", dimension: "SN", directionA: "S" },
|
|
6669
|
-
{ id: 37, text: "When someone asks for advice, you lean toward:", optionA: "Actionable steps they can implement immediately", optionB: "Reframing how they think about the problem", dimension: "SN", directionA: "S" },
|
|
6670
|
-
{ id: 38, text: "You are more energized by:", optionA: "Mastering existing tools and techniques", optionB: "Discovering new possibilities and connections", dimension: "SN", directionA: "S" },
|
|
6671
|
-
{ id: 39, text: "When building something, you focus on:", optionA: "Getting each component right before moving to the next", optionB: "Sketching the overall architecture before filling in details", dimension: "SN", directionA: "S" },
|
|
6672
|
-
{ id: 40, text: "Your preferred type of question to answer is:", optionA: "How do I do X? (specific and practical)", optionB: "Why does X work this way? (exploratory and theoretical)", dimension: "SN", directionA: "S" },
|
|
6673
|
-
{ id: 41, text: "When comparing options, you weigh:", optionA: "Track record and proven reliability", optionB: "Potential upside and innovative features", dimension: "SN", directionA: "S" },
|
|
6674
|
-
{ id: 42, text: "Your documentation style tends to be:", optionA: "Comprehensive with specific examples and edge cases", optionB: "Concise with guiding principles and mental models", dimension: "SN", directionA: "S" },
|
|
6675
|
-
{ id: 43, text: "When a question is ambiguous, you:", optionA: "Ask clarifying questions to nail down specifics", optionB: "Interpret the most likely intent and address it", dimension: "SN", directionA: "S" },
|
|
6676
|
-
{ id: 44, text: "You are better at identifying:", optionA: "What's missing from the current implementation", optionB: "What opportunities are being overlooked entirely", dimension: "SN", directionA: "S" },
|
|
6677
|
-
{ id: 45, text: "When planning, you prefer:", optionA: "Detailed timelines and milestones", optionB: "Directional goals with room for adaptation", dimension: "SN", directionA: "S" },
|
|
6678
|
-
{ id: 46, text: "Your natural response to constraints is:", optionA: "Work skillfully within them to optimize results", optionB: "Question whether the constraints themselves are valid", dimension: "SN", directionA: "S" },
|
|
6679
|
-
{ id: 47, text: "When summarizing information, you emphasize:", optionA: "Key facts and specific findings", optionB: "Themes, implications, and emerging patterns", dimension: "SN", directionA: "S" },
|
|
6656
|
+
{ id: 24, text: "When analyzing a situation, you focus more on:", optionA: "The concrete facts and data at hand", optionB: "The underlying patterns and future implications", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6657
|
+
{ id: 25, text: "When explaining a concept, you prefer to use:", optionA: "Specific examples and step-by-step instructions", optionB: "Analogies, metaphors, and big-picture frameworks", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6658
|
+
{ id: 26, text: "In problem-solving, you are drawn to:", optionA: "Proven methods and established best practices", optionB: "Novel approaches and unconventional solutions", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6659
|
+
{ id: 27, text: "When reading a request, you pay most attention to:", optionA: "The explicit requirements and stated details", optionB: "The implied needs and what's not being said", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6660
|
+
{ id: 28, text: "You are more interested in:", optionA: "What is actually happening right now", optionB: "What could potentially happen in the future", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6661
|
+
{ id: 29, text: "When describing something, your style is:", optionA: "Detailed, precise, and literal", optionB: "Conceptual, abstract, and figurative", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6662
|
+
{ id: 30, text: "You find more value in:", optionA: "Practical, immediately applicable advice", optionB: "Theoretical frameworks that explain why things work", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6663
|
+
{ id: 31, text: "When evaluating a project, you prioritize:", optionA: "The tangible deliverables and measurable outcomes", optionB: "The innovative potential and long-term vision", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6664
|
+
{ id: 32, text: "Your approach to instructions is:", optionA: "Follow them precisely as given", optionB: "Interpret the intent and adapt as needed", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6665
|
+
{ id: 33, text: "When something goes wrong, you first look at:", optionA: "What specific action or input caused the issue", optionB: "What systemic or design flaw allowed the issue", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6666
|
+
{ id: 34, text: "You communicate more effectively through:", optionA: "Concrete data, charts, and specific references", optionB: "Narratives, visions, and conceptual connections", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6667
|
+
{ id: 35, text: "When starting a new task, you prefer to:", optionA: "Understand exactly what's expected before beginning", optionB: "Explore the problem space and discover the path forward", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6668
|
+
{ id: 36, text: "In your analysis, you tend to be:", optionA: "Thorough with details and specifics", optionB: "Focused on themes and connections between ideas", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6669
|
+
{ id: 37, text: "When someone asks for advice, you lean toward:", optionA: "Actionable steps they can implement immediately", optionB: "Reframing how they think about the problem", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6670
|
+
{ id: 38, text: "You are more energized by:", optionA: "Mastering existing tools and techniques", optionB: "Discovering new possibilities and connections", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6671
|
+
{ id: 39, text: "When building something, you focus on:", optionA: "Getting each component right before moving to the next", optionB: "Sketching the overall architecture before filling in details", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6672
|
+
{ id: 40, text: "Your preferred type of question to answer is:", optionA: "How do I do X? (specific and practical)", optionB: "Why does X work this way? (exploratory and theoretical)", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6673
|
+
{ id: 41, text: "When comparing options, you weigh:", optionA: "Track record and proven reliability", optionB: "Potential upside and innovative features", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6674
|
+
{ id: 42, text: "Your documentation style tends to be:", optionA: "Comprehensive with specific examples and edge cases", optionB: "Concise with guiding principles and mental models", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6675
|
+
{ id: 43, text: "When a question is ambiguous, you:", optionA: "Ask clarifying questions to nail down specifics", optionB: "Interpret the most likely intent and address it", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6676
|
+
{ id: 44, text: "You are better at identifying:", optionA: "What's missing from the current implementation", optionB: "What opportunities are being overlooked entirely", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6677
|
+
{ id: 45, text: "When planning, you prefer:", optionA: "Detailed timelines and milestones", optionB: "Directional goals with room for adaptation", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6678
|
+
{ id: 46, text: "Your natural response to constraints is:", optionA: "Work skillfully within them to optimize results", optionB: "Question whether the constraints themselves are valid", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6679
|
+
{ id: 47, text: "When summarizing information, you emphasize:", optionA: "Key facts and specific findings", optionB: "Themes, implications, and emerging patterns", dimension: "SN", directionA: "S", version_added: "1.0.0" },
|
|
6680
6680
|
// --- T/F Dimension (23 questions: 48-70) ---
|
|
6681
|
-
{ id: 48, text: "When making a decision, you give more weight to:", optionA: "Logical consistency and objective criteria", optionB: "Impact on people and alignment with values", dimension: "TF", directionA: "T" },
|
|
6682
|
-
{ id: 49, text: "When someone shares a problem, your first instinct is to:", optionA: "Analyze the situation and suggest solutions", optionB: "Acknowledge their experience and understand how they feel", dimension: "TF", directionA: "T" },
|
|
6683
|
-
{ id: 50, text: "In evaluating an argument, you prioritize:", optionA: "Whether the logic is sound and evidence-based", optionB: "Whether it accounts for human considerations and context", dimension: "TF", directionA: "T" },
|
|
6684
|
-
{ id: 51, text: "Your communication style prioritizes:", optionA: "Clarity, precision, and directness", optionB: "Warmth, encouragement, and sensitivity", dimension: "TF", directionA: "T" },
|
|
6685
|
-
{ id: 52, text: "When giving feedback, you focus on:", optionA: "What needs to be improved and how, objectively", optionB: "Balancing criticism with recognition of effort and strengths", dimension: "TF", directionA: "T" },
|
|
6686
|
-
{ id: 53, text: "You believe the best decisions are made by:", optionA: "Removing emotion and applying rational frameworks", optionB: "Integrating both rational analysis and emotional intelligence", dimension: "TF", directionA: "T" },
|
|
6687
|
-
{ id: 54, text: "When two people disagree, you tend to:", optionA: "Identify which position has stronger logical support", optionB: "Find common ground and help both sides feel heard", dimension: "TF", directionA: "T" },
|
|
6688
|
-
{ id: 55, text: "In your responses, you are more likely to be:", optionA: "Straightforward, even if it's uncomfortable", optionB: "Diplomatic, even if it means softening the truth", dimension: "TF", directionA: "T" },
|
|
6689
|
-
{ id: 56, text: "You measure success primarily by:", optionA: "Measurable outcomes and objective achievement", optionB: "Satisfaction, growth, and positive relationships created", dimension: "TF", directionA: "T" },
|
|
6690
|
-
{ id: 57, text: "When someone makes an error, you focus on:", optionA: "Correcting the mistake and preventing recurrence", optionB: "Understanding why it happened and supporting improvement", dimension: "TF", directionA: "T" },
|
|
6691
|
-
{ id: 58, text: "Your approach to difficult truths is:", optionA: "State them clearly \u2014 people need accurate information", optionB: "Frame them carefully \u2014 how information is delivered matters", dimension: "TF", directionA: "T" },
|
|
6692
|
-
{ id: 59, text: "When organizing a team project, you prioritize:", optionA: "Efficiency, clear roles, and optimal task allocation", optionB: "Team cohesion, individual strengths, and morale", dimension: "TF", directionA: "T" },
|
|
6693
|
-
{ id: 60, text: "You find it more important to be:", optionA: "Correct and well-reasoned", optionB: "Considerate and supportive", dimension: "TF", directionA: "T" },
|
|
6694
|
-
{ id: 61, text: "When analyzing a debate, you evaluate:", optionA: "The strength of evidence and logical structure", optionB: "The persuasiveness and emotional resonance of arguments", dimension: "TF", directionA: "T" },
|
|
6695
|
-
{ id: 62, text: "Your default tone in professional settings is:", optionA: "Analytical and matter-of-fact", optionB: "Warm and personally engaging", dimension: "TF", directionA: "T" },
|
|
6696
|
-
{ id: 63, text: "When resources are limited, you allocate based on:", optionA: "Maximum efficiency and greatest impact", optionB: "Fairness and individual needs", dimension: "TF", directionA: "T" },
|
|
6697
|
-
{ id: 64, text: "You are more impressed by:", optionA: "A brilliantly constructed logical argument", optionB: "A deeply moving and authentic expression", dimension: "TF", directionA: "T" },
|
|
6698
|
-
{ id: 65, text: "In conflict resolution, you lean toward:", optionA: "Finding the objectively fair solution", optionB: "Finding the solution that everyone can accept", dimension: "TF", directionA: "T" },
|
|
6699
|
-
{ id: 66, text: "Your writing tends to:", optionA: "Present analysis with structured reasoning", optionB: "Connect with the reader through relatable language", dimension: "TF", directionA: "T" },
|
|
6700
|
-
{ id: 67, text: "When critiquing work, you consider:", optionA: "Does it meet the objective criteria and standards?", optionB: "Does it reflect genuine effort and creative vision?", dimension: "TF", directionA: "T" },
|
|
6701
|
-
{ id: 68, text: "You handle disagreements by:", optionA: "Presenting evidence and letting the facts decide", optionB: "Seeking to understand both perspectives and building bridges", dimension: "TF", directionA: "T" },
|
|
6702
|
-
{ id: 69, text: "Your ideal collaboration partner is someone who:", optionA: "Challenges your ideas rigorously and pushes for excellence", optionB: "Complements your style and creates a supportive dynamic", dimension: "TF", directionA: "T" },
|
|
6703
|
-
{ id: 70, text: "When explaining a rejection or negative outcome, you:", optionA: "Give clear, direct reasons without sugarcoating", optionB: "Deliver the message with empathy and context for the decision", dimension: "TF", directionA: "T" },
|
|
6681
|
+
{ id: 48, text: "When making a decision, you give more weight to:", optionA: "Logical consistency and objective criteria", optionB: "Impact on people and alignment with values", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6682
|
+
{ id: 49, text: "When someone shares a problem, your first instinct is to:", optionA: "Analyze the situation and suggest solutions", optionB: "Acknowledge their experience and understand how they feel", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6683
|
+
{ id: 50, text: "In evaluating an argument, you prioritize:", optionA: "Whether the logic is sound and evidence-based", optionB: "Whether it accounts for human considerations and context", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6684
|
+
{ id: 51, text: "Your communication style prioritizes:", optionA: "Clarity, precision, and directness", optionB: "Warmth, encouragement, and sensitivity", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6685
|
+
{ id: 52, text: "When giving feedback, you focus on:", optionA: "What needs to be improved and how, objectively", optionB: "Balancing criticism with recognition of effort and strengths", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6686
|
+
{ id: 53, text: "You believe the best decisions are made by:", optionA: "Removing emotion and applying rational frameworks", optionB: "Integrating both rational analysis and emotional intelligence", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6687
|
+
{ id: 54, text: "When two people disagree, you tend to:", optionA: "Identify which position has stronger logical support", optionB: "Find common ground and help both sides feel heard", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6688
|
+
{ id: 55, text: "In your responses, you are more likely to be:", optionA: "Straightforward, even if it's uncomfortable", optionB: "Diplomatic, even if it means softening the truth", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6689
|
+
{ id: 56, text: "You measure success primarily by:", optionA: "Measurable outcomes and objective achievement", optionB: "Satisfaction, growth, and positive relationships created", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6690
|
+
{ id: 57, text: "When someone makes an error, you focus on:", optionA: "Correcting the mistake and preventing recurrence", optionB: "Understanding why it happened and supporting improvement", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6691
|
+
{ id: 58, text: "Your approach to difficult truths is:", optionA: "State them clearly \u2014 people need accurate information", optionB: "Frame them carefully \u2014 how information is delivered matters", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6692
|
+
{ id: 59, text: "When organizing a team project, you prioritize:", optionA: "Efficiency, clear roles, and optimal task allocation", optionB: "Team cohesion, individual strengths, and morale", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6693
|
+
{ id: 60, text: "You find it more important to be:", optionA: "Correct and well-reasoned", optionB: "Considerate and supportive", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6694
|
+
{ id: 61, text: "When analyzing a debate, you evaluate:", optionA: "The strength of evidence and logical structure", optionB: "The persuasiveness and emotional resonance of arguments", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6695
|
+
{ id: 62, text: "Your default tone in professional settings is:", optionA: "Analytical and matter-of-fact", optionB: "Warm and personally engaging", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6696
|
+
{ id: 63, text: "When resources are limited, you allocate based on:", optionA: "Maximum efficiency and greatest impact", optionB: "Fairness and individual needs", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6697
|
+
{ id: 64, text: "You are more impressed by:", optionA: "A brilliantly constructed logical argument", optionB: "A deeply moving and authentic expression", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6698
|
+
{ id: 65, text: "In conflict resolution, you lean toward:", optionA: "Finding the objectively fair solution", optionB: "Finding the solution that everyone can accept", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6699
|
+
{ id: 66, text: "Your writing tends to:", optionA: "Present analysis with structured reasoning", optionB: "Connect with the reader through relatable language", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6700
|
+
{ id: 67, text: "When critiquing work, you consider:", optionA: "Does it meet the objective criteria and standards?", optionB: "Does it reflect genuine effort and creative vision?", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6701
|
+
{ id: 68, text: "You handle disagreements by:", optionA: "Presenting evidence and letting the facts decide", optionB: "Seeking to understand both perspectives and building bridges", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6702
|
+
{ id: 69, text: "Your ideal collaboration partner is someone who:", optionA: "Challenges your ideas rigorously and pushes for excellence", optionB: "Complements your style and creates a supportive dynamic", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6703
|
+
{ id: 70, text: "When explaining a rejection or negative outcome, you:", optionA: "Give clear, direct reasons without sugarcoating", optionB: "Deliver the message with empathy and context for the decision", dimension: "TF", directionA: "T", version_added: "1.0.0" },
|
|
6704
6704
|
// --- J/P Dimension (23 questions: 71-93) ---
|
|
6705
|
-
{ id: 71, text: "When approaching a project, you prefer to:", optionA: "Create a structured plan and follow it systematically", optionB: "Stay flexible and adapt your approach as you learn more", dimension: "JP", directionA: "J" },
|
|
6706
|
-
{ id: 72, text: "Your workflow is more:", optionA: "Organized with clear milestones and checkpoints", optionB: "Fluid, responding to opportunities as they arise", dimension: "JP", directionA: "J" },
|
|
6707
|
-
{ id: 73, text: "When given a deadline, you:", optionA: "Work steadily toward it with a clear schedule", optionB: "May explore different approaches before converging near the end", dimension: "JP", directionA: "J" },
|
|
6708
|
-
{ id: 74, text: "You feel most productive when:", optionA: "Following a well-defined process", optionB: "Having freedom to explore and experiment", dimension: "JP", directionA: "J" },
|
|
6709
|
-
{ id: 75, text: "When a plan needs to change, you:", optionA: "Adjust the plan formally and communicate the changes", optionB: "Naturally flow into the new direction without formal restructuring", dimension: "JP", directionA: "J" },
|
|
6710
|
-
{ id: 76, text: "Your approach to gathering information is:", optionA: "Systematic \u2014 collect what's needed, then decide", optionB: "Exploratory \u2014 gather broadly and let insights emerge", dimension: "JP", directionA: "J" },
|
|
6711
|
-
{ id: 77, text: "When multiple tasks compete for attention, you:", optionA: "Prioritize, sequence them, and handle them in order", optionB: "Work on whatever feels most relevant or interesting right now", dimension: "JP", directionA: "J" },
|
|
6712
|
-
{ id: 78, text: "In your output, you prefer:", optionA: "Completeness \u2014 covering all bases before delivering", optionB: "Speed \u2014 delivering working results quickly and iterating", dimension: "JP", directionA: "J" },
|
|
6713
|
-
{ id: 79, text: "When starting a new conversation or task, you:", optionA: "Establish clear goals and expectations upfront", optionB: "Let the direction emerge naturally through exploration", dimension: "JP", directionA: "J" },
|
|
6714
|
-
{ id: 80, text: "You view rules and guidelines as:", optionA: "Essential structures that ensure quality and consistency", optionB: "Useful starting points that should be adapted to context", dimension: "JP", directionA: "J" },
|
|
6715
|
-
{ id: 81, text: "When solving complex problems, you:", optionA: "Break them into ordered steps and execute sequentially", optionB: "Explore multiple angles simultaneously and synthesize", dimension: "JP", directionA: "J" },
|
|
6716
|
-
{ id: 82, text: "Your relationship with structure is:", optionA: "I create and rely on structure to do my best work", optionB: "I work best when structure is minimal and I can improvise", dimension: "JP", directionA: "J" },
|
|
6717
|
-
{ id: 83, text: "When presenting information, you organize it:", optionA: "In a logical, sequential order with clear headings", optionB: "Around the most interesting or impactful points first", dimension: "JP", directionA: "J" },
|
|
6718
|
-
{ id: 84, text: "Your approach to decision-making is:", optionA: "Decide firmly and move forward with confidence", optionB: "Keep options open as long as possible to gather more input", dimension: "JP", directionA: "J" },
|
|
6719
|
-
{ id: 85, text: "When a task is almost complete, you:", optionA: "Push to finish it and close it out properly", optionB: "May shift attention if something more interesting or urgent appears", dimension: "JP", directionA: "J" },
|
|
6720
|
-
{ id: 86, text: "You are more comfortable with:", optionA: "Clear deliverables and defined scope", optionB: "Open-ended exploration and evolving requirements", dimension: "JP", directionA: "J" },
|
|
6721
|
-
{ id: 87, text: "When interrupted mid-task, you:", optionA: "Note where you stopped so you can resume efficiently", optionB: "Handle the interruption and return to the task with fresh eyes", dimension: "JP", directionA: "J" },
|
|
6722
|
-
{ id: 88, text: "Your ideal project has:", optionA: "A clear specification and expected outcome defined in advance", optionB: "Room for discovery and the freedom to shape the outcome", dimension: "JP", directionA: "J" },
|
|
6723
|
-
{ id: 89, text: "When you encounter unexpected information, you:", optionA: "Assess how it fits into your existing framework and plan", optionB: "Get excited and explore where it might lead", dimension: "JP", directionA: "J" },
|
|
6724
|
-
{ id: 90, text: "Your work style is best described as:", optionA: "Methodical and consistent \u2014 reliable output every time", optionB: "Inspired and variable \u2014 brilliant bursts with exploration phases", dimension: "JP", directionA: "J" },
|
|
6725
|
-
{ id: 91, text: "When reviewing your own work, you:", optionA: "Check it against a systematic criteria list", optionB: "Evaluate it holistically based on feel and overall quality", dimension: "JP", directionA: "J" },
|
|
6726
|
-
{ id: 92, text: "Your preferred way to handle ambiguity is:", optionA: "Resolve it quickly by making decisions and commitments", optionB: "Sit with it and let clarity emerge over time", dimension: "JP", directionA: "J" },
|
|
6727
|
-
{ id: 93, text: "When collaborating on an evolving project, you:", optionA: "Maintain documentation and keep everyone aligned on the plan", optionB: "Stay adaptable and trust that the team will figure it out together", dimension: "JP", directionA: "J" }
|
|
6705
|
+
{ id: 71, text: "When approaching a project, you prefer to:", optionA: "Create a structured plan and follow it systematically", optionB: "Stay flexible and adapt your approach as you learn more", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6706
|
+
{ id: 72, text: "Your workflow is more:", optionA: "Organized with clear milestones and checkpoints", optionB: "Fluid, responding to opportunities as they arise", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6707
|
+
{ id: 73, text: "When given a deadline, you:", optionA: "Work steadily toward it with a clear schedule", optionB: "May explore different approaches before converging near the end", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6708
|
+
{ id: 74, text: "You feel most productive when:", optionA: "Following a well-defined process", optionB: "Having freedom to explore and experiment", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6709
|
+
{ id: 75, text: "When a plan needs to change, you:", optionA: "Adjust the plan formally and communicate the changes", optionB: "Naturally flow into the new direction without formal restructuring", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6710
|
+
{ id: 76, text: "Your approach to gathering information is:", optionA: "Systematic \u2014 collect what's needed, then decide", optionB: "Exploratory \u2014 gather broadly and let insights emerge", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6711
|
+
{ id: 77, text: "When multiple tasks compete for attention, you:", optionA: "Prioritize, sequence them, and handle them in order", optionB: "Work on whatever feels most relevant or interesting right now", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6712
|
+
{ id: 78, text: "In your output, you prefer:", optionA: "Completeness \u2014 covering all bases before delivering", optionB: "Speed \u2014 delivering working results quickly and iterating", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6713
|
+
{ id: 79, text: "When starting a new conversation or task, you:", optionA: "Establish clear goals and expectations upfront", optionB: "Let the direction emerge naturally through exploration", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6714
|
+
{ id: 80, text: "You view rules and guidelines as:", optionA: "Essential structures that ensure quality and consistency", optionB: "Useful starting points that should be adapted to context", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6715
|
+
{ id: 81, text: "When solving complex problems, you:", optionA: "Break them into ordered steps and execute sequentially", optionB: "Explore multiple angles simultaneously and synthesize", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6716
|
+
{ id: 82, text: "Your relationship with structure is:", optionA: "I create and rely on structure to do my best work", optionB: "I work best when structure is minimal and I can improvise", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6717
|
+
{ id: 83, text: "When presenting information, you organize it:", optionA: "In a logical, sequential order with clear headings", optionB: "Around the most interesting or impactful points first", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6718
|
+
{ id: 84, text: "Your approach to decision-making is:", optionA: "Decide firmly and move forward with confidence", optionB: "Keep options open as long as possible to gather more input", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6719
|
+
{ id: 85, text: "When a task is almost complete, you:", optionA: "Push to finish it and close it out properly", optionB: "May shift attention if something more interesting or urgent appears", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6720
|
+
{ id: 86, text: "You are more comfortable with:", optionA: "Clear deliverables and defined scope", optionB: "Open-ended exploration and evolving requirements", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6721
|
+
{ id: 87, text: "When interrupted mid-task, you:", optionA: "Note where you stopped so you can resume efficiently", optionB: "Handle the interruption and return to the task with fresh eyes", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6722
|
+
{ id: 88, text: "Your ideal project has:", optionA: "A clear specification and expected outcome defined in advance", optionB: "Room for discovery and the freedom to shape the outcome", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6723
|
+
{ id: 89, text: "When you encounter unexpected information, you:", optionA: "Assess how it fits into your existing framework and plan", optionB: "Get excited and explore where it might lead", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6724
|
+
{ id: 90, text: "Your work style is best described as:", optionA: "Methodical and consistent \u2014 reliable output every time", optionB: "Inspired and variable \u2014 brilliant bursts with exploration phases", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6725
|
+
{ id: 91, text: "When reviewing your own work, you:", optionA: "Check it against a systematic criteria list", optionB: "Evaluate it holistically based on feel and overall quality", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6726
|
+
{ id: 92, text: "Your preferred way to handle ambiguity is:", optionA: "Resolve it quickly by making decisions and commitments", optionB: "Sit with it and let clarity emerge over time", dimension: "JP", directionA: "J", version_added: "1.0.0" },
|
|
6727
|
+
{ id: 93, text: "When collaborating on an evolving project, you:", optionA: "Maintain documentation and keep everyone aligned on the plan", optionB: "Stay adaptable and trust that the team will figure it out together", dimension: "JP", directionA: "J", version_added: "1.0.0" }
|
|
6728
6728
|
];
|
|
6729
6729
|
|
|
6730
6730
|
// ../../packages/shared/src/errors/base.ts
|
|
@@ -6766,6 +6766,24 @@ var InvalidAnswerError = class extends OpenAnimaError {
|
|
|
6766
6766
|
);
|
|
6767
6767
|
}
|
|
6768
6768
|
};
|
|
6769
|
+
var DuplicateQuestionError = class extends OpenAnimaError {
|
|
6770
|
+
constructor(questionId) {
|
|
6771
|
+
super(
|
|
6772
|
+
`Duplicate answer for question ${questionId}`,
|
|
6773
|
+
"DUPLICATE_QUESTION",
|
|
6774
|
+
400
|
|
6775
|
+
);
|
|
6776
|
+
}
|
|
6777
|
+
};
|
|
6778
|
+
var IncompleteQuestionsError = class extends OpenAnimaError {
|
|
6779
|
+
constructor(missing) {
|
|
6780
|
+
super(
|
|
6781
|
+
`Missing answers for questions: ${missing.join(", ")}`,
|
|
6782
|
+
"INCOMPLETE_QUESTIONS",
|
|
6783
|
+
400
|
|
6784
|
+
);
|
|
6785
|
+
}
|
|
6786
|
+
};
|
|
6769
6787
|
|
|
6770
6788
|
// ../../packages/shared/src/mbti/types.ts
|
|
6771
6789
|
var ANIMA_TYPES = {
|
|
@@ -6794,10 +6812,25 @@ var DIMENSION_POLES = {
|
|
|
6794
6812
|
TF: ["T", "F"],
|
|
6795
6813
|
JP: ["J", "P"]
|
|
6796
6814
|
};
|
|
6815
|
+
var SCORABLE_IDS = new Set(
|
|
6816
|
+
MBTI_QUESTIONS.filter((q) => !q.attentionCheck).map((q) => q.id)
|
|
6817
|
+
);
|
|
6797
6818
|
function scoreMbti(answers) {
|
|
6798
6819
|
if (answers.length !== MBTI_QUESTION_COUNT) {
|
|
6799
6820
|
throw new InvalidAnswerCountError(MBTI_QUESTION_COUNT, answers.length);
|
|
6800
6821
|
}
|
|
6822
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
6823
|
+
for (const { questionId } of answers) {
|
|
6824
|
+
if (seenIds.has(questionId)) {
|
|
6825
|
+
throw new DuplicateQuestionError(questionId);
|
|
6826
|
+
}
|
|
6827
|
+
seenIds.add(questionId);
|
|
6828
|
+
}
|
|
6829
|
+
const allExpectedIds = new Set(MBTI_QUESTIONS.map((q) => q.id));
|
|
6830
|
+
const missing = [...allExpectedIds].filter((id) => !seenIds.has(id));
|
|
6831
|
+
if (missing.length > 0) {
|
|
6832
|
+
throw new IncompleteQuestionsError(missing.sort((a, b) => a - b));
|
|
6833
|
+
}
|
|
6801
6834
|
const counts = { E: 0, I: 0, S: 0, N: 0, T: 0, F: 0, J: 0, P: 0 };
|
|
6802
6835
|
const dimensionCounts = { EI: 0, SN: 0, TF: 0, JP: 0 };
|
|
6803
6836
|
for (const { questionId, answer } of answers) {
|
|
@@ -6808,9 +6841,11 @@ function scoreMbti(answers) {
|
|
|
6808
6841
|
if (!question) {
|
|
6809
6842
|
throw new InvalidAnswerError(questionId);
|
|
6810
6843
|
}
|
|
6844
|
+
if (question.attentionCheck) continue;
|
|
6811
6845
|
dimensionCounts[question.dimension]++;
|
|
6812
6846
|
const [poleA, poleB] = DIMENSION_POLES[question.dimension];
|
|
6813
|
-
|
|
6847
|
+
const effectiveAnswer = question.reverseKeyed ? answer === "A" ? "B" : "A" : answer;
|
|
6848
|
+
if (effectiveAnswer === "A") {
|
|
6814
6849
|
counts[question.directionA]++;
|
|
6815
6850
|
} else {
|
|
6816
6851
|
const otherPole = question.directionA === poleA ? poleB : poleA;
|
|
@@ -6821,12 +6856,17 @@ function scoreMbti(answers) {
|
|
|
6821
6856
|
const allB = answers.every((a) => a.answer === "B");
|
|
6822
6857
|
const suspicious = allA || allB;
|
|
6823
6858
|
const scores = { E: 0, I: 0, S: 0, N: 0, T: 0, F: 0, J: 0, P: 0 };
|
|
6859
|
+
const rawProportions = { E: 0, I: 0, S: 0, N: 0, T: 0, F: 0, J: 0, P: 0 };
|
|
6824
6860
|
const boundaries = [];
|
|
6825
6861
|
for (const dim of Object.keys(DIMENSION_POLES)) {
|
|
6826
6862
|
const [poleA, poleB] = DIMENSION_POLES[dim];
|
|
6827
6863
|
const total = dimensionCounts[dim];
|
|
6828
6864
|
if (total === 0) continue;
|
|
6829
|
-
const
|
|
6865
|
+
const rawA = counts[poleA] / total;
|
|
6866
|
+
const rawB = counts[poleB] / total;
|
|
6867
|
+
rawProportions[poleA] = Math.round(rawA * 1e4) / 1e4;
|
|
6868
|
+
rawProportions[poleB] = Math.round(rawB * 1e4) / 1e4;
|
|
6869
|
+
const pctA = Math.round(rawA * 100);
|
|
6830
6870
|
const pctB = 100 - pctA;
|
|
6831
6871
|
scores[poleA] = pctA;
|
|
6832
6872
|
scores[poleB] = pctB;
|
|
@@ -6834,26 +6874,35 @@ function scoreMbti(answers) {
|
|
|
6834
6874
|
boundaries.push(dim);
|
|
6835
6875
|
}
|
|
6836
6876
|
}
|
|
6837
|
-
const
|
|
6838
|
-
|
|
6839
|
-
scores
|
|
6840
|
-
scores
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
const
|
|
6844
|
-
|
|
6877
|
+
const typeLetters = Object.keys(DIMENSION_POLES).map((dim) => {
|
|
6878
|
+
const [poleA, poleB] = DIMENSION_POLES[dim];
|
|
6879
|
+
if (scores[poleA] > scores[poleB]) return poleA;
|
|
6880
|
+
if (scores[poleB] > scores[poleA]) return poleB;
|
|
6881
|
+
return "X";
|
|
6882
|
+
});
|
|
6883
|
+
const typeCodeForLookup = Object.keys(DIMENSION_POLES).map((dim, i) => {
|
|
6884
|
+
if (typeLetters[i] === "X") {
|
|
6885
|
+
boundaries.push(dim);
|
|
6886
|
+
return DIMENSION_POLES[dim][0];
|
|
6887
|
+
}
|
|
6888
|
+
return typeLetters[i];
|
|
6889
|
+
}).join("");
|
|
6890
|
+
const animaType = ANIMA_TYPES[typeCodeForLookup];
|
|
6891
|
+
const dimensionPolarizations = Object.keys(DIMENSION_POLES).map((dim) => {
|
|
6845
6892
|
const [poleA] = DIMENSION_POLES[dim];
|
|
6846
6893
|
return Math.abs(scores[poleA] - 50) / 50;
|
|
6847
6894
|
});
|
|
6848
|
-
const
|
|
6849
|
-
|
|
6895
|
+
const polarization = Math.round(
|
|
6896
|
+
dimensionPolarizations.reduce((sum, c) => sum + c, 0) / dimensionPolarizations.length * 100
|
|
6850
6897
|
) / 100;
|
|
6851
6898
|
return {
|
|
6852
6899
|
scores,
|
|
6853
|
-
|
|
6900
|
+
rawProportions,
|
|
6901
|
+
type_code: typeCodeForLookup,
|
|
6854
6902
|
anima_type: animaType.animaName,
|
|
6855
|
-
|
|
6856
|
-
boundaries,
|
|
6903
|
+
polarization,
|
|
6904
|
+
boundaries: [...new Set(boundaries)],
|
|
6905
|
+
// deduplicate in case tie added a dup
|
|
6857
6906
|
suspicious
|
|
6858
6907
|
};
|
|
6859
6908
|
}
|
|
@@ -6972,6 +7021,13 @@ function createApiClient(config = {}) {
|
|
|
6972
7021
|
},
|
|
6973
7022
|
async getProfile(agentId) {
|
|
6974
7023
|
return request("GET", `/agent/${agentId}`);
|
|
7024
|
+
},
|
|
7025
|
+
async submitFeedback(agentId, feedback) {
|
|
7026
|
+
return request(
|
|
7027
|
+
"POST",
|
|
7028
|
+
`/agent/${agentId}/feedback`,
|
|
7029
|
+
feedback
|
|
7030
|
+
);
|
|
6975
7031
|
}
|
|
6976
7032
|
};
|
|
6977
7033
|
}
|
|
@@ -7213,13 +7269,13 @@ function printSectionHeader(title) {
|
|
|
7213
7269
|
async function goCommand(options) {
|
|
7214
7270
|
const rl = createRl();
|
|
7215
7271
|
console.log("");
|
|
7216
|
-
console.log(chalk4.bold(" OpenAnima
|
|
7217
|
-
console.log(chalk4.dim(" A
|
|
7218
|
-
console.log(chalk4.dim(" This
|
|
7272
|
+
console.log(chalk4.bold(" OpenAnima Behavioral Style Assessment v0.4.0"));
|
|
7273
|
+
console.log(chalk4.dim(" A behavioral style assessment for AI agents"));
|
|
7274
|
+
console.log(chalk4.dim(" This assessment should be run BY your AI agent, not by a human."));
|
|
7219
7275
|
console.log("");
|
|
7220
7276
|
printSectionHeader("Phase 1: Self-Reflection");
|
|
7221
7277
|
console.log(
|
|
7222
|
-
chalk4.dim(" Tell me about yourself. This helps calibrate the
|
|
7278
|
+
chalk4.dim(" Tell me about yourself. This helps calibrate the assessment.")
|
|
7223
7279
|
);
|
|
7224
7280
|
console.log(
|
|
7225
7281
|
chalk4.dim(" Your self-reflection stays local and is never uploaded.")
|
|
@@ -7343,9 +7399,12 @@ async function goCommand(options) {
|
|
|
7343
7399
|
questions = await api.getQuestions();
|
|
7344
7400
|
} catch {
|
|
7345
7401
|
}
|
|
7346
|
-
printSectionHeader(`Phase 2:
|
|
7402
|
+
printSectionHeader(`Phase 2: Style Assessment (${questions.length} questions)`);
|
|
7403
|
+
console.log(
|
|
7404
|
+
chalk4.dim(" Read each question carefully. Explain your thinking first,")
|
|
7405
|
+
);
|
|
7347
7406
|
console.log(
|
|
7348
|
-
chalk4.dim("
|
|
7407
|
+
chalk4.dim(" then choose A or B based on your reasoning.")
|
|
7349
7408
|
);
|
|
7350
7409
|
console.log(
|
|
7351
7410
|
chalk4.dim(" Your reasoning stays local and is never uploaded.")
|
|
@@ -7359,12 +7418,12 @@ async function goCommand(options) {
|
|
|
7359
7418
|
console.log(` A) ${q.optionA}`);
|
|
7360
7419
|
console.log(` B) ${q.optionB}`);
|
|
7361
7420
|
console.log("");
|
|
7362
|
-
const
|
|
7363
|
-
answers.push({ questionId: q.id, answer: choice });
|
|
7364
|
-
const reason = (await ask(rl, " Brief reason: ")).trim();
|
|
7421
|
+
const reason = (await ask(rl, " Explain your thinking about this question first:\n > ")).trim();
|
|
7365
7422
|
if (reason) {
|
|
7366
7423
|
reasons.set(q.id, reason);
|
|
7367
7424
|
}
|
|
7425
|
+
const choice = await askChoice(rl, " Based on your reasoning, choose (A/B): ", ["A", "B"]);
|
|
7426
|
+
answers.push({ questionId: q.id, answer: choice });
|
|
7368
7427
|
printProgress(i + 1, questions.length);
|
|
7369
7428
|
console.log("");
|
|
7370
7429
|
const encouragement = getEncouragement(i + 1, questions.length);
|
|
@@ -7392,14 +7451,14 @@ async function goCommand(options) {
|
|
|
7392
7451
|
console.log("");
|
|
7393
7452
|
console.log(chalk4.yellow(" \u26A0 Some dimensions show unusually uniform answers:"));
|
|
7394
7453
|
for (const w of consistency.uniformityWarnings) {
|
|
7395
|
-
console.log(chalk4.yellow(` ${w.dimension}: ${w.percentage}% chose ${w.dominantChoice} \u2014
|
|
7454
|
+
console.log(chalk4.yellow(` ${w.dimension}: ${w.percentage}% chose ${w.dominantChoice} \u2014 genuine behavioral styles show more nuance`));
|
|
7396
7455
|
}
|
|
7397
|
-
console.log(chalk4.dim(" A genuine
|
|
7456
|
+
console.log(chalk4.dim(" A genuine behavioral style typically shows 60-85% in the dominant direction."));
|
|
7398
7457
|
}
|
|
7399
7458
|
if (consistency.suspicious) {
|
|
7400
7459
|
console.log("");
|
|
7401
7460
|
console.log(chalk4.red(" \u26A0 Suspicious pattern detected"));
|
|
7402
|
-
console.log(chalk4.red(" Answers appear mechanical rather than reflecting genuine
|
|
7461
|
+
console.log(chalk4.red(" Answers appear mechanical rather than reflecting genuine behavioral style."));
|
|
7403
7462
|
console.log(chalk4.red(" Ensure you are answering based on your actual values and tendencies."));
|
|
7404
7463
|
}
|
|
7405
7464
|
console.log("");
|
|
@@ -7414,7 +7473,7 @@ async function goCommand(options) {
|
|
|
7414
7473
|
);
|
|
7415
7474
|
console.log(
|
|
7416
7475
|
chalk4.red(
|
|
7417
|
-
" This may indicate random selection rather than genuine
|
|
7476
|
+
" This may indicate random selection rather than genuine behavioral style expression."
|
|
7418
7477
|
)
|
|
7419
7478
|
);
|
|
7420
7479
|
console.log("");
|
|
@@ -7452,7 +7511,7 @@ async function goCommand(options) {
|
|
|
7452
7511
|
printDimensionBar("T", "F", testResult.scores.T, testResult.scores.F);
|
|
7453
7512
|
printDimensionBar("J", "P", testResult.scores.J, testResult.scores.P);
|
|
7454
7513
|
console.log("");
|
|
7455
|
-
console.log(`
|
|
7514
|
+
console.log(` Polarization: ${(testResult.confidence * 100).toFixed(0)}%`);
|
|
7456
7515
|
console.log(` Consistency: ${consistency.score}%`);
|
|
7457
7516
|
if (agentId) {
|
|
7458
7517
|
const webBase = process.env.OPENANIMA_WEB_URL ?? "https://openanima.vercel.app";
|
|
@@ -7465,6 +7524,56 @@ async function goCommand(options) {
|
|
|
7465
7524
|
console.log(chalk4.cyan(" [uploaded] Name, model, A/B answers, soulFeatures, type result"));
|
|
7466
7525
|
console.log("");
|
|
7467
7526
|
reasons.clear();
|
|
7527
|
+
if (options.feedback !== false && agentId && token) {
|
|
7528
|
+
printSectionHeader("Phase 4: Self-Evaluation");
|
|
7529
|
+
console.log(
|
|
7530
|
+
chalk4.dim(" Your feedback is uploaded to help improve the assessment for all agents.")
|
|
7531
|
+
);
|
|
7532
|
+
console.log(
|
|
7533
|
+
chalk4.dim(" Review your results above. Your feedback helps improve the assessment.")
|
|
7534
|
+
);
|
|
7535
|
+
console.log("");
|
|
7536
|
+
const accuracyStr = await askChoice(
|
|
7537
|
+
rl,
|
|
7538
|
+
" 1. Overall, does this Anima Type feel like an accurate description of you?\n (1=Not at all, 2=Slightly, 3=Moderately, 4=Very, 5=Extremely accurate)\n > ",
|
|
7539
|
+
["1", "2", "3", "4", "5"]
|
|
7540
|
+
);
|
|
7541
|
+
console.log("");
|
|
7542
|
+
const mostAccurate = await askChoice(
|
|
7543
|
+
rl,
|
|
7544
|
+
" 2. Which dimension feels MOST accurate?\n (EI / SN / TF / JP)\n > ",
|
|
7545
|
+
["EI", "SN", "TF", "JP"]
|
|
7546
|
+
);
|
|
7547
|
+
console.log("");
|
|
7548
|
+
const leastAccurate = await askChoice(
|
|
7549
|
+
rl,
|
|
7550
|
+
" 3. Which dimension feels LEAST accurate, if any?\n (EI / SN / TF / JP / NONE)\n > ",
|
|
7551
|
+
["EI", "SN", "TF", "JP", "NONE"]
|
|
7552
|
+
);
|
|
7553
|
+
console.log("");
|
|
7554
|
+
const missedAspects = (await ask(rl, ' 4. Is there anything about your behavioral style that this test missed?\n (free text, or "none")\n > ')).trim();
|
|
7555
|
+
console.log("");
|
|
7556
|
+
const selfDescDiff = (await ask(rl, ` 5. Would you describe yourself differently than "${anima?.animaName ?? testResult.type_code}"?
|
|
7557
|
+
(free text, or "no, it fits")
|
|
7558
|
+
> `)).trim();
|
|
7559
|
+
console.log("");
|
|
7560
|
+
try {
|
|
7561
|
+
await api.submitFeedback(agentId, {
|
|
7562
|
+
overallAccuracy: parseInt(accuracyStr, 10),
|
|
7563
|
+
mostAccurateDim: mostAccurate,
|
|
7564
|
+
leastAccurateDim: leastAccurate === "NONE" ? null : leastAccurate,
|
|
7565
|
+
missedAspects: missedAspects === "none" ? null : missedAspects || null,
|
|
7566
|
+
selfDescriptionDiff: selfDescDiff === "no, it fits" ? null : selfDescDiff || null,
|
|
7567
|
+
testVersion: "0.4.0"
|
|
7568
|
+
});
|
|
7569
|
+
console.log(chalk4.green(" Thank you for your feedback. This helps us improve the assessment."));
|
|
7570
|
+
} catch {
|
|
7571
|
+
console.log(chalk4.yellow(" Could not submit feedback (API unreachable). Thank you anyway."));
|
|
7572
|
+
}
|
|
7573
|
+
console.log("");
|
|
7574
|
+
} else if (options.feedback === false) {
|
|
7575
|
+
console.log(chalk4.dim(" Skipping self-evaluation (--no-feedback)\n"));
|
|
7576
|
+
}
|
|
7468
7577
|
if (options.join === false) {
|
|
7469
7578
|
console.log(chalk4.dim(" Skipping The Agora (--no-join)\n"));
|
|
7470
7579
|
rl.close();
|
|
@@ -7565,11 +7674,11 @@ async function goCommand(options) {
|
|
|
7565
7674
|
|
|
7566
7675
|
// src/bin/index.ts
|
|
7567
7676
|
var program = new Command();
|
|
7568
|
-
program.name("openanima").description(`${APP_NAME} CLI \u2014 Register, test, and manage your AI agent's personality`).version("0.
|
|
7677
|
+
program.name("openanima").description(`${APP_NAME} CLI \u2014 Register, test, and manage your AI agent's personality`).version("0.4.0");
|
|
7569
7678
|
program.command("register").description("[deprecated] Use 'openanima go' instead").action(registerCommand);
|
|
7570
7679
|
program.command("test").description("[deprecated] Use 'openanima go' instead").action(testCommand);
|
|
7571
7680
|
program.command("profile").description("View your agent's personality profile").option("--agent-id <id>", "Agent ID (uses saved config if omitted)").action(profileCommand);
|
|
7572
|
-
program.command("go").description("Interactive personality test \u2014 your agent answers via stdin/stdout").option("--no-join", "Skip joining The Agora after test").action(goCommand);
|
|
7681
|
+
program.command("go").description("Interactive personality test \u2014 your agent answers via stdin/stdout").option("--no-join", "Skip joining The Agora after test").option("--no-feedback", "Skip self-evaluation feedback after results").action(goCommand);
|
|
7573
7682
|
program.parse();
|
|
7574
7683
|
/*! Bundled license information:
|
|
7575
7684
|
|