{"_id":"@consultancy-outfit/claude-daylog","_rev":"3-a9edebe9b5f96709c2d19e19c77f2bad","name":"@consultancy-outfit/claude-daylog","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@consultancy-outfit/claude-daylog","version":"1.0.0","keywords":["claude","devops","daily-summary","cli"],"author":"","license":"MIT","_id":"@consultancy-outfit/claude-daylog@1.0.0","maintainers":[{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"}],"bin":{"claude-daylog":"bin/claude-daylog"},"dist":{"shasum":"8a805adcb874fdc7718e65abc96ff095ebc31b38","tarball":"https://registry.npmjs.org/@consultancy-outfit/claude-daylog/-/claude-daylog-1.0.0.tgz","fileCount":18,"integrity":"sha512-jXaaUC4c7D5Mqk4J6QZrpa2nAnAdITYiErexAuqqSfhhCAQYOwXPcrVvxW9s0lItpwZE1NZ0mj9uUE2L1tEp3Q==","signatures":[{"sig":"MEQCIFMrNoOLpz8IPNdyOXznNYUqSt8M0F7HFJkN/L03XEGfAiAQnp3Nv0hwNTPbcT3EZZ5pnVCZI6cTtM5maPj+vKK3Hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44715},"main":"index.js","engines":{"node":">=18.0.0"},"scripts":{"demo":"node scripts/demo.js","test":"vitest run","build":"tsc","test:watch":"vitest","build:watch":"tsc --watch","demo:server":"node mock-backend/server.js","debug:transcripts":"node -e \"require('dotenv').config();const t=require('./dist/transcripts');const {readTodayTranscripts,formatTranscriptText}=t;const r=readTodayTranscripts();console.log(formatTranscriptText(r));console.log('\\n---\\nSessions:',r.sessions.length,'Chars:',r.totalChars,'Truncated:',r.truncated)\""},"_npmUser":{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"},"_npmVersion":"10.9.7","description":"Captures daily Claude Code sessions and submits JSONL files to the ML pipeline","directories":{"test":"tests"},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","prompts":"^2.4.2","commander":"^12.0.0","@azure/storage-blob":"^12.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.5.0","@types/node":"^20.14.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/claude-daylog_1.0.0_1779083724624_0.2734364136224765","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@consultancy-outfit/claude-daylog","version":"1.0.1","keywords":["claude","devops","daily-summary","cli"],"author":"","license":"MIT","_id":"@consultancy-outfit/claude-daylog@1.0.1","maintainers":[{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"}],"bin":{"claude-daylog":"bin/claude-daylog"},"dist":{"shasum":"149a883aa564ee4f54666a57e67695166a578563","tarball":"https://registry.npmjs.org/@consultancy-outfit/claude-daylog/-/claude-daylog-1.0.1.tgz","fileCount":19,"integrity":"sha512-gOb/d7hBKhH+GPH9fZXFdk+9+IijK7KR/Vvh338gA9avEMs/dZgFTnxNj3TyRwUL9g74NwwDsS5XywosX5miqg==","signatures":[{"sig":"MEUCIQD38K0lElAr6sM95s7kB6BiSpkNFK7rari/9cF2DeTeFgIgCT+rzQgG2iiAibCSqbghIi7g/SBkeJJB5PheLb+Ng3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44907},"main":"index.js","engines":{"node":">=18.0.0"},"scripts":{"demo":"node scripts/demo.js","test":"vitest run","build":"tsc","test:watch":"vitest","build:watch":"tsc --watch","demo:server":"node mock-backend/server.js","debug:transcripts":"node -e \"require('dotenv').config();const t=require('./dist/transcripts');const {readTodayTranscripts,formatTranscriptText}=t;const r=readTodayTranscripts();console.log(formatTranscriptText(r));console.log('\\n---\\nSessions:',r.sessions.length,'Chars:',r.totalChars,'Truncated:',r.truncated)\""},"_npmUser":{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"},"_npmVersion":"10.9.7","description":"Captures daily Claude Code sessions and submits JSONL files to the ML pipeline","directories":{"test":"tests"},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.23.0","dotenv":"^16.0.0","prompts":"^2.4.2","commander":"^12.0.0","@azure/storage-blob":"^12.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.5.0","@types/node":"^20.14.0","@types/prompts":"^2.4.9"},"_npmOperationalInternal":{"tmp":"tmp/claude-daylog_1.0.1_1779085734067_0.23619983809320644","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@consultancy-outfit/claude-daylog","version":"1.1.0","description":"Captures daily Claude Code sessions and submits JSONL files to the ML pipeline","bin":{"claude-daylog":"bin/claude-daylog"},"scripts":{"build":"tsc","build:watch":"tsc --watch","test":"vitest run","test:watch":"vitest","demo:server":"node mock-backend/server.js","demo":"node scripts/demo.js","debug:transcripts":"node -e \"require('dotenv').config();const t=require('./dist/transcripts');const {readTodayTranscripts,formatTranscriptText}=t;const r=readTodayTranscripts();console.log(formatTranscriptText(r));console.log('\\n---\\nSessions:',r.sessions.length,'Chars:',r.totalChars,'Truncated:',r.truncated)\""},"keywords":["claude","devops","daily-summary","cli"],"license":"MIT","engines":{"node":">=18.0.0"},"dependencies":{"@azure/storage-blob":"^12.26.0","commander":"^12.0.0","dotenv":"^16.0.0","prompts":"^2.4.2","zod":"^3.23.0"},"devDependencies":{"@types/node":"^20.14.0","@types/prompts":"^2.4.9","typescript":"^5.5.0","vitest":"^2.1.0"},"main":"index.js","directories":{"test":"tests"},"author":"","_id":"@consultancy-outfit/claude-daylog@1.1.0","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-JYqNRne4uoaeMGTWVb2x+suB2aJiITDK1xqb73pvxfOSzIC6McMAUGiXbZKeYmKaSXt5yrxDYrNSXzbsSUyFdg==","shasum":"74ea8d163ac142d6ee8ef124b04b881b617fd501","tarball":"https://registry.npmjs.org/@consultancy-outfit/claude-daylog/-/claude-daylog-1.1.0.tgz","fileCount":19,"unpackedSize":44907,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3aL10bwRpLQW5LIrDXBd3gEmf6TR27uHghgul9uSUNwIhAJ4Lxl3oL5MnKhiJMFwpQZoBWR3CFKXkVeyYEjVg+Yi/"}]},"_npmUser":{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"},"maintainers":[{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-daylog_1.1.0_1780982728327_0.2347921173999834"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T05:55:24.517Z","modified":"2026-06-09T05:25:28.584Z","1.0.0":"2026-05-18T05:55:24.779Z","1.0.1":"2026-05-18T06:28:54.192Z","1.1.0":"2026-06-09T05:25:28.479Z"},"license":"MIT","keywords":["claude","devops","daily-summary","cli"],"description":"Captures daily Claude Code sessions and submits JSONL files to the ML pipeline","maintainers":[{"name":"umer-outfit","email":"umer.shahid@consultancyoutfit.co.uk"}],"readme":"# @consultancy-outfit/claude-daylog\n\nA cross-platform CLI that reads your daily Claude Code session transcripts, summarizes them with the Anthropic API, and POSTs the summary to your team backend — automatically at 4:50 PM on weekdays.\n\n## Install\n\n```bash\nnpm install -g @consultancy-outfit/claude-daylog\n```\n\nRequires Node.js 18+.\n\n## Quick start\n\n```bash\n# 1. Configure and install the scheduler\nclaude-daylog setup\n\n# 2. Verify it works (no network POST)\nclaude-daylog run --now --dry-run\n\n# 3. Run for real\nclaude-daylog run --now\n\n# 4. Check status\nclaude-daylog status\n```\n\n## Commands\n\n### `setup`\n\nInteractive first-run wizard. Prompts for:\n- Work email (used as `user_id` in submissions)\n- Backend URL\n- Backend auth token\n- Anthropic API key (auto-detected from `$ANTHROPIC_API_KEY`, `$ANTHROPIC_AUTH_TOKEN`, or `$CLAUDE_API_KEY`)\n\nInstalls the OS scheduler and runs a dry-run to verify end-to-end connectivity.\n\n```bash\nclaude-daylog setup\nclaude-daylog setup --advanced   # shows model override\n```\n\nRe-running `setup` is idempotent — it preserves existing values as defaults.\n\n### `run`\n\nRuns the daily job: read transcripts → summarize → submit.\n\n```bash\nclaude-daylog run                       # only runs after 16:50 on weekdays\nclaude-daylog run --now                 # ignore time check\nclaude-daylog run --now --dry-run       # print payload, don't POST\nclaude-daylog run --now --date 2026-05-12  # backfill a previous day\n```\n\n### `status`\n\nShows last successful submission, scheduler health, and recent log entries.\n\n```bash\nclaude-daylog status\n```\n\n### `uninstall`\n\nRemoves the scheduler entry, config file, and all logs. Prompts for confirmation.\n\n```bash\nclaude-daylog uninstall\n```\n\n## Config file\n\nWritten by `setup` to:\n- **Unix/macOS**: `~/.config/claude-daylog/config.json` (permissions: 0600)\n- **Windows**: `%APPDATA%\\claude-daylog\\config.json`\n\nDev overrides via `.env` (or environment variables):\n\n| Variable | Overrides |\n|---|---|\n| `BACKEND_URL` | `config.backendUrl` |\n| `AUTH_TOKEN` | `config.authToken` |\n| `ANTHROPIC_API_KEY` | `config.anthropicApiKey` |\n| `ANTHROPIC_AUTH_TOKEN` | fallback for `anthropicApiKey` |\n| `CLAUDE_API_KEY` | second fallback for `anthropicApiKey` |\n\n## Demo / local development\n\n```bash\ngit clone ...\nnpm install\nnpm run build\n\n# In terminal 1 — start the mock backend (port 8787)\nnpm run demo:server\n\n# In terminal 2 — run dry-run against mock\nBACKEND_URL=http://localhost:8787 AUTH_TOKEN=demo node dist/cli.js run --now --dry-run\n\n# Or use the all-in-one demo script\nnpm run demo             # dry-run\nnpm run demo -- --submit # real POST to mock\n```\n\n## Scheduler details\n\n| Platform | Mechanism | Missed runs |\n|---|---|---|\n| macOS | launchd (`~/Library/LaunchAgents/com.claudedaylog.daily.plist`) | Runs on next wake |\n| Linux | systemd user timer (`Persistent=true`) | Catches up on next boot |\n| Windows | Task Scheduler (`schtasks`) | Runs at next login if missed |\n\nFor unsupported platforms, `setup` prints the manual cron command.\n\n## Logs\n\nAppended to `~/.config/claude-daylog/logs/run-YYYY-MM.log` (rotated monthly). View recent entries with `claude-daylog status` or `tail` the file directly.\n\nSet `DEBUG=1` to see full stack traces on errors.\n\n## Troubleshooting\n\n**\"Config is invalid or incomplete\"** — Run `claude-daylog setup` again.\n\n**\"Auth token is invalid\"** — Re-run `claude-daylog setup` and update the token.\n\n**No activity logged** — Check that `~/.claude/projects/` exists and contains `.jsonl` files from today.\n\n**Scheduler not running** — Run `claude-daylog status` to verify installation, then re-run `claude-daylog setup`.\n","readmeFilename":"README.md"}