{"_id":"@dailyautomations/terminal-logger","name":"@dailyautomations/terminal-logger","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dailyautomations/terminal-logger","version":"0.1.0","description":"Terminal command logger with Supabase sync for swarm prompts","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/dailyautomations/terminal-logger.git"},"bugs":{"url":"https://github.com/dailyautomations/terminal-logger/issues"},"homepage":"https://github.com/dailyautomations/terminal-logger#readme","publishConfig":{"access":"public"},"scripts":{"build":"tsc","watch":"tsc -w","start":"node dist/index.js","dev":"ts-node src/index.ts","test":"jest","lint":"eslint src --ext .ts","format":"prettier --write \"src/**/*.ts\"","setup":"node dist/setup.js","prepublishOnly":"npm run build","prepare":"npm run build"},"keywords":["terminal","logger","supabase","command-history"],"author":{"name":"Daily Automations"},"license":"MIT","dependencies":{"@supabase/supabase-js":"^2.50.5","@types/uuid":"^10.0.0","dotenv":"^16.6.1","node-cron":"^4.2.1","uuid":"^11.1.0","winston":"^3.17.0"},"devDependencies":{"@types/node":"^22.10.6","@types/node-cron":"^3.0.11","@typescript-eslint/eslint-plugin":"^8.36.0","@typescript-eslint/parser":"^8.36.0","eslint":"^8.57.1","jest":"^29.7.0","prettier":"^3.4.2","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3"},"engines":{"node":">=16.0.0"},"_id":"@dailyautomations/terminal-logger@0.1.0","gitHead":"04238857319ab4a10c6cecf27ee57884b6e42391","_nodeVersion":"22.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-MTjrZ83T10MpvZFAPRBs1w0+F0EyEqC8XEexPcnmbU05dkX9+uO9UczzTPrVtdIc7iIjrRulJeoNGANI7k06LA==","shasum":"c2c22dacf6c3c1e2024083ecb5fdce82335b5478","tarball":"https://registry.npmjs.org/@dailyautomations/terminal-logger/-/terminal-logger-0.1.0.tgz","fileCount":27,"unpackedSize":75297,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDm05/dzNGHPy1ew8xed+ICbWQVnqoPqNEOlQGJj9di1QIgXYOjiXaW2cTKOXOG4b3Gyaad9QvOaxSs1FtlWTat6IM="}]},"_npmUser":{"name":"dailyautomations","email":"michael@dailyautomations.com"},"directories":{},"maintainers":[{"name":"dailyautomations","email":"michael@dailyautomations.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/terminal-logger_0.1.0_1752308139933_0.02101151611605334"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-12T08:15:39.682Z","0.1.0":"2025-07-12T08:15:40.153Z","modified":"2025-07-12T08:15:40.494Z"},"maintainers":[{"name":"dailyautomations","email":"michael@dailyautomations.com"}],"description":"Terminal command logger with Supabase sync for swarm prompts","homepage":"https://github.com/dailyautomations/terminal-logger#readme","keywords":["terminal","logger","supabase","command-history"],"repository":{"type":"git","url":"git+https://github.com/dailyautomations/terminal-logger.git"},"author":{"name":"Daily Automations"},"bugs":{"url":"https://github.com/dailyautomations/terminal-logger/issues"},"license":"MIT","readme":"# Terminal Logger\n\nA Node.js/TypeScript package that captures terminal commands and syncs them to Supabase for tracking swarm prompts and command history.\n\n## Features\n\n- 📝 Captures terminal commands from shell history\n- 🔄 Syncs commands to Supabase database\n- 🤖 Detects and tags swarm-related commands\n- 💾 Local JSON storage with automatic backups\n- ⏰ Configurable sync intervals\n- 🔍 Search and query command history\n- 📊 Session tracking and metadata\n\n## Installation\n\n```bash\nnpm install @dailyautomations/terminal-logger\n```\n\nOr clone and build from source:\n\n```bash\ngit clone <repo>\ncd terminal-logger\nnpm install\nnpm run build\n```\n\n## Setup\n\n1. Run the setup script:\n```bash\nnpm run setup\n```\n\n2. Configure your `.env` file:\n```env\nSUPABASE_URL=your-supabase-url\nSUPABASE_ANON_KEY=your-supabase-anon-key\nLOG_FILE_PATH=./logs/commands.json\nSYNC_INTERVAL_MINUTES=5\nENABLE_REAL_TIME_SYNC=false\n```\n\n3. Create Supabase tables:\n```sql\n-- Terminal Commands Table\nCREATE TABLE terminal_commands (\n  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n  command_id TEXT UNIQUE NOT NULL,\n  timestamp TIMESTAMPTZ NOT NULL,\n  command TEXT NOT NULL,\n  directory TEXT NOT NULL,\n  user_name TEXT NOT NULL,\n  session_id TEXT NOT NULL,\n  hostname TEXT NOT NULL,\n  exit_code INTEGER,\n  duration INTEGER,\n  metadata JSONB,\n  created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Sessions Table\nCREATE TABLE terminal_sessions (\n  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n  session_id TEXT UNIQUE NOT NULL,\n  start_time TIMESTAMPTZ NOT NULL,\n  end_time TIMESTAMPTZ,\n  user_name TEXT NOT NULL,\n  hostname TEXT NOT NULL,\n  shell TEXT NOT NULL,\n  terminal TEXT NOT NULL,\n  created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Create indexes\nCREATE INDEX idx_commands_timestamp ON terminal_commands(timestamp);\nCREATE INDEX idx_commands_session ON terminal_commands(session_id);\nCREATE INDEX idx_commands_metadata ON terminal_commands(metadata);\n```\n\n## Usage\n\n### As a standalone service:\n```bash\nnpm start\n```\n\n### As a library:\n```typescript\nimport { TerminalLogger } from '@dailyautomations/terminal-logger';\n\nconst logger = new TerminalLogger();\n\n// Start logging\nawait logger.start();\n\n// Get recent commands\nconst recentCommands = await logger.getRecentCommands(50);\n\n// Search commands\nconst searchResults = await logger.searchCommands('claude-flow');\n\n// Get swarm commands\nconst swarmCommands = await logger.getSwarmCommands();\n\n// Check sync status\nconst syncStatus = logger.getSyncStatus();\n\n// Stop logging\nawait logger.stop();\n```\n\n## Shell Integration\n\nAdd to your `~/.bashrc` or `~/.zshrc`:\n\n```bash\n# Ensure history is written immediately\nexport PROMPT_COMMAND='history -a'\n\n# Or for zsh:\n# setopt INC_APPEND_HISTORY\n```\n\n## Configuration\n\n| Environment Variable | Description | Default |\n|---------------------|-------------|---------|\n| `SUPABASE_URL` | Supabase project URL | - |\n| `SUPABASE_ANON_KEY` | Supabase anonymous key | - |\n| `LOG_FILE_PATH` | Local JSON log file path | `./logs/commands.json` |\n| `SYNC_INTERVAL_MINUTES` | Minutes between syncs | `5` |\n| `ENABLE_REAL_TIME_SYNC` | Sync immediately on command | `false` |\n| `SHELL_HISTORY_FILE` | Shell history file path | `~/.bash_history` |\n| `WATCH_INTERVAL_MS` | History check interval | `1000` |\n| `LOG_LEVEL` | Logging level | `info` |\n\n## Swarm Command Detection\n\nThe logger automatically detects and tags swarm-related commands:\n\n- Commands containing `claude-flow swarm`\n- Commands with `npx claude-flow`\n- MCP tool invocations (`mcp__*__*`)\n- Swarm operations (init, spawn, orchestrate)\n\nTagged metadata includes:\n- `isSwarmPrompt`: boolean\n- `swarmId`: extracted swarm identifier\n- `agentType`: detected agent type\n- `taskId`: associated task ID\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build TypeScript\nnpm run build\n\n# Watch mode\nnpm run watch\n\n# Run tests\nnpm test\n\n# Lint code\nnpm run lint\n\n# Format code\nnpm run format\n```\n\n## License\n\nMIT","readmeFilename":"README.md","_rev":"1-f2547e3c92f3d0de418863e6d59c2ef9"}