Files

43 lines
1.0 KiB
JSON
Raw Permalink Normal View History

{
"name": "caveman-installer",
"version": "2.6.0",
"description": "Caveman installer — detects your AI coding agents and installs caveman for each one.",
"license": "MIT",
"author": "Julius Brussee",
"homepage": "https://github.com/JuliusBrussee/caveman",
"repository": {
"type": "git",
"url": "git+https://github.com/JuliusBrussee/caveman.git"
},
"bugs": {
"url": "https://github.com/JuliusBrussee/caveman/issues"
},
"bin": {
"caveman-install": "./bin/install.js"
},
"engines": {
"node": ">=18"
},
"scripts": {
fix: scope caveman mode to the session Mode was applied per session but stored in one file per machine ($CLAUDE_CONFIG_DIR/.caveman-active). Four bugs followed from that one fact: parallel windows shared a mode; deactivation was spelled "no flag file", so SessionStart re-derived the configured default and undid an explicit "stop caveman" after every auto-compaction; the statusline badge rendered whichever window wrote last; and "off" could not survive a SessionStart at all. payload's `source`, but it read the legacy flag, where off is absence — a deactivated session found nothing stored and fell back to getDefaultMode() regardless. The other three are consequences of the storage shape, not of when the hook re-derives. State now lives in .caveman-sessions/<session_id>.mode, keyed by the session_id Claude Code puts in every hook payload and in the statusline's stdin JSON. The legacy flag stays as a last-write-wins compat mirror and never receives the literal 'off': an older hook reading that would inject "CAVEMAN MODE ACTIVE (off)" and an older statusline would render [CAVEMAN:OFF]. Both spellings of off are read everywhere — a missing file (old) and a literal 'off' (new, durable). caveman-config.js gains the primitives: validateSessionId (a whitelist, because a session id becomes part of a path), resolveActiveMode, readSessionModeRaw, writeSessionMode, per-session prev for one-shot skills (#599), gcSessionStore, and a session_id-tagged recordModeChange (#601). Every one takes a sessionId that may be null or malformed and degrades to the previous machine-wide behavior — the old code path IS the fallback branch, which is why the existing suites, nonid, pass unchanged. SessionStart re-derives the default only on `startup` and `clear`; compact, resume, fork, an unrecognized source and the n` read the stored value. Grouping `clear` with the resets deliberately differs from #691's comment: per-session storage makes the distinction cheap, and nothing else in the conversation survives /clear either. The watchdog must not reset, or a slow payload on a compaction re-arms a session the user turned off. The three entrypoints resolve the new helpers individually instead of demanding them in their requireSibling shape checks (#848): a caveman-config.js from before this change satisfies those checks, so hard-failing would trade "machine-wide mode, no state at all" on exactly the plugin-cache drift that guard exists for. Both statusline ports take session_id from the stdin JSON with bounded, TTY-guarded reads (integer timeout — bash 3.2 rejects fractional read -t) and render nothing for a deactivated session. verify_repo.py greps them against SESSIONS_DIRNAME and SESSION_ID_RE, tws badge. caveman-stats filters the transition l window's switches no longer skew another's es (bin/install.js, uninstall.sh, uninstall.ps1) removes the session store; .caveman-history.jsonl is kept on purpose. opide behaviour — it writes its own flag in its own config dir and never sees a Claude Code session_id. Tests: 25 unit cases in tests/hooks/caveman-config.test.mjs, SessionStartSourceTests, SessionScopedModeTests, 5 statusline cases, and tests/manual/session-mode-smoke.sh (22 checks, end-to-end against a throwaway config dir). docs/testing-session-modes.md carries the full plan including the live-Claude-Code checks. Hook ced. npm test 197/197 · tests/*.js clean · unittesss · smoke 22/22 Signed-off-by: Pavel Filippenko <filippenko.ps@phystech.edu>
2026-08-24 09:54:58 +03:00
"test": "node --test --test-force-exit tests/installer/*.test.mjs tests/hooks/*.test.mjs",
feat: ship Caveman 2.0.0 — engine, proxy, SDKs, unified CLI Single-commit port of the Caveman 2 tree onto the original repo history (candidate caveman-2@88878a4 applied over main@3098342). No unrelated-history merge; original history untouched. Preserved v1 surfaces: - skills/caveman/SKILL.md byte-for-byte, plus plugin mirror and caveman.skill zip - legacy CI (Node 18/20/22 installer + Python 3.11 suites) alongside engine-ci - cli/install.js compatibility shim forwarding to bin/install.js - .codex/config.toml ships both hooks and codex_hooks for older Codex (#617) - README Trendshift + Skills.sh badges and local star-history asset - v1.10.0-pinned curl installs; benchmarks/tmp-starcharts ignore rules Fixed for public same-repo release: - SECURITY.md vulnerability reporting points at this repository - release-binaries.yml publishes to this repo via job-scoped GITHUB_TOKEN (cross-repo PAT removed); binary-release environment still gates signing - packages/cli/PUBLISHING.md rewritten for packages/ layout and same-repo flow - profile-contract and provider-catalog lanes skip lane-scope gates on initial import so the launch PR can gate on their real validation steps - ANNOUNCEMENT.md network claim corrected: compression is local; requests still go to the provider you configured Caveman 2 stays opt-in: bin-v1.0.0 binaries and @caveman-ai/cli publish separately after this lands and soaks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BLvb5QniwYjmcawyssQNw9
2026-08-11 14:55:46 +02:00
"test:windows": "node scripts/test-windows-compat.mjs"
},
"files": [
feat: ship Caveman 2.0.0 — engine, proxy, SDKs, unified CLI Single-commit port of the Caveman 2 tree onto the original repo history (candidate caveman-2@88878a4 applied over main@3098342). No unrelated-history merge; original history untouched. Preserved v1 surfaces: - skills/caveman/SKILL.md byte-for-byte, plus plugin mirror and caveman.skill zip - legacy CI (Node 18/20/22 installer + Python 3.11 suites) alongside engine-ci - cli/install.js compatibility shim forwarding to bin/install.js - .codex/config.toml ships both hooks and codex_hooks for older Codex (#617) - README Trendshift + Skills.sh badges and local star-history asset - v1.10.0-pinned curl installs; benchmarks/tmp-starcharts ignore rules Fixed for public same-repo release: - SECURITY.md vulnerability reporting points at this repository - release-binaries.yml publishes to this repo via job-scoped GITHUB_TOKEN (cross-repo PAT removed); binary-release environment still gates signing - packages/cli/PUBLISHING.md rewritten for packages/ layout and same-repo flow - profile-contract and provider-catalog lanes skip lane-scope gates on initial import so the launch PR can gate on their real validation steps - ANNOUNCEMENT.md network claim corrected: compression is local; requests still go to the provider you configured Caveman 2 stays opt-in: bin-v1.0.0 binaries and @caveman-ai/cli publish separately after this lands and soaks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BLvb5QniwYjmcawyssQNw9
2026-08-11 14:55:46 +02:00
"bin/",
"src/",
"agents/",
"skills/",
"plugins/",
"commands/",
"dist/caveman.skill",
"README.md",
feat: ship Caveman 2.0.0 — engine, proxy, SDKs, unified CLI Single-commit port of the Caveman 2 tree onto the original repo history (candidate caveman-2@88878a4 applied over main@3098342). No unrelated-history merge; original history untouched. Preserved v1 surfaces: - skills/caveman/SKILL.md byte-for-byte, plus plugin mirror and caveman.skill zip - legacy CI (Node 18/20/22 installer + Python 3.11 suites) alongside engine-ci - cli/install.js compatibility shim forwarding to bin/install.js - .codex/config.toml ships both hooks and codex_hooks for older Codex (#617) - README Trendshift + Skills.sh badges and local star-history asset - v1.10.0-pinned curl installs; benchmarks/tmp-starcharts ignore rules Fixed for public same-repo release: - SECURITY.md vulnerability reporting points at this repository - release-binaries.yml publishes to this repo via job-scoped GITHUB_TOKEN (cross-repo PAT removed); binary-release environment still gates signing - packages/cli/PUBLISHING.md rewritten for packages/ layout and same-repo flow - profile-contract and provider-catalog lanes skip lane-scope gates on initial import so the launch PR can gate on their real validation steps - ANNOUNCEMENT.md network claim corrected: compression is local; requests still go to the provider you configured Caveman 2 stays opt-in: bin-v1.0.0 binaries and @caveman-ai/cli publish separately after this lands and soaks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BLvb5QniwYjmcawyssQNw9
2026-08-11 14:55:46 +02:00
"LICENSE",
"!**/__pycache__/**",
"!**/*.py[cod]"
],
"packageManager": "pnpm@10.14.0",
"dependencies": {
"@caveman-ai/cli": "^1.1.0"
}
}