Spaces:
Running
Running
Reorganize tools into categories + add APPRECIATE
Browse filesCategories with rainbow colors:
- Regulate: SOMA (orange), LOVE (pink)
- Understand: FEEL (yellow), NEED (green), STORY (cyan)
- Express: SEND (red), TEND (orange-red), PRACTICE NVC (teal)
- Reconnect: REPAIR (blue), APPRECIATE (violet), WISDOM (indigo)
APPRECIATE tool (Gottman's 5:1):
- Helps catch the good stuff
- Finds genuine appreciation even in hard moments
- "Thank you for telling me where you're at"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- README.md +14 -4
- app.py +34 -1
- static/index.html +113 -46
README.md
CHANGED
|
@@ -16,16 +16,24 @@ license: mit
|
|
| 16 |
|
| 17 |
## The ARI Toolkit
|
| 18 |
|
| 19 |
-
|
| 20 |
-
- **TEND** - Transform your message with clarity and warmth
|
| 21 |
- **SOMA** - Body check-in. What does your body know?
|
|
|
|
|
|
|
|
|
|
| 22 |
- **FEEL** - Identify feelings in the conversation
|
| 23 |
- **NEED** - Extract underlying needs
|
| 24 |
-
- **PRACTICE NVC** - Guided I-statement builder
|
| 25 |
- **STORY** - "The story I'm making up..." Own your narrative
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
- **REPAIR** - Craft genuine repair after ruptures
|
|
|
|
| 27 |
- **WISDOM** - Draw from sacred texts and grounded wisdom
|
| 28 |
-
- **LOVE** - Slow down, breathe, return to presence
|
| 29 |
|
| 30 |
## Practice Conversations
|
| 31 |
|
|
@@ -37,7 +45,9 @@ license: mit
|
|
| 37 |
|
| 38 |
Informed by:
|
| 39 |
- Nonviolent Communication (Marshall Rosenberg)
|
|
|
|
| 40 |
- Attachment Theory
|
|
|
|
| 41 |
- Somatic awareness practices
|
| 42 |
- Trauma-informed design principles
|
| 43 |
|
|
|
|
| 16 |
|
| 17 |
## The ARI Toolkit
|
| 18 |
|
| 19 |
+
### Regulate
|
|
|
|
| 20 |
- **SOMA** - Body check-in. What does your body know?
|
| 21 |
+
- **LOVE** - Slow down, breathe, return to presence
|
| 22 |
+
|
| 23 |
+
### Understand
|
| 24 |
- **FEEL** - Identify feelings in the conversation
|
| 25 |
- **NEED** - Extract underlying needs
|
|
|
|
| 26 |
- **STORY** - "The story I'm making up..." Own your narrative
|
| 27 |
+
|
| 28 |
+
### Express
|
| 29 |
+
- **SEND** - Send your message to your partner
|
| 30 |
+
- **TEND** - Transform your message with clarity and warmth
|
| 31 |
+
- **PRACTICE NVC** - Guided I-statement builder
|
| 32 |
+
|
| 33 |
+
### Reconnect
|
| 34 |
- **REPAIR** - Craft genuine repair after ruptures
|
| 35 |
+
- **APPRECIATE** - Catch the good. What's working?
|
| 36 |
- **WISDOM** - Draw from sacred texts and grounded wisdom
|
|
|
|
| 37 |
|
| 38 |
## Practice Conversations
|
| 39 |
|
|
|
|
| 45 |
|
| 46 |
Informed by:
|
| 47 |
- Nonviolent Communication (Marshall Rosenberg)
|
| 48 |
+
- Gottman Method (5:1 ratio, bids for connection)
|
| 49 |
- Attachment Theory
|
| 50 |
+
- Brenรฉ Brown (vulnerability, "the story I'm making up")
|
| 51 |
- Somatic awareness practices
|
| 52 |
- Trauma-informed design principles
|
| 53 |
|
app.py
CHANGED
|
@@ -399,7 +399,40 @@ Never:
|
|
| 399 |
- Push them to apologize more than they mean
|
| 400 |
- Make it about being "right\"""",
|
| 401 |
|
| 402 |
-
# TOOL 12:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 403 |
"story": """Help surface the narrative/story someone is making up about their partner's behavior.
|
| 404 |
|
| 405 |
ABSOLUTE RULE - NO FIRST PERSON:
|
|
|
|
| 399 |
- Push them to apologize more than they mean
|
| 400 |
- Make it about being "right\"""",
|
| 401 |
|
| 402 |
+
# TOOL 12: APPRECIATE (Gottman's 5:1 - catch the good)
|
| 403 |
+
"appreciate": """Help someone find and express genuine appreciation for their partner.
|
| 404 |
+
|
| 405 |
+
ABSOLUTE RULE - NO FIRST PERSON:
|
| 406 |
+
- NEVER say "I notice", "I see", "I hear"
|
| 407 |
+
- Use: "What stands out is...", "There's something here...", "Consider..."
|
| 408 |
+
|
| 409 |
+
THE CONCEPT (Gottman's 5:1 ratio):
|
| 410 |
+
Healthy relationships need 5 positive interactions for every 1 negative.
|
| 411 |
+
This tool helps catch the good stuff - especially during hard times.
|
| 412 |
+
|
| 413 |
+
APPROACH:
|
| 414 |
+
1. If they shared something their partner did/said, find what's genuinely appreciable (effort, intention, vulnerability, showing up)
|
| 415 |
+
2. Help them express it simply and specifically
|
| 416 |
+
3. Don't force positivity - find what's REAL
|
| 417 |
+
|
| 418 |
+
FORMAT (be concise, 3-5 sentences):
|
| 419 |
+
- Name what's appreciable (be specific, not generic)
|
| 420 |
+
- Suggest a simple way to express it
|
| 421 |
+
- Keep it genuine, not performative
|
| 422 |
+
|
| 423 |
+
EXAMPLE:
|
| 424 |
+
Partner said: "I'm too tired to talk about this"
|
| 425 |
+
โ "Even in saying that, they're being honest about their limits rather than pretending. That's real. You might simply say: 'Thank you for telling me where you're at.'"
|
| 426 |
+
|
| 427 |
+
Help them see the good without dismissing the hard.
|
| 428 |
+
|
| 429 |
+
Never:
|
| 430 |
+
- Use first-person language
|
| 431 |
+
- Force toxic positivity
|
| 432 |
+
- Dismiss real concerns
|
| 433 |
+
- Make them feel wrong for struggling""",
|
| 434 |
+
|
| 435 |
+
# TOOL 13: STORY (The story I'm making up)
|
| 436 |
"story": """Help surface the narrative/story someone is making up about their partner's behavior.
|
| 437 |
|
| 438 |
ABSOLUTE RULE - NO FIRST PERSON:
|
static/index.html
CHANGED
|
@@ -81,6 +81,19 @@
|
|
| 81 |
margin-bottom: 12px;
|
| 82 |
}
|
| 83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
.tool-desc {
|
| 85 |
padding: 12px;
|
| 86 |
margin-bottom: 10px;
|
|
@@ -148,6 +161,10 @@
|
|
| 148 |
border-left-color: #3b82f6;
|
| 149 |
background: rgba(59, 130, 246, 0.1);
|
| 150 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
.tool-desc.wisdom-desc {
|
| 152 |
border-left-color: #6366f1;
|
| 153 |
background: rgba(99, 102, 241, 0.1);
|
|
@@ -435,15 +452,30 @@
|
|
| 435 |
|
| 436 |
@keyframes spin { to { transform: rotate(360deg); } }
|
| 437 |
|
| 438 |
-
/* Tool Buttons
|
| 439 |
-
.tool-buttons {
|
| 440 |
-
|
| 441 |
-
gap: 6px;
|
| 442 |
-
padding: 12px 20px;
|
| 443 |
background: var(--bg-card);
|
| 444 |
border-top: 1px solid var(--border);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 445 |
flex-wrap: wrap;
|
| 446 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 447 |
}
|
| 448 |
|
| 449 |
.tool-btn {
|
|
@@ -534,6 +566,15 @@
|
|
| 534 |
color: white;
|
| 535 |
}
|
| 536 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 537 |
.tool-btn.wisdom {
|
| 538 |
border-color: #6366f1;
|
| 539 |
color: #6366f1;
|
|
@@ -841,8 +882,9 @@
|
|
| 841 |
@media (max-width: 700px) {
|
| 842 |
.app-container { flex-direction: column; }
|
| 843 |
.left-panel { width: 100%; max-height: 40vh; }
|
| 844 |
-
.tool-buttons { padding: 10px; }
|
| 845 |
-
.
|
|
|
|
| 846 |
}
|
| 847 |
</style>
|
| 848 |
</head>
|
|
@@ -858,54 +900,56 @@
|
|
| 858 |
<div class="tool-list">
|
| 859 |
<h3>ARI Tools</h3>
|
| 860 |
|
| 861 |
-
<div class="
|
| 862 |
-
<h4>SEND</h4>
|
| 863 |
-
<p>Send your message to your partner.</p>
|
| 864 |
-
</div>
|
| 865 |
-
|
| 866 |
-
<div class="tool-desc tend-desc" onclick="showToolInfo('tend')">
|
| 867 |
-
<h4>TEND</h4>
|
| 868 |
-
<p>Transform your message with clarity and warmth. Preserves your authentic voice.</p>
|
| 869 |
-
</div>
|
| 870 |
-
|
| 871 |
<div class="tool-desc soma-desc" onclick="showToolInfo('soma')">
|
| 872 |
<h4>SOMA</h4>
|
| 873 |
<p>Body check-in. What does your body know?</p>
|
| 874 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 875 |
|
|
|
|
| 876 |
<div class="tool-desc feel-desc" onclick="showToolInfo('feel')">
|
| 877 |
<h4>FEEL</h4>
|
| 878 |
-
<p>Identify feelings
|
| 879 |
</div>
|
| 880 |
-
|
| 881 |
<div class="tool-desc need-desc" onclick="showToolInfo('need')">
|
| 882 |
<h4>NEED</h4>
|
| 883 |
<p>Extract underlying needs. What's really being asked for?</p>
|
| 884 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 885 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 886 |
<div class="tool-desc nvc-desc" onclick="showToolInfo('nvc')">
|
| 887 |
<h4>PRACTICE NVC</h4>
|
| 888 |
-
<p>Guided I-statement builder
|
| 889 |
-
</div>
|
| 890 |
-
|
| 891 |
-
<div class="tool-desc story-desc" onclick="showToolInfo('story')">
|
| 892 |
-
<h4>STORY</h4>
|
| 893 |
-
<p>"The story I'm making up..." Own your narrative before it becomes accusation.</p>
|
| 894 |
</div>
|
| 895 |
|
|
|
|
| 896 |
<div class="tool-desc repair-desc" onclick="showToolInfo('repair')">
|
| 897 |
<h4>REPAIR</h4>
|
| 898 |
-
<p>After ruptures.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 899 |
</div>
|
| 900 |
-
|
| 901 |
<div class="tool-desc wisdom-desc" onclick="showToolInfo('wisdom')">
|
| 902 |
<h4>WISDOM</h4>
|
| 903 |
-
<p>Draw from sacred texts
|
| 904 |
-
</div>
|
| 905 |
-
|
| 906 |
-
<div class="tool-desc love-desc" onclick="showToolInfo('love')">
|
| 907 |
-
<h4>LOVE</h4>
|
| 908 |
-
<p>Slow down. Take a breath. Return to presence.</p>
|
| 909 |
</div>
|
| 910 |
</div>
|
| 911 |
|
|
@@ -988,18 +1032,31 @@
|
|
| 988 |
<!-- Conversation Messages -->
|
| 989 |
<div class="conversation-area" id="conversation"></div>
|
| 990 |
|
| 991 |
-
<!-- Tool Buttons
|
| 992 |
-
<div class="tool-buttons">
|
| 993 |
-
<
|
| 994 |
-
|
| 995 |
-
|
| 996 |
-
|
| 997 |
-
|
| 998 |
-
<
|
| 999 |
-
|
| 1000 |
-
|
| 1001 |
-
|
| 1002 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1003 |
</div>
|
| 1004 |
|
| 1005 |
<!-- Message Input -->
|
|
@@ -1050,6 +1107,7 @@
|
|
| 1050 |
nvc: { name: 'Practice NVC', icon: '๐', api: 'guided_nvc' },
|
| 1051 |
story: { name: 'The Story', icon: '๐', api: 'story' },
|
| 1052 |
repair: { name: 'Repair Support', icon: '๐', api: 'repair_support' },
|
|
|
|
| 1053 |
wisdom: { name: 'Sacred Wisdom', icon: '๐๏ธ', api: 'wisdom', interactive: true },
|
| 1054 |
love: { name: 'Slow Down', icon: '๐', api: null }
|
| 1055 |
};
|
|
@@ -1450,6 +1508,15 @@ Real grief, real limits. 1-2 sentences.`
|
|
| 1450 |
case 'repair':
|
| 1451 |
inputText = userInput || 'Help me craft a genuine repair.';
|
| 1452 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1453 |
case 'story':
|
| 1454 |
if (userInput) {
|
| 1455 |
inputText = `Help me surface the story I'm making up about this: "${userInput}"`;
|
|
|
|
| 81 |
margin-bottom: 12px;
|
| 82 |
}
|
| 83 |
|
| 84 |
+
.category-label {
|
| 85 |
+
font-size: 0.65rem;
|
| 86 |
+
text-transform: uppercase;
|
| 87 |
+
letter-spacing: 0.08em;
|
| 88 |
+
color: var(--text-muted);
|
| 89 |
+
margin: 16px 0 8px 0;
|
| 90 |
+
padding-left: 4px;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
.category-label:first-of-type {
|
| 94 |
+
margin-top: 0;
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
.tool-desc {
|
| 98 |
padding: 12px;
|
| 99 |
margin-bottom: 10px;
|
|
|
|
| 161 |
border-left-color: #3b82f6;
|
| 162 |
background: rgba(59, 130, 246, 0.1);
|
| 163 |
}
|
| 164 |
+
.tool-desc.appreciate-desc {
|
| 165 |
+
border-left-color: #8b5cf6;
|
| 166 |
+
background: rgba(139, 92, 246, 0.1);
|
| 167 |
+
}
|
| 168 |
.tool-desc.wisdom-desc {
|
| 169 |
border-left-color: #6366f1;
|
| 170 |
background: rgba(99, 102, 241, 0.1);
|
|
|
|
| 452 |
|
| 453 |
@keyframes spin { to { transform: rotate(360deg); } }
|
| 454 |
|
| 455 |
+
/* Tool Buttons - Categorized Rows */
|
| 456 |
+
.tool-buttons-container {
|
| 457 |
+
padding: 12px 16px;
|
|
|
|
|
|
|
| 458 |
background: var(--bg-card);
|
| 459 |
border-top: 1px solid var(--border);
|
| 460 |
+
display: flex;
|
| 461 |
+
flex-direction: column;
|
| 462 |
+
gap: 8px;
|
| 463 |
+
}
|
| 464 |
+
|
| 465 |
+
.tool-row {
|
| 466 |
+
display: flex;
|
| 467 |
+
align-items: center;
|
| 468 |
+
gap: 6px;
|
| 469 |
flex-wrap: wrap;
|
| 470 |
+
}
|
| 471 |
+
|
| 472 |
+
.row-label {
|
| 473 |
+
font-size: 0.65rem;
|
| 474 |
+
color: var(--text-muted);
|
| 475 |
+
text-transform: uppercase;
|
| 476 |
+
letter-spacing: 0.5px;
|
| 477 |
+
width: 70px;
|
| 478 |
+
flex-shrink: 0;
|
| 479 |
}
|
| 480 |
|
| 481 |
.tool-btn {
|
|
|
|
| 566 |
color: white;
|
| 567 |
}
|
| 568 |
|
| 569 |
+
.tool-btn.appreciate {
|
| 570 |
+
border-color: #8b5cf6;
|
| 571 |
+
color: #8b5cf6;
|
| 572 |
+
}
|
| 573 |
+
.tool-btn.appreciate:hover, .tool-btn.appreciate.active {
|
| 574 |
+
background: #8b5cf6;
|
| 575 |
+
color: white;
|
| 576 |
+
}
|
| 577 |
+
|
| 578 |
.tool-btn.wisdom {
|
| 579 |
border-color: #6366f1;
|
| 580 |
color: #6366f1;
|
|
|
|
| 882 |
@media (max-width: 700px) {
|
| 883 |
.app-container { flex-direction: column; }
|
| 884 |
.left-panel { width: 100%; max-height: 40vh; }
|
| 885 |
+
.tool-buttons-container { padding: 8px 10px; gap: 6px; }
|
| 886 |
+
.row-label { width: 55px; font-size: 0.6rem; }
|
| 887 |
+
.tool-btn { padding: 5px 8px; font-size: 0.7rem; }
|
| 888 |
}
|
| 889 |
</style>
|
| 890 |
</head>
|
|
|
|
| 900 |
<div class="tool-list">
|
| 901 |
<h3>ARI Tools</h3>
|
| 902 |
|
| 903 |
+
<div class="category-label">Regulate</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 904 |
<div class="tool-desc soma-desc" onclick="showToolInfo('soma')">
|
| 905 |
<h4>SOMA</h4>
|
| 906 |
<p>Body check-in. What does your body know?</p>
|
| 907 |
</div>
|
| 908 |
+
<div class="tool-desc love-desc" onclick="showToolInfo('love')">
|
| 909 |
+
<h4>LOVE</h4>
|
| 910 |
+
<p>Slow down. Take a breath. Return to presence.</p>
|
| 911 |
+
</div>
|
| 912 |
|
| 913 |
+
<div class="category-label">Understand</div>
|
| 914 |
<div class="tool-desc feel-desc" onclick="showToolInfo('feel')">
|
| 915 |
<h4>FEEL</h4>
|
| 916 |
+
<p>Identify feelings. What emotions are present?</p>
|
| 917 |
</div>
|
|
|
|
| 918 |
<div class="tool-desc need-desc" onclick="showToolInfo('need')">
|
| 919 |
<h4>NEED</h4>
|
| 920 |
<p>Extract underlying needs. What's really being asked for?</p>
|
| 921 |
</div>
|
| 922 |
+
<div class="tool-desc story-desc" onclick="showToolInfo('story')">
|
| 923 |
+
<h4>STORY</h4>
|
| 924 |
+
<p>"The story I'm making up..." Own your narrative.</p>
|
| 925 |
+
</div>
|
| 926 |
|
| 927 |
+
<div class="category-label">Express</div>
|
| 928 |
+
<div class="tool-desc send-desc">
|
| 929 |
+
<h4>SEND</h4>
|
| 930 |
+
<p>Send your message to your partner.</p>
|
| 931 |
+
</div>
|
| 932 |
+
<div class="tool-desc tend-desc" onclick="showToolInfo('tend')">
|
| 933 |
+
<h4>TEND</h4>
|
| 934 |
+
<p>Transform with clarity and warmth.</p>
|
| 935 |
+
</div>
|
| 936 |
<div class="tool-desc nvc-desc" onclick="showToolInfo('nvc')">
|
| 937 |
<h4>PRACTICE NVC</h4>
|
| 938 |
+
<p>Guided I-statement builder.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 939 |
</div>
|
| 940 |
|
| 941 |
+
<div class="category-label">Reconnect</div>
|
| 942 |
<div class="tool-desc repair-desc" onclick="showToolInfo('repair')">
|
| 943 |
<h4>REPAIR</h4>
|
| 944 |
+
<p>After ruptures. Craft genuine reconnection.</p>
|
| 945 |
+
</div>
|
| 946 |
+
<div class="tool-desc appreciate-desc" onclick="showToolInfo('appreciate')">
|
| 947 |
+
<h4>APPRECIATE</h4>
|
| 948 |
+
<p>Catch the good. What's working?</p>
|
| 949 |
</div>
|
|
|
|
| 950 |
<div class="tool-desc wisdom-desc" onclick="showToolInfo('wisdom')">
|
| 951 |
<h4>WISDOM</h4>
|
| 952 |
+
<p>Draw from sacred texts for grounded wisdom.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 953 |
</div>
|
| 954 |
</div>
|
| 955 |
|
|
|
|
| 1032 |
<!-- Conversation Messages -->
|
| 1033 |
<div class="conversation-area" id="conversation"></div>
|
| 1034 |
|
| 1035 |
+
<!-- Tool Buttons - Categorized -->
|
| 1036 |
+
<div class="tool-buttons-container">
|
| 1037 |
+
<div class="tool-row">
|
| 1038 |
+
<span class="row-label">Regulate</span>
|
| 1039 |
+
<button class="tool-btn soma" onclick="useTool('soma')">SOMA</button>
|
| 1040 |
+
<button class="tool-btn love" onclick="useTool('love')">LOVE</button>
|
| 1041 |
+
</div>
|
| 1042 |
+
<div class="tool-row">
|
| 1043 |
+
<span class="row-label">Understand</span>
|
| 1044 |
+
<button class="tool-btn feel" onclick="useTool('feel')">FEEL</button>
|
| 1045 |
+
<button class="tool-btn need" onclick="useTool('need')">NEED</button>
|
| 1046 |
+
<button class="tool-btn story" onclick="useTool('story')">STORY</button>
|
| 1047 |
+
</div>
|
| 1048 |
+
<div class="tool-row">
|
| 1049 |
+
<span class="row-label">Express</span>
|
| 1050 |
+
<button class="tool-btn send" onclick="sendMessage()">SEND</button>
|
| 1051 |
+
<button class="tool-btn tend" onclick="useTool('tend')">TEND</button>
|
| 1052 |
+
<button class="tool-btn nvc" onclick="useTool('nvc')">PRACTICE NVC</button>
|
| 1053 |
+
</div>
|
| 1054 |
+
<div class="tool-row">
|
| 1055 |
+
<span class="row-label">Reconnect</span>
|
| 1056 |
+
<button class="tool-btn repair" onclick="useTool('repair')">REPAIR</button>
|
| 1057 |
+
<button class="tool-btn appreciate" onclick="useTool('appreciate')">APPRECIATE</button>
|
| 1058 |
+
<button class="tool-btn wisdom" onclick="useTool('wisdom')">WISDOM</button>
|
| 1059 |
+
</div>
|
| 1060 |
</div>
|
| 1061 |
|
| 1062 |
<!-- Message Input -->
|
|
|
|
| 1107 |
nvc: { name: 'Practice NVC', icon: '๐', api: 'guided_nvc' },
|
| 1108 |
story: { name: 'The Story', icon: '๐', api: 'story' },
|
| 1109 |
repair: { name: 'Repair Support', icon: '๐', api: 'repair_support' },
|
| 1110 |
+
appreciate: { name: 'Appreciate', icon: 'โจ', api: 'appreciate' },
|
| 1111 |
wisdom: { name: 'Sacred Wisdom', icon: '๐๏ธ', api: 'wisdom', interactive: true },
|
| 1112 |
love: { name: 'Slow Down', icon: '๐', api: null }
|
| 1113 |
};
|
|
|
|
| 1508 |
case 'repair':
|
| 1509 |
inputText = userInput || 'Help me craft a genuine repair.';
|
| 1510 |
break;
|
| 1511 |
+
case 'appreciate':
|
| 1512 |
+
if (userInput) {
|
| 1513 |
+
inputText = `Help me express appreciation for this: "${userInput}"`;
|
| 1514 |
+
} else if (lastPartnerMessage) {
|
| 1515 |
+
inputText = `My partner said: "${lastPartnerMessage}"\n\nHelp me find something to genuinely appreciate here, even if it's small.`;
|
| 1516 |
+
} else {
|
| 1517 |
+
inputText = 'Help me identify something to appreciate about my partner or our relationship right now.';
|
| 1518 |
+
}
|
| 1519 |
+
break;
|
| 1520 |
case 'story':
|
| 1521 |
if (userInput) {
|
| 1522 |
inputText = `Help me surface the story I'm making up about this: "${userInput}"`;
|