{"_id":"@albireo3754/agentlog","_rev":"5-3579ac241ad1b6b07cb4f0d8f46dee1f","name":"@albireo3754/agentlog","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@albireo3754/agentlog","version":"0.1.0","_id":"@albireo3754/agentlog@0.1.0","maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"bin":{"agentlog":"src/cli.ts"},"dist":{"shasum":"52d4876769503dc989424e83b7106d4bbc0fe011","tarball":"https://registry.npmjs.org/@albireo3754/agentlog/-/agentlog-0.1.0.tgz","fileCount":18,"integrity":"sha512-OmTR+UBjOGtHxYiG+nTdlA3AsOBoaKNUsIPXCOECXMKzEwETThd4dTR5e6YYaFSoxRfh4Mp003Rr/ccRz8ucUg==","signatures":[{"sig":"MEYCIQDfG9SrHpokcf8EX/n11/VIptKwjGuR5fYfhELlP3DFjAIhALD24syRj8hlDfVApzxIwQrg+hLkKysyD+EDZq/nPEWk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63554},"type":"module","engines":{"bun":">=1.0.0","node":">=20"},"gitHead":"ee4c523ef7a3f761601963e878725bbd9bb7a838","scripts":{"dev":"bun run src/cli.ts","test":"bun test","build":"bun build src/cli.ts src/hook.ts --outdir dist --target node","dev:watch":"bun run --watch src/cli.ts","typecheck":"tsc --noEmit","postinstall":"node scripts/postinstall.mjs","prepublishOnly":"bun run typecheck"},"_npmUser":{"name":"albireo3754","email":"silbapad@gmail.com"},"_npmVersion":"10.8.2","description":"Claude Code prompts → Obsidian Daily Note auto-logger","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/agentlog_0.1.0_1772446648880_0.41871698783514066","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@albireo3754/agentlog","version":"0.1.1","_id":"@albireo3754/agentlog@0.1.1","maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"bin":{"agentlog":"src/cli.ts"},"dist":{"shasum":"f060bd687d7d4fe5f3c444bdb93a65724415fe5e","tarball":"https://registry.npmjs.org/@albireo3754/agentlog/-/agentlog-0.1.1.tgz","fileCount":18,"integrity":"sha512-xuyvEIsEVY0WTN8ADvUl27LZZZjKHUKv9JwEk8mNNzLo597lAFH1hzy8eI1Tq+J2Ev5CvGG/dWBmXn5iR9Gcpw==","signatures":[{"sig":"MEUCIHCt7F7NKtKCWSgWsgcUgJ5jr8WU55tcFISE1W0hsNM2AiEAzRBhfxbHHa/ks7KnLsg6/Icy+ROgq24lYSD3Vav9S8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64498},"type":"module","engines":{"bun":">=1.0.0","node":">=20"},"gitHead":"5b59a8d26bcf25538902d26e687b5391fd4d7e2b","scripts":{"dev":"bun run src/cli.ts","test":"bun test","build":"bun build src/cli.ts src/hook.ts --outdir dist --target node","dev:watch":"bun run --watch src/cli.ts","typecheck":"tsc --noEmit","postinstall":"node scripts/postinstall.mjs","prepublishOnly":"bun run typecheck"},"_npmUser":{"name":"albireo3754","email":"silbapad@gmail.com"},"_npmVersion":"10.8.2","description":"Claude Code prompts → Obsidian Daily Note auto-logger","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/agentlog_0.1.1_1772461236270_0.5428436550511442","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@albireo3754/agentlog","version":"0.1.2","keywords":["claude-code","obsidian","daily-notes","prompt-logging","developer-journal","worklog","hook"],"_id":"@albireo3754/agentlog@0.1.2","maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"homepage":"https://github.com/albireo3754/agentlog#readme","bugs":{"url":"https://github.com/albireo3754/agentlog/issues"},"bin":{"agentlog":"src/cli.ts"},"dist":{"shasum":"6a87e3765ee840d44eec118da96645de991180c4","tarball":"https://registry.npmjs.org/@albireo3754/agentlog/-/agentlog-0.1.2.tgz","fileCount":19,"integrity":"sha512-N4Gs746y9Ma0uHXY7R5kvz+CjGx46I9GHGiePoUTcUi7uG4v6153krJLvKO5335h0GVXyN3pmkuDnKntlYOR6g==","signatures":[{"sig":"MEQCIHdRa7dWKSoohbEuce/libRApu6gn/+HyFdVvXUvA9UoAiAjoiabwQD5EiT1T9kVOTGMJHPxz5eB0kgdDRzTcGZJXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69697},"type":"module","engines":{"bun":">=1.0.0","node":">=20"},"gitHead":"703e7c9c53d9ef3543824917268fab33a99f962f","scripts":{"dev":"bun run src/cli.ts","test":"bun test","build":"bun build src/cli.ts src/hook.ts --outdir dist --target node","dev:watch":"bun run --watch src/cli.ts","typecheck":"tsc --noEmit","postinstall":"node scripts/postinstall.mjs","prepublishOnly":"bun run typecheck"},"_npmUser":{"name":"albireo3754","email":"silbapad@gmail.com"},"repository":{"url":"git+https://github.com/albireo3754/agentlog.git","type":"git"},"_npmVersion":"10.8.2","description":"Auto-log Claude Code prompts to Obsidian Daily Notes","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/agentlog_0.1.2_1773241115859_0.1689639430685499","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@albireo3754/agentlog","version":"0.2.0","keywords":["claude-code","obsidian","daily-notes","prompt-logging","developer-journal","worklog","hook"],"_id":"@albireo3754/agentlog@0.2.0","maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"homepage":"https://github.com/albireo3754/agentlog#readme","bugs":{"url":"https://github.com/albireo3754/agentlog/issues"},"bin":{"agentlog":"src/cli.ts"},"dist":{"shasum":"06596ca439ccb07adf8cf66b5cd338f2f15bfeb1","tarball":"https://registry.npmjs.org/@albireo3754/agentlog/-/agentlog-0.2.0.tgz","fileCount":39,"integrity":"sha512-cFglzdy5qwWnqNb623wnIJOGRaUEoDr8eiz7hNkt2vzSw5I6S0oWm8ZTjxwgfKQo3FR/iorHpVsNBExwzZ4HDQ==","signatures":[{"sig":"MEQCIDFAHa0b9PaYBrV28+RED0/iLz9WZR9AgGUCS6pKVe8aAiAsh6axaN7v6jnqLj7mC4+6gv2ZaIqAWk3a18fM87yG/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258479},"type":"module","engines":{"bun":">=1.0.0","node":">=20"},"scripts":{"dev":"bun run src/cli.ts","test":"bun test","build":"bun build src/cli.ts src/hook.ts --outdir dist --target node","dev:watch":"bun run --watch src/cli.ts","typecheck":"tsc --noEmit","postinstall":"node scripts/postinstall.mjs","self-review":"node scripts/self-review.mjs","prepublishOnly":"bun run typecheck","test:install-smoke":"bun run scripts/e2e-bun-link-smoke.ts"},"_npmUser":{"name":"albireo3754","email":"silbapad@gmail.com"},"repository":{"url":"git+https://github.com/albireo3754/agentlog.git","type":"git"},"_npmVersion":"10.9.2","description":"Auto-log Claude Code prompts to Obsidian Daily Notes","directories":{},"_nodeVersion":"22.16.0","dependencies":{"commander":"^14.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/agentlog_0.2.0_1781706127650_0.735647421995905","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@albireo3754/agentlog","version":"0.3.0","description":"Auto-log Claude Code prompts to Obsidian Daily Notes","type":"module","bin":{"agentlog":"src/cli.ts"},"keywords":["claude-code","obsidian","daily-notes","prompt-logging","developer-journal","worklog","hook"],"homepage":"https://github.com/albireo3754/agentlog#readme","repository":{"type":"git","url":"git+https://github.com/albireo3754/agentlog.git"},"bugs":{"url":"https://github.com/albireo3754/agentlog/issues"},"scripts":{"build":"bun build src/cli.ts src/hook.ts --outdir dist --target node","dev":"bun run src/cli.ts","dev:watch":"bun run --watch src/cli.ts","agent:redteam-loop":"node scripts/agent-redteam-loop.mjs","prepublishOnly":"bun run typecheck","prd:redteam":"node scripts/prd-redteam.mjs","self-review":"node scripts/self-review.mjs","test":"bun test","test:hermes-host":"bun run scripts/end-user-hermes-host-smoke.ts","test:install-smoke":"bun run scripts/e2e-bun-link-smoke.ts","typecheck":"tsc --noEmit","postinstall":"node scripts/postinstall.mjs"},"engines":{"node":">=20","bun":">=1.0.0"},"devDependencies":{"@types/bun":"latest","typescript":"^5.4.0"},"dependencies":{"commander":"^14.0.3","yaml":"^2.9.0"},"gitHead":"4b33e02f5ca4cd90ed1c24c47e7cffc0499095d1","_id":"@albireo3754/agentlog@0.3.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-HDkMYJtVlDfwaXhRzowf4q+g/vz9yhrUEQY7QCkcKjzJm3G4hvL/vsppBlvg0Psr0y8DDTPNbit4ntv4LjHoRg==","shasum":"94d052832d07869a6f5a219dc01c28af20f21baa","tarball":"https://registry.npmjs.org/@albireo3754/agentlog/-/agentlog-0.3.0.tgz","fileCount":56,"unpackedSize":391940,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albireo3754%2fagentlog@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCdvnpOcEesUxYEeTFn9ruOA6P+gwUb9SP8agudVJzx2QIhAImL9ivJ6TE/7gOAR3QO1zIX7vyVM3TBPz4nDp5KX+Kp"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bce9db4f-2c98-4251-8957-90ef212b109f"}},"directories":{},"maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentlog_0.3.0_1786191682173_0.09160398135580139"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T10:17:28.794Z","modified":"2026-08-08T12:21:22.683Z","0.1.0":"2026-03-02T10:17:29.035Z","0.1.1":"2026-03-02T14:20:36.410Z","0.1.2":"2026-03-11T14:58:36.016Z","0.2.0":"2026-06-17T14:22:07.837Z","0.3.0":"2026-08-08T12:21:22.307Z"},"bugs":{"url":"https://github.com/albireo3754/agentlog/issues"},"homepage":"https://github.com/albireo3754/agentlog#readme","keywords":["claude-code","obsidian","daily-notes","prompt-logging","developer-journal","worklog","hook"],"repository":{"type":"git","url":"git+https://github.com/albireo3754/agentlog.git"},"description":"Auto-log Claude Code prompts to Obsidian Daily Notes","maintainers":[{"name":"albireo3754","email":"silbapad@gmail.com"}],"readme":"# AgentLog\n\nAuto-log Claude Code prompts and Codex turns to Obsidian Daily Notes.\n\nAgentLog is a local-first prompt logger for Obsidian. It captures Claude Code prompts and Codex CLI turn inputs, then appends them to today's Daily Note, grouped by project and session.\n\nUse it as a lightweight developer journal, worklog capture layer, or the first building block for richer Daily Notes automation.\n\n```bash\n# Requires Bun (https://bun.sh) installed and available on your PATH\nnpm install -g @albireo3754/agentlog\nagentlog init ~/Obsidian\n```\n\nInstall it once, start using Claude Code, and your Daily Note fills itself.\n\n## What It Does\n\n```\nClaude Code hook / Codex hook → Daily Note append\n```\n\n## Why AgentLog\n\n- Local-first prompt logging with no external service required\n- Obsidian Daily Notes integration that works with your existing vault\n- Project and session grouping so prompts stay readable later\n- Zero copy-paste overhead during normal Claude Code use\n\n**Before:** You finish a 3-hour Claude Code session. Your Daily Note is empty.\n\n**After:**\n\n```markdown\n## AgentLog\n> 🕐 11:21 — js/agentlog › initialize git and open it in VS Code\n\n#### 10:53 · js/agentlog\n<!-- cwd=/Users/you/work/js/agentlog -->\n- - - - [[claude_a1b2c3d4-1111-2222-3333-444455556666]]\n- 10:53 start building agentlog\n- 11:07 open the spec document\n- - - - [[claude_e5f6a7b8-1111-2222-3333-444455556666]]\n- 11:21 initialize git and open it in VS Code\n```\n\n| Element | Role |\n|---------|------|\n| `> 🕐 HH:MM — project › prompt` | Latest entry (always updated) |\n| `#### HH:MM · project` | Project subsection (grouped by cwd) |\n| `<!-- cwd=... -->` | Section matching key (hidden in Obsidian Reading view) |\n| `- - - - [[claude_...]]` / `[[codex_...]]` | Session boundary (Obsidian wiki-link) |\n| `- HH:MM prompt` | Individual log entry |\n\nNo manual logging. No copy-paste. No AI summarization overhead.\n\n## Install\n\n```bash\n# With Bun\nbun add -g @albireo3754/agentlog\n\n# With npm\nnpm install -g @albireo3754/agentlog\n\n# Then configure your vault\nagentlog init ~/path/to/vault\n```\n\nAgentLog registers the Claude Code hook as `agentlog hook`, so the `agentlog` binary must remain available on your `PATH` after setup.\n\n### Requirements\n\n- [Claude Code](https://claude.ai/code) (hook integration) or [Codex CLI](https://developers.openai.com/codex) (hook integration)\n- [Obsidian](https://obsidian.md) (Daily Note target)\n- [Bun](https://bun.sh) (>=1.0.0) or [Node.js](https://nodejs.org) >=20\n\n## Usage\n\n### Setup\n\nUnified CLI:\n\n```bash\n# Claude Code\nagentlog init ~/Obsidian\n\n# Codex\nagentlog init --codex ~/Obsidian\n\n# Claude + Codex\nagentlog init --all ~/Obsidian\n\n# Hermes Agent\nagentlog init --hermes ~/Obsidian\nagentlog init --hermes --hermes-profile work ~/Obsidian\nagentlog init --hermes --hermes-all-profiles ~/Obsidian\n\n# Plain folder\nagentlog init --plain ~/notes\n```\n\n`agentlog init` does two things:\n1. Creates `~/.agentlog/config.json` with your vault path\n2. Registers or repairs a Claude Code hook in `~/.claude/settings.json` using the string matcher format (`\"matcher\": \"\"`)\n\nRun `agentlog init` without arguments to auto-detect installed vaults.\n\n`agentlog init --codex`:\n1. Verifies that Codex CLI is installed and available in `PATH`\n2. Creates or updates `~/.agentlog/config.json`\n3. Registers a Codex `UserPromptSubmit` command hook in `~/.codex/hooks.json`\n4. Prints a reminder to review/trust the hook in Codex with `/hooks` if prompted\n\nThe `default = --all` variant is intentionally not supported. `agentlog init` stays Claude-first for backward compatibility and to avoid failing on machines without Codex CLI.\n\n`agentlog init --hermes` records Hermes metadata and writes this shell hook under `hooks.pre_llm_call` in the selected Hermes config:\n\n```yaml\nhooks:\n  pre_llm_call:\n    - command: \"agentlog hook --source hermes\"\n```\n\nBy default it edits `~/.hermes/config.yaml`. Use `--hermes-profile <name>` for `~/.hermes/profiles/<name>/config.yaml`, repeat the flag for multiple profiles, or use `--hermes-all-profiles` for default plus every existing named profile. AgentLog uses structured YAML parsing and only adds/removes its own command. See `docs/hermes-hook-spec.md`.\n\n### That's It\n\nUse Claude Code, Codex, or Hermes normally. Claude and Codex prompts are logged from `UserPromptSubmit`; Hermes prompts are logged from `pre_llm_call` after Hermes accepts/trusts the shell hook.\n\n### Backfill Missed Prompts\n\nIf hooks were disabled, untrusted, or misconfigured for part of the day, rebuild the Daily Note from local session JSONL files:\n\n```bash\nagentlog backfill              # today, Claude + Codex\nagentlog backfill 2026-06-19   # specific day\nagentlog backfill --source codex --dry-run --format json\n```\n\nBackfill scans `~/.codex/sessions/YYYY/MM/DD/*.jsonl` and top-level `~/.claude/projects/**/*.jsonl`, extracts user prompts only, skips subagent/tool-result noise, and appends entries that are not already present in the target Daily Note.\n\n### How It Works\n\n1. Claude Code/Codex fires `UserPromptSubmit`, or Hermes fires `pre_llm_call`\n2. AgentLog extracts the latest user-visible input and sanitizes it\n3. Resolves your Daily Note path from `.obsidian/daily-notes.json`, then `obsidian daily:path` when needed\n4. If the Daily Note is missing in Obsidian mode, asks `obsidian daily` to create it before writing so your Daily Notes template is preserved\n5. Finds or creates a `## AgentLog` section\n6. Finds or creates a `#### project` subsection matching the current working directory\n7. Inserts a source-prefixed session divider such as `[[claude_...]]`, `[[codex_...]]`, or `[[hermes_...]]` if the session changed, then appends the entry\n8. Updates the `> 🕐` latest-entry line at the top of the section\n\nSteady-state overhead is under 50ms per prompt when the Daily Note already exists. Missing-note bootstrap depends on Obsidian CLI startup. Fire-and-forget, never blocks Claude Code.\n\n## Daily Note Format\n\n### Obsidian Mode (default)\n\nAgentLog resolves the Daily Note path from `.obsidian/daily-notes.json` first, then `obsidian daily:path` when the vault settings are unavailable or unsupported. If the resolved Daily Note is missing, AgentLog runs `obsidian daily` before writing and only appends after the file exists, preserving the user's Daily Notes template. Obsidian mode does not create a guessed `{vault}/Daily/...` fallback file; if no safe path can be resolved or the CLI cannot bootstrap a missing note, the hook fails softly and skips the write. Plain mode still writes directly to `{dir}/YYYY-MM-DD.md`.\n\nEach working directory gets its own `#### project` subsection. Session changes insert a source-prefixed wiki-link divider such as `[[claude_...]]`, `[[codex_...]]`, or `[[hermes_...]]`. The `> 🕐` blockquote at the top always shows the latest entry across all projects.\n\n```markdown\n## AgentLog\n> 🕐 14:30 — kotlin/message-gate › adjust the API response\n\n#### 10:53 · js/agentlog\n<!-- cwd=/Users/you/work/js/agentlog -->\n- - - - [[claude_a1b2c3d4-1111-2222-3333-444455556666]]\n- 10:53 start building agentlog\n- 11:07 open the spec document\n\n#### 14:00 · kotlin/message-gate\n<!-- cwd=/Users/you/work/kotlin/message-gate -->\n- - - - [[codex_e5f6a7b8-1111-2222-3333-444455556666]]\n- 14:00 adjust the API response\n- 14:30 run tests\n```\n\n### Plain Mode\n\nWith `--plain`, entries go to `{folder}/YYYY-MM-DD.md`:\n\n```markdown\n# 2026-03-02\n- 10:53 start building agentlog\n```\n\n## CLI Reference\n\nCurrent CLI:\n\n| Command | Description |\n|---------|-------------|\n| `agentlog init [vault] [--plain] [--claude\\|--codex\\|--hermes\\|--all]` | Configure vault and install integrations. `--claude` (default): Claude hook, `--codex`: Codex hook, `--hermes`: Hermes shell hook config, `--all`: Claude+Codex |\n| `agentlog detect` | List detected Obsidian vaults and CLI status |\n| `agentlog backfill [date] [--source all\\|claude\\|codex] [--dry-run] [--format text\\|json]` | Scan local Claude/Codex session JSONL files and append missing prompts to the Daily Note |\n| `agentlog init --hermes [--hermes-profile <name>...] [--hermes-all-profiles] <vault>` | Write Hermes `pre_llm_call` shell-hook config and record profile metadata |\n| `agentlog codex-debug <prompt>` | Run `codex exec \"<prompt>\"` with Codex hook auto-registered |\n| `agentlog doctor` | Run health checks for the binary, vault, Claude hook registration/format, and Obsidian CLI. Also checks Codex/Hermes hook status if configured |\n| `agentlog open` | Open today's Daily Note in Obsidian (requires CLI 1.12.4+) |\n| `agentlog version` | Print AgentLog version. In `dev` builds, also shows channel and commit |\n| `agentlog uninstall [-y] [--codex\\|--hermes\\|--all]` | `default`: Remove Claude hook + config, `--codex`: Remove Codex hook and legacy notify metadata, `--hermes`: remove AgentLog's Hermes hook from configured profiles and clear metadata, `--all`: remove all AgentLog-owned integration state |\n| `agentlog hook` | Invoked automatically by Claude Code or Codex (not for direct use) |\n| `agentlog codex-notify` | Legacy handler for older Codex `notify` installs |\n\n## Configuration\n\n`~/.agentlog/config.json`:\n\n| Field | Default | Description |\n|-------|---------|-------------|\n| `vault` | (required) | Path to the Obsidian vault or plain output folder |\n| `plain` | `false` | Plain mode that writes simple markdown files without Obsidian integration |\n| `claudeHookInstalled` | `false` | Records that AgentLog expects the Claude hook to be installed, so `doctor` does not downgrade a missing Claude hook in `--all` installs |\n| `codexHookInstalled` | `false` | Records that AgentLog expects the Codex hook to be installed, so `doctor` can detect partial damage |\n| `hermesHookInstalled` | `false` | Records that AgentLog expects Hermes hook config to be present, so `doctor` can detect partial damage |\n| `hermesHome` | unset | Hermes config root used by `init --hermes` when `HERMES_HOME` is set; reused by `doctor` and `uninstall --hermes` |\n| `hermesProfiles` | unset | Hermes profiles selected by `init --hermes`; used by `doctor` and `uninstall --hermes` |\n| `codexNotifyRestore` | unset | Legacy metadata for older Codex `notify` installs |\n| `englishAsk` | unset | Optional hook prompt evaluator config. Disabled unless `englishAsk.enabled` is `true` |\n\nExample EnglishAsk config:\n\n```json\n{\n  \"englishAsk\": {\n    \"enabled\": true,\n    \"mode\": \"log-only\",\n    \"threshold\": 3,\n    \"timeoutMs\": 20000,\n    \"maxContextChars\": 4000\n  }\n}\n```\n\nWhen enabled, AgentLog evaluates English hook prompts with `codex exec` after writing the normal AgentLog entry. The evaluator receives the current raw prompt plus bounded prior user/model context from the hook transcript when available. If no transcript is available, AgentLog falls back to same-session prompt context from the Daily Note. Results are appended to the same Daily Note under `## EnglishAsk`. Evaluator failures and timeouts are ignored. Child evaluator runs set `AGENTLOG_ENGLISHASK_EVAL=1` so AgentLog skips evaluator child turns.\n\nThe default evaluator command is `codex exec --ignore-user-config --ephemeral -` so hook-time evaluation avoids loading the user's normal Codex hooks and MCP config. Override it with `englishAsk.evaluatorCommand` when a different evaluator is required.\n\nEnvironment variables:\n\n| Variable | Description |\n|----------|-------------|\n| `AGENTLOG_CONFIG_DIR` | Override the config directory (default: `~/.agentlog`) |\n| `AGENTLOG_ENGLISHASK_EVAL` | Internal recursion guard for EnglishAsk evaluator runs |\n| `AGENTLOG_PHASE` | Force the runtime channel (`dev` or `prod`), overriding auto-detection |\n| `OBSIDIAN_BIN` | Override the Obsidian CLI binary path |\n\n`agentlog version`은 현재 실행 중인 AgentLog의 build identity를 출력합니다.\n\n- `prod`: 헤드라인만 출력\n\n```text\nAgentLog 0.1.1\n```\n\n- `dev`: 개발 실행임을 나타내는 메타데이터를 추가 출력\n\n```text\nAgentLog 0.1.1\nchannel: dev\ncommit: <short-sha>\n```\n\n기본 규칙은 git 메타데이터가 있는 checkout/link 실행이면 `dev`, 패키지 설치본이면 `prod`입니다. 테스트나 디버깅에서 channel을 고정하고 싶다면 `AGENTLOG_PHASE=dev` 또는 `AGENTLOG_PHASE=prod`를 사용할 수 있습니다.\n\n## Uninstall\n\nClaude-only uninstall:\n\n```bash\nagentlog uninstall\n```\n\nThis removes the hook from `~/.claude/settings.json` and deletes `~/.agentlog/`.\n\nCodex-only uninstall:\n\n```bash\nagentlog uninstall --codex\n```\n\nThis removes the Codex hook and also restores or removes AgentLog's legacy `notify` entry in `~/.codex/config.toml` when present.\n\nOr remove both integrations:\n\n```bash\nagentlog uninstall --all\n```\n\nCodex 상태 확인은 별도 명령 대신 기존 `agentlog doctor`에 포함됩니다.\n\n## Development\n\n```bash\nbun install\nbun test              # run the test suite\nbun run test:install-smoke\nbun run test:hermes-host\nbun run typecheck     # run tsc --noEmit\nbun run build         # compile to dist/ (optional)\n```\n\nThe `bin` entry points directly to `src/cli.ts`, so you do not need a build during development. Bun runs TypeScript natively.\n\nCLI command boundaries are documented in [docs/architecture/cli-layering.md](docs/architecture/cli-layering.md).\n\n```bash\n# Link as a global command\nbun link\n\n# Edit source and run immediately\nagentlog doctor\n\n# Isolated bun link install smoke test\nbun run test:install-smoke\n\n# Real host Hermes install smoke. Mutates your global agentlog link,\n# ~/.agentlog/config.json, selected ~/.hermes config, and Hermes hook allowlist.\nbun run test:hermes-host\nbun run test:hermes-host -- --profile work\nbun run test:hermes-host -- --append-fixture\n\n# Watch mode\nbun run dev:watch\n```\n\n## Roadmap\n\n- **Phase 2:** Obsidian plugin with timeline visualization UI\n- **Phase 3:** Git log integration (commits → Daily Note)\n- **Future:** `agentlog run` command for session replay from JSONL captures\n\n## License\n\nMIT\n","readmeFilename":"README.md"}