{"_id":"@ambiguoustr/openclaw-wakatime","_rev":"2-28674e31c6d51e815f19c01e0d2e4671","name":"@ambiguoustr/openclaw-wakatime","dist-tags":{"latest":"0.9.10"},"versions":{"0.9.9":{"name":"@ambiguoustr/openclaw-wakatime","version":"0.9.9","keywords":["openclaw","plugin","wakatime","telemetry"],"license":"MIT","_id":"@ambiguoustr/openclaw-wakatime@0.9.9","maintainers":[{"name":"ambiguoustr","email":"ambiguoustr@gmail.com"}],"dist":{"shasum":"958b8dcd80ae4923d0d3ec971b323d1ba2a02fdc","tarball":"https://registry.npmjs.org/@ambiguoustr/openclaw-wakatime/-/openclaw-wakatime-0.9.9.tgz","fileCount":7,"integrity":"sha512-GM2B7t2xbm2FvXlFZur3ggfsWpeW5/kMAh/S65AhkWKcoi8gAspZQf0Ppv+MSHE0u65xjshT2hmvkRnhdzbTeQ==","signatures":[{"sig":"MEYCIQDLG4SGdjumHFjpF0vo2Y7S5F80INe+VMCTYwlEbpCWtAIhAKuPkeuwxoSZL5qiOzx2nzcT3YygHJZ9jYiaPd+SNt37","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43471},"type":"module","gitHead":"8a9b8cb88d9ec5aaab8356c45a001ae164e4e0db","scripts":{"check":"node --check setup_wakatime.mjs","smoke":"openclaw plugins info openclaw-wakatime"},"_npmUser":{"name":"ambiguoustr","email":"ambiguoustr@gmail.com"},"openclaw":{"extensions":["./index.ts"]},"_npmVersion":"10.9.4","description":"Official-style OpenClaw plugin for tracking activity in WakaTime","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"openclaw":">=2026.3.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-wakatime_0.9.9_1772691728215_0.9286201274693644","host":"s3://npm-registry-packages-npm-production"}},"0.9.10":{"name":"@ambiguoustr/openclaw-wakatime","version":"0.9.10","description":"Official-style OpenClaw plugin for tracking activity in WakaTime","type":"module","license":"MIT","openclaw":{"extensions":["./index.ts"]},"scripts":{"check":"node --check setup_wakatime.mjs","test":"node --test --experimental-strip-types tests/*.test.mjs","smoke":"openclaw plugins info openclaw-wakatime"},"publishConfig":{"access":"public"},"peerDependencies":{"openclaw":">=2026.3.0"},"keywords":["openclaw","plugin","wakatime","telemetry"],"_id":"@ambiguoustr/openclaw-wakatime@0.9.10","gitHead":"48c4a143c0104ec24ff4b5e925fb34a0cc6534d0","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-1mG46UqEdECkyw02uDzxMjIPaGwQKU6DuxgtErINkTz9TZKAcEM1Cz7G7VbtnSxX/25aURnnJK65uSZMVBz1sg==","shasum":"f01698851d4b3a0bcfc984d5c05e5280ea01e42a","tarball":"https://registry.npmjs.org/@ambiguoustr/openclaw-wakatime/-/openclaw-wakatime-0.9.10.tgz","fileCount":8,"unpackedSize":44323,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICONNBVJqlntqeriAf0AwbbV4CQHkItoucKcQzoQVn6gAiBMWpQ3Uda5uc2BEfsRluoDZBAQzwUInaFoL4z0I7Z/gg=="}]},"_npmUser":{"name":"ambiguoustr","email":"ambiguoustr@gmail.com"},"directories":{},"maintainers":[{"name":"ambiguoustr","email":"ambiguoustr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-wakatime_0.9.10_1772701144941_0.7831807410308675"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-05T06:22:08.113Z","modified":"2026-03-05T08:59:05.196Z","0.9.9":"2026-03-05T06:22:08.369Z","0.9.10":"2026-03-05T08:59:05.086Z"},"license":"MIT","keywords":["openclaw","plugin","wakatime","telemetry"],"description":"Official-style OpenClaw plugin for tracking activity in WakaTime","maintainers":[{"name":"ambiguoustr","email":"ambiguoustr@gmail.com"}],"readme":"# openclaw-wakatime\n\nTypeScript-native WakaTime plugin for OpenClaw.\n\nPublished npm package: `@ambiguoustr/openclaw-wakatime`\n\nThis plugin tracks OpenClaw runtime activity and sends heartbeats through the official `wakatime` CLI:\n\n- `message_received` / `message_sent`\n- `command:*` (via internal hook registration)\n- `after_tool_call` (`read/edit/write` use file entities from tool params such as `path`/`file_path`; file language is auto-detected by `wakatime-cli`)\n- `session_start` / `session_end`\n\nRuntime files are written under `~/.openclaw/wakatime/`:\n\n- `plugin.log`\n- `queue.jsonl`\n- `sessions.jsonl`\n\n## Requirements\n\n- OpenClaw `>= 2026.3.x`\n- WakaTime CLI installed and authenticated (`~/.wakatime.cfg` or `WAKATIME_API_KEY`)\n- Command examples use POSIX shell syntax; on Windows use equivalent PowerShell/CMD commands.\n\n## Authentication\n\nThe plugin does not store or manage your WakaTime API key directly.\nIt only invokes the official `wakatime` CLI.\n\nKey resolution is handled by WakaTime CLI:\n\n- Recommended: `~/.wakatime.cfg` with `api_key = waka_...`\n- Alternative: environment variable `WAKATIME_API_KEY`\n\nPrefer `~/.wakatime.cfg` for reliability, because shell environment variables are not always inherited by the OpenClaw gateway process.\n\n## Fresh Start (new machine)\n\n1. Install and authenticate WakaTime CLI.\n2. Confirm key is available (for example with `~/.wakatime.cfg`).\n3. Install/enable this plugin.\n4. Restart gateway (`openclaw gateway restart`).\n5. Trigger one real message/tool call and verify heartbeats.\n\n## Missing/invalid key behavior\n\n- Plugin still loads in OpenClaw.\n- Heartbeat sending fails until credentials are fixed.\n- Failed heartbeats are queued in `~/.openclaw/wakatime/queue.jsonl`.\n- After fixing credentials, queued heartbeats are retried automatically.\n\n## Install (local path)\n\n```bash\ncd ~/.openclaw/plugins/openclaw-wakatime\nnode setup_wakatime.mjs\n```\n\nThe setup script updates `~/.openclaw/openclaw.json`:\n\n- `plugins.load.paths` includes this directory\n- `plugins.entries.openclaw-wakatime.enabled = true`\n\nThen it restarts gateway by default and prints plugin status.\n\n## Install (npm)\n\n```bash\nopenclaw plugins install @ambiguoustr/openclaw-wakatime --pin\nopenclaw plugins info openclaw-wakatime\n```\n\n## Configure\n\nPlugin config lives at:\n\n`plugins.entries.openclaw-wakatime.config`\n\nExample:\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"openclaw-wakatime\": {\n        \"enabled\": true,\n        \"config\": {\n          \"enabled\": true,\n          \"project\": \"agent-vibe-coding\",\n          \"category\": \"ai coding\",\n          \"useContextProject\": false,\n          \"heartbeatIntervalSeconds\": 120,\n          \"queueRetryBatchSize\": 50,\n          \"queueFlushIntervalSeconds\": 60,\n          \"trackMessages\": true,\n          \"trackCommands\": true,\n          \"trackTools\": true,\n          \"trackSessions\": true\n        }\n      }\n    }\n  }\n}\n```\n\nAfter config edits, restart gateway.\n\n## Verify\n\n```bash\nopenclaw plugins info openclaw-wakatime\nopenclaw plugins list\n```\n\nThen send a real channel message or command and check:\n\n```bash\ntail -f ~/.openclaw/wakatime/plugin.log\n```\n\n## Packaging Notes\n\nThis repository follows the OpenClaw plugin spec:\n\n- `openclaw.plugin.json` manifest (required)\n- TypeScript plugin entrypoint (`index.ts`)\n- package metadata with `openclaw.extensions`\n\nRelease and community submission runbook:\n\n- `RELEASE.md`\n- `COMMUNITY_SUBMISSION.md`\n\n## Migration From Legacy Version\n\n`0.9.9` is a full TS rewrite.\n\nRemoved runtime paths:\n\n- Python tracker modules (`wakatime_openclaw.py`, `wakatime_hooks.py`, `wakatime_wrapper.py`)\n- legacy `hooks/wakatime-im` bridge\n- legacy zsh preexec hook integration\n\nIf you previously used those paths, switch to plugin config under `plugins.entries.openclaw-wakatime`.\n","readmeFilename":"README.md"}