{"_id":"@async-nguyen/contextpilot","_rev":"12-92de295dd16558da24eeec2b758b96ca","name":"@async-nguyen/contextpilot","dist-tags":{"beta":"0.3.0","latest":"0.5.0"},"versions":{"0.3.0":{"name":"@async-nguyen/contextpilot","version":"0.3.0","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.0","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"641c3bc4b6846f03ff5d763c7042bd9ee991ab5b","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.0.tgz","fileCount":209,"integrity":"sha512-OEJCCc3cRPM4BWpn5aDCdkTGHwftCNZAN6aP3VPGpmV9fR3fctAlB8uCfJb6zqPKbEC8O4078vQFGJ+WN/99TQ==","signatures":[{"sig":"MEUCIF2lNgjPx5pSV5Tj96000NEThA2mXwnW52Zq4gtnSGU9AiEAmqfWDdoQfUS5kYSN19jjJhgJGJ9qkOEJd7jdYphNg80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":604439},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d3a422b953396718bf412b53a336782fe8066705","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"10.9.3","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.0_1782980754208_0.8700001163713573","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@async-nguyen/contextpilot","version":"0.3.1","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.1","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"fcbbfff420112f6ca093371f619f70f2807446c5","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.1.tgz","fileCount":209,"integrity":"sha512-Jfyp1mgltWjNtZnpC/HegFEJGvoMmAPXlLgf87w4rCEnvPykvzQCtBMZUtNThGBxUmMP8UuP4WZ/9/WJ7CM0Dw==","signatures":[{"sig":"MEQCIAd3/sSve+ZcF0TzzIG2elGdsxBHAut7uxxQS+fuUmCkAiBpUUn0iEJgP3w2EOnByimDN+PrfYVHMWE9aenfNqKpUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608200},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"836e1be2ae0d2bcbdd6364526d7c7325c1c27db9","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"10.9.3","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.1_1783042356802_0.09144825118446143","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@async-nguyen/contextpilot","version":"0.3.2","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.2","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"5b3954317b34a36b0c8064bc5d1f92fac2193c90","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.2.tgz","fileCount":209,"integrity":"sha512-bgfayAabC1N8cH2oBVBM2681aUMuguGxSyEkfX5+K4JneY244gedS2U96EhpDMD4kQovyrex+fOkZMDv2hKnVg==","signatures":[{"sig":"MEUCIBIpAaagLwK5yV2qvXp5TgQ0SnNxBPJsP+QSb6jMKY1vAiEA21pAMk2Fhnpzii3zMnsFxZtQZwbh1R8CDOHTx4i/Jno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621790},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"ada5bf56a879fc0bf20890c8d35075009894366d","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"10.9.3","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.2_1783310634145_0.8481398406818974","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@async-nguyen/contextpilot","version":"0.3.3","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.3","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"8a6357a58fbb7131326d1e516510199fa7acc2c3","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.3.tgz","fileCount":217,"integrity":"sha512-fjnU5L7EfdMgDycPV5TwZk9uc6impqOjaeCW2ToTJHOwq2zYHaUcIOttNYFNFtDQFPk1MqPLxCWHzDYOqcdE8w==","signatures":[{"sig":"MEYCIQDqHZVeDu50WFgEnUZc1eSMA0rxoTW2fTDY1Jh9p7JENAIhAPw1Gy9OuVmSEYEe3lc17fQ1G0DZcpHVxNJt9zDKgRt8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":650545},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"03f9ec7d1b8ccbf98ed39d3024d964b23729d4f5","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.3_1783328308797_0.5684522109442551","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@async-nguyen/contextpilot","version":"0.3.4","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.4","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"b8daca44ce94232d76b507d9f85b22c95bac3a4d","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.4.tgz","fileCount":221,"integrity":"sha512-P2Vu021bfcAw25m5xVaDZyUdS1JIC+rJlhBZLUZDlcOHiK2TGJd12zkxGMSH9TO1HBqprw6uCUNtuaxnAKYTHQ==","signatures":[{"sig":"MEUCIAacwVFs5qOPA7UpAcVcYqqRkSF7zizYURwE3l8PfqaRAiEA2DkWFHw9TPZqvVpNOqe1+rqcHQwg8XgtVE/gfG5CQeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":676926},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"02554dfac25f3aa0a33dc7b82370a9b2204fa5e1","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.4_1783329342636_0.8104619140479783","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@async-nguyen/contextpilot","version":"0.3.5","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nghia Hutt"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.5","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"ad5a56111f7a10ed905f4225ffb7ed6f737a7cd4","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.5.tgz","fileCount":225,"integrity":"sha512-Axks15WSpBheH2ZEBI0qnMU4hYZIzge/or24QelSsPJtOjg1O9vp44KisC041N/fhB0E2NEDc2NcuUwr+o5aqw==","signatures":[{"sig":"MEYCIQDymS3GOE9wqorw0/my1FqSS2rgQeFUegPVKF6I3tQ46gIhAMXut0aaY8jflbdV6XWqg0zY+oCkx6wqZlLPfgr+3QV8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":695642},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e7be31eaa16ab51a9cc16a33fcaf2da4937be02c","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.5_1783385912781_0.16151790096314333","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@async-nguyen/contextpilot","version":"0.3.6","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.6","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"77ad71db3349c2a36e24f4bafe985892d9f13008","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.6.tgz","fileCount":229,"integrity":"sha512-uiZ9EbVNyzaTtNC8R2HwMQwZk/ruVXRPUP6lNGk2vkzzc3+TSEqQHF5RvysjaW4YaRIrYT472/H6QUFzBNNxsA==","signatures":[{"sig":"MEUCIFFN3Edu8oc/mKUy7qBYPRCxBExK8De/BkdwF0upL+pGAiEAtV4b5emKdmfefYVLlJrJZYQ1HM1FtQs75YfNUDbr5mI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":711618},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"01059cf79c591ab583fbcdfd44944e5ec22c0ccc","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.6_1783387529679_0.5189949569007297","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@async-nguyen/contextpilot","version":"0.3.7","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.3.7","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"266911c4dc66c13810d23915f8c01f491b51f0a9","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.3.7.tgz","fileCount":233,"integrity":"sha512-qvgxbc29eSpEnBR69/H2HSqPimTvcbCyToohH8n+xNfEf8eHzZww2k+tAfzAk/xdlb1aq4PNE6rICP9Qek8wnw==","signatures":[{"sig":"MEQCIGm5XOiYO//bW5Ey/bLIaD6vMpV8L++p6u08neXPNlifAiBLkDRzRfpz1aRj1vfDhGcnSFkk06P9hsxdcTMVyN9ijQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.3.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":714869},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"94035391b47d31758e8afb9562b2e16117ee8101","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.3.7_1783389532891_0.26946281761362467","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@async-nguyen/contextpilot","version":"0.4.0","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.4.0","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"7f3fdfc59fdb9e8d6468529c1ffa6f8180702c80","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.4.0.tgz","fileCount":241,"integrity":"sha512-4N1T9sQQmrsdDTrZFGxUxE0XsfvSixQF5oPKN3vhHwTGhcWNUavZKSGUdVj3Y+Bqo0R/IfNyzySe5VLYaHXr3A==","signatures":[{"sig":"MEQCIAqbbZDIdCK+BKD5ry5QCdNCu4UaxTbIKiScOTR8MrQGAiBfSHOFN0NnUdS5C7EyHFCUVUONwGnNLRIppaANfN/a5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":762701},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"ff527b0487b867571c7231b7da890903bf792445","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22c832c0-244d-4c14-bce3-00f87818c76c"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.4.0_1783439109230_0.28703492719367696","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@async-nguyen/contextpilot","version":"0.4.1","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.4.1","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"402c91a1893a91a931efa61e0c22844eb1e6cfd1","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.4.1.tgz","fileCount":249,"integrity":"sha512-QfEDujvlvZ0TXRBQmtPYgiEpwAl/zg40HNuPunBYeDYSPJI2hLK7yeTP4CezdDzN2p3nk7pfgjoKMMrbNwM9lg==","signatures":[{"sig":"MEUCIQC32xdmKklk+Mwl6mjZUZna+yTnlgFkX+Sm4RTd/YKyZgIgOR49SRQUCDh2BNqEVpGU2IDmMPKJr7lBisujAGUoTxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801671},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8530d0d8c320dffadb8e4c679bb6ecf5ef547401","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0d3297a-a319-4442-a09b-072deb2c90a0"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.4.1_1784105789156_0.7443051993353658","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@async-nguyen/contextpilot","version":"0.4.2","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","_id":"@async-nguyen/contextpilot@0.4.2","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"homepage":"https://github.com/Async-Ng/contextpilot#readme","bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"bin":{"contextpilot":"dist/index.js"},"dist":{"shasum":"751ca2b742fb01de831e3d679c501fbf7f451479","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.4.2.tgz","fileCount":253,"integrity":"sha512-vD2dWf5OjRG48kV7FFLG6M3ic8AyCXWqqSrdJP7TCDwKhS+HjXjBpIUVspafsUR3cNo/kW5bRDk8haQ0fb5F0Q==","signatures":[{"sig":"MEUCIQDDHocNqN8ax70Cew835x+/mhVzYzrv+pnaL0XacSuSkAIgMGe6tzYQ4QxBQyWU08/uxUs4YnvpzMafLVyl5AklR/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":835784},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4a6ccb7b6629e8132f47ffca81e9e27ee163ef5b","scripts":{"dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","build":"tsc","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0d3297a-a319-4442-a09b-072deb2c90a0"}},"repository":{"url":"git+https://github.com/Async-Ng/contextpilot.git","type":"git"},"_npmVersion":"11.18.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.24.2","chalk":"^4.1.2","nanoid":"^3.3.11","chokidar":"^4.0.3","fs-extra":"^11.3.0","commander":"^13.1.0","fast-glob":"^3.3.3","gray-matter":"^4.0.3","@clack/prompts":"^0.10.1","proper-lockfile":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4","@types/proper-lockfile":"^4.1.4"},"_npmOperationalInternal":{"tmp":"tmp/contextpilot_0.4.2_1784107377202_0.5887472871746022","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@async-nguyen/contextpilot","version":"0.5.0","description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","main":"dist/index.js","bin":{"contextpilot":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"npm run build && node --test tests/*.test.js","pack:dry-run":"npm pack --dry-run","smoke:pack":"npm run build && npm pack --silent && node tests/smoke-pack.js","prepublishOnly":"npm run build"},"keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"author":{"name":"Nhut Truong"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Async-Ng/contextpilot.git"},"bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"homepage":"https://github.com/Async-Ng/contextpilot#readme","engines":{"node":">=18"},"publishConfig":{"access":"public"},"dependencies":{"@clack/prompts":"^0.10.1","chalk":"^4.1.2","chokidar":"^4.0.3","commander":"^13.1.0","fast-glob":"^3.3.3","fs-extra":"^11.3.0","gray-matter":"^4.0.3","nanoid":"^3.3.11","proper-lockfile":"^4.1.2","zod":"^3.24.2"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.13.10","@types/proper-lockfile":"^4.1.4","typescript":"^5.8.2"},"gitHead":"84fcd9377942fccaed106e8c77d89adf247aa1e6","types":"./dist/index.d.ts","_id":"@async-nguyen/contextpilot@0.5.0","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-zA1LDA8RXWNrgOwEPUJbZrOslB/mnAjw/Bkk+PDn47iKDJHNvsbv6y3L4DYRHVCC+Etlq3xILQ2D/WHlZqZmkA==","shasum":"68eba6fb0a3e72c4fe1d7113a6e98b9fe28daa70","tarball":"https://registry.npmjs.org/@async-nguyen/contextpilot/-/contextpilot-0.5.0.tgz","fileCount":285,"unpackedSize":982665,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-nguyen%2fcontextpilot@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+k1+i6j7+VAUGwKW4JRcNT10z6etVxX5bZ6et+gD9nQIhAIVOT7GN3JhFj6xVOxYG1lIwwkZVvI2+igqfNLmcGwWM"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0d3297a-a319-4442-a09b-072deb2c90a0"}},"directories":{},"maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contextpilot_0.5.0_1785160138832_0.8384575854045326"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T08:25:54.042Z","modified":"2026-07-27T13:48:59.353Z","0.3.0":"2026-07-02T08:25:54.332Z","0.3.1":"2026-07-03T01:32:37.019Z","0.3.2":"2026-07-06T04:03:54.311Z","0.3.3":"2026-07-06T08:58:28.966Z","0.3.4":"2026-07-06T09:15:42.817Z","0.3.5":"2026-07-07T00:58:32.920Z","0.3.6":"2026-07-07T01:25:29.850Z","0.3.7":"2026-07-07T01:58:53.067Z","0.4.0":"2026-07-07T15:45:09.366Z","0.4.1":"2026-07-15T08:56:29.417Z","0.4.2":"2026-07-15T09:22:57.439Z","0.5.0":"2026-07-27T13:48:59.031Z"},"bugs":{"url":"https://github.com/Async-Ng/contextpilot/issues"},"author":{"name":"Nhut Truong"},"license":"MIT","homepage":"https://github.com/Async-Ng/contextpilot#readme","keywords":["ai","agent","contextpilot","coding-agent","orchestration","cursor","claude","codex","context","memory","srs"],"repository":{"type":"git","url":"git+https://github.com/Async-Ng/contextpilot.git"},"description":"Local-first control plane that pilots AI coding agents with project context, memory, orchestration, gates, and SRS knowledge.","maintainers":[{"name":"async-nguyen","email":"nhuttruongnguyen2204@gmail.com"}],"readme":"# ContextPilot\n\n**ContextPilot** is a local-first control plane that gives AI coding agents (Claude Code, Cursor,\nCodex, GitHub Copilot, Windsurf) persistent project context, memory, and a structured workflow —\nwithout you having to operate a CLI yourself. You run one setup command; after that you just chat\nwith your agent normally, and the agent runs ContextPilot commands in the background.\n\nEverything lives in a single `.contextpilot/` folder in your repo, generated into each agent's\nnative instruction files (`CLAUDE.md`, `.cursor/rules/*.mdc`, `AGENTS.md`, etc.) so every agent\nyou use reads the exact same protocol and project knowledge.\n\n## Why\n\nAI agents forget everything between sessions and drift out of sync with a project's real state:\nthey re-learn the same lessons, silently keep stale copies of requirements docs, and leave\nhalf-finished multi-step tasks with no record of what's left. ContextPilot fixes this by giving\nagents:\n\n- a place to **persist** what they've learned (mistakes, constraints, decisions) across sessions,\n- a **workflow** (plan → implement → verify → review → checkpoint) for non-trivial tasks, with a\n  gate that blocks file edits outside the current step's scope,\n- a **discussion gate** that forces the agent to ask you before guessing at business logic, and\n- **drift detection**: whenever a tracked file (SRS docs, generated instructions, ingested\n  knowledge rules) falls out of sync with what the agent last saw, `status`/`context --inject`\n  surface it instead of silently serving stale information.\n\n## When ContextPilot is worth it\n\nContextPilot is most useful when a repo has durable business rules, SRS docs, several agents, or\na team that benefits from shared memory, drift checks, and gates. It can be too much ceremony for\none-off scripts, tiny solo repos, or purely mechanical edits.\n\nThe default profile is now **light** for 1-2 developer projects: small technical tasks use a fast\npath, generated agent files are index-first, and hook infrastructure failures warn without blocking.\nSet `\"profile\": \"strict\"` in `.contextpilot/harness.config.json` when a team wants the older,\nmore prescriptive behavior.\n\n## Supported agents\n\n| Agent | Hook coverage |\n|---|---|\n| Claude Code | Full — PreToolUse deny, SessionStart inject, Stop checkpoint |\n| Cursor | Full — pre-shell/pre-MCP deny, post-edit revert, session hooks |\n| Codex | Best-effort (writes `AGENTS.md`; hook surface not guaranteed on every version) |\n| GitHub Copilot | Instructions file only — no hook API; git pre-commit is the backstop |\n| Windsurf | Instructions file only — git pre-commit is the backstop |\n\nEvery agent that has no hook support still gets the git pre-commit backstop, so business-logic\nedits can't slip through unnoticed even without agent-native hooks.\n\n## Installation\n\n```bash\nnpm install -g @async-nguyen/contextpilot\n```\n\n(Or add it as a dev dependency and use `npx --no-install contextpilot ...` instead of a global install.)\n\n## Quick start\n\n```bash\ncd your-project\ncontextpilot setup\ncontextpilot start\n```\n\nThat's it. `setup` auto-detects which agents you use, scaffolds `.contextpilot/`, installs hooks\nand a git pre-commit backstop, ingests `docs/srs/` if it exists, and regenerates every agent's\ninstruction files. From here, open your AI coding agent and describe what you want — the agent\nreads the generated instructions and drives ContextPilot itself.\n\nFor headless/CI setup with no prompts:\n\n```bash\ncontextpilot setup --json --no-input\n```\n\nIf the global binary is not installed but the repo has a local install, ContextPilot now reports the\nexact fallback command to use, for example:\n\n```bash\nnpx --no-install contextpilot doctor\n```\n\n## What `setup` does\n\n1. **Detects agents** already configured in the repo (`.claude/`, `.cursor/`, `AGENTS.md`,\n   `.github/copilot-instructions.md`, `.windsurf/`) — Codex is always included so `AGENTS.md`\n   is generated even on a fresh repo.\n2. **Scaffolds** `.contextpilot/` (rules, memory, context, decisions, orchestration).\n3. Installs **gate hooks** for detected agents plus a git `pre-commit` backstop.\n4. **Ingests `docs/srs/`** if present, or marks the project as SRS-missing (greenfield).\n5. **Auto-discovers** any pre-existing agent rules/skills in the repo and adopts them as\n   low-priority knowledge.\n6. **Syncs** — writes the generated instruction files for every detected agent.\n\n## Core concepts\n\n| Concept | What it holds | Where |\n|---|---|---|\n| Long-term context | Architecture, conventions, business rules, ingested SRS knowledge | `.contextpilot/rules/*.md` |\n| Short-term focus | What the current task is | `.contextpilot/context/current.md` |\n| Memory | Learnings from past mistakes/constraints | `.contextpilot/memory/learnings.jsonl` |\n| Orchestration | Durable run contracts, steps, evidence, and trace events | runtime storage by default when configured |\n| Decisions | Open/resolved business-logic questions | `.contextpilot/decisions/decisions.jsonl` |\n\n### The discussion gate\n\nWhen an agent is uncertain about a business-logic decision, it must not guess — it opens a\ndiscussion, asks you in chat, and only proceeds once you've answered:\n\n```\nAgent uncertain about requirements\n  -> contextpilot decision open --question \"...\" --scope \"src/**\" --json\n  -> asks you in chat, waits for your answer\n  -> contextpilot decision resolve --id <id> --resolution \"...\" --json\n  -> a rule is generated from the resolution -> gate allows changes in that scope\n```\n\nWhile a decision is **open**, `gate check` (agent hooks) and `gate precommit` (git backstop) both\ndeny edits/commits in the affected scope, and `status --json` reports `inDiscussion: true`.\n\n### Orchestration workflow\n\nFor non-trivial coding tasks, an agent starts a structured run:\n\n```bash\ncontextpilot orchestrate start --goal \"Add refund policy validation\" --scope \"src/billing/**\" --json\n```\n\nThe run walks through 5 built-in steps — `plan` → `implement` → `review` → `verify` →\n`checkpoint` — each with a role and instructions injected via `context --inject`. A run also binds\nto its worktree and records a contract (scope, acceptance criteria, verification commands, risk,\nand permissions). The agent\nadvances a step when it's done:\n\n```bash\ncontextpilot orchestrate advance --status complete --note \"Plan reviewed\" --json\n```\n\nFor a contract with checks, advance to `verify`, then record evidence instead of manually claiming\nsuccess:\n\n```bash\ncontextpilot orchestrate verify --json\ncontextpilot run report --json\n```\n\n`context explain --json` shows the scoped, budgeted context manifest. `trace export --format otlp-json`\nexports local run events without enabling a remote telemetry service.\n\n`gate check` is step-aware: it blocks file edits outside the run's scope, and blocks edits\nentirely during non-edit steps (`plan`, `review`). Running `contextpilot checkpoint` while the\nrun is at its final `checkpoint` step automatically completes the run — no separate\n`orchestrate advance` call needed for that case.\n\n### SRS (requirements) integration\n\nIf your project has a `docs/srs/` folder, `contextpilot srs ingest` turns it into scoped\nknowledge rules an agent can query by file path or topic, instead of dumping the whole\ndocument into every agent's context window.\n\n```bash\ncontextpilot srs status --json\ncontextpilot srs ingest --path docs/srs --reingest --json\n```\n\nFor a greenfield project with no SRS yet, `contextpilot srs bootstrap` scaffolds `docs/srs/`\nand installs a skill (`fullstack-to-srs`) that walks an agent through writing one from the\nexisting codebase.\n\n**Whenever an SRS file is edited, re-run `srs ingest --reingest`.** If you forget, ContextPilot\nstill tells you — see Drift detection below.\n\n## Drift detection\n\nContextPilot tracks the last-seen hash of everything it depends on, and reports when reality has\nmoved without it. All of these show up in `contextpilot status --json` (and the relevant ones\nalso in `context --inject`, which agents read every session):\n\n| Field | Meaning | Fix |\n|---|---|---|\n| `drift` | A generated file (e.g. `CLAUDE.md`) was hand-edited since ContextPilot last wrote it | `contextpilot sync` |\n| `srsDrift` | An SRS source file (`docs/srs/**/*.md`) is new or changed since the last ingest | `contextpilot srs ingest --reingest` |\n| `ruleDrift` | An ingested rule file (`.contextpilot/rules/*.md`) was hand-edited since ContextPilot last wrote it | Re-run the ingest that produced it, or hand-edit the SRS source instead |\n| `staleDecisionScopes` | A decision's `--scope` glob matches zero files (typo, or the code was deleted/renamed) | Fix or close the decision |\n| `orchestration.staleHours` | An active orchestration run has had no activity for 24+ hours | Resume it or `orchestrate cancel` |\n\nNone of these block anything by default — they're visibility, not enforcement, so a human or\nagent can decide what to do about them.\n\n## Safe start and lightweight commands\n\nUse `contextpilot start` for a one-command readiness check. It reports how the CLI was resolved\n(project-local package, dev repo, or `npx --no-install` fallback), whether the repo is initialized,\nthe current SRS/orchestration state, and the next recommended command.\n\nFor small technical tasks, use the lightweight path:\n\n```bash\ncontextpilot start\ncontextpilot status --fast\ncontextpilot sync --preview\n```\n\n- `status --fast` skips expensive scans and returns a minimal, reliable summary.\n- `sync --preview` shows what would change without rewriting files and reports generated-size\n  deltas.\n- Small tasks such as CI fixes, dead-code deletion, renames, and docs typos should not start\n  orchestration by default.\n- `orchestrate start` remains the structured workflow command for non-trivial tasks: multi-file\n  feature work, business logic, migrations, risky refactors, or explicit workflow requests.\n\n## CLI reference\n\nMost of these are meant to be run **by the agent**, not by you — after `setup`, you just chat.\n\n| Command | Who runs it | Description |\n|---|---|---|\n| `start` | Human / agent | Safe-start readiness summary and next-step recommendation |\n| `setup` | Human, once | One-time project setup |\n| `doctor` | Human / CI | Verify installation, hooks, and generated files |\n| `status` | Agent | Drift, pending rules, open decisions, orchestration state (`--fast` for lightweight mode) |\n| `context --inject` / `context explain` | Agent | Session context and the inclusion/budget manifest |\n| `learn` | Agent | Record a mistake/constraint learned this session |\n| `sync` | Agent | Regenerate every agent's instruction files (`--preview` to inspect first) |\n| `checkpoint` | Agent | End-of-task: sync + learn nudge + auto-complete orchestration if applicable |\n| `focus` | Agent | Update the current task focus |\n| `orchestrate start` / `advance` / `verify` / `reopen` / `scope add` | Agent | Contract-aware workflow control and evidence |\n| `run report` / `trace export` / `eval run` | Agent / CI | Local audit, OTLP-shaped trace export, and harness regression checks |\n| `decision open` / `list` / `resolve` / `reject` | Agent (resolve may need you) | Business-logic discussion gate |\n| `srs status` / `bootstrap` / `ingest` / `install` | Agent | Requirements-doc ingestion |\n| `knowledge query` / `relevant` / `show` | Agent | Look up ingested knowledge |\n| `gate check` / `precommit` / `install` | Agent / hook / git | Enforcement |\n| `refresh --auto` | Agent | Adopt newly discovered external rules/skills |\n| `watch` | Agent | Background sync; reverts gated Cursor edits |\n| `discover` / `add` / `forget` | **Human** | Import or delete rules — requires your explicit say-so |\n| `init` | Human (or `--yes` headless) | Lower-level version of `setup` |\n\nRun `contextpilot <command> --help` for flags, or add `--json` to any command for machine-readable\noutput.\n\n## Configuration\n\nProject settings live in `.contextpilot/harness.config.json`. The most commonly touched options:\n\n- `profile`: `\"light\"` (default) or `\"strict\"`. Light optimizes for solo/small-team overhead;\n  strict restores more prescriptive automation defaults.\n- `gate.mode`: `\"sensitive-only\"` (default, only SRS-linked scopes) or `\"strict\"` (all\n  `gate.businessScopes` globs).\n- `hooks.infrastructureFailure`: `\"warn-open\"` (default in light) or `\"fail-closed\"` (default in\n  strict). Policy denials still block; this only controls missing CLI/config infrastructure.\n- `orchestration.autoStart`: `\"non-trivial\"` (default), `\"never\"`, or `\"always\"`.\n- `srs.bootstrapMode`: `\"nudge\"` (default, coding isn't blocked) or `\"strict\"` (business-scope\n  edits denied while SRS status is `missing`; `docs/srs/**` edits stay allowed).\n- `srs.autoIngestOnDrift`: `true` by default; `status`, `context --inject`, and `sync` will\n  re-ingest changed SRS sources when no rule-file drift would be overwritten.\n- `agentContext.knowledgeMode`: `\"manifest\"` (default for single-file agents — points at\n  `.contextpilot/context/knowledge-index.md` instead of inlining SRS bodies) or `\"inline\"`.\n- `agentContext.globalKnowledgePolicy`: `\"index-only\"` (default in light), `\"summary\"` (default in\n  strict), or `\"full\"`.\n- `agentContext.protocolLevel`: `\"stub\"` (default in light) or `\"standard\"` (strict-style full\n  protocol).\n- `agentContext.listKnowledgeInMainFile`: `\"compact\"` (default — no 50-line knowledge list),\n  `\"full\"` (legacy list), or `\"none\"`.\n- `agentContext.relevantDefaultSections`: default `[\"07\", \"03\"]` for `knowledge relevant`.\n- `agentContext.relevantDefaultLimit`: default `2` results per relevant query.\n- `discover.paths`: override where ContextPilot looks for pre-existing global agent config.\n\n### Knowledge workflow (v0.4+)\n\nAgent instruction files are **index-first by default**. Load full requirements on demand:\n\n```bash\ncontextpilot knowledge relevant --file api/inventory/service.ts --task code --limit 2 --json\ncontextpilot knowledge show srs-07-inventory\n```\n\n`knowledge show` resolves the full body from the canonical SRS source when ingest hashes match; if\nthe SRS file changed without re-ingest, JSON output includes `driftWarning` and the ingested rule\nbody is used instead. `status`, `context --inject`, and `sync` auto-ingest safe SRS drift by\ndefault; if rule-file drift makes that unsafe, they report the conflict and the manual ingest\ncommand.\n\nCursor scoped `.mdc` rules still carry full module SRS bodies when you edit matching paths.\n\n### Migration from 0.3.x\n\nAfter upgrading to 0.4.0, re-ingest and sync your project:\n\n```bash\ncontextpilot srs ingest --path docs/srs --reingest --json\ncontextpilot sync --json\n```\n\nTo restore the old behavior (full SRS inline in agent files), set in\n`.contextpilot/harness.config.json`:\n\n```json\n{\n  \"agentContext\": {\n    \"globalKnowledgePolicy\": \"full\",\n    \"listKnowledgeInMainFile\": \"full\"\n  }\n}\n```\n\nTo restore the more prescriptive team workflow, set:\n\n```json\n{\n  \"profile\": \"strict\"\n}\n```\n\n## Examples\n\n```bash\n# Record a learning\ncontextpilot learn --category constraint --severity med \\\n  --title \"API errors must be typed\" \\\n  --detail \"Never empty catch; use instanceof Error\" \\\n  --scope \"src/**\" --json\n\n# Open and resolve a business-logic discussion\ncontextpilot decision open --question \"Should refunds be partial or full-only?\" \\\n  --scope \"src/billing/**\" --json\ncontextpilot decision resolve --id dec_abc --resolution \"Partial refunds up to 90 days\" --json\n\n# Run a structured task\ncontextpilot orchestrate start --goal \"Implement partial refunds\" --scope \"src/billing/**\" --json\ncontextpilot orchestrate advance --status complete --note \"Plan complete\" --json\ncontextpilot checkpoint --json   # auto-completes the run if at its final step\n\n# Requirements ingestion\ncontextpilot srs bootstrap --json\ncontextpilot srs ingest --path docs/srs --reingest --json\n\n# Quick readiness / lightweight flow\ncontextpilot start\ncontextpilot status --fast\ncontextpilot sync --preview\n\n# Check for anything out of sync\ncontextpilot status --json\n```\n\n## Limitations\n\n- Agents may not always self-initiate `learn` — seed important learnings yourself early on.\n- Cursor's `afterFileEdit` revert has a window between edit and revert; git pre-commit is the\n  hard boundary.\n- Codex/Copilot/Windsurf hook coverage is best-effort or commit-only — verify against your\n  agent's current hook API.\n- Cursor User Rules and Copilot's global instructions live in app settings and can't be\n  auto-detected.\n- Hooks prefer a project-local install when available, then fall back to the current dev checkout,\n  then to `npx --no-install contextpilot`.\n- Drift/staleness fields are visibility only — nothing is auto-reverted or auto-blocked from them.\n\n## Exit codes\n\n| Code | Meaning |\n|---|---|\n| 0 | Success |\n| 1 | General error, or `status` reporting unresolved issues (drift, open discussion, etc.) |\n| 2 | Missing required flag |\n| 3 | Requires human interaction (human-gated command run headless) |\n| 4 | Unresolved drift during an interactive sync |\n\n## Development\n\n```bash\ngit clone https://github.com/Async-Ng/contextpilot.git\ncd contextpilot\nnpm install\nnpm run build\nnpm test\nnode dist/index.js --help\n```\n\nSee `CHANGELOG.md` for release history.\n","readmeFilename":"README.md"}