Spaces:
Sleeping
Sleeping
Context-aware SOMA + Update README to show ARI = TEND toolkit
Browse filesSOMA now pulls body/sensation words from user input:
- "it makes me sick" → "Where do you feel this 'sick' in your body?"
- Scans for 40+ body terms (tight, numb, chest, etc.)
- Falls back to generic check-in if no body words found
README updated:
- Title: "Tend & Send - The ARI Toolkit"
- Clarifies ARI is the suite built around TEND
- Tools listed in rainbow order
- Added WISDOM, removed LISTEN
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- README.md +13 -16
- static/index.html +34 -1
README.md
CHANGED
|
@@ -1,35 +1,32 @@
|
|
| 1 |
---
|
| 2 |
-
title: Tend & Send ARI
|
| 3 |
emoji: 💜
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
---
|
| 10 |
|
| 11 |
-
# Tend & Send - ARI
|
| 12 |
|
| 13 |
-
Assistive Relational Intelligence tools
|
| 14 |
|
| 15 |
-
|
| 16 |
|
| 17 |
-
##
|
| 18 |
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
- **TEND** - Transform messages with NVC clarity and warmth
|
| 24 |
-
- **NVC** - Guided I-statement builder
|
| 25 |
- **FEEL** - Identify feelings in the conversation
|
| 26 |
- **NEED** - Extract underlying needs
|
| 27 |
-
- **
|
| 28 |
- **REPAIR** - Craft genuine repair after ruptures
|
| 29 |
-
- **
|
| 30 |
- **LOVE** - Slow down, breathe, return to presence
|
| 31 |
|
| 32 |
-
|
| 33 |
|
| 34 |
- Choose attachment style: Anxious, Avoidant, Disorganized, Secure
|
| 35 |
- Set difficulty level: Gentle to Crisis
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Tend & Send - The ARI Toolkit
|
| 3 |
emoji: 💜
|
| 4 |
+
colorFrom: red
|
| 5 |
+
colorTo: purple
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
---
|
| 10 |
|
| 11 |
+
# Tend & Send - The ARI Toolkit
|
| 12 |
|
| 13 |
+
**ARI (Assistive Relational Intelligence)** is a suite of tools built around TEND - designed to help you show up more fully in difficult conversations.
|
| 14 |
|
| 15 |
+
*These tools exist to support YOUR relationship. ARI never becomes the relationship - it augments human-to-human connection.*
|
| 16 |
|
| 17 |
+
## The ARI Toolkit
|
| 18 |
|
| 19 |
+
- **SEND** - Send your message to your partner
|
| 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 |
- **REPAIR** - Craft genuine repair after ruptures
|
| 26 |
+
- **WISDOM** - Draw from sacred texts and grounded wisdom
|
| 27 |
- **LOVE** - Slow down, breathe, return to presence
|
| 28 |
|
| 29 |
+
## Practice Conversations
|
| 30 |
|
| 31 |
- Choose attachment style: Anxious, Avoidant, Disorganized, Secure
|
| 32 |
- Set difficulty level: Gentle to Crisis
|
static/index.html
CHANGED
|
@@ -1413,7 +1413,15 @@ Real grief, real limits. 1-2 sentences.`
|
|
| 1413 |
inputText = userInput || 'Help me craft a genuine repair.';
|
| 1414 |
break;
|
| 1415 |
case 'soma':
|
| 1416 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1417 |
break;
|
| 1418 |
}
|
| 1419 |
|
|
@@ -1751,6 +1759,31 @@ Based on the themes in this conversation (conflict, connection, fear, love, boun
|
|
| 1751 |
}
|
| 1752 |
|
| 1753 |
// ============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1754 |
// UI HELPERS
|
| 1755 |
// ============================================================================
|
| 1756 |
function addMessage(type, content, label = null, isTend = false) {
|
|
|
|
| 1413 |
inputText = userInput || 'Help me craft a genuine repair.';
|
| 1414 |
break;
|
| 1415 |
case 'soma':
|
| 1416 |
+
// Check for body/sensation words in user's text
|
| 1417 |
+
const bodyWords = extractBodyWords(userInput);
|
| 1418 |
+
if (bodyWords.length > 0) {
|
| 1419 |
+
inputText = `The person wrote: "${userInput}"\n\nThey used the word(s): ${bodyWords.join(', ')}. Lead with this - ask where they feel "${bodyWords[0]}" in their body right now. Be specific and curious about the physical sensation.`;
|
| 1420 |
+
} else if (userInput) {
|
| 1421 |
+
inputText = `The person wrote: "${userInput}"\n\nGuide them to notice what's happening in their body as they think about this. Where is there tension, heaviness, or activation?`;
|
| 1422 |
+
} else {
|
| 1423 |
+
inputText = 'Guide me through a body check-in. Help me notice what sensations are present.';
|
| 1424 |
+
}
|
| 1425 |
break;
|
| 1426 |
}
|
| 1427 |
|
|
|
|
| 1759 |
}
|
| 1760 |
|
| 1761 |
// ============================================================================
|
| 1762 |
+
// SOMATIC WORD EXTRACTION
|
| 1763 |
+
// ============================================================================
|
| 1764 |
+
function extractBodyWords(text) {
|
| 1765 |
+
if (!text) return [];
|
| 1766 |
+
const bodyTerms = [
|
| 1767 |
+
// Sensations
|
| 1768 |
+
'sick', 'nauseous', 'queasy', 'tight', 'tense', 'heavy', 'light',
|
| 1769 |
+
'hot', 'cold', 'numb', 'tingling', 'buzzing', 'shaky', 'trembling',
|
| 1770 |
+
'frozen', 'stuck', 'blocked', 'constricted', 'pressure', 'pain',
|
| 1771 |
+
'ache', 'burning', 'churning', 'knotted', 'clenched', 'gripping',
|
| 1772 |
+
// Body parts as sensations
|
| 1773 |
+
'stomach', 'gut', 'chest', 'heart', 'throat', 'shoulders', 'neck', 'jaw',
|
| 1774 |
+
// Breath/energy
|
| 1775 |
+
'can\'t breathe', 'breathless', 'suffocating', 'exhausted', 'drained',
|
| 1776 |
+
'wired', 'jittery', 'restless', 'agitated',
|
| 1777 |
+
// Emotional-somatic
|
| 1778 |
+
'overwhelmed', 'flooded', 'shutting down', 'dissociating', 'disconnected',
|
| 1779 |
+
'on edge', 'wound up', 'keyed up'
|
| 1780 |
+
];
|
| 1781 |
+
|
| 1782 |
+
const lowerText = text.toLowerCase();
|
| 1783 |
+
const found = bodyTerms.filter(term => lowerText.includes(term));
|
| 1784 |
+
return found;
|
| 1785 |
+
}
|
| 1786 |
+
|
| 1787 |
// UI HELPERS
|
| 1788 |
// ============================================================================
|
| 1789 |
function addMessage(type, content, label = null, isTend = false) {
|