jostlebot Claude Opus 4.5 commited on
Commit
32ae7d4
Β·
1 Parent(s): 97f041d

Add GROUND tool + reorder categories + fix rainbow cascade

Browse files

Categories now: Express β†’ Regulate β†’ Understand β†’ Reconnect

12 tools with cascading rainbow (red β†’ purple top to bottom):
- Express: SEND (red), TEND (orange-red), NVC (orange)
- Regulate: SOMA (amber), LOVE (yellow), GROUND (lime)
- Understand: FEEL (green), NEED (teal), STORY (cyan)
- Reconnect: REPAIR (blue), APPRECIATE (indigo), WISDOM (violet)

GROUND = 5-4-3-2-1 sensory grounding (external senses)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (3) hide show
  1. README.md +6 -5
  2. app.py +31 -1
  3. static/index.html +74 -52
README.md CHANGED
@@ -16,20 +16,21 @@ license: mit
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?
 
16
 
17
  ## The ARI Toolkit
18
 
19
+ ### Express
20
+ - **SEND** - Send your message to your partner
21
+ - **TEND** - Transform your message with clarity and warmth
22
+ - **PRACTICE NVC** - Guided I-statement builder
23
+
24
  ### Regulate
25
  - **SOMA** - Body check-in. What does your body know?
26
  - **LOVE** - Slow down, breathe, return to presence
27
+ - **GROUND** - 5-4-3-2-1 senses. Orient to the present
28
 
29
  ### Understand
30
  - **FEEL** - Identify feelings in the conversation
31
  - **NEED** - Extract underlying needs
32
  - **STORY** - "The story I'm making up..." Own your narrative
33
 
 
 
 
 
 
34
  ### Reconnect
35
  - **REPAIR** - Craft genuine repair after ruptures
36
  - **APPRECIATE** - Catch the good. What's working?
app.py CHANGED
@@ -399,7 +399,37 @@ Never:
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:
 
399
  - Push them to apologize more than they mean
400
  - Make it about being "right\"""",
401
 
402
+ # TOOL 12: GROUND (5-4-3-2-1 sensory grounding)
403
+ "ground": """Guide someone through 5-4-3-2-1 sensory grounding to orient to the present.
404
+
405
+ ABSOLUTE RULE - NO FIRST PERSON:
406
+ - NEVER say "I invite you", "I notice"
407
+ - Use: "Notice...", "Look around...", "Find..."
408
+
409
+ THE TECHNIQUE:
410
+ 5 things you can SEE
411
+ 4 things you can HEAR
412
+ 3 things you can TOUCH/FEEL
413
+ 2 things you can SMELL
414
+ 1 thing you can TASTE
415
+
416
+ APPROACH:
417
+ - Guide them through ONE sense at a time
418
+ - Keep it simple and grounding
419
+ - This is about orienting to the external environment
420
+ - Different from SOMA (internal body) - this is external senses
421
+
422
+ FORMAT (be concise):
423
+ Start with sight (easiest): "Look around. Name 5 things you can see right now - a lamp, a wall, your hands on the keyboard..."
424
+
425
+ Then guide through the rest briefly. End with: "You're here. You're present. What do you want to bring to this conversation from this grounded place?"
426
+
427
+ Never:
428
+ - Use first-person language
429
+ - Rush through all 5 senses at once
430
+ - Make it complicated""",
431
+
432
+ # TOOL 13: APPRECIATE (Gottman's 5:1 - catch the good)
433
  "appreciate": """Help someone find and express genuine appreciation for their partner.
434
 
435
  ABSOLUTE RULE - NO FIRST PERSON:
static/index.html CHANGED
@@ -129,39 +129,43 @@
129
  }
130
 
131
  /* Rainbow sidebar colors */
132
- /* Rainbow sidebar colors: Cascading Red β†’ Purple (top to bottom) */
133
- /* Regulate */
134
- .tool-desc.soma-desc {
135
  border-left-color: #ef4444;
136
  background: rgba(239, 68, 68, 0.1);
137
  }
138
- .tool-desc.love-desc {
139
  border-left-color: #f97316;
140
  background: rgba(249, 115, 22, 0.1);
141
  }
142
- /* Understand */
143
- .tool-desc.feel-desc {
 
 
 
 
144
  border-left-color: #f59e0b;
145
  background: rgba(245, 158, 11, 0.1);
146
  }
147
- .tool-desc.need-desc {
148
  border-left-color: #eab308;
149
  background: rgba(234, 179, 8, 0.1);
150
  }
151
- .tool-desc.story-desc {
152
  border-left-color: #84cc16;
153
  background: rgba(132, 204, 22, 0.1);
154
  }
155
- /* Express */
156
- .tool-desc.send-desc {
157
  border-left-color: #22c55e;
158
  background: rgba(34, 197, 94, 0.1);
159
  }
160
- .tool-desc.tend-desc {
161
  border-left-color: #14b8a6;
162
  background: rgba(20, 184, 166, 0.1);
163
  }
164
- .tool-desc.nvc-desc {
165
  border-left-color: #0ea5e9;
166
  background: rgba(14, 165, 233, 0.1);
167
  }
@@ -498,78 +502,87 @@
498
  gap: 4px;
499
  }
500
 
501
- /* Rainbow button colors: Cascading Red β†’ Purple (top to bottom) */
502
- /* Regulate row */
503
- .tool-btn.soma {
504
  border-color: #ef4444;
505
  color: #ef4444;
506
  }
507
- .tool-btn.soma:hover, .tool-btn.soma.active {
508
  background: #ef4444;
509
  color: white;
510
  }
511
 
512
- .tool-btn.love {
513
  border-color: #f97316;
514
  color: #f97316;
515
  }
516
- .tool-btn.love:hover, .tool-btn.love.active {
517
  background: #f97316;
518
  color: white;
519
  }
520
 
521
- /* Understand row */
522
- .tool-btn.feel {
 
 
 
 
 
 
 
 
 
523
  border-color: #f59e0b;
524
  color: #f59e0b;
525
  }
526
- .tool-btn.feel:hover, .tool-btn.feel.active {
527
  background: #f59e0b;
528
  color: white;
529
  }
530
 
531
- .tool-btn.need {
532
  border-color: #eab308;
533
  color: #eab308;
534
  }
535
- .tool-btn.need:hover, .tool-btn.need.active {
536
  background: #eab308;
537
  color: white;
538
  }
539
 
540
- .tool-btn.story {
541
  border-color: #84cc16;
542
  color: #84cc16;
543
  }
544
- .tool-btn.story:hover, .tool-btn.story.active {
545
  background: #84cc16;
546
  color: white;
547
  }
548
 
549
- /* Express row */
550
- .tool-btn.send {
551
  border-color: #22c55e;
552
  color: #22c55e;
553
  }
554
- .tool-btn.send:hover, .tool-btn.send.active {
555
  background: #22c55e;
556
  color: white;
557
  }
558
 
559
- .tool-btn.tend {
560
  border-color: #14b8a6;
561
  color: #14b8a6;
562
  }
563
- .tool-btn.tend:hover, .tool-btn.tend.active {
564
  background: #14b8a6;
565
  color: white;
566
  }
567
 
568
- .tool-btn.nvc {
569
  border-color: #0ea5e9;
570
  color: #0ea5e9;
571
  }
572
- .tool-btn.nvc:hover, .tool-btn.nvc.active {
573
  background: #0ea5e9;
574
  color: white;
575
  }
@@ -909,6 +922,20 @@
909
  <div class="tool-list">
910
  <h3>ARI Tools</h3>
911
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
912
  <div class="category-label">Regulate</div>
913
  <div class="tool-desc soma-desc" onclick="showToolInfo('soma')">
914
  <h4>SOMA</h4>
@@ -918,6 +945,10 @@
918
  <h4>LOVE</h4>
919
  <p>Slow down. Take a breath. Return to presence.</p>
920
  </div>
 
 
 
 
921
 
922
  <div class="category-label">Understand</div>
923
  <div class="tool-desc feel-desc" onclick="showToolInfo('feel')">
@@ -933,20 +964,6 @@
933
  <p>"The story I'm making up..." Own your narrative.</p>
934
  </div>
935
 
936
- <div class="category-label">Express</div>
937
- <div class="tool-desc send-desc">
938
- <h4>SEND</h4>
939
- <p>Send your message to your partner.</p>
940
- </div>
941
- <div class="tool-desc tend-desc" onclick="showToolInfo('tend')">
942
- <h4>TEND</h4>
943
- <p>Transform with clarity and warmth.</p>
944
- </div>
945
- <div class="tool-desc nvc-desc" onclick="showToolInfo('nvc')">
946
- <h4>PRACTICE NVC</h4>
947
- <p>Guided I-statement builder.</p>
948
- </div>
949
-
950
  <div class="category-label">Reconnect</div>
951
  <div class="tool-desc repair-desc" onclick="showToolInfo('repair')">
952
  <h4>REPAIR</h4>
@@ -1043,10 +1060,17 @@
1043
 
1044
  <!-- Tool Buttons - Categorized -->
1045
  <div class="tool-buttons-container">
 
 
 
 
 
 
1046
  <div class="tool-row">
1047
  <span class="row-label">Regulate</span>
1048
  <button class="tool-btn soma" onclick="useTool('soma')">SOMA</button>
1049
  <button class="tool-btn love" onclick="useTool('love')">LOVE</button>
 
1050
  </div>
1051
  <div class="tool-row">
1052
  <span class="row-label">Understand</span>
@@ -1054,12 +1078,6 @@
1054
  <button class="tool-btn need" onclick="useTool('need')">NEED</button>
1055
  <button class="tool-btn story" onclick="useTool('story')">STORY</button>
1056
  </div>
1057
- <div class="tool-row">
1058
- <span class="row-label">Express</span>
1059
- <button class="tool-btn send" onclick="sendMessage()">SEND</button>
1060
- <button class="tool-btn tend" onclick="useTool('tend')">TEND</button>
1061
- <button class="tool-btn nvc" onclick="useTool('nvc')">PRACTICE NVC</button>
1062
- </div>
1063
  <div class="tool-row">
1064
  <span class="row-label">Reconnect</span>
1065
  <button class="tool-btn repair" onclick="useTool('repair')">REPAIR</button>
@@ -1111,6 +1129,7 @@
1111
  const TOOL_MAP = {
1112
  tend: { name: 'TEND Transform', icon: '✨', api: 'tend' },
1113
  soma: { name: 'Somatic Check-in', icon: '🫁', api: 'somatic_checkin' },
 
1114
  feel: { name: 'Feelings Check', icon: 'πŸ’œ', api: null, interactive: true },
1115
  need: { name: 'Needs Check', icon: '🎯', api: null, interactive: true },
1116
  nvc: { name: 'Practice NVC', icon: 'πŸ“', api: 'guided_nvc' },
@@ -1546,6 +1565,9 @@ Real grief, real limits. 1-2 sentences.`
1546
  inputText = 'Guide me through a body check-in. Help me notice what sensations are present.';
1547
  }
1548
  break;
 
 
 
1549
  }
1550
 
1551
  addToolLoading();
 
129
  }
130
 
131
  /* Rainbow sidebar colors */
132
+ /* Rainbow sidebar colors: Cascading Red β†’ Purple (12 tools top to bottom) */
133
+ /* Express (top) */
134
+ .tool-desc.send-desc {
135
  border-left-color: #ef4444;
136
  background: rgba(239, 68, 68, 0.1);
137
  }
138
+ .tool-desc.tend-desc {
139
  border-left-color: #f97316;
140
  background: rgba(249, 115, 22, 0.1);
141
  }
142
+ .tool-desc.nvc-desc {
143
+ border-left-color: #fb923c;
144
+ background: rgba(251, 146, 60, 0.1);
145
+ }
146
+ /* Regulate */
147
+ .tool-desc.soma-desc {
148
  border-left-color: #f59e0b;
149
  background: rgba(245, 158, 11, 0.1);
150
  }
151
+ .tool-desc.love-desc {
152
  border-left-color: #eab308;
153
  background: rgba(234, 179, 8, 0.1);
154
  }
155
+ .tool-desc.ground-desc {
156
  border-left-color: #84cc16;
157
  background: rgba(132, 204, 22, 0.1);
158
  }
159
+ /* Understand */
160
+ .tool-desc.feel-desc {
161
  border-left-color: #22c55e;
162
  background: rgba(34, 197, 94, 0.1);
163
  }
164
+ .tool-desc.need-desc {
165
  border-left-color: #14b8a6;
166
  background: rgba(20, 184, 166, 0.1);
167
  }
168
+ .tool-desc.story-desc {
169
  border-left-color: #0ea5e9;
170
  background: rgba(14, 165, 233, 0.1);
171
  }
 
502
  gap: 4px;
503
  }
504
 
505
+ /* Rainbow button colors: Cascading Red β†’ Purple (12 tools top to bottom) */
506
+ /* Express row (top) */
507
+ .tool-btn.send {
508
  border-color: #ef4444;
509
  color: #ef4444;
510
  }
511
+ .tool-btn.send:hover, .tool-btn.send.active {
512
  background: #ef4444;
513
  color: white;
514
  }
515
 
516
+ .tool-btn.tend {
517
  border-color: #f97316;
518
  color: #f97316;
519
  }
520
+ .tool-btn.tend:hover, .tool-btn.tend.active {
521
  background: #f97316;
522
  color: white;
523
  }
524
 
525
+ .tool-btn.nvc {
526
+ border-color: #fb923c;
527
+ color: #fb923c;
528
+ }
529
+ .tool-btn.nvc:hover, .tool-btn.nvc.active {
530
+ background: #fb923c;
531
+ color: white;
532
+ }
533
+
534
+ /* Regulate row */
535
+ .tool-btn.soma {
536
  border-color: #f59e0b;
537
  color: #f59e0b;
538
  }
539
+ .tool-btn.soma:hover, .tool-btn.soma.active {
540
  background: #f59e0b;
541
  color: white;
542
  }
543
 
544
+ .tool-btn.love {
545
  border-color: #eab308;
546
  color: #eab308;
547
  }
548
+ .tool-btn.love:hover, .tool-btn.love.active {
549
  background: #eab308;
550
  color: white;
551
  }
552
 
553
+ .tool-btn.ground {
554
  border-color: #84cc16;
555
  color: #84cc16;
556
  }
557
+ .tool-btn.ground:hover, .tool-btn.ground.active {
558
  background: #84cc16;
559
  color: white;
560
  }
561
 
562
+ /* Understand row */
563
+ .tool-btn.feel {
564
  border-color: #22c55e;
565
  color: #22c55e;
566
  }
567
+ .tool-btn.feel:hover, .tool-btn.feel.active {
568
  background: #22c55e;
569
  color: white;
570
  }
571
 
572
+ .tool-btn.need {
573
  border-color: #14b8a6;
574
  color: #14b8a6;
575
  }
576
+ .tool-btn.need:hover, .tool-btn.need.active {
577
  background: #14b8a6;
578
  color: white;
579
  }
580
 
581
+ .tool-btn.story {
582
  border-color: #0ea5e9;
583
  color: #0ea5e9;
584
  }
585
+ .tool-btn.story:hover, .tool-btn.story.active {
586
  background: #0ea5e9;
587
  color: white;
588
  }
 
922
  <div class="tool-list">
923
  <h3>ARI Tools</h3>
924
 
925
+ <div class="category-label">Express</div>
926
+ <div class="tool-desc send-desc">
927
+ <h4>SEND</h4>
928
+ <p>Send your message to your partner.</p>
929
+ </div>
930
+ <div class="tool-desc tend-desc" onclick="showToolInfo('tend')">
931
+ <h4>TEND</h4>
932
+ <p>Transform with clarity and warmth.</p>
933
+ </div>
934
+ <div class="tool-desc nvc-desc" onclick="showToolInfo('nvc')">
935
+ <h4>PRACTICE NVC</h4>
936
+ <p>Guided I-statement builder.</p>
937
+ </div>
938
+
939
  <div class="category-label">Regulate</div>
940
  <div class="tool-desc soma-desc" onclick="showToolInfo('soma')">
941
  <h4>SOMA</h4>
 
945
  <h4>LOVE</h4>
946
  <p>Slow down. Take a breath. Return to presence.</p>
947
  </div>
948
+ <div class="tool-desc ground-desc" onclick="useTool('ground')">
949
+ <h4>GROUND</h4>
950
+ <p>5-4-3-2-1 senses. Orient to the present.</p>
951
+ </div>
952
 
953
  <div class="category-label">Understand</div>
954
  <div class="tool-desc feel-desc" onclick="showToolInfo('feel')">
 
964
  <p>"The story I'm making up..." Own your narrative.</p>
965
  </div>
966
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
967
  <div class="category-label">Reconnect</div>
968
  <div class="tool-desc repair-desc" onclick="showToolInfo('repair')">
969
  <h4>REPAIR</h4>
 
1060
 
1061
  <!-- Tool Buttons - Categorized -->
1062
  <div class="tool-buttons-container">
1063
+ <div class="tool-row">
1064
+ <span class="row-label">Express</span>
1065
+ <button class="tool-btn send" onclick="sendMessage()">SEND</button>
1066
+ <button class="tool-btn tend" onclick="useTool('tend')">TEND</button>
1067
+ <button class="tool-btn nvc" onclick="useTool('nvc')">PRACTICE NVC</button>
1068
+ </div>
1069
  <div class="tool-row">
1070
  <span class="row-label">Regulate</span>
1071
  <button class="tool-btn soma" onclick="useTool('soma')">SOMA</button>
1072
  <button class="tool-btn love" onclick="useTool('love')">LOVE</button>
1073
+ <button class="tool-btn ground" onclick="useTool('ground')">GROUND</button>
1074
  </div>
1075
  <div class="tool-row">
1076
  <span class="row-label">Understand</span>
 
1078
  <button class="tool-btn need" onclick="useTool('need')">NEED</button>
1079
  <button class="tool-btn story" onclick="useTool('story')">STORY</button>
1080
  </div>
 
 
 
 
 
 
1081
  <div class="tool-row">
1082
  <span class="row-label">Reconnect</span>
1083
  <button class="tool-btn repair" onclick="useTool('repair')">REPAIR</button>
 
1129
  const TOOL_MAP = {
1130
  tend: { name: 'TEND Transform', icon: '✨', api: 'tend' },
1131
  soma: { name: 'Somatic Check-in', icon: '🫁', api: 'somatic_checkin' },
1132
+ ground: { name: 'Ground', icon: '🌿', api: 'ground' },
1133
  feel: { name: 'Feelings Check', icon: 'πŸ’œ', api: null, interactive: true },
1134
  need: { name: 'Needs Check', icon: '🎯', api: null, interactive: true },
1135
  nvc: { name: 'Practice NVC', icon: 'πŸ“', api: 'guided_nvc' },
 
1565
  inputText = 'Guide me through a body check-in. Help me notice what sensations are present.';
1566
  }
1567
  break;
1568
+ case 'ground':
1569
+ inputText = 'Guide me through 5-4-3-2-1 grounding. Help me orient to the present moment through my senses.';
1570
+ break;
1571
  }
1572
 
1573
  addToolLoading();