A command-line interface for interactive AI therapy sessions in your terminal.
GitHub GitHub commit activity GitHub last commit npm version npm downloads
- π§ Multiple therapy modes (CBT, Person-centered, Trauma-informed)
- π€ Support for different AI providers (OpenAI, Ollama)
- π¬ Interactive terminal-based conversation
- π¨ Beautiful, colorful terminal output
- π§ Configurable via command-line options or environment variables
- Node.js 18+ installed
- For OpenAI: An OpenAI API key
- For Ollama: Ollama installed and running locally
# Install globally using pnpm pnpm i -g @profullstack/therapy # Or using npm npm i -g @profullstack/therapy
# Clone the repository git clone https://github.com/profullstack/therapy.git cd therapy # Install dependencies pnpm install # Link the CLI globally pnpm link --global
Create a .env file in the project directory:
PROVIDER=openai
OPENAI_API_KEY=your-openai-api-key
Or use command-line options to override these settings.
# Start a CBT therapy session with default provider therapy # Start a trauma-informed therapy session therapy --mode trauma # Start a person-centered therapy session with OpenAI therapy -m person -p openai # Use a specific model therapy --provider openai --model gpt-4-turbo # Show help therapy --help
cbt- Cognitive Behavioral Therapy (default)person- Person-centered therapytrauma- Trauma-informed care
ollama- Uses locally running Ollama (default)openai- Uses OpenAI API (requires API key)
Type any of these to end your therapy session:
exitquitbye
This package includes examples of how to use event handling in Node.js modules. These examples demonstrate different patterns for implementing event-driven architecture in your applications.
The lib/event-examples.js module provides several examples of event handling patterns:
import { createBasicEmitter } from '@profullstack/therapy'; // Create a basic event emitter const { emitter, stop } = createBasicEmitter(); // Listen for events emitter.on('tick', (date) => { console.log(`Tick at ${date}`); }); // Stop the emitter after 5 seconds setTimeout(stop, 5000);
You can extend the EventEmitter class to create custom event-emitting classes:
import { TherapyEventEmitter } from '@profullstack/therapy'; const therapySession = new TherapyEventEmitter(); // Set up event listeners therapySession.on('sessionStart', (data) => { console.log(`Session started at ${data.time}`); }); therapySession.on('userInput', (data) => { console.log(`Received user input: ${data.text}`); }); // Start the session therapySession.startSession(); // Send user input therapySession.receiveUserInput("I've been feeling stressed lately");
For more complex scenarios, you can use factory functions that return objects with event emitters:
import { createTherapyEventManager } from '@profullstack/therapy'; const therapyManager = createTherapyEventManager(); const { events, EVENT_TYPES } = therapyManager; // Set up event listeners using constants events.on(EVENT_TYPES.SESSION_START, (data) => { console.log(`New session started: ${data.sessionId}`); }); // Start a session therapyManager.startSession(); // Process messages therapyManager.processMessage("Hello, I need some help");
The examples/therapy-events.js module demonstrates how to refactor the therapy application to use event-driven architecture:
import { EventDrivenTherapy } from '@profullstack/therapy'; // Create a therapy session const therapy = new EventDrivenTherapy({ mode: 'cbt', provider: 'openai', verbose: true }); // Add custom event listeners therapy.on('user:input', (data) => { if (data.text.toLowerCase().includes('anxious')) { console.log('User mentioned anxiety'); } }); // Start the therapy session therapy.start();
To run the included examples:
# Run the basic event demo node examples/event-demo.js # Run the event-driven therapy example node examples/therapy-events.js
This tool is not a replacement for professional mental health care. It uses AI to simulate therapeutic conversations but should not be used in place of licensed therapy, especially in crisis situations.
MIT