{"_id":"@adamrdrew/pharaoh","_rev":"13-8161289d6be93444bcd67404d9ea33ff","name":"@adamrdrew/pharaoh","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@adamrdrew/pharaoh","version":"0.1.0","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.0","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"4af03db56f15c059d5e772a4f3853f4691159ff5","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.0.tgz","fileCount":146,"integrity":"sha512-X/pCYydepnUWqdsstjAIE+2F0zRbdYZh0qeC3kfKj88GShwm6LlLHWn6JP6TENwCUGLFxzLz1iH7xwZgmoW5uw==","signatures":[{"sig":"MEUCIQCSp0yvijfXMWhkHRz3+nfNSfZNn6o/eqw2x3J1AprlUQIgPCSshnn+sLj2ERDMmdd0tv2lpQXvyik7iJGXzrWu9Ng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139092},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"9cc3163c8b804e470e8d1d5a70fa489c306bd2f6","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"ushabti":"file:../ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.0_1770667366735_0.697244087375176","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adamrdrew/pharaoh","version":"0.1.1","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.1","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"22abd38fdaacbd38987b78f4a2ad26c4b8c1b353","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.1.tgz","fileCount":146,"integrity":"sha512-H0aVgXTGBqkbeWyP58fXDeQmDxPvYH8qNBaKc4rbfvsshkAV2g9UkPDtNLEEwv9+G6CqiMDj1eMrqoSvCzET+A==","signatures":[{"sig":"MEUCIAMAbbRg7AP4UUN0oaviXyLWCAUu1RAen/zpcuUoNsJYAiEA1VrSFRlNPliBokLIwjF1eJfwGUH4PUH1PjONWbt63Dk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139101},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"a7af8a5799bb39c15b80ef4c29a5cea3facdb0c9","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.1_1770667665878_0.24822152730110592","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adamrdrew/pharaoh","version":"0.1.2","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.2","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"0b5d7c292afa3a164546b4b109c7ea1ff502e46a","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.2.tgz","fileCount":146,"integrity":"sha512-aPej+mlTebA/UkY0/GG8NH6R2CngWpbA9jJGl4QbP8xi6NgPm+dtX1LB7SoW4IGViYCJAFgjCGpEMxAwISJZeQ==","signatures":[{"sig":"MEYCIQD0s2sO7+DE4w3hXr/Io0zzJSuwtTOoh+Z0PxXuOg1oZgIhAP51r0Iu+FozYSjjOa62H2UpFjpCe7WWDveqTUU4S/A9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138939},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"30e7e853b78ab305455aa7cafa52bc4dfe38479f","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.2_1770667810046_0.6752923236816801","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@adamrdrew/pharaoh","version":"0.1.4","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.4","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"ac81e5ca467c2cb20a926570029804b313e81409","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.4.tgz","fileCount":218,"integrity":"sha512-A3tx62xZx50S+kyFHvBBA1dY15Pebx1SWxB6O51xlefYEL3jhM1IwDT/n2/UN4t4xFW1A5xPpawmhSqKButs7A==","signatures":[{"sig":"MEMCIDqSM9sxhvANCJjXa4AY99H9ZktL7VgupGcrMVFANBR0Ah8uCwpuYeifLJjwHIwlqs3zGIyTNNQg+xB7C39Tg7Cl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216510},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"4ac8c106c5d2e4e81532f6fffefc1123111c312e","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.4_1770689727900_0.15075708741943505","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@adamrdrew/pharaoh","version":"0.1.5","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.5","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"1862b6f7aa8fc1af8b51b4bedb2283638aa2c806","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.5.tgz","fileCount":218,"integrity":"sha512-qOQT9N1A1jBWwTUAOnvfzoDzZZUgkOhng1iLe5S/+qEa+AQTr3iHcTAuq+SWjxWhraqXNQ/4GjM7KK5KcY2Zfw==","signatures":[{"sig":"MEUCIB0FMQETDpDgm79bOR/jz2parjYdtI/9/c4mFO8o0oLIAiEAx8KyZIsrasnteWmA8WVNl4TMe0fuck4V4rKNVrN3P6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216510},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"8a727c56a7fb29d7daedcd50e6501006c8026258","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.5_1770727515047_0.9614163112584031","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@adamrdrew/pharaoh","version":"0.1.6","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.6","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"7a20c1b57b9b4ba263db2bb8c139eb78a5f26ba8","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.6.tgz","fileCount":218,"integrity":"sha512-awN33S+iYPn5zHAF/tcZLgCKt5TjCE/M+dh6JDleBLqMvCWo77Sew67Wu5lMfMAAys6vT57ZJzyGPYf4mVHjEA==","signatures":[{"sig":"MEYCIQDS4M8HvrmxQUA1l9Qjc6IBX/+JuR6GFr/it67h+vv5twIhAO5ztcKdtF64OBJ06m7hql9EyQl0SHRqtoGcpzKJx/Q8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218180},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"f9a9a6d301ebf8da2fe97d39556c8f47fac364a4","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.6_1770776808282_0.02582667417728368","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@adamrdrew/pharaoh","version":"0.1.8","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.8","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"2c0853153f7d0ada7b283d13c82fce5593e94cfa","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.8.tgz","fileCount":218,"integrity":"sha512-mSFfI9gb4df9Ah1KooF2YhEz/SvMUA84UX2/Xbw0l00uWuDyDMSV7M02eL0Ra9+jfTqSh7t2HeqNqwVrslIm0g==","signatures":[{"sig":"MEQCIF4HPaDdRInilbWfZbG6Zg6dhdDY57/FPFejNTXxvmlsAiAjnh9zPJm4QopI81SBiyOz8gX7IcRaDxkIw6N0gGAb1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218708},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"40dea3bf88944b106922d0b725b5e0d9848412e3","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.8_1770809623542_0.4310394966642852","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@adamrdrew/pharaoh","version":"0.1.9","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.9","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"eac19fe46c0e7e6d73747234a4c5acb6a0798fcc","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.9.tgz","fileCount":218,"integrity":"sha512-oa4LPnMU5iANKiFBip3fZC/9rcJQy1q2TrB4iBEZfaqB79AR8xXIpXcn8FBfzKLYVxgyMZsYMzCVueVtW6hsLA==","signatures":[{"sig":"MEQCIGjI82n33oMxVY7FcecpYpg4sJuWo2ARPD/G6fL0LGTQAiBoPFpVQWc+Hd16z9X/fpEtqq5a8CldbaKInaaC4CipdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226277},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"6d2ffad206be4cfd1f792b14e37e35881936e7c0","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.9_1770851617547_0.5437815535215544","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@adamrdrew/pharaoh","version":"0.1.10","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.10","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"098cab90c8033fd184487a80217abe1ffd42502e","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.10.tgz","fileCount":222,"integrity":"sha512-8d0OZh2lekgCIWoRtKk59QQJSA20ScTrNDl//hsCQcVAEO1Rrjpc/8pkrjrgAjPhqdthe1NyetD9AWKhH0onZw==","signatures":[{"sig":"MEUCIBYs9kpRj0fU7FyPJEU8s+stY4K3RSCH9U1064Vd3QRNAiEAs7hz5FvIz0CwGhu/TMM3MGzogRuKaUfFqFkYVfMt7Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235450},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"c67625b7383ad1c0893782fd4c461594413720e6","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.10_1770981224052_0.8375113319593015","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@adamrdrew/pharaoh","version":"0.1.11","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.11","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"64e9bf9aaca54ce14b7d2613a46e582e163e8a13","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.11.tgz","fileCount":250,"integrity":"sha512-JY6GoxUFAZ5VITT4n4cYbFiF/LeNnJbecotIs9JxoADY51xavx9qCfJndoVuBlAovJc+tsxAx7k4X0TpC0YwBQ==","signatures":[{"sig":"MEYCIQD6dgppnjiJlGbzlitwBxT0RDKR0g0z4oNnsyUHxkNePAIhAPa325U2qkJeCW+yrfMcBGKct9lHf6S4kNDNEqTTxzuM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260180},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"4e2db5e93c5b05cd80d061a441a8cc4325a3dd78","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.11_1771158194743_0.5169326353473096","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@adamrdrew/pharaoh","version":"0.1.12","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.12","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"dad174fe8803697524021b28b2c12619ac19d4bd","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.12.tgz","fileCount":270,"integrity":"sha512-2LJM2FxFosvJt47WhTJTTlb48RTn7BhpIb30kSXkRH7hDES7dt5qCN/fOrYlNMBL2ez3bER04lxb7v6/iRPlxQ==","signatures":[{"sig":"MEYCIQC/JCiXducRDBeG70NxR/CJDgLAOZeuZCf7Dm8QW9gR9gIhANZzdyZUUBbIaOgU1i+KtpBhPdcEcxNbAKkdoN8wEdzq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273863},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d0b651a66321e6c6be1a1aa6bc14cf2f642c2cf0","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.12_1771168003012_0.5125777494992527","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@adamrdrew/pharaoh","version":"0.1.13","keywords":["claude","ushabti","agentic","development"],"license":"MIT","_id":"@adamrdrew/pharaoh@0.1.13","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"homepage":"https://github.com/adamrdrew/pharaoh#readme","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"bin":{"pharaoh":"dist/index.js"},"dist":{"shasum":"fe4f9a494e64d67f9ad586cc2cfe80235602f4ac","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.1.13.tgz","fileCount":270,"integrity":"sha512-PwM+csrIQkmh/RjJgIU7oDUNt/y6iJySqy1NlH6Sh39ttwMjX4Ayr8Vf2JKewOLP3p/wYraLnFA1iwkuKWSmtg==","signatures":[{"sig":"MEUCIQDg+iINKzSsHskicJoYQiAlp85WSY428S2L/wwyh0XnfgIgCZ1GqG/kVpWZHO408fyuUTdwF90N3ACHK3mKGEl7Gk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274355},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"e425bc4c2bce9a7b88b345f899bf1ccbbb678dd2","scripts":{"test":"vitest run","build":"tsc","serve":"tsx src/index.ts serve","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"repository":{"url":"git+https://github.com/adamrdrew/pharaoh.git","type":"git"},"_npmVersion":"10.8.2","description":"A filesystem-based job runner built on the Claude Agent SDK","directories":{},"_nodeVersion":"20.17.0","dependencies":{"js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti","chokidar":"4.0.3","gray-matter":"4.0.3","@anthropic-ai/claude-agent-sdk":"0.2.37"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","vitest":"^4.0.18","typescript":"5.7.3","@types/node":"22.10.7","@types/js-yaml":"4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pharaoh_0.1.13_1771237747636_0.4998673922698105","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@adamrdrew/pharaoh","version":"0.2.2","description":"A filesystem-based job runner built on the Claude Agent SDK","type":"module","bin":{"pharaoh":"dist/index.js"},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","serve":"tsx src/index.ts serve","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"0.2.37","chokidar":"4.0.3","gray-matter":"4.0.3","js-yaml":"4.1.0","ushabti":"github:adamrdrew/ushabti"},"devDependencies":{"@types/js-yaml":"4.0.9","@types/node":"22.10.7","tsx":"4.19.2","typescript":"5.7.3","vitest":"^4.0.18"},"repository":{"type":"git","url":"git+https://github.com/adamrdrew/pharaoh.git"},"license":"GPL-3.0-or-later","keywords":["claude","ushabti","agentic","development"],"engines":{"node":">=20.0.0"},"_id":"@adamrdrew/pharaoh@0.2.2","gitHead":"c6c0d732ede3bb880c7fac992c5b121a17f80914","bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"homepage":"https://github.com/adamrdrew/pharaoh#readme","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-VU4yvZvp7eZnX75PBu1pf4fKrE/7zy8Gm0U7ZrbsgzXU4Uujx7fklhm2QNo34wuZkxjZP63xW/1DyMsJ92L64w==","shasum":"02531d0286870893c0b5d9418f38b59e684b4bae","tarball":"https://registry.npmjs.org/@adamrdrew/pharaoh/-/pharaoh-0.2.2.tgz","fileCount":283,"unpackedSize":322266,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICh/pUCGBuXcMJA5eYgeDvf9jZYv00Q//i9niLPHcjjDAiEAiiAr1YrL3KI2GuxqF2DZEFbIcy8p55EbK522CE/0Ysw="}]},"_npmUser":{"name":"adamrdrew","email":"adamrdrew@live.com"},"directories":{},"maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pharaoh_0.2.2_1772197476232_0.1792780573337771"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T20:02:46.630Z","modified":"2026-02-27T13:04:36.477Z","0.1.0":"2026-02-09T20:02:46.896Z","0.1.1":"2026-02-09T20:07:46.031Z","0.1.2":"2026-02-09T20:10:10.207Z","0.1.4":"2026-02-10T02:15:28.066Z","0.1.5":"2026-02-10T12:45:15.225Z","0.1.6":"2026-02-11T02:26:48.449Z","0.1.8":"2026-02-11T11:33:43.844Z","0.1.9":"2026-02-11T23:13:37.714Z","0.1.10":"2026-02-13T11:13:44.206Z","0.1.11":"2026-02-15T12:23:14.888Z","0.1.12":"2026-02-15T15:06:43.227Z","0.1.13":"2026-02-16T10:29:07.785Z","0.2.2":"2026-02-27T13:04:36.376Z"},"bugs":{"url":"https://github.com/adamrdrew/pharaoh/issues"},"license":"GPL-3.0-or-later","homepage":"https://github.com/adamrdrew/pharaoh#readme","keywords":["claude","ushabti","agentic","development"],"repository":{"type":"git","url":"git+https://github.com/adamrdrew/pharaoh.git"},"description":"A filesystem-based job runner built on the Claude Agent SDK","maintainers":[{"name":"adamrdrew","email":"adamrdrew@live.com"}],"readme":"# Pharaoh\n\nA headless job runner for the [Ushabti](https://github.com/adamrdrew/ushabti) development framework, built on the [Claude Agent SDK](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/sdk).\n\nPharaoh watches a dispatch directory for markdown files, feeds them through the Ushabti Scribe-Builder-Overseer loop via the Agent SDK, manages git branching and pull requests, and reports status through a JSON file on disk. It runs unattended -- no terminal, no human in the loop.\n\n## Prerequisites\n\n- Node.js 20 or later\n- An Anthropic API key set in the environment (`ANTHROPIC_API_KEY`)\n- A project with [Ushabti](https://github.com/adamrdrew/ushabti) configured (`.ushabti/` directory with `laws.md`, `style.md`, etc.)\n- Git (optional, for automated branching and PRs)\n- [GitHub CLI (`gh`)](https://cli.github.com/) (optional, for automated pull request creation)\n\n## Quick start\n\nFrom your project directory (the one with `.ushabti/`):\n\n```bash\nnpx @adamrdrew/pharaoh serve\n```\n\nPharaoh will:\n1. Create `.pharaoh/` and `.pharaoh/dispatch/` if they don't exist\n2. Write `.pharaoh/pharaoh.json` with status `idle`\n3. Begin watching `.pharaoh/dispatch/` for `.md` files\n4. Log all activity to `.pharaoh/pharaoh.log`\n\nTo run a phase, drop a dispatch file into the dispatch directory:\n\n```bash\ncat > .pharaoh/dispatch/my-feature.md << 'EOF'\n---\nphase: add-login-page\nmodel: opus\n---\n\nBuild a login page with email and password fields.\nValidate that both fields are non-empty before submission.\nEOF\n```\n\nPharaoh picks up the file, deletes it, executes the Ushabti loop, and writes the result to `pharaoh.json`. When it finishes, it returns to `idle` and is ready for the next job.\n\n## Usage\n\n### Starting the server\n\n```bash\nnpx @adamrdrew/pharaoh serve [--model <model>]\n```\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--model` | `claude-opus-4-20250514` | Claude model to use for phase execution |\n\nThe server runs in the foreground and responds to SIGTERM and SIGINT (Ctrl+C) for graceful shutdown.\n\n### Dispatch file format\n\nDispatch files are markdown with optional YAML frontmatter:\n\n```markdown\n---\nphase: my-phase-name\nmodel: opus\n---\n\nYour phase prompt goes here. This is the content that gets\npassed to the Ushabti ir-kat skill as the PHASE_PROMPT.\n```\n\n**Frontmatter fields:**\n\n| Field | Required | Default | Description |\n|-------|----------|---------|-------------|\n| `phase` | No | `unnamed-phase` | Human-readable name. Appears in logs, status, git branch names. |\n| `model` | No | `opus` | Model identifier passed to the Agent SDK. |\n\n**Rules:**\n- The body (everything after the `---` closing delimiter) must be non-empty.\n- Frontmatter must be valid YAML.\n- Malformed files are logged as errors and deleted without blocking the server.\n\n### Monitoring status\n\nRead `.pharaoh/pharaoh.json` to check what Pharaoh is doing:\n\n```bash\ncat .pharaoh/pharaoh.json\n```\n\nThe file is one of four shapes, determined by the `status` field:\n\n**`idle`** -- ready for work:\n```json\n{\n  \"status\": \"idle\",\n  \"pid\": 48210,\n  \"started\": \"2026-02-09T15:00:00.000Z\"\n}\n```\n\n**`busy`** -- executing a phase:\n```json\n{\n  \"status\": \"busy\",\n  \"pid\": 48210,\n  \"started\": \"2026-02-09T15:00:00.000Z\",\n  \"phase\": \"add-login-page\",\n  \"phaseStarted\": \"2026-02-09T15:01:00.000Z\"\n}\n```\n\n**`done`** -- phase completed successfully:\n```json\n{\n  \"status\": \"done\",\n  \"pid\": 48210,\n  \"started\": \"2026-02-09T15:00:00.000Z\",\n  \"phase\": \"add-login-page\",\n  \"phaseStarted\": \"2026-02-09T15:01:00.000Z\",\n  \"phaseCompleted\": \"2026-02-09T15:05:00.000Z\",\n  \"costUsd\": 0.45,\n  \"turns\": 12\n}\n```\n\n**`blocked`** -- phase failed:\n```json\n{\n  \"status\": \"blocked\",\n  \"pid\": 48210,\n  \"started\": \"2026-02-09T15:00:00.000Z\",\n  \"phase\": \"add-login-page\",\n  \"phaseStarted\": \"2026-02-09T15:01:00.000Z\",\n  \"phaseCompleted\": \"2026-02-09T15:05:00.000Z\",\n  \"error\": \"Max turns reached\",\n  \"costUsd\": 1.20,\n  \"turns\": 200\n}\n```\n\nStatus transitions follow this state machine:\n\n```\nidle --> busy --> done --> idle\n                \\--> blocked --> idle\n```\n\nThe file is written atomically (write to `.tmp`, then rename), so partial reads are not possible.\n\n### Monitoring logs\n\n```bash\ntail -f .pharaoh/pharaoh.log\n```\n\nLog entries are timestamped and structured:\n\n```\n[2026-02-09 15:00:00] [INFO] Pharaoh server starting {\"pid\":48210,\"cwd\":\"/home/user/my-project\"}\n[2026-02-09 15:00:00] [INFO] Watcher started {\"path\":\"/home/user/my-project/.pharaoh/dispatch\"}\n[2026-02-09 15:01:00] [INFO] Processing dispatch file {\"path\":\"...\"}\n[2026-02-09 15:01:00] [INFO] Dispatch file parsed {\"phase\":\"add-login-page\",\"model\":\"opus\"}\n[2026-02-09 15:01:00] [INFO] Created feature branch {\"branch\":\"pharaoh/add-login-page\"}\n[2026-02-09 15:01:00] [INFO] Starting phase execution {\"phase\":\"add-login-page\"}\n[2026-02-09 15:05:00] [INFO] Phase completed successfully {\"phase\":\"add-login-page\",\"turns\":12,\"costUsd\":0.45}\n[2026-02-09 15:05:00] [INFO] Pushed branch {\"branch\":\"pharaoh/add-login-page\"}\n[2026-02-09 15:05:00] [INFO] Opened pull request {\"phase\":\"add-login-page\"}\n```\n\nLog levels: `DEBUG`, `INFO`, `WARN`, `ERROR`.\n\n### Stopping the server\n\nSend SIGTERM or SIGINT:\n\n```bash\nkill -TERM $(jq -r .pid .pharaoh/pharaoh.json)\n# or just Ctrl+C if running in the foreground\n```\n\nPharaoh shuts down gracefully: stops the watcher, removes `pharaoh.json`, and logs the shutdown.\n\n## Git integration\n\nWhen Pharaoh runs inside a git repository, it automates the branching and PR workflow around each phase.\n\n### Before a phase runs\n\n1. Checks that the current branch is `main` or `master`\n2. Checks that the working tree is clean\n3. Pulls latest changes from the remote\n4. Creates a feature branch named `pharaoh/<phase-slug>` (e.g., `pharaoh/add-login-page`)\n\nIf any check fails, it logs a warning and continues with phase execution anyway.\n\n### After a successful phase\n\n1. Stages all changes (`git add -A`)\n2. Commits with the message: `Phase <name> complete`\n3. Pushes the branch to origin\n4. Opens a pull request via `gh pr create` (if the GitHub CLI is installed)\n\nIf `gh` is not available, steps 1-3 still run and the log tells you to create the PR manually.\n\n### Non-git environments\n\nWhen not inside a git repository, all git operations are silently skipped. Pharaoh works anywhere.\n\n## How it works\n\nPharaoh is a long-running process that converts filesystem events into Ushabti phase executions.\n\n### Execution flow\n\n1. A `.md` file appears in `.pharaoh/dispatch/`\n2. The watcher detects the file via [chokidar](https://github.com/paulmillr/chokidar)\n3. Pharaoh reads and parses the frontmatter and body, then deletes the dispatch file\n4. Status is set to `busy`\n5. Git pre-phase: branch creation from `main`\n6. The phase prompt is sent to the Claude Agent SDK, which invokes the Ushabti `/ir-kat` skill (Scribe plans, Builder implements, Overseer reviews)\n7. After the SDK query completes, a lightweight verification query checks that the Ushabti loop actually reached a terminal state\n8. Git post-phase: commit, push, and PR (on success only)\n9. Status is set to `done` or `blocked`, then back to `idle`\n\n### Concurrency\n\nPharaoh processes one job at a time. If a dispatch file arrives while a phase is running, it is queued and processed when the current phase finishes. Jobs are processed in the order they arrive.\n\n### Agent autonomy\n\nPharaoh blocks the `AskUserQuestion` tool via a `PreToolUse` hook. When the agent tries to ask a question, it receives \"Proceed with your best judgement\" and continues autonomously. This is what makes Pharaoh headless -- no human interaction is required or possible during execution.\n\n### Phase verification\n\nAfter the main SDK query finishes, Pharaoh runs a second, lightweight query using `/phase-status latest` (with a 10-turn limit on Sonnet) to confirm the Ushabti loop reached a terminal state. If the phase is still in an incomplete state like `building` or `planned`, the result is reported as `blocked` even if the SDK query itself returned successfully. This prevents false positives from early agent exits.\n\n## Project structure\n\n```\n.pharaoh/\n  dispatch/        # Drop .md files here to trigger phases\n  pharaoh.json     # Current server status (atomic writes)\n  pharaoh.log      # Structured log file\n\n.ushabti/          # Ushabti framework configuration\n  laws.md          # Project invariants\n  style.md         # Code conventions\n  docs/            # Project documentation\n  phases/          # Numbered phase directories\n```\n\n## Development\n\nTo work on Pharaoh itself:\n\n```bash\ngit clone git@github.com:adamrdrew/pharaoh.git\ncd pharaoh\nnpm install\nnpm run build        # TypeScript compilation\nnpm run typecheck    # Type-check without emitting\nnpm test             # Run all tests\nnpm run test:watch   # Run tests in watch mode\nnpm run serve        # Run from source via tsx\n```\n\n### Bumping the Ushabti dependency\n\nPharaoh depends on Ushabti via a GitHub Git reference (`github:adamrdrew/ushabti`). npm resolves this to the latest commit on Ushabti's default branch. The lockfile pins a specific commit hash, so Pharaoh won't pick up new Ushabti changes until you explicitly update.\n\n**1. Push your changes in Ushabti first**\n\n```bash\ncd /path/to/ushabti\n# Bump version in package.json if appropriate\ngit add -A && git commit -m \"Your changes\"\ngit push origin master\n```\n\n**2. Update the lockfile in Pharaoh**\n\n```bash\ncd /path/to/pharaoh\nnpm update ushabti\n```\n\nThis fetches the latest commit from GitHub and updates `package-lock.json` with the new commit hash and version. Verify with:\n\n```bash\ngrep -A3 '\"node_modules/ushabti\"' package-lock.json\n```\n\nYou should see the new version and commit hash.\n\n**3. Bump Pharaoh's version**\n\n```bash\n# In package.json, bump the \"version\" field (e.g. 0.1.5 -> 0.1.6)\n```\n\n**4. Build and test**\n\n```bash\nnpm run build\nnpm test\n```\n\n**5. Commit and push Pharaoh**\n\n```bash\ngit add package.json package-lock.json\ngit commit -m \"Bump ushabti to <version>\"\ngit push origin master\n```\n\n**6. Publish to npm**\n\n```bash\nnpm publish --access public\n```\n\nThis runs `prepublishOnly` (which calls `npm run build`) automatically. The new version is then available via `npx @adamrdrew/pharaoh serve`.\n\n**7. Clear stale npx caches**\n\n`npx` caches resolved packages in `~/.npm/_npx/`. If you (or a consumer) previously ran `npx @adamrdrew/pharaoh serve`, the old version persists even after publishing. To pick up the new version:\n\n```bash\n# Find which cache entry has Pharaoh\nls ~/.npm/_npx/*/node_modules/@adamrdrew/pharaoh/package.json 2>/dev/null\n\n# Delete the stale cache directory (the hash will vary)\nrm -rf ~/.npm/_npx/<hash>\n```\n\nThe next `npx @adamrdrew/pharaoh serve` invocation will fetch the latest published version.\n\n**Quick reference (the whole thing in one go):**\n\n```bash\n# In ushabti/\ngit push origin master\n\n# In pharaoh/\nnpm update ushabti\n# Edit package.json version\nnpm run build && npm test\ngit add package.json package-lock.json\ngit commit -m \"Bump ushabti to <version>\"\ngit push origin master\nnpm publish --access public\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}