{"_id":"@jolli.ai/cli","_rev":"31-b5a0364ec7ee7b248495c6bc1a770f12","name":"@jolli.ai/cli","dist-tags":{"latest":"0.99.18"},"versions":{"0.97.4":{"name":"@jolli.ai/cli","version":"0.97.4","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"MIT","_id":"@jolli.ai/cli@0.97.4","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"}],"homepage":"https://github.com/jolliai/jolli/tree/main/tools/jollimemory#readme","bugs":{"url":"https://github.com/jolliai/jolli/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"104d723ec022bfccb18f2321ea1c3340c414e0b9","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.97.4.tgz","fileCount":34,"integrity":"sha512-gLA39WAKRQBlatlyaRiZ5nefn+ZCfXvmwxRmE8FOJqwWA672ON93cJWZzgfre/pxcO5hUVb76C5DM4CZEZ+O1w==","signatures":[{"sig":"MEYCIQD6Yf2fNRjgI5SYohQMcGUNnvE2MdZn4r1C5tNBPbL7MwIhAJ01wE4CvIuR0/pEzprq225OIjFf8LVTfIGjs0Vl4Ubg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1075596},"main":"./dist/Cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"847c9781d95e5becd4b70ee0e080310551586e88","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\""},"_npmUser":{"name":"joejolli","email":"npm@jeverest.com"},"deprecated":"Initial placeholder release; please use >=0.98.0","repository":{"url":"git+https://github.com/jolliai/jolli.git","type":"git","directory":"tools/jollimemory"},"_npmVersion":"11.9.0","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","commander":"^13.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.0.0","rimraf":"^6.0.1","vitest":"^4.1.1","typescript":"^5.7.2","@types/node":"^20.0.0","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.97.4_1776911427871_0.051552499634610616","host":"s3://npm-registry-packages-npm-production"}},"0.98.0":{"name":"@jolli.ai/cli","version":"0.98.0","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.98.0","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"fc4cc673d97264291bac541808dcf364589fb676","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.98.0.tgz","fileCount":37,"integrity":"sha512-sTQH63QzFY+xJ2FHqX5uUIG55o2TmInICuTOSPxiZ3Ba4bxCFYPakBXxhuaklAw0+kjm1v3fpVbGqbARk54cCw==","signatures":[{"sig":"MEUCIE4yCmdh3ZFR77Jv6Ml+FTY+ULUDkGPcefPwSKERh1g3AiEAk9/wBELf2+z6jd4hSY0P54ytGUhxdOUMtvHQy23bQ9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1157766},"main":"./dist/Cli.js","type":"module","engines":{"node":">=22.5.0"},"gitHead":"7a918e55f209438e8755062f84ec8de7db7d9a4f","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\""},"_npmUser":{"name":"flyerli","email":"flyer.li@jolli.ai"},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.9.0","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code / Codex / Gemini sessions","directories":{},"_nodeVersion":"24.13.0","dependencies":{"open":"^11.0.0","commander":"^13.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.0.0","rimraf":"^6.0.1","vitest":"^4.1.1","typescript":"^5.7.2","@types/node":"^22.5.0","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.98.0_1777419781320_0.8675307156693668","host":"s3://npm-registry-packages-npm-production"}},"0.99.0":{"name":"@jolli.ai/cli","version":"0.99.0","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.0","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"33bb46f95c5b71d441e48c1560a134602263ef18","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.0.tgz","fileCount":20,"integrity":"sha512-h7g1JxUmi0ZuEXqf7LN9YuCGDjHvdBNnjMzWw4MNmJL/0SHXMlcu8QNtxa1EV65oHteG5ULERT3+N/oNQB+EBg==","signatures":[{"sig":"MEYCIQCDTuYTTjyeXWeDFiVuRmD/Yy23fg0L8XKguGm+wZq5VgIhANTsYaaV0CGLz/Xnc8DNdB+2Gx3rDC0jBWnMWrgLtGJ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":657353},"main":"./dist/Cli.js","type":"module","engines":{"node":">=22.5.0"},"gitHead":"5b304d8d900eff6105c1688ad5708b6c939603dc","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","yaml":"^2.6.1","chokidar":"^4.0.0","commander":"^13.1.0","@mdx-js/mdx":"^3.1.1","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.0.0","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.0_1778656815735_0.334521776688651","host":"s3://npm-registry-packages-npm-production"}},"0.99.1":{"name":"@jolli.ai/cli","version":"0.99.1","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.1","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"40549c7ca2f708b0713dc8ff8e7762e712562d32","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.1.tgz","fileCount":20,"integrity":"sha512-3G4w7EN6Ow97CTQfp3FTB/h3+W/e8UltTGzJfSOJ78fWq5fHR0jrmxUJ9i8ZcUBQlwroIQfAs1Ta+vGDspXyeA==","signatures":[{"sig":"MEQCIFrALjQ+gXnTWaJQrsP9KZgdRlCw7rmH5myrYadNm5COAiAPMlH7d2Mnwj3Jl/+EMJPPceH3rJmXdOUF2YY9/8WLmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":657354},"main":"./dist/Cli.js","type":"module","engines":{"node":">=22.5.0"},"gitHead":"81b5a092a0b5b75880090448956274206678ae3f","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","yaml":"^2.6.1","chokidar":"^4.0.0","commander":"^13.1.0","@mdx-js/mdx":"^3.1.1","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.0.0","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.1_1778668088491_0.0657213721320391","host":"s3://npm-registry-packages-npm-production"}},"0.99.2":{"name":"@jolli.ai/cli","version":"0.99.2","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.2","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"a1c121cf44f1b9cbe8b03c9a3932a1f0ea2d2a4c","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.2.tgz","fileCount":189,"integrity":"sha512-YRNhFI+wu5PNBEQ8Z9/MFUDqaDRrBvTNHhLY0rziSR3BwdNM+npl756KBqpiqNacGMMLTo7O7MN6oVjUawJPUw==","signatures":[{"sig":"MEUCIFwywDhlHirygvxZKRVgWx+FgWfwYNv+tPV7HGXFuQp7AiEAtskMJaetdMmUYrExCeRKHnOzW+l/Wd3k8P2eF4xVATM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1360529},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"8aa6f51f4d48d04c84b7b175afa388a5c72a40fc","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.0.0","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.2_1780362339811_0.5958562615639342","host":"s3://npm-registry-packages-npm-production"}},"0.99.3":{"name":"@jolli.ai/cli","version":"0.99.3","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.3","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"086d3781b6843797ceda5f01edd38c9512e3533b","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.3.tgz","fileCount":250,"integrity":"sha512-sgwDXizJhJ+rG4Rswj/qsAm8SM/bF3+oSfEJc58QYkuBWcLBxfQgsqnyxAvCvXgxHJ+ADdCfCcfgHwYyUSFMDA==","signatures":[{"sig":"MEQCIHVFexG8l4Cfr5C47/jDJXi21d44sX/v8nViUbk+BK3JAiAqKrJjtqJpdThXfhQ/ZyYTyS0BSjgVeRKbvM6i2a0TQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1519774},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"2ddbfb262eb7be8d393f16a3ac938239886490f2","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.3_1781574194515_0.04017850438777937","host":"s3://npm-registry-packages-npm-production"}},"0.99.4":{"name":"@jolli.ai/cli","version":"0.99.4","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.4","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"474ac46a963028f6dc37885de352e8223de608b3","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.4.tgz","fileCount":289,"integrity":"sha512-87w04mmTpOzT+U1KVbozhfZqL67D3xhgxdzzD/BjYPPIlqttFLfaBjQF0/x9NAiaoBxYKQR28axyKv4xROxGsw==","signatures":[{"sig":"MEQCIAwX21Y83RJjox/QcuCaGR9VL9z9EyXr4xtDSKTheUmzAiBaaES6ITOlxC12drlrEXxMS4cSROGkeWTiSfsgeM7iTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3479004},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"5d61ea5ac3a4cf122dc97f9a8e7e0130e89006d7","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.4_1782709102165_0.7827643221338465","host":"s3://npm-registry-packages-npm-production"}},"0.99.5":{"name":"@jolli.ai/cli","version":"0.99.5","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.5","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"ef0efd35bbbb69a2a493d2ada7d925d2f1c9336d","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.5.tgz","fileCount":304,"integrity":"sha512-EBrb8Lnwl7lT+hDBAn22Husa6T1TeXRc0IU/LbEOqp4Pa3nG5kJGKfDZNR93/60W9jC5haujyE4SPzjo800PVw==","signatures":[{"sig":"MEQCIEClXaSLA4SF26w9eA43tSkR697zEiJJS5QCdt3SNoqLAiBpWEkGQPQqELRSgp5xrEeWToMfsNBBONhyfP6rQTNJ/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3617560},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"ce6b7692488be2d1436551d9008f01449018502b","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.5_1783387186915_0.259513897135343","host":"s3://npm-registry-packages-npm-production"}},"0.99.6":{"name":"@jolli.ai/cli","version":"0.99.6","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.6","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"6d54acf8ea162b87cf1e130a870aa664ab4a65f4","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.6.tgz","fileCount":305,"integrity":"sha512-bb/Bt8vDF9TNUTUWJ5UAIDI3EJUWrAQHcpqDcHg54YNhohzQP7QmS/GKGLjhFqNsXwa7pWR3fDVxqUX7v33YiA==","signatures":[{"sig":"MEUCIQDTiLdb8y5mU9zDJfn4rxXpOUtgU55rIvKxsdsy05V7tQIgbBx1ISOUbuvWtaodE8LDv8A5mBPXslM1De43QgJ3Atk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3628724},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"1c7e39ee436fcc9eb42e1415e09ae0b8815f9266","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.6_1783421779898_0.28659046930897647","host":"s3://npm-registry-packages-npm-production"}},"0.99.7":{"name":"@jolli.ai/cli","version":"0.99.7","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.7","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"a22fa76ce8dd7eb48772d64093154f798bec1e51","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.7.tgz","fileCount":326,"integrity":"sha512-osAEp75EbYeyjriBvzOBxemnrA1x0wAVSgCAMgnqRVt4CjbBrvPzbL9jQrXh2gKJJQYqAYiof/Lw/F5+jO9Mdg==","signatures":[{"sig":"MEYCIQDUohDq5D6fCA9H/bQ1M5qy0rCabwaiDAcWebwT/MNimAIhAPIJFtgjTCEkNJ3Mhuqvo+iXXU5uTVBN8iD8rhyvsGU/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3777949},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"66da17aa081c9742f316a19db0de3f4ea974fd89","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.7_1783696966402_0.7946626669345143","host":"s3://npm-registry-packages-npm-production"}},"0.99.8":{"name":"@jolli.ai/cli","version":"0.99.8","keywords":["ai","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.8","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"b171f1a36aa7f79281b4f191fd75a789d8dd00c1","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.8.tgz","fileCount":360,"integrity":"sha512-SCtLe5qv4mcpNeMChhH0gmlmL2TqGGFj1cKE5rwGBWvhtCHhsc0lAAOHvPlz+3xhHlF3qftBzAQw2LqD1I+qtw==","signatures":[{"sig":"MEYCIQDtrakaK9ZZLqN9qHv8zv40bNNGZNQqeQjB5oIYo/brTAIhAIANb/blNhVL+1nE+wCVJLwIGbu6VUG4BvaGB/wHBS6d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3942177},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"d10afa82d8828bd9d06c44c25aa08d1e95790f5d","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.8_1784288241948_0.7291042326103208","host":"s3://npm-registry-packages-npm-production"}},"0.99.9":{"name":"@jolli.ai/cli","version":"0.99.9","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.9","maintainers":[{"name":"pvn-jolliai","email":"phu.nguyen@jolli.ai"},{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"b39b5ee0a024924450e75cf2ef248fa0c6dfbfe2","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.9.tgz","fileCount":420,"integrity":"sha512-NOcibbeA//M148fIrYOMN4RXHYjBJa7L4VlfA60jchpubwjn+4mNTuY+xcYDutvuPIAwTmsaXSwYdV/a/QQeQA==","signatures":[{"sig":"MEQCIH7Rnoni4/LXMfBWycgY8onNhWoiArDVMOY9bfJGlrX9AiB88ui5Wo4CXQabadMeAgkkLzoFH9fCHZJOjU4ZCqWyAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4289094},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"b09ac5189533e2497621a5c3dd7690df10fe9c1f","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.9_1784907427003_0.2792718010316737","host":"s3://npm-registry-packages-npm-production"}},"0.99.10":{"name":"@jolli.ai/cli","version":"0.99.10","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","cursor","copilot","commit-summary","dev-memory"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.10","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"5e5e2f8dfe49c2c6dbe2d20a6e0a900d2b65e747","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.10.tgz","fileCount":456,"integrity":"sha512-IMIt7UjdFuS+nhosLFE7Upd0YAi9WxC3bFzEjE5b8/lxOYTuTQBetnH9Gc0BFPc1EJAR9zGQrt1eWkdGrZTdIg==","signatures":[{"sig":"MEYCIQDUUH2W3C55+mpjQfHroxKpZ9f+/c5RMqCo3dK7SIawowIhAJ9D+CjOABqk2KocGj4tERuGmP020uZGqUDcLAS6dzOg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4599956},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"5dcbbbe073c3c5833a18f3f8f951e766e64e4d13","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"AI development process auto-documentation tool - generates structured commit summaries from Claude Code, Codex, Gemini, OpenCode, Cursor, and Copilot sessions","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.10_1785558593880_0.49848875054878095","host":"s3://npm-registry-packages-npm-production"}},"0.99.11":{"name":"@jolli.ai/cli","version":"0.99.11","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.11","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"3ecd20a888c3c51dcc0133bd7d845ebeae0576b6","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.11.tgz","fileCount":570,"integrity":"sha512-A7yYceV79S1PhKhWEcQ7zf3atSvjvO8YE+1u5ZSMMe/kuMAcrHbXXOVNjSs1UN0d9EkJOnT2BuqgfluECY8xeg==","signatures":[{"sig":"MEQCIEVfsdPNTNC3QmwlvgsZN48IdSjCb5GOgDTP2c3tPDHnAiB2GWTteeZ8yhBq9BmqENHvuuuYw3hkOzFV88S36rmvjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5656432},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"8a7a9034b4b86e45b1c4773bb7c9ea20286207dc","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.11_1786363823093_0.4959549839723998","host":"s3://npm-registry-packages-npm-production"}},"0.99.12":{"name":"@jolli.ai/cli","version":"0.99.12","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.12","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"3bc6399e87930e3671986889613528842d92464e","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.12.tgz","fileCount":616,"integrity":"sha512-ZWWvn8sfWB2pQ6nVtGMi7uy9Hp8dePN3DjIusrx12IoTD/p/XScRYH8xLgAdzePGIUQtDwGQr0+lkmSFNDhNDg==","signatures":[{"sig":"MEQCIAEnIjQpviFXMLbr9gw/Yy/JCMj4jGWmfJ5sKxcF0iG4AiBC9iivZ41yY2PfcB/xVP08cm63hUXZqQqh8c7XOBkiJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5961790},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"04100de45ccd0592424ba06c081a7a4bc00194e7","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"deprecated":"Broken release — use 0.99.11","repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.12_1786638480754_0.6484338270074261","host":"s3://npm-registry-packages-npm-production"}},"0.99.13":{"name":"@jolli.ai/cli","version":"0.99.13","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.13","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"5c309388c7c41da55ab7fc5e1a539fe308e563d4","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.13.tgz","fileCount":650,"integrity":"sha512-C2/wKWZG7i2ht/xDnCrZJbCFrX8ISYtYwzEdSxM1g+3Wxx+ZgngFHwjH/SAtvlvS+hRoTJtQkZOqzGIVlg1e6g==","signatures":[{"sig":"MEUCIDxkCJV7X6EmQq84w5U16qZOcZ/xU0B7FpZOVqWqtF7nAiEA6pm5D8fySzguL3O8Eeqj0PCDFn1y6WxT9bzXlDZfqKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6223807},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"7b79a5bd329b9d2b6bb12e7be7568d18a3af9d23","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.13_1786725094493_0.9504241581007351","host":"s3://npm-registry-packages-npm-production"}},"0.99.14":{"name":"@jolli.ai/cli","version":"0.99.14","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.14","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"81386267b87f9c4ce93d404c88e7e6560b7cd62d","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.14.tgz","fileCount":694,"integrity":"sha512-eRWYND9iouXCpK6Gf5WUF7nvNxF2Xyp2n+bUcwOijhaHue6hSsJUIDOkv3NGOzT2daODVPnJVK1NNzK2Nh+L8Q==","signatures":[{"sig":"MEYCIQD9Dx2irmn74UZ79sZBpJGNlKwdc5ZuWdDz6YH7v97RYwIhANRo6PAxLaDRxOcGUl5m9Ea4l9o4OHDo4ZjX/iNxLbdL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDlnEUm9bR5SZhHrBQXEzHmV6X9KANl3eGmHlZj1mCeuQIgZJeDlNqQWcUqJt5K6dWsFvo8yRXJ7bCOe4ESNhDPoxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7042007},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"1066edb191f74f1367d1434e10e9a91e4985a1ed","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.14_1787341157314_0.8181515167578646","host":"s3://npm-registry-packages-npm-production"}},"0.99.15":{"name":"@jolli.ai/cli","version":"0.99.15","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.15","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"a21d87ed9099b646dd8728fa9456714a36671a19","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.15.tgz","fileCount":722,"integrity":"sha512-z0SuDyMUNzSgss9MzVPtUCDhSeiubBCidKzQWOPx1BcXfxykkzbK+o8AgKByuQ3zGzC2opHLnOKQGnjnwXYRlA==","signatures":[{"sig":"MEQCIF9a6XjFqgo3fbW0zbwmEmZAaVmjwJ7cPC3kA3g/NXH6AiB7I+bm2bXIEcRihME8gElVTOxDfNRmpa1AkM22GGAwaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBQTk9gWC4t2NF29dr5QBjVbRxXkcwGVCB1TDqrucWXGAiEAj+mc2jPsmL65v3MTWp57sSoF5k2REbggJHhlaSmCSgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7073096},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"83fcf89b2000e45c2b5dbf526a0910b8f0c34815","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.15_1787633291792_0.5141440880869652","host":"s3://npm-registry-packages-npm-production"}},"0.99.16":{"name":"@jolli.ai/cli","version":"0.99.16","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.16","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"efeb67ad3a0ca656f51948c39f9f7c87a40103c6","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.16.tgz","fileCount":752,"integrity":"sha512-lt2CkLvleUl0nGAIMVCfB5Rfyq/Tt1Sh18jyt2rjMI5h69jaIIyk7LadH0vPE91u2aL/nmAo9V+SRfTzrtcDjQ==","signatures":[{"sig":"MEUCIQC/6G0f40civZJbhe5Clv4D1zk06UHj1WSsfOofe1SBdQIgEM8YrGtIajaPyGXM1XvaWffhUa8sq5vU1J7VeIi25QM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDRwde5SyqCAy1ohFU79KBHhKWeq8b6CM1fKVAihrqyTQIgP4VEw4VGDgNpJuW6rwequbxmLo32Y6RXkA3T3RnniTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7309042},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"5c721d03ec4f664d47732e62a01906b33fcd407e","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.16_1787970347982_0.6941183670225617","host":"s3://npm-registry-packages-npm-production"}},"0.99.17":{"name":"@jolli.ai/cli","version":"0.99.17","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"author":{"name":"Jolli"},"license":"Apache-2.0","_id":"@jolli.ai/cli@0.99.17","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"bin":{"jolli":"dist/Cli.js"},"dist":{"shasum":"73cff3f89740020335aa9878aca1443432ae947a","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.17.tgz","fileCount":752,"integrity":"sha512-Ze+fUGs1PNcGwjR7xk3M8pnNcfs7K1MzGF8IzXG4M4sXNt7JKTtrlHmqxpHfdGsYlHYI5W9BtcHoC07z5EqnEw==","signatures":[{"sig":"MEUCIHMxLlO2rJiRxiGd0EHdMRZxVWvdX7HDRTdqpkfmJy5qAiEAte8dRS2wIRk5LGsHZV11KMjMx+ksPaBu+NigGbEHryA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCjXs1gHnXzt62dMRiNnONPuhq6yKB6erT3zwPMoQ/xNQIhAIsbfDn37dZEO9CEJVAU0Do/zJi9MMgZEvtv8Gf4Zs6f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7310174},"main":"./dist/Api.js","type":"module","types":"./dist/Api.d.ts","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"4aff04304b63445ad5bbe2a3c55d0bead3123354","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.1","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.99.17_1788233278868_0.9598970729109648","host":"s3://npm-registry-packages-npm-production"}},"0.99.18":{"_id":"@jolli.ai/cli@0.99.18","bin":{"jolli":"dist/Cli.js"},"bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"dist":{"shasum":"d5b8f403af8160973c5b7179a6ee720866e319c5","tarball":"https://registry.npmjs.org/@jolli.ai/cli/-/cli-0.99.18.tgz","fileCount":751,"integrity":"sha512-FXQIvOgab0t6qIXI2lrPJTfRXFBBxNhLiQZApRukroSDLovK3MTM4dONrou+RxkQ6BtOlUPvAUJxXNa+bJZHqA==","signatures":[{"sig":"MEYCIQC78IB5nXiqA+C0BC3xOZVuC3exSZXPMuBio7AvGEZatAIhAM36giw3cDs9NQok28STD+2dzWNfeywxoRlyFuU1WLGs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD90WnsCXTyYSjep8MvI+Uq2sOB3U9HwOXN0JYLKxsOzgIgHGA7PL9vF8Mf5FJZ55vuXer/Bx3JvHcL7Dsxo1X0bCg="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jolli.ai%2fcli@0.99.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7318646},"main":"./dist/Api.js","name":"@jolli.ai/cli","type":"module","types":"./dist/Api.d.ts","author":{"name":"Jolli"},"engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./api":{"types":"./dist/Api.d.ts","import":"./dist/Api.js","default":"./dist/Api.js"},"./package.json":"./package.json"},"gitHead":"d0d64d023349c681a09928713c625e754d0cea27","license":"Apache-2.0","scripts":{"all":"npm run clean && npm run build && npm run lint && npm run test","cli":"tsx src/Cli.ts","lint":"biome check --error-on-warnings","test":"vitest run --coverage","build":"vite build && tsc --project tsconfig.build.json","clean":"rimraf dist/","lint:fix":"biome check --write","cli:build":"npm run build && node dist/Cli.js","postbuild":"node -e \"require('fs').chmodSync('dist/Cli.js', 0o755)\"","test:fast":"vitest run --mode fast --coverage --reporter=dot","test:slow":"vitest run --mode slow --reporter=dot","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node -e \"require('fs').existsSync('dist/PostInstall.js') && require('child_process').spawnSync(process.execPath,['dist/PostInstall.js'],{stdio:'inherit'})\"","test:changed":"vitest run --changed origin/main --reporter=dot","test:acceptance":"vitest run --config vitest.acceptance.config.ts","gen:telemetry-doc":"tsx scripts/gen-telemetry-doc.mjs"},"version":"0.99.18","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"0aef2574-ecc9-4d3c-9dc4-81ce04da1fea"}},"homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"_npmVersion":"11.6.1","description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","directories":{},"maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"_nodeVersion":"24.10.0","dependencies":{"open":"^11.0.0","semver":"^7.8.1","commander":"^13.1.0","@orama/orama":"^3.0.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","@orama/plugin-data-persistence":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vite":"^8.0.16","rimraf":"^6.0.1","vitest":"^4.1.11","fast-check":"^3.23.2","typescript":"^5.7.2","@types/node":"^22.5.0","@types/semver":"^7.7.1","@biomejs/biome":"2.2.6","@vitest/coverage-v8":"^4.1.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.99.18_1790649907174_0.6993293754302474"}}},"time":{"created":"2026-04-23T02:30:27.762Z","modified":"2026-09-29T02:45:07.702Z","0.97.4":"2026-04-23T02:30:28.025Z","0.98.0":"2026-04-28T23:43:01.467Z","0.99.0":"2026-05-13T07:20:15.883Z","0.99.1":"2026-05-13T10:28:08.627Z","0.99.2":"2026-06-02T01:05:39.995Z","0.99.3":"2026-06-16T01:43:14.701Z","0.99.4":"2026-06-29T04:58:22.348Z","0.99.5":"2026-07-07T01:19:47.167Z","0.99.6":"2026-07-07T10:56:20.067Z","0.99.7":"2026-07-10T15:22:46.686Z","0.99.8":"2026-07-17T11:37:22.199Z","0.99.9":"2026-07-24T15:37:07.183Z","0.99.10":"2026-08-01T04:29:54.074Z","0.99.11":"2026-08-10T12:10:23.283Z","0.99.12":"2026-08-13T16:28:00.952Z","0.99.13":"2026-08-14T16:31:34.826Z","0.99.14":"2026-08-21T19:39:17.452Z","0.99.15":"2026-08-25T04:48:11.955Z","0.99.16":"2026-08-29T02:25:48.156Z","0.99.17":"2026-09-01T03:27:59.044Z","0.99.18":"2026-09-29T02:45:07.336Z"},"bugs":{"url":"https://github.com/jolliai/jolliai/issues"},"author":{"name":"Jolli"},"license":"Apache-2.0","homepage":"https://github.com/jolliai/jolliai/tree/main/cli#readme","keywords":["ai","ai-agent","coding-agent","mcp","model-context-protocol","memory","documentation","git-hooks","claude-code","codex","gemini","opencode","kimi","cursor","copilot","cline","devin","antigravity","commit-summary","dev-memory","agent-memory","persistent-memory","recall","context-engineering"],"repository":{"url":"git+https://github.com/jolliai/jolliai.git","type":"git","directory":"cli"},"description":"Automatic development memory for AI coding agents: turns your Claude Code, Codex, Gemini, Cursor, Copilot, Cline, Devin, OpenCode, Antigravity and Kimi Code sessions into structured commit summaries your agent can recall over MCP","maintainers":[{"name":"joejolli","email":"npm@jeverest.com"},{"name":"flyerli","email":"flyer.li@jolli.ai"},{"name":"summerfang-jolli","email":"summer.fang@jolli.ai"},{"name":"samli-jolli","email":"sam.li@jolli.ai"},{"name":"dougsjolli","email":"douglas.schroeder@jolli.ai"}],"readme":"# Jolli CLI\n\nThe `@jolli.ai/cli` package has two main uses:\n\n## 1. Jolli Memory — automatic AI session summaries\n\nTurns your AI coding sessions into structured development documentation attached to every commit, without any extra effort. When you work with AI agents like Claude Code, Codex, Gemini, Antigravity, OpenCode, Cursor IDE (Composer), Cursor CLI (`cursor-agent`), GitHub Copilot CLI, VS Code Copilot Chat, Cline (VS Code extension and CLI), Devin CLI, or Kimi Code, the reasoning behind every decision lives in the conversation: *why this approach was chosen, what alternatives were considered, what problems came up along the way*. The moment you commit, that context is gone. Jolli Memory captures it automatically.\n\n**Why teams pick it:**\n\n- **100% open source** — the CLI, editor integrations, and on-disk memory format are all in the open, so you can inspect how Jolli works end to end.\n- **Bring your AI agent and key** — keep using the agent you already like, with your own Anthropic key, a Jolli account, or a local agent login depending on your setup.\n- **Local-first and private** — memories are written to your repo and Memory Bank on disk first, and you decide if or when anything is synced out.\n\n**What it does:**\n\n- **Automatic capture** — after each commit, reads your AI transcripts + diff, calls the LLM, and stores a structured summary alongside the commit. The commit returns instantly; the summary is generated in a detached background process (~10–20 s).\n- **Catch up on existing history** — `jolli backfill` creates memories for commits you made before enabling Jolli.\n- **Twelve supported agents** — Claude Code, Codex, Gemini CLI, Antigravity, OpenCode, Cursor (Composer IDE + `cursor-agent` CLI), GitHub Copilot CLI, VS Code Copilot Chat, Cline (CLI + VS Code), Devin CLI, Kimi Code, and Hermes Agent.\n- **Dual storage** — every memory is written to a dedicated git orphan branch (`jollimemory/summaries/v3`, the source of truth) **and** to a human-browsable Memory Bank folder on disk (canonical JSON + Markdown).\n- **Worktree-aware** — hooks and summaries work across `git worktree` checkouts.\n- **Squash / amend / rebase safe** — a unified operation queue migrates or consolidates summaries when commits are rewritten, so memories are never lost.\n- **Session context recall** — `jolli recall` (or the `/jolli-recall` skill) loads complete branch history back into your AI agent so it can pick up where you left off. A lightweight briefing is also injected at the start of every Claude Code session.\n- **Cross-branch search** — `jolli search <keyword>` ranks every branch's memories with BM25 and returns the best-matching hits in a single pass.\n- **MCP server for AI agents** — `jolli mcp` exposes your history to Claude Code (and any MCP-aware agent) so it can search memories, recall a branch, and trace a decision's history without leaving the chat. Registered automatically on `jolli enable`.\n- **Knowledge wiki** — `jolli compile` folds the work scattered across many commits into per-topic pages and a browsable `_wiki/` folder in your Memory Bank. It rebuilds when you ask (a command, a dashboard button, or a sidebar button), and both the dashboard and the sidebar tell you how far behind it is; set `wikiRebuild=auto` to have it keep up after every commit instead.\n- **Knowledge graph** — `jolli graph` exports the wiki's topics as an interactive, self-contained HTML map of categories, knowledge units, and the typed links between them. Built incrementally alongside the wiki, so it refreshes whenever the wiki does.\n- **Issue, page & conversation references** — Linear, Jira, GitHub, Notion, Slack, Zoom, Confluence, Asana, and monday.com items mentioned in your AI conversations are captured and attached to the relevant memory, along with context7 library-documentation lookups, Vercel deployments, Figma design files, Sentry issues, and Jolli's own memory lookups (`recall` / `search` / `get_decision_timeline` — the question asked is recorded, never the memory that came back). Fifteen sources in all. Vercel, Figma, and Sentry are **track-only** — archived, displayed, and shared like any other reference but never fed to the model that writes the memory, because a failed build or a stacktrace is the *input* to the work and would read as a reason for the change. **Claude Code, Codex, and Kimi Code only:** every other supported agent's transcript format discards the tool calls this reads, so references are simply never captured there. Kimi Code covers a subset today — **Linear, GitHub, context7, Vercel, Figma, Sentry, and Jolli's own lookups**; the remaining sources are recognised by the tool names Claude's first-party connectors use, which a Kimi install does not produce.\n- **Skill usage** — the agent skills entered while doing the work are captured alongside plans, notes, and references, with their token cost and the commit they belong to. **Claude Code, OpenCode, and Kimi Code** expose a real skill tool, so *which* skills ran is observed rather than guessed on all three — but the token figure only comes with it on **Claude Code** and **OpenCode**; Kimi's transcript carries no usage data, so its rows show no token cost. **Codex** has no skill tool at all (its only signal is a shell command reading a `SKILL.md`), so its rows are flagged as heuristic and likewise carry no token figure. Every other supported agent reports nothing, for one of two reasons: Gemini, Antigravity, Cline, and Devin CLI have no skill concept on disk at all, while Cursor and GitHub Copilot CLI do ship skills but leave no record of *entering* one in anything they write to disk.\n- **Per-repo push control** — `jolli push-control` decides whether *this* repo's memories are pushed to a Jolli Space. Capture keeps running locally either way, and memory retained while pushing was off is synced when you turn it back on.\n- **Privacy-first** — transcripts and diff go straight to Anthropic (with your `apiKey`) or via the Jolli LLM proxy (in-memory, never persisted). Raw transcripts are never included when you share a memory to a team Jolli Space; mirroring them into your own personal space is a separate opt-in (`syncTranscripts`), off by default.\n\nJump to: [Jolli Memory](#jolli-memory) · [How It Works](#how-it-works) · [Installation](#installation) · [CLI Commands](#cli-commands) · [Session Context Recall](#session-context-recall) · [Configuration](#configuration) · [Privacy](#privacy)\n\n## 2. Jolli Site — documentation site generation\n\nTurns a plain folder of Markdown files and OpenAPI specs into a polished documentation site with a single command. Designed for product or API documentation alongside your code.\n\n> **Ships as a separate plugin.** Site generation lives in the `@jolli.ai/site-cli` package, not the core CLI. Install it with `npm install -g @jolli.ai/site-cli` and the host CLI discovers it automatically. Until it's installed, `jolli --help` still lists the site commands and running one prints a short install hint.\n\n**What it does:**\n\n- **Zero-config scaffolding** — `jolli new my-docs` creates a starter `Content_Folder` plus a `site.json` configuration file.\n- **Hot-reload dev server** — `jolli dev` watches your content and re-syncs Markdown, MDX, and OpenAPI changes instantly via Next.js HMR.\n- **Static builds with full-text search** — `jolli build` ships a Pagefind-indexed static site; `jolli start` builds + serves it locally.\n- **OpenAPI rich pipeline** — each endpoint compiles into a per-endpoint MDX page with auto-generated cURL / JavaScript / TypeScript / Python / Go code samples (no `swagger-ui-react` runtime).\n- **Theme packs** — choose `forge` (clean developer docs, sidebar-first, the default), `atlas` (editorial, dark serif), or `default`. Customize `accentHue`, fonts, logos, and default theme mode in `site.json`.\n- **Header / footer / sidebar config** — `header.items` supports per-item dropdowns; `footer` supports copyright, link columns, and social icons; `sidebar` overrides folder labels.\n- **Docusaurus migration** — `jolli convert` rewrites an existing Docusaurus folder to Jolli-compatible structure (with a timestamped backup when converting in-place).\n\nJump to: [Jolli Sites](#jolli-site--documentation-from-your-content-folder) · [`site.json` reference](#sitejson-reference) · [examples/](examples/)\n\n---\n\n## Use Jolli with your AI agent\n\nCoding agents read your development history over MCP. Setup is two commands:\n\n```bash\nnpm install -g @jolli.ai/cli\njolli enable            # run from your project root\n```\n\n`jolli enable` auto-registers a local MCP server named `jollimemory` into every AI host it detects on your machine — twelve of them: Claude Code, Cursor, Gemini, Antigravity, Codex, OpenCode, GitHub Copilot CLI, VS Code Copilot Chat, Cline (the VS Code extension), Devin CLI, Kimi Code, and Hermes Agent. A host qualifies by being **installed on disk**, which is deliberately a weaker test than \"Jolli can read its conversations\" — a host whose session store this runtime can't open still gets the MCP server. MCP registration is automatic: nothing to opt into, and no separate MCP install. Restart your agent afterward so it picks up the new server.\n\n**CLI-hosted, not remote.** Jolli's MCP server is a local stdio process (`jolli mcp`) that each host spawns on your own machine. There is no remote URL and no `.well-known/mcp.json` to point a cloud MCP client at, and your memories never leave your machine to be queried.\n\n**Tools your agent gets** (invoked in plain language, never called by name): `recall` and `search` (load or search your history), `get_decision_timeline`, `list_branches`, `get_pr_description`, `queue_status`, `status`, plus `bind_space`, `list_spaces`, and `push_memory` for Jolli Space.\n\n`@jolli.ai/space-cli` is optional and only needed for git-backed local workflow runs; it is not required for MCP.\n\n**Full onboarding docs:**\n\n- [Getting Started with Jolli Memory](https://docs.jollidev.com/jolli-memory/getting-started-with-jolli-memory) - install, enable, and your first memory.\n- [Connect Memory to Your AI Assistant (MCP)](https://docs.jollidev.com/jolli-memory/use-your-memory-from-any-ai-assistant-mcp) - the full per-host MCP setup.\n\n## Jolli Memory\n\n## How It Works\n\nAfter each commit, Jolli Memory reads your AI session transcripts and the code diff, calls the LLM to produce a structured summary, and stores it alongside the commit silently in the background. Your commit returns instantly — the summary is generated in the background (~10-20 seconds).\n\nJolli Memory runs entirely in the background using two types of hooks:\n\n### AI Agent Hooks — knowing which sessions are active\n\nWhen you use an AI coding agent, Jolli Memory keeps track of your active sessions so it knows where to find conversation context at commit time. Gemini's hook records only a session ID and file path. Claude's hook also scans the transcript as you work, to pick up plan files and issue references. The scan-based sources read transcript content at commit time to build the summary. See [Privacy](#privacy) for what is sent off your machine.\n\n| Agent | How sessions are tracked |\n| -- | -- |\n| **Claude Code** | A lightweight `StopHook` fires after each AI response; a `SessionStartHook` injects a mini-briefing at session start |\n| **Gemini** | An `AfterAgent` hook fires after each agent completion |\n| **Antigravity** | No hook needed — sessions are discovered automatically by reading the per-conversation SQLite for the workspace path and the sibling plaintext transcript log for the conversation content |\n| **Codex** | No hook needed — sessions are discovered automatically by scanning the filesystem. Linear/Jira/GitHub/Notion/Slack/Zoom/Confluence/Asana/monday.com/Jolli-Memory references in Codex MCP calls are extracted on the VS Code sidebar's 60s polling tick (not at commit time) |\n| **OpenCode** | No hook needed — sessions are discovered automatically by reading OpenCode's global SQLite database at `~/.local/share/opencode/opencode.db` (requires Node 22.13+) |\n| **Cursor IDE** (Composer) | No hook needed — sessions are discovered automatically by reading Cursor's local SQLite stores (`globalStorage/state.vscdb` plus per-workspace `workspaceStorage/` databases under your platform's Cursor user-data directory) |\n| **Cursor CLI** (`cursor-agent`) | No hook needed — sessions are discovered automatically from Cursor's plaintext `~/.cursor` session store (`meta.json` + JSONL); shares the **Cursor** toggle with the Composer IDE |\n| **GitHub Copilot CLI** | No hook needed — sessions are discovered automatically by scanning Copilot CLI's session log |\n| **VS Code Copilot Chat** | No hook needed — sessions are discovered automatically by reading the Copilot Chat conversation cache |\n| **Cline** (CLI + VS Code) | No hook needed — sessions are discovered automatically from Cline's local session store (the CLI's `~/.cline/data` plaintext session files and the VS Code extension's task store) |\n| **Devin CLI** | No hook needed — sessions are discovered automatically from Devin's local SQLite database (`~/.local/share/devin/cli/sessions.db`; `%APPDATA%\\devin\\cli` on Windows), scoped by working directory |\n| **Kimi Code** | No hook needed — sessions are discovered automatically from Kimi Code's local session store (`~/.kimi-code/sessions/`), with references (Linear, GitHub, context7, Vercel, Figma, Sentry, and Jolli's own lookups) and skill usage extracted from its `wire.jsonl` transcript |\n\n### Git Hooks — generating summaries on commit\n\nWhen you run `git commit`, three standard git hooks handle the rest:\n\n1. **Before the commit** (`prepare-commit-msg`): detects if this is a squash operation so existing memories can be merged instead of regenerated\n2. **After the commit** (`post-commit`): detects the operation type (commit, amend, squash, cherry-pick, revert), enqueues it, and spawns a background worker that reads the AI conversation + code diff, calls the LLM, and writes the summary\n3. **After rebase/amend** (`post-rewrite`): enqueues migration entries so summaries are re-associated with the new commit hashes\n\nEvery memory is dual-written to **both** the git orphan branch `jollimemory/summaries/v3` (the source of truth — completely separate from your code history) and the **Memory Bank** folder on disk, so you always have a plain-Markdown copy you can read, `grep`, or pipe into other tools without going through the CLI. The Memory Bank folder has two layers — a hidden `<localFolder>/<repo>/.jolli/summaries/<commitHash>.json` for canonical JSON, and a visible `<localFolder>/<repo>/<branch>/<slug>-<hash8>.md` for human-readable Markdown — and `<localFolder>` is your configured Memory Bank root (one root can hold multiple repos, each in its own `<repo>/` subfolder). Raw AI conversation transcripts are dual-written the same way — to `transcripts/<commitHash>.json` on the orphan branch and to `<localFolder>/<repo>/.jolli/transcripts/<commitHash>.json` in the Memory Bank folder.\n\n**Worktree-aware:** hooks and summaries work across `git worktree` checkouts — each worktree tracks its own current branch and its memories stay consistent.\n\n## Installation\n\n**Requirements** — **Node.js 22.13 or later**. SQLite-backed features (the local dashboard, plus OpenCode/Cursor/Copilot/Devin/Antigravity session discovery) use Node's built-in `node:sqlite`. That module first appears in 22.5 but needs `--experimental-sqlite` until **22.13**, where it loads unflagged — and two surfaces cannot pass a Node flag at all (the VS Code extension host, and the git hooks, which run `node <Hook>.js` deliberately flag-free). So 22.13 is the floor the `engines` field enforces. If you are on Node 18 or 20, please upgrade before installing.\n\n```bash\nnpm install -g @jolli.ai/cli\n```\n\nAfter installation:\n\n```bash\n# Enable Jolli Memory in your project (from the project root)\njolli enable\n\n# Verify installation\njolli status\n```\n\n> **Prefer Claude Code or Codex?** Jolli also ships as a **Claude Code plugin** and a **Codex plugin**, each packaging the git hooks, the `jollimemory` MCP server, and the Jolli skills — add one from its plugin marketplace and it installs the same repo hooks (`jolli enable --repo-hooks-only`) without a separate CLI setup. On Codex the MCP tools are registered by the bootstrap rather than the manifest, so they become available from your second session onward. Install surfaces (CLI, VS Code, and the plugins) compete on version, so whichever is newest drives your hooks.\n\n## Quick Start\n\n```bash\n# 1. Enable Jolli Memory — you'll be prompted to sign in or enter an API key\njolli enable\n\n# 2. Restart your AI agent for the hooks to take effect\n\n# 3. Work with your AI agent, make commits, then view summaries\njolli view\n```\n\n## CLI Commands\n\n### `jolli enable`\n\nInstalls all hooks required for automatic summarization:\n- **Claude Code Stop hook** in `.claude/settings.local.json` — captures session/transcript info\n- **Claude Code SessionStart hook** — injects a mini-briefing at session start\n- **Git post-commit hook** — triggers summary generation\n- **Git post-rewrite hook** — migrates summaries on amend/rebase\n- **Git prepare-commit-msg hook** — detects squash operations\n- **Gemini AfterAgent hook** (if Gemini CLI detected) — tracks Gemini sessions\n- **MCP server registration** — registers the `jollimemory` MCP server into every AI host Jolli detects (Claude Code and Cursor per-repo; Gemini, Antigravity, Codex, OpenCode, Copilot CLI, Copilot Chat, Cline, and Devin CLI machine-wide) so your agent can query your memories (see [`jolli mcp`](#jolli-mcp))\n- **Skill preference** *(opt-in)* — can teach your AI agent to reach for Jolli by default when creating a PR, searching past work, or recalling a branch, by writing to your machine-global instruction files (`~/.claude/CLAUDE.md`, `~/.gemini/GEMINI.md`, `~/.codex/AGENTS.md`). `jolli enable` no longer prompts — it only applies a decision you've already made. Turn it on with `jolli configure --set globalInstructions=enabled` (or the editor toggle); it stays off until you do.\n\n```bash\njolli enable\n```\n\n### `jolli disable`\n\nRemoves all Jolli Memory hooks. Existing summaries are preserved in the orphan branch.\n\n```bash\njolli disable\n```\n\n### `jolli uninstall`\n\nMachine-wide cleanup: finds and removes Jolli Memory installs and configuration across surfaces — VS Code–family extensions (including forks like Cursor, Windsurf, VSCodium), JetBrains/Android Studio plugins, the global `@jolli.ai/cli` package and `jolli` shim, the machine-global `~/.jolli/jollimemory/` and per-project `.jolli/jollimemory/` state, and the current repo's hooks and **repo-scoped** MCP registration. Prints a grouped inventory first and supports interactive selection.\n\nA few shared artifacts are deliberately left in place: **global-scope MCP registrations** (the Gemini / Antigravity / Codex / OpenCode / Copilot CLI / Copilot Chat / Cline / Devin CLI host files) and the **global instruction blocks** in `~/.claude/CLAUDE.md` / `~/.gemini/GEMINI.md` / `~/.codex/AGENTS.md` are shared by every repo on the machine, so removing them during one uninstall would break Jolli for your other repos; and the generated `SKILL.md` files are left untouched because they may sit alongside skills of your own. Remove those by hand if you want a completely bare machine.\n\nYour memories are never touched — the summaries orphan branch and Memory Bank content are excluded by construction.\n\n```bash\njolli uninstall              # preview + interactive selection\njolli uninstall --dry-run    # show what would be removed, change nothing\njolli uninstall --yes --scope all   # remove everything without prompting\n```\n\n### `jolli auth`\n\nManage authentication with your Jolli account. Authentication enables cloud sync and team features.\n\n```bash\n# Log in to your Jolli account (opens browser)\njolli auth login\n\n# Show current authentication state\njolli auth status\n\n# Clear stored credentials\njolli auth logout\n```\n\nThe login flow opens your default browser for OAuth authentication. After completing sign-in, the browser tab closes automatically and the CLI receives your credentials.\n\n**How it works**: The CLI starts a temporary local server on a random available port, opens the browser to the Jolli auth page, and waits for the OAuth callback. On success, the auth token and a `jolliApiKey` (`sk-jol-...`) are automatically generated and stored in `~/.jolli/jollimemory/config.json`. The `jolliApiKey` is used for LLM proxy calls and cloud sync — no manual API key configuration needed.\n\n**Where sign-in goes**: `https://auth.jollidev.com` by default. Set `JOLLI_URL` to sign in somewhere else (a staging or self-hosted Jolli); it must be an HTTPS address on a Jolli domain. A key saved from the old `jolli.ai` address can no longer sign in, so the CLI treats it as signed out — run `jolli auth login` again. If Jolli was your AI provider, that setting is cleared with the key until you sign back in.\n\n### `jolli status`\n\nShows the current installation status, including CLI version, hook state, authentication state, active sessions, supported integrations (Claude, Codex, Gemini, Antigravity, OpenCode, Cursor, Copilot CLI, Copilot Chat, Cline, Devin CLI), Memory Bank state, whether this repo pushes to a Jolli Space, and summary count.\n\n```bash\njolli status\njolli status --json   # machine-readable output\n```\n\n### `jolli push-control`\n\nShows or sets whether **this** repo's memories are pushed to a Jolli Space. Capture is unaffected either way — turning push off keeps recording memories locally and only blocks outbound sync, both automatic and manual. Repos are allowed by default; anything retained while push was off is synced on the repo's next activity after you re-enable it. The VS Code extension exposes the same control for every tracked repo under **Settings → Sync to Jolli**.\n\n```bash\n# Show this repo's state\njolli push-control\n\n# Stop sending this repo's memories (they are still recorded locally)\njolli push-control --disable\n\n# Resume, and sync whatever was retained while it was off\njolli push-control --enable\n\n# Machine-readable\njolli push-control --format json\n```\n\nIf the setting store can't be read, every repo fails closed to **OFF** and the command tells you which file to repair. `--enable` also rebuilds the store, but from an empty set — it drops every repo's opt-out, so repair the file first if you have others turned off.\n\n### `jolli view`\n\nDisplays stored commit summaries. Default mode shows a compact list; use `--commit` for full detail.\n\n```bash\n# Show a compact list of recent commits (default: 10)\njolli view\n\n# Show the 20 most recent entries\njolli view --count 20\n\n# View full summary for the latest commit (numeric index: 1 = latest)\njolli view --commit 1\n\n# View full summary by commit SHA\njolli view --commit abc123def456\n\n# Export a summary to file\njolli view --commit 1 --output summary.md\n\n# JSON output\njolli view --commit 1 --format json\n```\n\n### `jolli export`\n\nExports every memory on the current branch as Markdown files into `~/Documents/jollimemory/`. Handy for sharing summaries or archiving them outside your git history.\n\n```bash\njolli export\n```\n\nOne `.md` file is written per commit, named after the commit and its short message.\n\n### `jolli recall`\n\nRecalls development context for a branch. Default output is a **terminal-friendly short summary** (branch name, commit count, topic counts, key decisions, top files); pass `--full` or `--output` to produce full markdown suitable for feeding to an AI agent. Also used by the `/jolli-recall` skill.\n\n```bash\n# Short summary for the current branch\njolli recall\n\n# Short summary for a specific branch\njolli recall feature/auth-refactor\n\n# Full markdown context (printed to terminal — can be large)\njolli recall --full\n\n# Full markdown written to a file (implies --full).\n# Use any path you like — the file is for sharing, CI archival,\n# or feeding to any AI agent. The tool will create parent dirs as needed.\njolli recall --output jollimemory-context.md\n\n# List all recorded branches\njolli recall --catalog\n\n# JSON output for skills/agents — structured RecallPayload, not pre-rendered markdown\njolli recall --format json\n\n# With token budget and JSON output (the payload is trimmed to fit the budget)\njolli recall --budget 30000 --format json\n```\n\n`--format json` returns a structured **`RecallPayload`** with discrete fields (`stats`, `plans[]`, `notes[]`, summaries…) so an agent skill can run its own grounded synthesis directly on the data instead of re-parsing a markdown blob. When `--budget` is set, lower-priority fields are trimmed first so the payload fits within the budget without truncating mid-record.\n\n### `jolli search`\n\nSearches stored memories with BM25 ranking (Orama) over the distilled summaries and returns the best-matching hits in a single pass. Each hit carries its `hash`, `branch`, `commitDate`, `slug`, `title`, and a content `snippet`, plus a relevance `score` and a `type` (`topic` or `commit`).\n\n```bash\n# Search every branch's memories\njolli search \"rate limiter\"\n\n# Cap hits, JSON for skills/agents\njolli search \"auth refactor\" --limit 5 --format json\n\n# Restrict to one branch and one result kind\njolli search \"rate limiter\" --branch feature/auth --type topic --format json\n```\n\nAvailable flags: `--limit` (max hits, default 20), `--branch` (restrict to one branch), `--type` (`topic` or `commit`), `--format` (`json` default; `text` for terminal-friendly output), `--output`, `--cwd`. With no `--branch`, every branch in the repo is searched.\n\n### `jolli mcp`\n\nStarts a Model Context Protocol (MCP) server over stdio so AI agents can query your memories directly. It exposes ten tools: **search** (full-text search over your historical decisions and implementations), **recall** (load a branch's complete context), **get_decision_timeline** (trace how one decision evolved across commits), **list_branches** (catalog of branches that have memories), **get_pr_description** (build a PR title and description from a branch's memories), **queue_status** (report whether summary generation is still in progress — call before building a PR so fresh commits are included), **status** (installation & configuration health for this repo — hooks, migration state, account/API-key configuration, detected integrations, and stored-memory count, the same data as `jolli status`), **bind_space** (bind this repo to a Jolli Space), **list_spaces** (list the Jolli Spaces you can bind to), and **push_memory** (push a branch's memories to the bound Jolli Space as articles).\n\n```bash\n# Start the server (normally launched by your agent, not by hand)\njolli mcp\n\n# Rebuild the local search index from source and exit\njolli mcp --reindex\n```\n\nOn top of these ten built-in tools, the server also surfaces **platform tools** defined by the Jolli backend (on by default), so a connected agent can act on your Jolli Space directly. Turn them off with `jolli configure --set mcpPlatformToolsEnabled=false`.\n\n`jolli enable` registers this server automatically in your project's `.mcp.json`, so Claude Code picks it up on its next start — no manual setup. The search index is a disposable local cache (never written to the orphan branch); `--reindex` forces a fresh rebuild if you ever want to clear it.\n\n**One server per worktree, not per session.** Each AI session still launches `jolli mcp` the same way, but that process is now a thin forwarder onto a single shared background server per git worktree, so opening several sessions on one checkout no longer loads your memories once per session. The shared server shuts itself down a few minutes after its last session disconnects, and a newer Jolli install takes over from an older one automatically. If a session cannot reach it for any reason it silently serves that session on its own, so nothing depends on the daemon being up. Set `JOLLI_MCP_NO_DAEMON=1` to opt a host out entirely.\n\n### `jolli compile`\n\nBuilds your **knowledge wiki**: it ingests the memories that have accumulated across your commits and folds work on the same theme into per-topic pages, so a feature touched by ten commits reads as one evolving page instead of ten disconnected entries. The canonical topic pages are stored alongside your other memories, and a browsable `_wiki/` folder is generated in your Memory Bank. These topic pages also back the MCP server's `search` and `get_decision_timeline` tools.\n\n```bash\n# Compile every repo under your Memory Bank folder (the default sweep)\njolli compile\n\n# Compile just one repo\njolli compile --cwd /path/to/repo\n\n# Discard a repo's wiki and replay every source from scratch\njolli compile --cwd /path/to/repo --rebuild\n```\n\n**The wiki rebuilds when you ask it to, not after every commit.** Rebuilding costs an AI call per new source, so Jolli leaves the timing to you: commits and merges record what is pending, and you fold it in when it suits. There are three ways to do that — this command, the **Rebuild** button on the dashboard's Knowledge and Graph pages, and the **Build Knowledge Wiki** button in the editor extensions — and all three do the same incremental fold. Both the dashboard and the VS Code sidebar show how far behind you are (\"N updates behind · rebuilt X ago\") so you don't have to guess. If you'd rather it keep up on its own after every commit, set `jolli configure --set wikiRebuild=auto`. Requires an API key (same as summary generation).\n\n### `jolli graph`\n\nExports your **knowledge graph** — an interactive visualization of the topics in your knowledge wiki — to a self-contained HTML file you can open in any browser or hand to a teammate. The graph shows your categories, the knowledge units inside each (decisions, mechanisms, fixes), and the typed relationships between them (`extends`, `caused-by`, `supersedes`, `contradicts`, `related-to`). Click a unit to zoom in and surface its related neighbors.\n\n```bash\n# Write <repo>-graph.html into a directory\njolli graph --export ./out\n\n# Write to a specific file and open it in the browser\njolli graph --export ./out/graph.html --open\n\n# Target a specific repo\njolli graph --export ./out --cwd /path/to/repo\n```\n\nThe graph is built right after the knowledge wiki, so it refreshes whenever the wiki does — on a `jolli compile`, a **Rebuild** click, or every commit if you set `wikiRebuild=auto`. Updates are incremental: only topics whose content changed are re-distilled, so it catches up without a full rebuild. It's stored folder-locally (`<localFolder>/<repo>/.jolli/graph/graph.json`) and regenerable, never written to the orphan branch. Run `jolli compile` first if a repo has no graph yet. The editor extensions expose the same visualization via a **View knowledge graph** button.\n\n### `jolli configure`\n\nManages settings stored in `~/.jolli/jollimemory/config.json`. API keys are masked in the display output.\n\n```bash\n# Show all current settings\njolli configure\n\n# List all available config keys with descriptions\njolli configure --list-keys\n\n# Set one or more values (repeat --set as needed)\njolli configure --set apiKey=sk-ant-... --set model=claude-haiku-4-5-20251001\n\n# Set array values (comma-separated)\njolli configure --set excludePatterns=docs/**,*.log,node_modules\n\n# Remove a value\njolli configure --remove jolliApiKey\n```\n\nSupported keys: `apiKey`, `aiProvider`, `localAgentTool`, `localAgentPath`, `localAgentModel`, `model`, `maxTokens`, `jolliApiKey`, `authToken`, `claudeEnabled`, `codexEnabled`, `geminiEnabled`, `openCodeEnabled`, `cursorEnabled`, `copilotEnabled`, `clineEnabled`, `devinEnabled`, `antigravityEnabled`, `kimiEnabled`, `globalInstructions`, `mcpPlatformToolsEnabled`, `localFolder`, `logLevel`, `excludePatterns`, `syncTranscripts`, `syncSessions`, `syncOnPush`, `syncPollIntervalSec`, `slack.workspaceUrl`. `globalInstructions` (`enabled` / `disabled`, unset = undecided) records whether the skill-preference note is written into your machine-global AI instruction files. Setting it to `enabled` writes the block immediately; `disabled` removes it. `jolli enable` never prompts — it only applies the current value (`enabled` → write, `disabled` → remove, unset → no change). `aiProvider` pins the summarization backend (`\"anthropic\"`, `\"jolli\"`, or `\"local-agent\"`); when omitted, the dispatcher falls back to the legacy precedence (`apiKey` > `ANTHROPIC_API_KEY` > `jolliApiKey`). `local-agent` drives a locally-installed AI CLI to generate memories instead of calling an API — `localAgentTool` selects which one (`claude-code` (default), `codex`, `cursor-agent`, `opencode`, or `kimi`) and `localAgentPath` optionally points at the binary when it isn't on your `PATH`. `localAgentModel` pins which model the agent is told to run, for the tools jollimemory pins one for (`claude-code` and `codex` today) — for Claude Code `sonnet` by default, or `haiku` / `opus`; for Codex `gpt-5.6-terra` by default, or `gpt-5.6-luna` / `gpt-5.6-sol` / `gpt-5.5`; and `inherit` on either to send no model flag and run whatever the tool is configured with. The other three tools always inherit. A value the tool in force does not offer falls back to that tool's own default rather than being sent. This is a different setting from `model`, which names an Anthropic API model for the `anthropic` / `jolli` providers and does not reach this one. Two things do differ by tool: only `claude-code` is capability-probed with the real run flags, and `opencode` deliberately keeps your provider credentials in its environment, so it spends your own provider credit. `copilotEnabled` controls both GitHub Copilot CLI and VS Code Copilot Chat as a single switch, and `cursorEnabled` likewise covers both Cursor's Composer IDE and the `cursor-agent` CLI. `clineEnabled`, `devinEnabled`, `antigravityEnabled`, and `kimiEnabled` enable the Cline, Devin CLI, Antigravity, and Kimi Code CLI sources respectively. `mcpPlatformToolsEnabled` (boolean, on by default) controls whether the `jolli mcp` server surfaces the backend-defined platform tools; set it to `false` to expose only the built-in tools. `localFolder` is the Memory Bank root on disk where every memory is dual-written. `syncTranscripts` opts raw transcripts into cloud sync — see [Memory Bank cloud sync](#memory-bank-cloud-sync) below; run a round on demand with `jolli sync-memory-bank`. `syncSessions` controls the separate derived session-statistics channel described under [Privacy](#privacy); it defaults on and can be disabled with `jolli configure --set syncSessions=false`. Run `jolli configure --list-keys` for descriptions and types. Unknown keys and malformed values (e.g. `maxTokens=8192abc`, `logLevel=banana`) are rejected with exit code 1.\n\n### Memory Bank cloud sync\n\nMemory Bank cloud sync keeps your personal Memory Bank consistent across every device you sign in to. The sync engine mints credentials from Jolli, clones a private vault repo, mirrors your Memory Bank folder, and pushes. **Sync is on-demand** — there is no background timer running by default. You trigger a round either way:\n\n```bash\n# Sync this repo's Memory Bank with your Personal Space (needs jolliApiKey — sign in with `jolli auth login`)\njolli sync-memory-bank\n\n# Include raw transcripts in this round (overrides syncTranscripts=false)\njolli sync-memory-bank --transcripts\n```\n\n…or, in the VS Code extension, click **Sync to Personal Space Now** in Settings. The CLI bundles the same engine (`cli/src/sync/` compiles into `dist/Cli.js` and is inlined into the VS Code extension). The only precondition is a valid `jolliApiKey`. Because the terminal has no diff viewer, the CLI **skips** conflicting files rather than prompting and prints their paths so you can resolve them in your editor.\n\nThe vault is an implementation detail; the user-facing surface is an on/off toggle, a \"Sync now\" button, and a four-state status indicator (`synced` / `syncing` / `conflicts` / `offline`). Conflicts on the four `.jolli/<aggregate>.json` files (manifest, index, branches, catalog) auto-merge deterministically; other-file conflicts run through an AI merge (when `apiKey` is set) and finally a manual binary pick.\n\n### `jolli doctor`\n\nDiagnoses **faults** that impair functionality and (with `--fix`) auto-repairs them. Checks: git hooks installed, Claude/Gemini hooks installed, orphan branch reachable, lock file not stuck, active session count, active git queue not overloaded, API key configured, dist-path resolvable.\n\n```bash\n# Run all diagnostic checks\njolli doctor\n\n# Auto-fix failures (release stuck lock, reinstall missing hooks)\njolli doctor --fix\n\n# List the database snapshots you can restore from, then restore one\njolli doctor --recover\njolli doctor --recover --from ~/jolli_back/memory-20260813T020000Z-1a2b3c4d.db\n\n# Print the memory database's migration log — what ran, when, and how it went\njolli doctor --schema-log\n\n# Record one migration as already applied by other means (see --schema-log)\njolli doctor --mark-migration <name>\n```\n\n`--schema-log` also flags any migration whose recorded text disagrees with the build you are running. That is a warning, never a refusal: a newer or older database is still opened and written normally. `--mark-migration` exists for the one state that cannot be repaired by re-running — the log lost a row while the change it describes is already in place, so a normal open would try to apply it again and fail. Deleting the database is never the answer; memories rebuild from git, but session usage and recall history have no second copy.\n\nDoctor also reports **stranded memory trees** — memories left under a commit hash an amend, rebase or squash removed from your branch. `--fix` deliberately does not repair those: that repair can call the AI model, cost money and take tens of seconds, while every other `--fix` action is instant and free. Run [`jolli repair-memory`](#jolli-repair-memory) instead.\n\nDoctor is deliberately narrow — it only flags conditions that *break* Jolli Memory. Stale-but-harmless data (old sessions, orphan files from amend/squash) is handled by `clean`.\n\n### `jolli clean`\n\nRemoves redundant/expired data that accumulates over time but never breaks functionality:\n\n- **Orphan summary files** — after amend/squash, old commits' summary files remain on the orphan branch but their content is already embedded as `children` in the new root's summary\n- **Orphan transcript files** — same story for transcripts\n- **Stale sessions** — session tracking entries older than 48 hours\n- **Stale git queue entries** — older than 7 days\n- **Stale squash-pending.json** — older than 48 hours\n\n```bash\n# Preview what would be removed (no confirmation, no deletion)\njolli clean --dry-run\n\n# Run interactively — shows a summary, asks to confirm (default: N)\njolli clean\n\n# Skip the confirmation prompt (required in CI / non-interactive shells)\njolli clean --yes\n```\n\n**Safety**: in a non-TTY environment (CI, pipes, redirected stdin), `clean` refuses to delete without `--yes` and exits with code 1. This prevents scripts from silently wiping data.\n\n### `jolli heal-folder`\n\nRestores missing Markdown files in the Memory Bank folder by re-rendering them from the canonical hidden JSON (`<localFolder>/<repo>/.jolli/summaries/<hash>.json`). Useful when you (or another tool) accidentally deleted a `.md` file you wanted to keep — the orphan-branch entry and the hidden JSON remain authoritative, so re-rendering brings the visible Markdown back without re-running the LLM.\n\n```bash\n# Heal the current repo's Memory Bank folder\njolli heal-folder\n\n# Heal a specific project directory\njolli heal-folder --cwd /path/to/repo\n```\n\nHealing is also exposed by the editor extensions; running the CLI form is equivalent.\n\n### `jolli backfill`\n\nCreates memories for commits you made before enabling Jolli, so your existing history shows up too. Each commit is matched to the Claude transcripts recorded around it.\n\n```bash\n# Catch up on your recent commits (last 20 by default)\njolli backfill\n\n# Go further back, or cover everything\njolli backfill --last 50\njolli backfill --all\n\n# See what would be matched, without creating anything\njolli backfill --dry-run\n```\n\nClaude transcripts for now. Requires an API key (same as summary generation). The editor extensions offer to run this for you when you enable Jolli in a repo that already has commits.\n\n### `jolli dashboard`\n\nServes a private web dashboard from your machine and opens it in your browser: your memories, per-repo stats, and a standup summary. Everything is served locally from your own data — nothing is uploaded. The command keeps running until you stop it with **Ctrl+C**.\n\nAlongside **My Dashboard** it carries a **Daily Standup**, a **Memories** list, a **Knowledge** view that browses your knowledge wiki page by page, and a **Graph** view that renders the knowledge map in place (no `jolli graph --export` step needed). The **Journeys** page now opens as a compact coaching roster: plan-first share, top skill, cost, and recall for the selected window, with the smoothest and hardest journeys expanded inline and the full feed loaded on demand in a modal instead of in the initial page payload. A repo picker in the topbar switches between the repositories you have registered — there is no separate Repositories page. Tool-usage rows break down per agent, so you can see which agent made which calls, and a list you open with **Show more** stays open across the page's 30-second refresh. When your knowledge wiki has fallen behind, a banner says how far (\"N updates behind · rebuilt X ago\") and rebuilds it on one click. A **Settings** modal mirrors the editor extensions' five sections — AI Agents, AI Summary, Sync to Jolli, Memory Bank, Others — saved through a single **Apply**; API keys are held server-side and only masked values ever reach the page.\n\nOn start-up it also looks back over the last 7 days of your AI agents' own session history, so conversations that were never recorded at the time still show up, and prints one line saying what it picked up.\n\n```bash\n# Serve the dashboard and open it in your browser (Ctrl+C to stop)\njolli dashboard\n\n# Print the URL instead of opening a browser (still serves until Ctrl+C)\njolli dashboard --no-open\n\n# Pick a port (default: 1818, then 18118 if taken)\njolli dashboard --port 3000\n```\n\nThe server lives in this command's own process, so closing the terminal stops it. That also means the command does not return on its own — including with `--no-open` — so a script or CI job that runs it will block until something stops it. Requires Node 22.13+ (it reads a local SQLite database).\n\nLaunching it again replaces the dashboard that is already running rather than starting a second one beside it, so you always get a fresh server on the address you expect. Only a Jolli dashboard is ever stopped: an unrelated service holding port 1818 is left alone and the new dashboard moves to 18118 instead.\n\n### `jolli cutover`\n\nMakes a local SQLite database this repo's source of truth instead of the git orphan branch.\n\n```bash\n# See where this repo stands, changing nothing\njolli cutover --status\n\n# Perform (or resume) the switch\njolli cutover\n\n# After cutover: check the frozen orphan branch for drift\njolli cutover --probe\n```\n\n**This is effectively one-way.** Cutover freezes the repo's orphan branch, and `jolli enable` will not unfreeze it — only an explicit manual path in `jolli doctor` can. Run `--status` first; it reports the current repo only, not a list across repos. `--probe` reports any writer that has moved a frozen branch since cutover (an old client, or an IDE that was never restarted).\n\n### `jolli repair-memory`\n\nReattaches memory trees that an amend, rebase or squash left behind.\n\nWhen a commit is rewritten, its memory has to move to the new commit hash. If that\nmigration did not happen, the old memory stays mounted under a hash your branch no\nlonger has: the conversations, skills and topics are all still there, one hash away,\nwhile the new commit shows either no memory or a thin one with nothing in it. Nothing\nreported this before — `jolli doctor` now warns when it finds one, and this command\nfixes it.\n\n```bash\n# Show what would be repaired, changing nothing\njolli repair-memory --status\n\n# Repair\njolli repair-memory\n\n# When the reflog can no longer pair the two hashes, say so yourself\njolli repair-memory --from <old-hash> --to <new-hash>\n\n# Merge squashed sources without calling the AI model\njolli repair-memory --no-llm\n```\n\n`--status` lists, per stranded memory: what it would do, the commit it would attach to,\nhow many conversations and skills that brings back, and whether it needs an AI call.\nRunning without `--status` performs the repair, including the AI consolidation a squash\nneeds — `--no-llm` merges those mechanically instead.\n\nEvery memory the repair is about to overwrite is copied to\n`.jolli/jollimemory/repair-backups/<timestamp>/` first. Repairing twice is safe: the\nsecond run finds nothing to do.\n\nPairing comes from your git reflog, which is per-clone and expires (90 days by default),\nso on a fresh clone or an old rewrite there may be nothing to pair with. That is what\n`--from/--to` is for. Jolli never guesses a target: if the commit you name does not\nexist, or is itself unreachable, the command refuses rather than moving the memory\nsomewhere it would be stranded again.\n\n## Session Context Recall\n\nJolli Memory feeds prior development context back into your AI agent so it can pick up where you (or a teammate) left off.\n\n**Automatic briefing** — every time a new Claude Code session starts, a lightweight briefing (~300–500 tokens) is injected into the conversation: branch name, commit count, date range, and last commit message. If it has been more than 3 days since the last commit, it suggests running the full recall command. This runs in under 200 ms and never blocks session startup.\n\n**Full recall** — run `/jolli-recall` inside Claude Code (or any agent that supports it) to load the complete branch history: summaries, plans, decisions, and file-change statistics (default budget ≈ 50,000 tokens; pass `--budget` to adjust). The agent then reports what the branch is implementing, key technical decisions, what was last worked on, and the main files involved — so you can continue without re-reading the code.\n\nIf the current branch has no memories, the command shows a catalog of branches that do, letting you pick one to recall. You can also pass a branch name or keyword as an argument (e.g. `/jolli-recall auth-refactor`).\n\n**Targeted search** — run `/jolli-search <keyword>` (or `jolli search <keyword>` from the terminal) to search across every branch's memories. The raw CLI returns BM25-ranked hits (hash, branch, slug, title, snippet) in a single pass.\n\n## Configuration\n\nSettings are stored globally in `~/.jolli/jollimemory/config.json`. The recommended way to manage them is via `jolli configure` — see [the command reference above](#jolli-configure) — which validates keys and types and masks secrets on display.\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `apiKey` | string | `$ANTHROPIC_API_KEY` | Anthropic API key for summarization ([get one here](https://platform.anthropic.com/)) |\n| `aiProvider` | enum | (auto) | Pin which provider generates summaries: `\"anthropic\"` (use `apiKey` / `$ANTHROPIC_API_KEY`), `\"jolli\"` (use `jolliApiKey`), or `\"local-agent\"` (drive a locally-installed AI CLI). When unset, the resolver falls back to the legacy precedence (`apiKey` → `$ANTHROPIC_API_KEY` → `jolliApiKey`). Each generated summary records the chosen source in its `LlmCallMetadata.source` field (`anthropic-config` / `anthropic-env` / `jolli-proxy` / `local-agent`). |\n| `localAgentTool` | enum | `claude-code` | Which local Agent CLI to drive when `aiProvider` is `\"local-agent\"`: `claude-code`, `codex`, `cursor-agent`, `opencode`, or `kimi`. Only `claude-code` is capability-probed with the real run flags; `opencode` runs on your own provider credentials. Ignored when `aiProvider` is anything else. |\n| `localAgentModel` | enum | per tool | Which model the local agent is told to run, for the tools jollimemory pins one for. Claude Code: `haiku`, `sonnet` (default), `opus`. Codex: `gpt-5.6-luna`, `gpt-5.6-terra` (default), `gpt-5.6-sol`, `gpt-5.5`. `inherit` on either sends no model flag, so the tool runs whatever it is configured with — the pre-0.99 behaviour, kept as an explicit choice. One shared field: a value the tool in force does not offer falls back to that tool's own default. The two Settings panels store it as unset when it equals that default; `jolli configure --set` stores what you type verbatim, default included — typing a name is a choice, selecting the default option in a picker is the absence of one. The difference shows when a default rotates: an unset value follows the new default, a literal one stays on the model you named. Distinct from `model`, which names an Anthropic API model for the `anthropic` / `jolli` providers and does not reach this one. Ignored for a tool with no pinned models. |\n| `localAgentPath` | string | (PATH) | Explicit path to the local agent binary, overriding `PATH` discovery. Used only when `aiProvider` is `\"local-agent\"`. |\n| `model` | string | `claude-sonnet-4-6` | Model used for summarization. Accepts an alias (`sonnet`, `haiku`) or a full model ID. |\n| `maxTokens` | integer | model default | Max output tokens per summarization call |\n| `jolliApiKey` | string | — | Jolli Space API key for pushing summaries to your team knowledge base |\n| `authToken` | string | — | OAuth auth token (set automatically by `jolli auth login`) |\n| `logLevel` | enum | `info` | Log level for `debug.log`: `debug`, `info`, `warn`, `error` |\n| `claudeEnabled` | boolean | auto-detect | Enable Claude Code session tracking |\n| `codexEnabled` | boolean | auto-detect | Enable Codex session discovery |\n| `geminiEnabled` | boolean | auto-detect | Enable Gemini session tracking |\n| `openCodeEnabled` | boolean | auto-detect | Enable OpenCode session discovery (requires Node 22.13+) |\n| `cursorEnabled` | boolean | auto-detect | Enable Cursor session discovery — covers both the Composer IDE and the `cursor-agent` CLI (single shared switch) |\n| `copilotEnabled` | boolean | auto-detect | Enable GitHub Copilot CLI **and** VS Code Copilot Chat session discovery (single shared switch) |\n| `clineEnabled` | boolean | auto-detect | Enable Cline session discovery (CLI + VS Code extension) |\n| `devinEnabled` | boolean | auto-detect | Enable Devin CLI session discovery |\n| `antigravityEnabled` | boolean | auto-detect | Enable Antigravity session discovery |\n| `kimiEnabled` | boolean | auto-detect | Enable Kimi Code session discovery |\n| `localFolder` | string | — | Memory Bank root on disk — every memory is dual-written here as Markdown alongside the orphan-branch copy. Set via the editor extensions' Memory Bank Settings tab. |\n| `backupFolder` | string | `~/jolli_back` | Where snapshots of the local memory database go. Deliberately outside `~/.jolli` (a backup must not share fate with the disaster) and independent of `localFolder`. Validated when you set it; if the folder later becomes unreachable — an unplugged drive, say — Jolli warns rather than quietly writing snapshots somewhere else. |\n| `backupRetentionDays` | integer | `20` | How long snapshots are kept. A few of the most recent are always kept regardless of age, and old ones are only removed after a new one has been written and verified. |\n| `wikiRebuild` | enum | `manual` | When the knowledge wiki and graph rebuild. `manual` (the default) records what is pending on each commit and waits for you to fold it in — with `jolli compile`, the dashboard's **Rebuild** button, or the editor extensions' **Build Knowledge Wiki** button — so a commit never spends AI credits on its own. `auto` rebuilds in the background after every commit and merge, the way earlier versions did. |\n| `excludePatterns` | string[] | — | Glob patterns for file exclusion (set via `jolli configure --set excludePatterns=glob1,glob2`) |\n| `syncTranscripts` | boolean | `false` | When the editor plugin's sync is enabled, also mirror raw conversation transcripts (not just summaries) into the personal vault. Off by default so transcripts stay local unless you opt in. |\n| `syncSessions` | boolean | `true` | Upload derived session statistics to your Jolli organization. Raw transcripts, diffs, injected skill text, and skill arguments are excluded. |\n\n**Authentication setup** — three options:\n\n**Option 1: Jolli account (recommended)**\n```bash\njolli auth login\n```\nSigns in via browser OAuth.\n\n**Option 2: Manual API key**\n```bash\njolli configure --set apiKey=sk-ant-...\n```\n\n**Option 3: Environment variable**\n```bash\nexport ANTHROPIC_API_KEY=sk-ant-...\n```\n\nConfig file `apiKey` takes precedence over the environment variable. Running `jolli enable` will prompt you to choose between these options interactively.\n\n## Summary Format\n\nA plain commit's summary is written as a **v3 tree**. A single commit can cover multiple independent topics, and commits related through amend/squash operations form parent-child trees. Amend and squash roots, and any regenerated summary, are normalized to **v4**, which hoists the authoritative topics, recap, plans, notes, references and skills onto the root so a consumer never has to walk the children to read them. Both versions carry the same topic fields:\n\n```json\n{\n  \"version\": 3,\n  \"commitHash\": \"abc123...\",\n  \"commitMessage\": \"Fix login validation and add rate limiting\",\n  \"branch\": \"feature/login-fix\",\n  \"commitType\": \"commit\",\n  \"topics\": [\n    {\n      \"title\": \"Fix login email validation\",\n      \"category\": \"bugfix\",\n      \"importance\": \"major\",\n      \"trigger\": \"Users were able to submit malformed emails, causing server-side 500 errors.\",\n      \"response\": \"Added email format check in LoginForm component with RFC 5322 regex.\",\n      \"decisions\": \"| Option | Pros | Cons | Chosen |\\n|---|---|---|---|\\n| Regex | No dependency | Complex pattern | yes |\\n| Library | Robust | Extra dependency | |\",\n      \"todo\": \"Consider adding disposable email detection in a follow-up.\"\n    }\n  ],\n  \"children\": []\n}\n```\n\n**Topic fields**:\n- **trigger**: The problem or need that prompted the work\n- **response**: What was built, fixed, or changed\n- **decisions**: Design rationale — may include Markdown tables comparing options\n- **todo** (optional): Deferred work or open questions\n- **category**: One of `feature`, `bugfix`, `refactor`, `tech-debt`, `performance`, `security`, `test`, `docs`, `ux`, `devops`\n- **importance**: `major` or `minor`\n\n## VSCode Extension\n\nThe [Jolli Memory VS Code Extension](https://marketplace.visualstudio.com/items?itemName=jolli.jollimemory-vscode) adds a sidebar with a **Current Branch / Memory Bank** view switch (plus a Status overlay) and a per-commit Summary Webview, plus a 5-tab Settings page. If you have both the CLI and the extension installed, they share the same data — the extension bundles the CLI inline so it works whether or not a global CLI install is also present.\n\n## Plugins\n\nStarting in 0.99.2, `@jolli.ai/cli` can discover and load allow-listed plugin packages and let them register additional subcommands. Discovery is bounded: the CLI walks `node_modules/` directories upward from the current working directory, stopping at the nearest `.git` ancestor (or your home directory if none is found), and also consults the global npm root. The allow-list is fixed at the CLI level, so a malicious package cannot register itself merely by being on disk.\n\nThe three shipping plugins are **`@jolli.ai/site-cli`** (the Jolli Site documentation generator), **`@jolli.ai/space-cli`** (Jolli Space commands), and **`@jolli.ai/workflow-cli`** (running Jolli workflows locally and reporting remote runs — grouped under **Jolli Workflows** in `jolli --help`). All three are listed in `KNOWN_PLUGINS` in [`cli/src/KnownPlugins.ts`](https://github.com/jolliai/jolliai/blob/main/cli/src/KnownPlugins.ts), which is the source of truth for the allow-list.\n\n```bash\n# Install (your existing jolli install is unchanged)\nnpm install -g @jolli.ai/site-cli      # or @jolli.ai/space-cli, @jolli.ai/workflow-cli\n\n# Disable plugin loading entirely\nJOLLI_NO_PLUGINS=1 jolli <command>\n```\n\nPlugins use a small public API exported from `@jolli.ai/cli/api` (`PluginContext`, `PluginRegister`, `parseJolliApiKey`, `parseBaseUrl`). See [SECURITY.md](https://github.com/jolliai/jolliai/blob/main/SECURITY.md#operational-guidance) for the operational guidance and trust model.\n\n## Error Handling\n\nJolli Memory is designed to **never interfere** with your development workflow:\n\n- All errors are logged to `.jolli/jollimemory/debug.log`\n- The git post-commit hook runs in a **detached background process** — git commit returns immediately\n- API failures are retried once (2s delay), then a minimal record is saved so squash/rebase chains are not broken\n- Missing sessions or transcripts are skipped silently\n- Concurrent runs are prevented with a file lock (5-minute stale timeout)\n- A unified operation queue ensures no summaries are lost during rapid commit/amend/rebase sequences\n\nIf something looks off, run `jolli doctor` to check for faults (stuck locks, missing hooks, invalid config) and `jolli clean --dry-run` to preview redundant data that can be safely removed.\n\n## Privacy\n\n### At summary generation time (after each commit)\n\nTo produce a summary, Jolli Memory reads your active AI session transcripts and the git diff locally, then sends them together to a summarization backend:\n\n- If an **Anthropic `apiKey`** is configured — transcripts + diff are sent **directly to Anthropic**.\n- If only a **`jolliApiKey`** is configured (you signed in with `jolli auth login`) — transcripts + diff are sent to the **Jolli LLM proxy**, which forwards them to Anthropic on your behalf. The proxy **does not persist the transcripts or diff, and does not write them to any Jolli-side log** — payloads are held in memory only for the duration of the request and discarded once Anthropic responds.\n\nThe generated summary is then dual-written locally — to the git orphan branch (the source of truth) and to the Memory Bank folder on disk (canonical JSON at `<localFolder>/<repo>/.jolli/summaries/<commitHash>.json` plus human-readable Markdown at `<localFolder>/<repo>/<branch>/<slug>-<hash8>.md`). Raw transcripts are dual-written the same way: to `transcripts/<commitHash>.json` on the orphan branch and to `<localFolder>/<repo>/.jolli/transcripts/<commitHash>.json` in the Memory Bank folder.\n\n### Uploads to Jolli Space\n\n`jolli push` sends a branch's memories to your bound Jolli Space from the CLI, and the VS Code and IntelliJ extensions expose the same action as a **Share in Jolli** button. `jolli push-control` decides whether this repo pushes at all. When triggered there, only the **generated summary** and its **associated plans and notes** are uploaded, and only if this repo's outbound push is on (see [`jolli push-control`](#jolli-push-control)). The pushed article (and the clipboard export) carries a **Task usage** line — total tokens, a cost estimate, and the input / output / cached split, aggregated across squashed and amended commits. **Raw transcripts are never sent to Jolli Space.**\n\n### Session metadata\n\nThe per-project registry at `<projectDir>/.jolli/jollimemory/sessions.json` is gitignored and is never uploaded as a file. Transcript paths and transcript text stay local.\n\nWhen you are signed in and the machine-wide `syncSessions` setting is enabled (the default), Jolli separately uploads derived session statistics for repositories that are not manually disabled. Those statistics include stable session and repository identifiers, human-readable repository display names, agent/session titles and timestamps, token and cost totals, tool/skill/MCP names, memory search queries, and per-skill invocation outcome, entry-path and injected-character-count metadata. Skill arguments, injected skill text, raw transcripts and diffs are not part of this channel. Run `jolli configure --set syncSessions=false` to disable it.\n\n### What stays 100% local\n\nTwo `.jolli/jollimemory/` directories carry local state, both stay on your disk unless one of the specific actions above is triggered:\n\n- `~/.jolli/jollimemory/` (machine-global) — `config.json` (apiKey / authToken / jolliApiKey), `push-control.json` (which repos are allowed to push), hook entry scripts, dist-path indirection.\n- `<projectDir>/.jolli/jollimemory/` (per-project, gitignored) — `sessions.json` (session metadata), `plans.json`, `notes/`, `skills/` (captured skill usage), `cursors.json`, `git-op-queue/`, `briefing-cache.json`, `debug.log`.\n\nEvery entry on the `jollimemory/summaries/v3` orphan branch — and its mirror inside the Memory Bank folder, including raw transcripts — also stays on your disk unless one of the specific actions above is triggered.\n\n### Usage telemetry (anonymous, opt-out)\n\nSeparately from your memory content, Jolli Memory collects **anonymous, content-free usage telemetry** to understand which features are used and where things break. It is **on by default** and you can turn it off at any time.\n\n- **What is sent** — event names (e.g. `app_installed`, `ingest_completed`, `sync_completed`), the surface and version (`cli` + version), OS / arch / Node version, a random `installId` (a UUID generated on this machine), and coarse, bucketed counts. Nothing else.\n- **What is never sent** — your code, file paths, commit messages, diffs, transcripts, memory/summary content, repo names, branch names, API keys, or any account identifier. Property values are scrubbed before they leave your machine, and the payload carries no account ID.\n- **How it leaves your machine** — events are written to a local buffer (`<projectDir>/.jolli/jollimemory/telemetry-queue.ndjson`) and flushed in small batches; the buffer is capped and never grows unbounded.\n\n**Turn it off (any one of these):**\n\n```bash\n# Persisted opt-out (writes telemetry: \"off\" to the shared config)\njolli telemetry off\n\n# Or set the standard env var (honored on every run)\nexport DO_NOT_TRACK=1\n```\n\nJolli also honors your OS / IDE data-sharing setting. Check the current state with `jolli telemetry status`, print the exact buffered events with `jolli telemetry inspect`, and see <https://jollidev.com/telemetry> for the full event list.\n\n---\n\n## Jolli Site — documentation from your content folder\n\nSite generation turns a plain folder of Markdown files and OpenAPI specs into a polished documentation site. It ships as the separate **`@jolli.ai/site-cli`** plugin — install it with `npm install -g @jolli.ai/site-cli` and the host CLI discovers it automatically, making the commands below available. The commands appear in `jolli --help` either way; running one without the plugin installed prints a short install hint.\n\n### `jolli new [folder-name]`\n\nScaffolds a new Content_Folder with starter files: `site.json` (configuration), sample Markdown pages, and an example OpenAPI spec.\n\n```bash\njolli new my-docs\ncd my-docs\njolli dev          # live preview at localhost:3000\n```\n\n### `jolli dev [source-root]`\n\nStarts a development server with hot reload. Edits to Markdown, MDX, or OpenAPI files in the source folder are mirrored and rendered instantly via Next.js HMR.\n\n```bash\njolli dev                  # current directory\njolli dev ./my-docs        # specific folder\njolli dev --migrate        # re-detect framework config\njolli dev --verbose        # detailed build output\n```\n\n### `jolli build [source-root]`\n\nBuilds a static site with full-text search indexing (Pagefind). No server is started.\n\n```bash\njolli build\n```\n\n### `jolli start [source-root]`\n\nBuilds the static site + search index, then serves it locally.\n\n```bash\njolli start\n```\n\n### `jolli convert [source]`\n\nConverts an existing Docusaurus documentation folder to Jolli-compatible structure. Creates a timestamped backup when converting in-place.\n\n```bash\njolli convert                      # convert current directory\njolli convert ./old-docs           # convert specific folder\njolli convert --output ./new-docs  # output to a different folder\n```\n\nWhat it does: detects sidebar config, reorganizes directory structure, downgrades incompatible `.mdx` to `.md`, rewrites image paths, writes a clean `site.json`, and removes framework-specific files.\n\n### How it works\n\n1. **Content_Folder** — your Markdown files, images, and OpenAPI specs live in a plain folder. `site.json` at the root configures title, navigation, theme, and footer.\n2. **Mirror + Render** — the CLI mirrors content into a hidden build directory (`~/.jolli/sites/<hash>/`), renders OpenAPI specs into interactive API docs, generates sidebar navigation from the folder structure, and runs Next.js under the hood.\n3. **Theme Packs** — choose from `forge` (clean developer-docs, default), `default`, or `atlas` (editorial, dark serif). Set in `site.json` under `theme.pack`.\n\n### `site.json` reference\n\n```json\n{\n  \"title\": \"My Docs\",\n  \"description\": \"Project documentation\",\n  \"nav\": [\n    { \"title\": \"Home\", \"href\": \"/\" },\n    { \"title\": \"API\", \"href\": \"/api/openapi\" }\n  ],\n  \"theme\": { \"pack\": \"forge\" }\n}\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `title` | string | Site title (required) |\n| `description` | string | Site description (required) |\n| `nav` | array | Top navbar links (required) |\n| `header` | object | Advanced dropdown navbar |\n| `footer` | object | Copyright, columns, social icons |\n| `sideb","readmeFilename":"README.md"}