@profullstack/therapy v1.5.14
@profullstack/therapy
A command-line interface for interactive AI therapy sessions in your terminal.
Features
- 🧠 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
Installation
Prerequisites
- Node.js 18+ installed
- For OpenAI: An OpenAI API key
- For Ollama: Ollama installed and running locally
Install globally
# Install globally using pnpm
pnpm i -g @profullstack/therapy
# Or using npm
npm i -g @profullstack/therapyInstall from source
# Clone the repository
git clone https://github.com/profullstack/therapy.git
cd therapy
# Install dependencies
pnpm install
# Link the CLI globally
pnpm link --globalConfiguration
Create a .env file in the project directory:
PROVIDER=openai
OPENAI_API_KEY=your-openai-api-keyOr use command-line options to override these settings.
Usage
# 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 --helpAvailable Therapy Modes
cbt- Cognitive Behavioral Therapy (default)person- Person-centered therapytrauma- Trauma-informed care
Available Providers
ollama- Uses locally running Ollama (default)openai- Uses OpenAI API (requires API key)
Exit Commands
Type any of these to end your therapy session:
exitquitbye
Event Handling in Node.js
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.
Basic Event Handling
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);Class-based Event Emitters
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");Factory Functions with Event Emitters
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");Event-Driven Therapy Sessions
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();Running the Examples
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.jsDisclaimer
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.
License
MIT