{"_id":"@hasna/secrets","_rev":"75-5cc264f4c676c8254720e7035c6f2e78","name":"@hasna/secrets","dist-tags":{"latest":"0.5.3"},"versions":{"0.1.0":{"name":"@hasna/secrets","version":"0.1.0","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.0","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"d01e49adb60f2be188a399a5b8f68e7112c50f35","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.0.tgz","fileCount":3,"integrity":"sha512-zaH2Bj4tPgUe5ALBJlYcL4jiDJmwhlIQkc4X+ewuu9YqXIgsY6nFMskIJkEXwhg6EE5MuAYegvRi/aXvBCxdvA==","signatures":[{"sig":"MEUCIQCBWVKnGLgUGBPqUj9rAI+9F6j+SeZ7zCm/qm97SHnqbgIgZRun769QfICE6Pav8Ql/NcrdKei8hSEMTh0afVAdZAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2015779},"type":"module","gitHead":"5569b948242b7ca8131d12de9d65ce7fb7407aee","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.0_1773483827855_0.4124368175839901","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@hasna/secrets","version":"0.1.1","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.1","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"c8d0b72f4b6a8ca1493a69c4fc662f7c6bd09c10","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.1.tgz","fileCount":3,"integrity":"sha512-PdUJWuhiYdlPXeDagBqIkUPdEC1qAzaOC4SaNsdvPFmzXHBuJovVRK4UgjYgbM+OUsA0jPpD4a6oYscAqGD7OA==","signatures":[{"sig":"MEUCIE2iADm2IhMUpKJYc/xtMxd91JFErcCyR4qe4JEKlrmTAiEA5ZahVFG8awRvJ8SfebWgf7xzbUB2wF4ZRFhb6elvifM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2015779},"type":"module","gitHead":"5569b948242b7ca8131d12de9d65ce7fb7407aee","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.1_1773483855893_0.10330094984188287","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@hasna/secrets","version":"0.1.2","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.2","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"87e70541a969df11c1309d1c62bfb1cc2ce9fe69","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.2.tgz","fileCount":3,"integrity":"sha512-OADYXGbFhJA25xqWKBXs3xC7YUJ6PKLhpxw1LFh6XlHRgApuIbAgEmjZqpGGy1tV13SQmPMhLzly3bvJDSdNhQ==","signatures":[{"sig":"MEYCIQDPljNVJgGweBe4pFfI84n6Szd9y/S4gd2gMyFw4Nh8iwIhALIauSYQ+yHc7W7+eDPGXOxbnBKqP089JUS27mBhOPMn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2015805},"type":"module","gitHead":"5569b948242b7ca8131d12de9d65ce7fb7407aee","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.2_1773483876276_0.16845069191149498","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@hasna/secrets","version":"0.1.3","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.3","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"6de66da6afdc8d5170315b18d874c44f2d01703f","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.3.tgz","fileCount":3,"integrity":"sha512-lT0Pzf8r2wZGgttZOAcM80pXdVDZpw1u/2Ww8L2ZY/nEaHKRv3Ii9T2uzqBxcU0Ep5iu09AXMUys26u+fd6hBw==","signatures":[{"sig":"MEUCIQCRqdFq1m5IJwjV1+HvLF0/zHJicO6Hw9rNJA9gAAPNvgIgXoXBXmHA3pLKM0UrUz2IrbccC48yyPs9tpfBf2ySJ6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2015803},"type":"module","gitHead":"5569b948242b7ca8131d12de9d65ce7fb7407aee","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.3_1773483889401_0.768501178804412","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@hasna/secrets","version":"0.1.4","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.4","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"2af032eaf72a338101441ccbd24a6c1f88310c5b","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.4.tgz","fileCount":3,"integrity":"sha512-LzDxZg/nJ8eXYwHE/IPV3m2qdG9zaPspuuyvA6xMvktorqBfy2+I55tCH9MhlxIEKHw2xtguHZiYLnFQYOmxeg==","signatures":[{"sig":"MEYCIQCAzoThLQ0svQZ516+MKD0/VvFAWlQNhxwLP6LKC/9xEQIhALWrGZsbWyAO56NsAZemHXmrzEvy96LuYoVrBEJMAZGK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2016416},"type":"module","gitHead":"6cd05a7d7ffbaf884debb607663448e07c6a1c02","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.4_1774054070094_0.9766817173604501","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@hasna/secrets","version":"0.1.5","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.5","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"23546466d9cf18dade021435f161fca84cfe622d","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.5.tgz","fileCount":3,"integrity":"sha512-N9UjsT0JpSQ3Y+3FOjBieHl8Kb8wUPiy81lyq6o46SLMURqQ618GrSPlK647YgicngHjQnkEPLdYs5GGuxlPmA==","signatures":[{"sig":"MEUCIEshs0YwUGUKHuLuGzcZpzNXqzbNEUaoTDtTipPk95tlAiEAu/OVDuczq/NR6QRk0xAfUQF9xAM/8IFzZGs49ulOUJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2016654},"type":"module","gitHead":"a97404c1636767563b59b48951c2502f55c55a8d","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.5_1774057597597_0.82287144301764","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@hasna/secrets","version":"0.1.6","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"MIT","_id":"@hasna/secrets@0.1.6","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"5ca3a27a8936d5394aa56c46863a61a7ce7c07e4","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.6.tgz","fileCount":3,"integrity":"sha512-PgFkjZWi3jRjKGu/WF/NwvsBBtuA2HZxMPNzL+6heT11wRxlw7l7hz5mq38YQnzOhWH/3c7DNV0yaUFtJmIGKw==","signatures":[{"sig":"MEQCICcRU1evVhfDrHhatY5Q8bwoydqi/sIamLl3h2w5DRbZAiA0UD61hwezKjLp//HDBGgIy1h++0KQeE8t6kfLW0/Alg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2019367},"type":"module","gitHead":"93094a9ad3353a71750a727f875cf84593e24007","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.6_1774057665781_0.26483362167448754","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@hasna/secrets","version":"0.1.7","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.7","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"d806480cfb084044bd761222c28757cd3dd09c0c","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.7.tgz","fileCount":4,"integrity":"sha512-8JO1rZ9yRyfZjnEggkEdRmSh06CJb50kJAmTtwLkKfyRvLMwhQFciIFoWeTghunxhCT2RhyBPwgNU0jFCaWKHw==","signatures":[{"sig":"MEQCIFRSH5+W7TBOczPhTAHnBxRP3VgU8KUTwBT0fvQfMuoWAiBDEuXm1O9WBqg2Q/ANcW8EQhCE9WkTQ4y8Jolo2Uk+dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2027791},"type":"module","gitHead":"928bdc8b4e61d5adcf9b9c1312a3c22e1c9fa01d","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.7_1774263182966_0.849642189123154","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@hasna/secrets","version":"0.1.8","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.8","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"0d770869f978fcf969dc449659d48ec842cdd1b3","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.8.tgz","fileCount":4,"integrity":"sha512-Z8lGWP4cvqXPPGR85G/1cgvIdFZWBNM6jY4PxkqrBsgfnTbpprQRPSIOlIDzcU2/um+xA9D/GwjIkaIFib2Ghw==","signatures":[{"sig":"MEUCIC1nnKaI5GBNzYrCNSFH3QvGOWOcNv88jZmlT6AlM8D5AiEAuON+jPse8ml0mgZxFmnJtE+AKAzNabL5cpBShXLPvRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2028140},"type":"module","gitHead":"a96f43731ff64f05ff2a7c8ee1af312531e688ff","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.8_1774276447845_0.8797215353719854","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@hasna/secrets","version":"0.1.9","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.9","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"403c00b9ca4b5e93cd16879e394e2b8438ef7e64","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.9.tgz","fileCount":4,"integrity":"sha512-/7381VUa9oVeGAeA9Hr765pZ0++5m9wutvQkKfGByxwDGO2m88MRloqqb2Y+u7Oo7xECwpXykZNa+fk2jHniAw==","signatures":[{"sig":"MEUCIQDSDTeqrGWxWt0mxA4+xp9Hn/H41JFYYfs/1Mpcqw75swIgOE9UeGfhbo8jkzLkEncOqFWHioMJsfZytutVGHVUw2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2094686},"type":"module","gitHead":"ad66a35bed66b38b595214796992ddf8df595995","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.1","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.9_1774278861153_0.973254603250806","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@hasna/secrets","version":"0.1.10","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.10","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"7327b07a04506c9c1d1f7afcb4c714657331f29e","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.10.tgz","fileCount":4,"integrity":"sha512-9u4QTfLHy245PoJmV6aik2ZCRAn48XexZ7zau7Skwk6HmIkk9BvpIzDyOaCs70m6TxYJwx2CEbG+ujjKNafCRg==","signatures":[{"sig":"MEUCIQDxp8cYDIKH2yYa0zhpw9vrriSHNPH/IlU3xZPyHugkKwIgVZsryxl8NVR31dHux2xL+G0htnAoboTKd1+/N+j078k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2094761},"type":"module","gitHead":"56cf5066a2347c0ec8c47f51b3c758866a384dd6","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.1","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.10_1774280429767_0.4876005626146229","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@hasna/secrets","version":"0.1.11","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.11","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"273b6cab4656a2c1437c890b58b7648ea2ead77d","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.11.tgz","fileCount":4,"integrity":"sha512-xU1RNBtvx4ISWBvPr4hsl9Zxy1qMBlRxNV10dwEgTmOJJ1VDiH9+dsezjpu8/h1wH04vmCsrDk4DVU423D4dfg==","signatures":[{"sig":"MEUCIQD4bto7L4+/ac2JyxmXQj5XCozBOOwbki64fvF93D0j1AIgOPdAHchfwHgOVyMBLThBKc2biN5iBHOHhP+UdiuW03o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2126561},"type":"module","gitHead":"db75c012e74de9305fa098296f9b2c67b3b6e861","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.24","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.11_1774447323711_0.44166718665813587","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@hasna/secrets","version":"0.1.12","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.12","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"fd59963ce9ca1c73b322f3fddcf05e63e0404495","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.12.tgz","fileCount":4,"integrity":"sha512-5XZHNPagDjjkjOruDgxni+pVTHgGv/+3nsp5j5d4dKd0Ss1RGkPq3Q4GCB4GtrFR8Wn3or/Loe0AoFdA1oCSJA==","signatures":[{"sig":"MEYCIQD98xSp+TVk5e5cbQUO6ak26mlqT1Auzpe0nZfMuFPFsQIhAMhCk21nGE5Knft301Igf7BluEDgwV75JFZ/i3JALZzZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2126561},"type":"module","gitHead":"db75c012e74de9305fa098296f9b2c67b3b6e861","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.24","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.12_1774447362610_0.026596710067463114","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@hasna/secrets","version":"0.1.13","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.13","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"27dd9654d4d1e3ead1c8e28a7e32a53455088643","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.13.tgz","fileCount":4,"integrity":"sha512-H4zw0GN5OtVUJ6vTCIx2Ql5sthe4x3dy6S2qqNePIKzczVozIhfkzdowISbWdPISM6CzZL1sZKZaXdaR+QtIkg==","signatures":[{"sig":"MEUCIDh/901TLzgkzEPTWS/j7dCM2vMG+mNR/H3DYL+jo0xLAiEA7/8hbs10qz+cKknrQ8lrMHZYUbbuOhc4N0yRkSiWuK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2149641},"type":"module","gitHead":"712e244450b513403d403be70824f37f633fa40d","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"0.1.29","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.13_1774704839109_0.20308101764698527","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@hasna/secrets","version":"0.1.14","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.14","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"52932827dec0ef9ab36dbcf96a17376d21e64bdb","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.14.tgz","fileCount":4,"integrity":"sha512-9LLarvSte0D4GfQnbzkOqcg87FabtGJwNpJsm72RqQUdKH0RwSxxi/c6LFea9EvEMGe/tz1Y2Ax7XtLu9I3T8w==","signatures":[{"sig":"MEQCICELjqzhOGuNeqPuWP2Sv1K4zwJBoz/IFcNzYd9fiA/vAiBq+QXtiNIh4wmosbj4pPjg3Vdnvdy7TiTMYpk7nhTH6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2149884},"type":"module","gitHead":"18c6feef9767b8a02ed3601ba306a98fe7109a30","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"0.1.29","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.14_1774704948351_0.64247190791378","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@hasna/secrets","version":"0.1.15","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.15","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"fa5d9cfae41ca2a4f2a9fc990fe3c706cfccd6b3","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.15.tgz","fileCount":4,"integrity":"sha512-VnV3sOjdAo9aclmY1fNY1VkcxIQD4im3J9CRjuV+oh7JnNpOBgqLUov/DtLQKIsy0kPyrEiwvIqB6X/1rqSw4g==","signatures":[{"sig":"MEQCIAaLfEmcsZVVApFX0YQdtw8ebbAMdXFi0os9mgqrrJ2AAiBiftC5irPkSz42t5NFEZdFsXZfs4vwNiOpnrQt7HRpZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2149884},"type":"module","gitHead":"18c6feef9767b8a02ed3601ba306a98fe7109a30","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"0.1.29","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.15_1774704972815_0.3891843005262703","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@hasna/secrets","version":"0.1.16","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.16","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"e492dc869cfba77b683d4b7b238b9bcba6a8bb99","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.16.tgz","fileCount":4,"integrity":"sha512-Y8lEim+ixAMcKAOzp1P5V9z6/tNtZ/8ObA1AHnjWqkDEgEmoAmblpg3RSgFpRG9bQlrac8xqnL1/hdh+5+MaZw==","signatures":[{"sig":"MEYCIQCS0FjCZXzbtYJT6HtLyhxTKJ+vy9RuiA9Q/M/gSCUexwIhAPYpv/6uRmCRRJpPl8/ur33+J6qRIhtwT6oglspEAzqR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2149884},"type":"module","gitHead":"7e066d171dbe1a14d2fcabb311fa2ca36b3f3630","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"0.1.29","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.16_1774705001748_0.9385919315673639","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@hasna/secrets","version":"0.1.17","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.17","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"cf152772163d95fcf77dbbf23e74828b38827456","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.17.tgz","fileCount":4,"integrity":"sha512-MS7jLIPo9ktdMLXDo3dyzf+trHb0Y3y+ku7QUamoB9OiLqfxrJw5siFKVcecmZ1JsM0CTB641Z2Dh61jLtWrsg==","signatures":[{"sig":"MEUCIFXygdASuVuZ3Dm8YryQYkNyGT42qm41+ibP5bIujdZ2AiEAnIVrUEEJYMM6v/TGJU8uFm2xY5ECFfSAc7rGSoRpKc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2149916},"type":"module","gitHead":"01153852586edd2d41e9610c0fd04bcc33e83254","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.17_1774705168273_0.042084068286786014","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@hasna/secrets","version":"0.1.18","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.18","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"9dcb6e473c1fc711bf7481b0108378d9f1cdff76","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.18.tgz","fileCount":4,"integrity":"sha512-Vlvfsn+m7arkBIfVZTUuJ2CLl+32HcCexaKzF813l4qpPeJOp8d/OARJP5NugmfnJgjCsH5LFQow8+AgrI2fVw==","signatures":[{"sig":"MEQCIDqhBCti+exAdPFYLqAhfWa0hUUrFR1njZ8PGSloteWOAiBwFBcy14Z6qJpOEvVfOcWw9FSKgfZ9EYEoDZas2Ei98Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2154597},"type":"module","gitHead":"da5b97f8cf11f4ba8177977fc440593fce9d0bc8","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.18_1774854620067_0.3113100981308121","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@hasna/secrets","version":"0.1.19","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.19","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"378c0a0e6fc5640d8aa64328023a96bcb1932e0b","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.19.tgz","fileCount":4,"integrity":"sha512-mt2K5it2Qs9npYdnKiLQYgd4VAVrM1Dw7hvW8u5dXq+3VX/Mic6NPwmMhVTp5QS7OvLbQZWfWzbEHa/g3T38aw==","signatures":[{"sig":"MEUCIQCZLNIyNQOC/gauXE82DN+Vl65Vmh3DYBTO8ViwM0wZwwIgRCWJbAvr8HV4dTlCpq0BcK6SfKxkd1pueoFeKa81uKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2160853},"type":"module","gitHead":"949c1b23b4e5b7eff6f330e801a0df67e63394ec","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"11.8.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.19_1774856682383_0.6770082176132945","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@hasna/secrets","version":"0.1.20","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.20","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"e185e9064a164b657bb91c34533fda1bccbe9d8d","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.20.tgz","fileCount":4,"integrity":"sha512-4yGADN7lpNgMI5XNC7GarDpSV3My8vMV0i0AnJJkFBW9Tlg9/bjFc0PygFLyatZPeG5BmYwHQhAenIfo4XwWrw==","signatures":[{"sig":"MEUCIQCftLWB/lK+/MXIeYbzZuGG4HxKrlqq8AknJFoaBHuA9gIgRyv3btNxQ/QzqUYSmM58MPECvqP2MhBaphiAngyfK8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2167895},"type":"module","gitHead":"40a7d9e5a9b5d8c76ec9282059866f462e9af9da","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.11.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.20_1775728694269_0.9168305065095959","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@hasna/secrets","version":"0.1.21","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.21","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"e606b38a1a373f525da47a02beff01621d06448b","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.21.tgz","fileCount":4,"integrity":"sha512-3CLBbCyHg5XCVLeU+fDoyU4o6y1de14GsHdIJdmA+Iaqe9uiCuHWF8MIsWC/jgxU/UVmJAjLCxgYm0nimN/pSA==","signatures":[{"sig":"MEUCIQDERHXjIxA1OADaJQzYOU1Wix1qkOvrpJUMKebKpPi/gQIgednWzGjUDIDUHf6FmkTv9ECNVxWYeTt7NaFx291MMyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2165926},"type":"module","gitHead":"c8faa4be2f6e4df11034101d30d72e000d869784","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.21_1779710444535_0.8184501294517179","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@hasna/secrets","version":"0.1.22","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.22","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"6b1f2d6727056d7927f6ed2a7f40ba7f6733bb69","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.22.tgz","fileCount":4,"integrity":"sha512-yShJe8iwV0n2/Am1jjHupKyXQQT54hT+cO+giRsQHr1dT/SUopYr8Yn8aARkFYgmd+o0scOLR6WyKuDpzKLS6A==","signatures":[{"sig":"MEQCIB979KhOiDQSo22Vx1j4s//9DfMprmZuoetrHuMFPOBXAiAnI22BmmR9AEiHk3BNE6qWH5+U0AWcd8UV+M/lb8w2FQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2168368},"type":"module","gitHead":"a1dbea4b696b79616f0d347b39af961125c8f02a","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.22_1779710535151_0.6821054012497407","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@hasna/secrets","version":"0.1.23","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.23","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"f16a46cf3ce609ebb1c6195c0211d566178e2621","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.23.tgz","fileCount":4,"integrity":"sha512-hrGYRBR8ChNdTl16KUCUerK746gT1Xeon0sqhFh3sgxlubm28k1oLyIIYJgH8uaJtHN1RH+X+qaCaEoM4TuWAw==","signatures":[{"sig":"MEUCICKV72McFxxpMGXgl/Mi+iGLHoJ+1eKO18Ex3xDPpnpBAiEAneVB7jl/u8CyLXSiCNgIZeHcpQrESLqSvhCmnf5KFeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2197698},"type":"module","gitHead":"3142b1a619d4640afc26d5b0dd91a9556a9e60d3","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.23_1779973877317_0.5930034081104132","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@hasna/secrets","version":"0.1.24","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.24","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"c0c5a65e6daac57ca66200cd1b22793d7b53767f","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.24.tgz","fileCount":4,"integrity":"sha512-UxbMC+WBuanCNzQZOsy7siHsiuC7PByyTPu+osbmgBMRvlfDX/j92/ShXxzsY6ihd5+sbCAB+WQpqWwxrTqJgg==","signatures":[{"sig":"MEUCIQCPtijJS5kViRysmZQV/Nqi2LepZKH3dCytb2+rBZwDjAIgXz66WvuOvF91Cj3Db0NcszodHGsxljiFPjJsM9wrIAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2197699},"type":"module","gitHead":"e2481ab2d48a94f6e8da21c2243a139b2a503803","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@hasna/cloud":"^0.1.30","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.24_1779975168121_0.7214054722293755","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@hasna/secrets","version":"0.1.25","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.25","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"bc840ae097882ae4feb7c48d4bc8e937fd5a3de5","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.25.tgz","fileCount":4,"integrity":"sha512-h6gqsLhMI04ngaMaDhtcSSEDnMPky1WXAVUicvfaiigIcHpTffzk59Cp39y454O0vNXCApLnipwz8S0YUoyLDw==","signatures":[{"sig":"MEYCIQDFtGacdFUVngGSuUBzOK5dkYQJeOpL3VU52QDV71GXTQIhAN/aWndvm5D/jvdxKRkPHREjhg7elFXw9//VQl4zH3KS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2235197},"type":"module","gitHead":"4da8798ef915e1e86148dd149d852a71caa3ee5e","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"pg":"^8.20.0","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.25_1780856187811_0.8520886516283999","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@hasna/secrets","version":"0.1.26","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.26","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"be9bb8260bfea9e7ad8f9b6b4f420904bfccf6d0","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.26.tgz","fileCount":4,"integrity":"sha512-viqOQgaBK8vY+3tTmIvFFbX4s5LIxA5Yg5XSUjP+wjoofdXhtkWvBf1bfcFQrdpmlHKXL8izCiRQ3lauUAKAJw==","signatures":[{"sig":"MEQCIFBr3Z5GgR5918N1cTjf5tvV8IJvCjYamSIbNYXzplCVAiAzo4SDBpvcUfLhoVIJXHr5oQFCg4iCA7Fae9ywNHhkeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2301460},"type":"module","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^13.1.0","@hasna/cloud":"0.1.30","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.26_1781607110951_0.6543126460247255","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@hasna/secrets","version":"0.1.27","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.27","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"786af21482a28640c2f4a64c208921761e6e4333","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.27.tgz","fileCount":4,"integrity":"sha512-yrChtxvZy7mRvgn0awPIvdcQ8rSiPyIqTGqlc6M7XA4sY1gQDuQbC5wAsJMgxMtDFJNwqtXSAsiGDH5avWUDpw==","signatures":[{"sig":"MEYCIQD+Xfab8ME5XiPDRaGP8C2MwD1dn8+l1abDnSYVuXmF0QIhALk4LNLi1eb7E1H452pw2E8RbOqJn71WsdPslI6TKhRV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2332026},"type":"module","scripts":{"test":"bun test","build":"bun build src/index.ts --outdir dist --target bun --format esm && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^13.1.0","@hasna/cloud":"0.1.30","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.27_1781608213186_0.9138035624255938","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@hasna/secrets","version":"0.1.28","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.28","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"f9479969ee14ee7739d7a5626ef86e03c812bb93","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.28.tgz","fileCount":5,"integrity":"sha512-bYe4iD3sIx0SyhQ5MgDDeek5XjQEq1qD0A2+Fca+XsNvLFSKr9uzB6AoZLHvLWxdjY9v+9fGk3CNiLDfwJOzsQ==","signatures":[{"sig":"MEUCIQCbpcga0UVbjzqjTUrCQhXKnRO6ABlgKnzgbM4hb1/AjgIgAqpe9ioDXjyfp3NZVAJDpeg50diLI3gX6UbQXXjU4uo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297885},"type":"module","exports":{"./status":{"import":"./dist/status.js"}},"scripts":{"test":"bun test","build":"bun build src/index.ts src/status.ts --outdir dist --target bun --format esm --external @aws-sdk/* --external @hasna/cloud --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"commander":"^13.1.0","@hasna/cloud":"0.1.30","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.28_1781717554734_0.9583795743995343","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@hasna/secrets","version":"0.1.29","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":"hasna","license":"Apache-2.0","_id":"@hasna/secrets@0.1.29","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"9ee65c687ded89cd818369ab7dd60dde808b3da6","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.29.tgz","fileCount":44,"integrity":"sha512-ay8wI8Ah7eVTt6pmBM9zDMd5xSPCne9kPHR0YSweNA7XyYCea9sMZ9eYXHbmQD3hLg7cP+BXmfIwapawVLgaRw==","signatures":[{"sig":"MEYCIQCXsVCvAergig7lNA3cfpn3amtdAs9jqP3o38yyUSaqpQIhAOZ/fZ7fB0vZZG9LBKUpgbYlggqxe59S0+7gHKcRmit9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6862001},"type":"module","shasum":"9ee65c687ded89cd818369ab7dd60dde808b3da6","exports":{"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/storage.ts src/security.ts --outdir dist --target bun --format esm && chmod +x dist/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_integrity":"sha512-ay8wI8Ah7eVTt6pmBM9zDMd5xSPCne9kPHR0YSweNA7XyYCea9sMZ9eYXHbmQD3hLg7cP+BXmfIwapawVLgaRw==","repository":{"url":"https://github.com/hasna/secrets","type":"git"},"_npmVersion":"10.8.3","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.20.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.29_1782558771556_0.6942145168507523","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@hasna/secrets","version":"0.1.30","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":"hasna","license":"Apache-2.0","_id":"@hasna/secrets@0.1.30","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"ab0d4d49507f5957443339a303453e122d7eb096","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.30.tgz","fileCount":44,"integrity":"sha512-ZCJbCrnO2UKYyZ0pAYydUNQdj4P+LPKrL14fC/bESnetH08cATFPS8AXqQkkSuacM3/H35+NVJJJCm1sfwx+zw==","signatures":[{"sig":"MEMCICBtgEIJX1yy7LOkWRpSq0MYeR//HF9pvuRy3c6Q9PN+Ah87vlyDKv32h86ld6rAYsWAWJBfSI5Kl6uVZ/kEmNdU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6862263},"type":"module","shasum":"ab0d4d49507f5957443339a303453e122d7eb096","exports":{"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/storage.ts src/security.ts --outdir dist --target bun --format esm && chmod +x dist/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_integrity":"sha512-ZCJbCrnO2UKYyZ0pAYydUNQdj4P+LPKrL14fC/bESnetH08cATFPS8AXqQkkSuacM3/H35+NVJJJCm1sfwx+zw==","repository":{"url":"https://github.com/hasna/secrets","type":"git"},"_npmVersion":"10.8.3","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.20.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.30_1782559657247_0.7016106075161836","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@hasna/secrets","version":"0.1.31","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":"hasna","license":"Apache-2.0","_id":"@hasna/secrets@0.1.31","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"052815db7086fca003548243669f4d3993c27edc","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.31.tgz","fileCount":52,"integrity":"sha512-uIbY2QwNXTKrW7acFAs7mwrBlf0aAd+rD8vMCy/pXO8tkqfQRpPsHMigdoO3ImUCjY33L2DqHk6BrkRuE3dBTg==","signatures":[{"sig":"MEUCIHD4+/U03TI61aZQy8BnABA6qU8QaqreYj7X6gKOrFWEAiEA31bnbo+Dgtt/Nwu9vQV+cl95d1y/CgPe0FXHUIvTamo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":823482},"type":"module","shasum":"052815db7086fca003548243669f4d3993c27edc","exports":{"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts --outdir dist --target bun --format esm --external @aws-sdk/* --external @hasna/cloud --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_integrity":"sha512-uIbY2QwNXTKrW7acFAs7mwrBlf0aAd+rD8vMCy/pXO8tkqfQRpPsHMigdoO3ImUCjY33L2DqHk6BrkRuE3dBTg==","repository":{"url":"https://github.com/hasna/secrets","type":"git"},"_npmVersion":"10.8.3","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/cloud":"0.1.30","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.31_1782595701399_0.15956398698301943","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@hasna/secrets","version":"0.1.32","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.1.32","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js"},"dist":{"shasum":"a6465707d8cd0e15d4f4f018556afb6db75db8ba","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.32.tgz","fileCount":52,"integrity":"sha512-HLs91W5QRjri2QMDXRK50UGlVSMkGyluqh4FNCfYtfm4hzTz4D8y5TQhPn1ioTS5ezg2jVg4cX9ovph3ON/+lQ==","signatures":[{"sig":"MEUCIGwxqhMOtmbsCG1hXw74yaq0HBgLnq9dj2+p4R+Wkgm0AiEAtwpRvb+8yKzq5gdZImojheHeu5oKK2+puDzaX0xOs38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":824468},"type":"module","exports":{"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"24dfb8c6e4952fa171630c09921b5eb309351566","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts --outdir dist --target bun --format esm --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.32_1782679936295_0.7834632680544573","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@hasna/secrets","version":"0.1.33","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":"hasna","license":"Apache-2.0","_id":"@hasna/secrets@0.1.33","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"de8e9716253ae05fbb578cb19cfa80bbb2028695","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.1.33.tgz","fileCount":103,"integrity":"sha512-gqj78Vs7Gq+s+X0xAJOYG49P/s8v3ai25SAm3WIcDt2gB8ZF+ZsMr7MrP9p2NtnUl3uPFI+EaTpvR6i7Rmjh5w==","signatures":[{"sig":"MEYCIQCQkDr3/sI1MWF0FgX7eT6KL+pb27vBuq+V8gtsYs4MNAIhAPhF1KLMezWI1UKkJ+oskfcRuXNjqrUKbb9ojSehH6sI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":892272},"type":"module","shasum":"de8e9716253ae05fbb578cb19cfa80bbb2028695","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @hasna/contracts --external @hasna/contracts/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @hasna/contracts --external @hasna/contracts/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","sdk:generate":"bun run scripts/generate-sdk.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_integrity":"sha512-gqj78Vs7Gq+s+X0xAJOYG49P/s8v3ai25SAm3WIcDt2gB8ZF+ZsMr7MrP9p2NtnUl3uPFI+EaTpvR6i7Rmjh5w==","repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.8.3","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.3.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@hasna/contracts":"^0.4.1","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.1.33_1783344912363_0.78278845386312","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@hasna/secrets","version":"0.2.0","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.0","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"4efc61dd4d145187c4253830a993701afe57e4d6","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.0.tgz","fileCount":109,"integrity":"sha512-fmTMoxxWSEwBGBB/DOEMM8+p759ppS444jtIEons97EA8QupR6Qwp4Qh3wrKFFrmac1LGOBL/yKCssc9AjZ9mA==","signatures":[{"sig":"MEYCIQD5UoCPV6lCOxXi1o7ka/ADnkYbh8AmATSoI+VNC9MRcgIhAMLr/aqvPd3PdmI74hzmcMcKjT79oa2xaNy6RaER4hX1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":996533},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"8c9bcd8b5f624c3a03b59bf1f6afd0d17e784cc8","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.0_1783509705987_0.37215109053313067","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@hasna/secrets","version":"0.2.1","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.1","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"c07e8df0243b79203d21f8901e64b6356e63d45f","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.1.tgz","fileCount":109,"integrity":"sha512-QgyCQtEPMilT8hhyukke9Ty75VagYp1nFoUGbDNelRhbKP+CfsQ0687mg01W6Bv6k5IKIE8RUwLQQAKtuAMeNA==","signatures":[{"sig":"MEUCIQCPCselmjUVttkUo5XY7v94hkptAq25Fq+btSugw8qnXAIgdVTJpEQL5tmji4/HrbbWf2HE6MoolTq5jLxYvocPSZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1002251},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"8510895a39427a765ca8f0d99f1d8c4d91f46553","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.1_1783511638253_0.7608507361913168","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@hasna/secrets","version":"0.2.2","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.2","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"5e09ac88a3db7c435aebfd312dbe6a4fde810f5a","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.2.tgz","fileCount":109,"integrity":"sha512-nPfCoP0VRm//oq5RTUFTWtOlAJOja/kzYCpcSo+9ts4+J/oRu+74+Eam0OFe7SE1owDpuhblfsHUuSGkkaJyVw==","signatures":[{"sig":"MEUCIQDYYYZ2wu1wk+Te1VUej+w9Mdh3EdBO1d9zy0f58W76VwIgCRJQJJ/bq2vvW8wpl+XAM898SmOGtUjkG/ciisI39r0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1002084},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"26507f476b6c3e7f32f1ae95385e8b2dd59a537e","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.2_1783511866200_0.36783582505483037","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@hasna/secrets","version":"0.2.3","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.3","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"c9f7755474ea0a61a81873fc300f66a4e7430384","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.3.tgz","fileCount":109,"integrity":"sha512-+/hs4LIbYBrJkOGnojlo8vTW4ABIahyJjTmAiwsfBR87xI+p136lKqS0grzUTWvpMK7h4qwz/Xw13y/kfRAQng==","signatures":[{"sig":"MEUCIDLuiu7Ks+vM2SBKDfSXyf/+Eu9JB1NgUIrg9oYUXM75AiEAmFqPANOurStFWtOk8k/9izr2b4tu51LAqjWoZjIMZX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001552},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"fcd2097ff224314f61a07eacd99eba847aa5a834","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.6","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.3_1783514452907_0.9558215850215215","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@hasna/secrets","version":"0.2.4","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.4","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"642ece50bf6e4fed45b8b042f228cc3836ade3b4","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.4.tgz","fileCount":111,"integrity":"sha512-hgUL6HKO/t1dB+gz8lIw3Y/gT3/SG2w74hirODFizhGpXZ5A3qjLIH7Mp8MsYOAbpYmKr6JytnHIJeYCLghjag==","signatures":[{"sig":"MEYCIQDWsTUDL+gB946saNEqoRCi/ugtt8/rnCdYVN9XFGm31wIhAI8BdxHC7nIS8UJVOV9cGsTl59tGBrjdPdwpatrVdOv1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1008015},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"8f4d1257bdf5684a0b573c51457bc30752b16521","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.4_1783516798565_0.28798344361010586","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@hasna/secrets","version":"0.2.5","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.5","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"4debc4332899a2ca0e69e0b3829f839462f0f983","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.5.tgz","fileCount":111,"integrity":"sha512-vaWImaGrHRjYtCcxdIWZbG8z8A5R3fzYCp7ZB9Mh1O17bxDS4V2MVtkQVlmE3+760mJqEmi39QYXcdfeY4Vgwg==","signatures":[{"sig":"MEUCIQCwB76tIEktVU8E3MckSG3ZdDLzwcnBRBO+hkxH4yRcgwIgY1bFYjwMOhylWeMaBf8IZ6Vo0qeVtkfjAvtiVHKal24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1007483},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"d7bb9925b1957e7827dd1d41a5571b85cdbeadbe","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.5_1783518834232_0.005376832106470442","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@hasna/secrets","version":"0.2.6","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.6","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"1aaf741efd0656db2d1627cf38df4c54eb88199a","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.6.tgz","fileCount":113,"integrity":"sha512-QCsh4xiHDCN0R032s0vmYMS22hvtHxEhMmSgLKUHJuEuwa7YaxgjnZcpec1peW3/Jiyr1sbi4a0ujGDzHamNOQ==","signatures":[{"sig":"MEYCIQD9DPyb3J+dMReKwK3DGO+BhYGbogJZMQy/6tno5uvbIAIhAKsKdg44qNwDP3WJwrfgjBKEpERNQ/zg3aYyC1cGbBbl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1008897},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"8ae435524330b953eac3f54af04e22c6021717a3","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.6_1783520425730_0.9798628775811271","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@hasna/secrets","version":"0.2.7","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.7","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"8c5940cb5b312dc4bce26be3666195aafdaa5cbe","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.7.tgz","fileCount":113,"integrity":"sha512-jiAxt+k+hqRESHIQc6l2HgTQwVh0O4n1pPp0HDooBSvjLSW4wuSGc7MvwKR07IElg6nMwKILzfABgD0Jvs4Kgg==","signatures":[{"sig":"MEQCIG8MAfO+YfoYQrvcdEC385p75XQj0rjZNTVZ/0DWQBglAiBzLl8OwkUCcgieEnSD91rtPk4NavxTMLePrRvXRYkHcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1008983},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"520ea00ec33f2cee424fdf09513e6029960c5eda","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.7_1783522366657_0.1467894455159644","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@hasna/secrets","version":"0.2.8","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.8","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"170a57c934584b9205d638297e7cf3ff88648d62","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.8.tgz","fileCount":113,"integrity":"sha512-DW4YSj48VFP/+ZJUxW+8OoU9tpRBG3ZfY8Oo/CrmGYj0T16m+UosKrw8EmDwi2T44WIquSO6JxSsu/H0a0nCkg==","signatures":[{"sig":"MEYCIQCePimKlJi7Log1lcIHzzUvQ21jynybIYIEvj26/KwlSAIhAPDCDotBw8G6ddiXXYf9Xb0Z3jSXoQ3LE+tmqFskb1fR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1012003},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"gitHead":"c4603cf2fff25b2bec9518a6aa182d959a4d726b","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"file:../open-mcp"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.8_1784899843421_0.798965100671768","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@hasna/secrets","version":"0.2.9","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.9","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"9e9a5609c0cc4a4ce2a95fdc145f846d211ffe57","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.9.tgz","fileCount":115,"integrity":"sha512-adKG12MK/qzYvR35+iQ6RQJfoeUGeH6SKKMw1Lfg7nkoxJfBSA4kQniuf1/eQsqDZ1nE9RX8hCLDuwc5qFA3Jw==","signatures":[{"sig":"MEYCIQCQ+51BXE2MItVmUdyK6A2f06rHkh8Yynw3RKIQ97L+PQIhAPcVA3XiOu7MbaNGoaSAkkDnQBFqpgemmCX2BTrudI1d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1050788},"type":"module","exports":{"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.9_1785413631739_0.8714201433877076","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@hasna/secrets","version":"0.2.10","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.10","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"e38d9908061816afca7a5c61a0c2874a170f58b5","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.10.tgz","fileCount":116,"integrity":"sha512-VSptMB4PhZn9dcYDChhATgQqW4UAIzQacOiL83lbdbyOyMxL/+FJy/YODNjmEWzYugTPELEKZ0J2oEyS8AnpLw==","signatures":[{"sig":"MEUCIQCu5ao3Q1yez0b6pImTMCd0ns731Kay51ywKu9du/7jkwIgcCIePc8A08xKOArsqssbBi9YKmvR2IeEzGpKuiQoKu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1084422},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.10_1785551403261_0.5639097039030836","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@hasna/secrets","version":"0.2.11","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.11","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"f44de877dd823429818fb3bf129ab6c4d745373e","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.11.tgz","fileCount":121,"integrity":"sha512-kHrKa9BVOUEb+cedEr1kvRAu7AKchKDS4XNPKlHiW+8FTxBXAEbfML/E10lj32JvYJdWRF/mJ40h7boTHc2Inw==","signatures":[{"sig":"MEUCIQDrvRG1sfv0FWaEKn8MkJuH7zy2Yhhet0jK1idW6iGemwIgV6oA29pAzTUkAoPkO8L7gXFs21dRI6/+z85GDLDOAoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1200869},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.11_1786131973167_0.9559014177993119","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@hasna/secrets","version":"0.2.12","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.12","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"896a58c0c2beb3b6e34e3536449c42c382663a01","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.12.tgz","fileCount":121,"integrity":"sha512-nYOrjuszzMZVuyPk0aGdZf+u6Jvvp3C0kAghEewGy7dqHVUYddaySPgrrHGSQk8C/7WnfC+Vhw7H9/9W4wOuLA==","signatures":[{"sig":"MEQCIHQUYf0niDaL4XfAamsh2O9+RJpPu8/nKx4dPpvieHdaAiBFf46xb3tr9vFVi/4cNsSozCRYf48GbjE9HUdcKWS+cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1200950},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.12_1786136371117_0.5632591766708632","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@hasna/secrets","version":"0.2.13","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.13","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"e2af1cd566a5d3a54fd5105f0f40e2527a31ba7f","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.13.tgz","fileCount":121,"integrity":"sha512-XGJrFa5C14w74sjloCqtulsgA9DsQ5a/stkf2xuLU7d4+vKoRjAqCPVC6rioeiMjnuqg56p/kFxvWlE8X7L3NQ==","signatures":[{"sig":"MEUCIQD7WdYncC1/+T4t3oRaxVBkp3gVF30OoA5Ty3qts6IdUQIgWZk/WJghCt9XOdi2UMcTdmBWXHO5qFpFkeJJtFQZ7vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1200197},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.13_1786144131267_0.6421719121173026","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@hasna/secrets","version":"0.2.14","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.14","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"4105e0a8f3fb5be735171f26c4ca0be0d586a1ef","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.14.tgz","fileCount":121,"integrity":"sha512-o4tn+q7yfaOpc7M0hXhwKPPG2ULUQEnY3hXwtVL7EJTruVbBaHYtr0904eM8+xRsH4rXNbQWIXkEz2uCiCo6rA==","signatures":[{"sig":"MEYCIQCt0IIeQoeMAuXQ61AcwkcinmJwrZSMX8fV1EP/KosPBQIhANiCagY4rffvjmEpOoBfS/eGwvQRJF6N0eMS0udP8hER","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1202985},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.14_1786148955201_0.1019741521728521","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@hasna/secrets","version":"0.2.15","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.15","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"e1387c286f800b8bfd854da01cfc3c93c38e1c90","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.15.tgz","fileCount":123,"integrity":"sha512-+1ZZYFBgqCqmQjsnVLJorrxn21LVXkjzFSvtM+hk+epuxpoicy1vhxKFLYC3KE31lVSPoIzmtB2nZQNksCIaEg==","signatures":[{"sig":"MEUCIQDyxDSBDqWfo7eUD0mL8mSsXkII3iiJ/8ZaOMirq6kUqAIgahwqXt8qxiXQzdGsWk2A9Lxa9xCByV+5Uep6ixVZ+BI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1206107},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.15_1786154007310_0.8462659864754445","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@hasna/secrets","version":"0.2.16","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.16","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"3fb8d6a26bcf5949461c3108e11c19bb86c887ae","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.16.tgz","fileCount":123,"integrity":"sha512-Pa8QhEX+uZvEjVOBnflcTRdE0kcxFmThd3l/ErIdauA0apRih0pYf75iiX7M8wkV+Nz0FavL8HpBtiMxdlmq8Q==","signatures":[{"sig":"MEUCIG2rzyOcjOBBBYwk6slL5WQTidu6FXd6RhLhEA6rwhuGAiEAv0XnGDZilhrZT0vk4AE3hGUPiWOirb0RL9HA9NkqyNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1209374},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.16_1786159160495_0.8116383965741296","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@hasna/secrets","version":"0.2.17","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.17","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"d785999aab4a7b33719b178acd1f7e440ad4d44a","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.17.tgz","fileCount":123,"integrity":"sha512-vgVNpl2xRGXu8jA+SrSDtuWntZil+UJQAcu+Ak6iGZMtCe1FlYpPfKbmcgdmxS9g8nXyiZnOSL5UPWFjtH63iA==","signatures":[{"sig":"MEUCIQD/lgWMCdJgYaLzvK2ojzT68k16b9/rOpUYzqfLULl03AIgcl2IPJ9rCjAVDLVTasiAXhSgRvf4ieq+gqOGUpdJ7J4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1210288},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.17_1786175792304_0.046728671925464926","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@hasna/secrets","version":"0.2.18","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.18","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"291af30f7143e78ed8317e6e42e2858d881e1841","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.18.tgz","fileCount":123,"integrity":"sha512-gDBcyQeFiPP0itcdM1DPaWdsQH9OrZwlhivkAsgwQm5x7ORTxrcNT3BmgJ5j5vbG+wYJWz+DD+7oZM6kr+CUgQ==","signatures":[{"sig":"MEUCIBecCCoV/EaXQxsipfU9QYc4EpIixh86TP09WueJf8yQAiEA6x8XUZWt7jJb/CC1a643i5jRKYT0/Fxk251z/FcfoGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1210524},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.18_1786180906145_0.9345724797451875","host":"s3://npm-registry-packages-npm-production"}},"0.2.19":{"name":"@hasna/secrets","version":"0.2.19","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.19","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"ec385b0d5baaa4e9aefbf17fab4f53b180058534","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.19.tgz","fileCount":123,"integrity":"sha512-BEC6boGLXW4va0CkR3l5loiLaQutwQHvimcV+l+k+iCAvt2mey92uIBjDm0zt1muSodb27SeaPlAT3n1Mn40IQ==","signatures":[{"sig":"MEYCIQDt/OqSj6aFpYtLXFdEW4E+IzMlxsi6vJc8yDkmZabOlQIhANuFX6D9b7xll94fNJKqLZrHigvxIaFzudnITJM3AHj8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hasna%2fsecrets@0.2.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1288849},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"a8face2ba8c071fb00a4bf28982071f60a8096dd","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb7723f5-fecb-4de1-aa57-ad2c3b5e6e9e"}},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.16.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.19_1786292359134_0.496295395911728","host":"s3://npm-registry-packages-npm-production"}},"0.2.20":{"name":"@hasna/secrets","version":"0.2.20","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.20","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"c0db51ba245d2f86e7edec9226a3ecab75d25ac0","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.20.tgz","fileCount":123,"integrity":"sha512-K9HC56eY/DagdA7pEeLylKvh4EaDDcU+uAPQkkSQF8HEHiP7df66dlp5LHxsA3zougY72a+fWCUsjS512E8ylw==","signatures":[{"sig":"MEUCIA9Bp2DnaVSaKXv2tnsLqPddgLJUnqASqMPEYumMxN+jAiEAuJXF8fyL81rUNTyxlhXb+GDUswLu7nKkCzLoa9ozwUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hasna%2fsecrets@0.2.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1294350},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"10a77dce640ba3e579f2c9a031f933221e097a65","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb7723f5-fecb-4de1-aa57-ad2c3b5e6e9e"}},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.16.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.20_1786295723659_0.7118806124855253","host":"s3://npm-registry-packages-npm-production"}},"0.2.21":{"name":"@hasna/secrets","version":"0.2.21","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.21","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"f71d0b5d25352af3c06ee8315e95db287f8adbdb","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.21.tgz","fileCount":123,"integrity":"sha512-tW4Lp2oW3TeATHDQyt37x0IOAbwKJzvu4NtR/LT9aYREKwHCXS8a7owICdAfRQOz/WpzdWWD3C7LArlsSPh2iQ==","signatures":[{"sig":"MEYCIQCJWQTaJQQNu0ANWBDQpdL7iP2CiwyJfkk1CfyusbMNxQIhAI9uHrS85fVLvsV5C2GFHOchobRmxWeYdi4orBrjqGBP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hasna%2fsecrets@0.2.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1312647},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"221990d299da00196f758a51c4d598eb84145661","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb7723f5-fecb-4de1-aa57-ad2c3b5e6e9e"}},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.16.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.21_1786354822578_0.7404481832931287","host":"s3://npm-registry-packages-npm-production"}},"0.2.22":{"name":"@hasna/secrets","version":"0.2.22","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.2.22","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"703f4c655e27d95da4faca3e0a1b9ae68988df04","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.2.22.tgz","fileCount":123,"integrity":"sha512-WMX9dstmNmbjkN49WH9kh1TPApAIsTz2qU9wwX8I0Sy7zrpJJvTTyHU41Ih8P5NIi8AU/Bo1g4T1Z7VU2b5gjQ==","signatures":[{"sig":"MEUCIQCNTFFliA9+SUcDiwBeQ1+Xbt7A0OfsPcWtOxrRxx3YRAIgVbemNqcfVzg4lrSkXxyaUDF6/RGeOLm332zPoDi8EBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@hasna%2fsecrets@0.2.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1313547},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"37fc11bb1dad9d64c48fde23af5cf1f906f4e2e1","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb7723f5-fecb-4de1-aa57-ad2c3b5e6e9e"}},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.16.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.2.22_1786359065060_0.5865463019041519","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@hasna/secrets","version":"0.3.0","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.0","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"6083fe4d953fb6910e972c1bec492043d7e4c1d9","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.0.tgz","fileCount":127,"integrity":"sha512-JSKHmoyx1+8He2wr1N1Hj91OtMggmVzL+W5ehbQE/QzqpTauciwhNrOf1LkrOnoIkAA4DYXDYD2Vd0BDvy0Jbg==","signatures":[{"sig":"MEUCIQDmS4V7qOm65JnSS9UGbXd1R0DSaF/Dtei5Lna7gp3h2QIgdklxvegY9idXgwc8JuJ+O6ud0KkNflFz4GNeHgHNTPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1496402},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"81fb0c3907b4e4a568fdb63b0f95893e9d41ecaf","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"pg":"^8.20.0","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.13","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.4.2","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.0_1786717429159_0.9813829218855394","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@hasna/secrets","version":"0.3.3","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.3","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"b928d7d367c4f1450cb5f45d20a1e4cfc355bc4e","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.3.tgz","fileCount":129,"integrity":"sha512-Gg9ZjrKXxLf8PhTLphzQBQU+JeDRDidzdoohYfD/Fxicf/c4nLtBnIvV0NzIhpYBnLjW4unN9TQu0LHUb0DTuA==","signatures":[{"sig":"MEYCIQDzRpFJmES0w4TASGxLDT/XRaa0iB+kkvIT7eXmaR5tNQIhANvnBbaZvMbb4Dg5ZhsKygaIWLhi0TrYA75gk7UK5lQd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1527994},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/mcp-harness":"0.1.0"},"peerDependencies":{"@hasna/contracts":"^0.13.1"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.3_1787278358703_0.18671083606075056","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@hasna/secrets","version":"0.3.4","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.4","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"06386461f19065e980b42e44a79762b708d8f010","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.4.tgz","fileCount":129,"integrity":"sha512-MMttDcSvhqpwpcpFXaNQLUGD8GKdXdmlniFuD6Yv9JyopGicBlKse8hP9A7gxynH9iTP/A9C0EFpwigbcW3MRw==","signatures":[{"sig":"MEUCIQDFlV7wJj6b70QPXdiNwJGy7MqqArrUGmRruVB6fo85fwIgN8u9mjTaOumpe01+1PZ4NcNA7cH84s9vKRcHoQ/9PfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1527866},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.4_1787339451612_0.6340227903268605","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@hasna/secrets","version":"0.3.5","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.5","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"f3b0c483001a3f3a437bfb5f1f0a9cf190b6ccd4","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.5.tgz","fileCount":129,"integrity":"sha512-bmiHZiWfczEkytjdAof2btqv9YH9rDCG7mOiDPLGx9RRVLD8es1jVouZcr8c0VJBkD0+sFRZpHnBr7Gb+ny+5Q==","signatures":[{"sig":"MEQCIGZ7mDxj6V9DhCDfcZ90SmelYItIA4FEC1kljOk9xsnwAiBCbZUA241h+hz38gl8a4iNALL5Gx9cz9rnoSOlcfeoag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1527968},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.5_1787463654766_0.6798479128583848","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@hasna/secrets","version":"0.3.6","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.6","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"45521b84be488f6b59034a2a73cf2a98a9b04e72","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.6.tgz","fileCount":129,"integrity":"sha512-Reb4xqSguBUwv/eH2n3IBCPUjdTYP/faYb57bfW95U0Yo7OAHKURf51MISN4S+TDoSwhX7vXrQOWRZXgJnF+Lw==","signatures":[{"sig":"MEQCIBdE29g1/pTxYU4I0W8/isVsGciqbz22m8qWGJIN0p6IAiBhBEzbynNy2BLaYVD2lA32yCdAKs3FLU/cFi1PELbRSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1531723},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.6_1787492755959_0.561566227536966","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@hasna/secrets","version":"0.3.7","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.7","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/secrets#readme","bugs":{"url":"https://github.com/hasna/secrets/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"ed7838c985f567316e0958323e2ae0beeace9dfd","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.7.tgz","fileCount":131,"integrity":"sha512-eOk3sdKaqoGrOE/v+3eZK6RkWgoKPlVScSrEmEs7qvYAfa4hYdq3jPEHkIrPdiSq3JS4whUXkN4mgNkv2HM7Jw==","signatures":[{"sig":"MEUCIAT/7cKy8Q+UBTz2IukV7bpbCnEdsoVFim0wTR5Za+GtAiEA58sbdikxUvLjsZBg/V6Cv+dYhH2Jq5KIYhiZHRWy5MA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1533359},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/secrets.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.7_1787560635137_0.9909126115640454","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@hasna/secrets","version":"0.3.8","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.8","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"8a1a00f311948bc0f65c43803c052dd976c8f929","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.8.tgz","fileCount":131,"integrity":"sha512-UuzHtFpNqhj6K7PN4fKhVDKDQT9g0oujCQ+MrlY32iU6SNKK93f2wFfLhjf0Z2amvundyCi/XAUhhY7Fr5vuEA==","signatures":[{"sig":"MEUCIQDDjp9F9zqJOqiWXSC8Viy/FXpbte4YWR7q8XKv9tn+fwIgXOBPGgwSC/Uwi94G1dOviOrNb2eiqB+EIWGSrNzHSiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537573},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"2a89cabf49cb471d8ed6b06ddac3fc6863edbc72","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.8_1787585607105_0.49576402750752924","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@hasna/secrets","version":"0.3.9","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.9","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"913a7713c017e8a4b6edfdddcab84c30bc3fd2a0","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.9.tgz","fileCount":131,"integrity":"sha512-/wRkcJ1/Hs3exnEjnNfuOe0zXWhx+8k85GooQMy8vIzQulqf15q46doCP2CfO5u0hEhjUozwazOAIG1+hX1TWw==","signatures":[{"sig":"MEUCIQCMAyL7/TEWjy5a8Y6xhqG7ozO3JYaGFDA5YC1Tr9If+AIgeXqKaNuhWIOBdSPOFI5OY/b5fHqntFe462c515dDYZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537573},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"gitHead":"ae9f139fd515697f607ca33a1de0085cd554ddf2","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"10.9.8","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.9_1787585747316_0.6635812788578541","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@hasna/secrets","version":"0.3.10","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.10","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"92090f9bcb842abf2acc93e41308c494d664c352","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.10.tgz","fileCount":131,"integrity":"sha512-TM+t/1y/6FRnQPBerWAWmBUI2dmZFJPfM5o4wBIgAQ2piec6Z/httAOpssHxewlkvYmDUZSEhr8O8E488QOcWA==","signatures":[{"sig":"MEUCIQC2ZPb/NKNDyPWPAawBXPVcA0kxGc6funDly//Znj0AZwIgdKHuYXTf75PaI6p25yLrgl9+TvPhJbFue6KtIVa6iVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537587},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"10.9.7","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.2","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.10_1787586595881_0.9500773306212753","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@hasna/secrets","version":"0.3.11","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.11","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"8fed247fd03f9a9c84a799870065cf5f42707da8","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.11.tgz","fileCount":131,"integrity":"sha512-Ss4tpmtigj7C3g7FEqK5fBDtcwrfvLhuVQgKMT64gYb4ue4ktmlU4pbfaufenoSZdtLH0j4dESPM8B6pa3fqRw==","signatures":[{"sig":"MEYCIQDPAm2gHtyTLy4J70m6SHS3G3tHUZc1ta1E9W3afbcdigIhAJEk5t0kwW+8K2xV7awvha2uS5JoD07BVpT/o/q+rvQ5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537581},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.11_1787593244348_0.9911765155874068","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@hasna/secrets","version":"0.3.12","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.12","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"927160feb3788adc19d01f9bfef789736f262b2d","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.12.tgz","fileCount":131,"integrity":"sha512-kEVpAy+dRCb4XoxL0V3TM3FTNdfXBvjVzmva09ZVkwGWez7aBwlZAe6lZqKQx0BPd67L2aQXsKP/VfWUrbGQrQ==","signatures":[{"sig":"MEQCIHp8k2IS3nM35Gy1Zr9f7NN8l7HOR+C5Wp3S8FXitCtJAiATG5TDDDRCjSX8UUkyKbXBFfkTFC5p7G5kPJ5wXz6hoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537581},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"mkdir -p $HOME/.hasna/secrets 2>/dev/null || true","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"^3.25.1","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.13.3","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.12_1787593332730_0.9648129355864377","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@hasna/secrets","version":"0.3.13","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.3.13","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"9ed4d8ae784a9cfcd299639e9fa0e7b6e0d1aaf3","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.3.13.tgz","fileCount":134,"integrity":"sha512-rlOFkJA/YqgD2WE8buqMmrBapY8LlcI6CHUKvSbnDqbGnj4Gm06q6JE1hmL6RZK25HvKJOLEbg7fNQ+FM9n5gA==","signatures":[{"sig":"MEUCIArE9m2IPzpddwBpwKR6EpD0OJC6/9KU7iIO/hDiekppAiEA1+eRC1vceDgxsTS+PbE4JW7QdXAbeQNOsNFUPBvrZl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1568949},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"11.18.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"22.22.3","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@hasna/paths":"0.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"latest","typescript":"^5.7.3","@hasna/contracts":"^0.14.0","@hasna/mcp-harness":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.3.13_1787901090773_0.5981987486716858","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@hasna/secrets","version":"0.4.0","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.4.0","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"b8e9c8eadbd4ef590c2c4da0bb39819f88badafb","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.4.0.tgz","fileCount":136,"integrity":"sha512-4C+YG59hzbMPG0hLgiCyuWjaEXY2hiuTlvNsB2wgxLUdChEHP23tuaabqNzYhnM4DFKj4q916qzyUj1ZRAnLpQ==","signatures":[{"sig":"MEYCIQCygGfE1SeuRigO64YIZ8axwLPcI/jqOwfDtkI3V4Eh8QIhALgrG8imJqzcr3Afp/BOz5CSc5Gy44Oxe534+DVoBCA2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1781578},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"11.19.0","description":"A local secrets vault for AI agents — store API keys, passwords, tokens, and any credentials","directories":{},"_nodeVersion":"26.8.1","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.4.0_1788625237181_0.6188137147253918","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@hasna/secrets","version":"0.4.2","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.4.2","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"d0f90d123698d6c5f3923bb832fd06231414b8b8","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.4.2.tgz","fileCount":136,"integrity":"sha512-0oI9TEVtOhlukcVUO0CWTn27f0/cmZA2Mzd6uGSjsDSNujWJXMdMt4vTR2i2+Y6MOCWThi2Cyd5YfiPU92IMwg==","signatures":[{"sig":"MEYCIQC6fc3U+0RryGVLl23u3NeTUxGimmgy4c/b5HeYc6TiEQIhAPBhtRWTszlXGYXlLJuPm3VCBMwIhuMD21UgUHrfLrbR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1775812},"main":"./dist/sdk.js","type":"module","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git"},"_npmVersion":"11.19.0","description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.4.2_1788797722411_0.7103817660019622","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@hasna/secrets","version":"0.5.0","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.5.0","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps/tree/main/apps/secrets#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"6ffd748864313a28cde5f4d82293e8f4f975cef9","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.5.0.tgz","fileCount":137,"integrity":"sha512-9d8gwuTRVqU4pd2mKghwp+3N0/c8QZYqdz0R6gfR4pAjtEYrnQ3mdm8IQmiou913j+0dtIdXkkii7FU1HweYnA==","signatures":[{"sig":"MEUCIDIamrRk/ZZU22iOKWV78akdgtcXCmvgG4hb/0SvJXR1AiEAjBq+AcJnzZJWH0B5uF1fofh8jn7sAqpchHV2vMa8xGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCMc08FCc7nXNm6LiIA6uZfHvmVsHs27BeVsAZ6o64lhQIgdLLbk6RS4SvZ+5F6brgd2JgfjoNSE4/ZDxbJQqdeRP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1905179},"main":"./dist/sdk.js","type":"module","_from":"file:/home/hasna/.hasna/scratchpad/scratch/skills-curation-luna12-20260919/secrets-expected-version-cli/npm-artifact/hasna-secrets-0.5.0.tgz","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","test:postgres":"bun --no-env-file scripts/live-postgres-test.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_resolved":"/home/hasna/.hasna/scratchpad/scratch/skills-curation-luna12-20260919/secrets-expected-version-cli/npm-artifact/hasna-secrets-0.5.0.tgz","_integrity":"sha512-9d8gwuTRVqU4pd2mKghwp+3N0/c8QZYqdz0R6gfR4pAjtEYrnQ3mdm8IQmiou913j+0dtIdXkkii7FU1HweYnA==","repository":{"url":"git+https://github.com/hasna/apps.git","type":"git","directory":"apps/secrets"},"_npmVersion":"11.19.0","description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@aws-sdk/client-kms":"3.1127.0","@aws-sdk/client-sts":"3.1127.0","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.5.0_1789906311772_0.23774432949795754","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@hasna/secrets","version":"0.5.1","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.5.1","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps/tree/main/apps/secrets#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"315256fab707a7afeecba0c23beafb15ad2547d6","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.5.1.tgz","fileCount":139,"integrity":"sha512-O8V+nQuZ5zma6FxThrkfkAmPr5WUGV4Vf/T6H7k5bbOqGGCVJ94AimdRpDD4zUzt63o3H8mjjjuPEhYy/MB9mA==","signatures":[{"sig":"MEQCIFQO9QoO9ed9DTGcIai9+HzHw8+scQeH+loatU7tZ1nSAiAMwpjgcrfxiHwj+lDHS/bR0OGAx6ZewenLQJY+aTFiKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDaZs+QiRkoKyQDcGSxr/FwZUn2T5Noii5sEq34UVSKgwIhAJlDEjWf0h1ZV3W2vSPwJshhgrPIbGxzEvfk4f5+vcYq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1923615},"main":"./dist/sdk.js","type":"module","_from":"file:/home/hasna/.hasna/scratchpad/scratch/skills-curation-luna12-20260919/secrets-0.5.1-release/npm-artifact/hasna-secrets-0.5.1.tgz","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","test:postgres":"bun --no-env-file scripts/live-postgres-test.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_resolved":"/home/hasna/.hasna/scratchpad/scratch/skills-curation-luna12-20260919/secrets-0.5.1-release/npm-artifact/hasna-secrets-0.5.1.tgz","_integrity":"sha512-O8V+nQuZ5zma6FxThrkfkAmPr5WUGV4Vf/T6H7k5bbOqGGCVJ94AimdRpDD4zUzt63o3H8mjjjuPEhYy/MB9mA==","repository":{"url":"git+https://github.com/hasna/apps.git","type":"git","directory":"apps/secrets"},"_npmVersion":"11.19.0","description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@aws-sdk/client-kms":"3.1127.0","@aws-sdk/client-sts":"3.1127.0","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.5.1_1789914539758_0.5839200303592225","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@hasna/secrets","version":"0.5.2","keywords":["secrets","vault","credentials","agents","ai","cli"],"author":{"name":"hasna"},"license":"Apache-2.0","_id":"@hasna/secrets@0.5.2","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"homepage":"https://github.com/hasna/apps/tree/main/apps/secrets#readme","bugs":{"url":"https://github.com/hasna/apps/issues"},"bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"dist":{"shasum":"59b262ef9e87f25b239f5764e3c3b7b9ead9623d","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.5.2.tgz","fileCount":139,"integrity":"sha512-y6y39P5K+gHuAjYReDMXub28UKWZT1j6UE2zkOGEPXvZNK+nN0vG6EXlzwt+tzMro2ZTGuojcCnCbKb/AJqMRg==","signatures":[{"sig":"MEYCIQDxEepj3lj9SAZ3dW2TUhTrzT7WYzzDaMJv6vopcU0IwQIhALv6sEZFeY3OknQcZRR8ydrE8NdS2eJvsRnZA3l6FREJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFKagaSJAUmKaLzAEmP14j7uFZh0sZ5o65CnUsXWxpdzAiEAxQYzY8ww1jWxWLfJrSwEIWuHf38QHqNsDqEf2lAhLjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1926308},"main":"./dist/sdk.js","type":"module","_from":"file:/Users/andreihasna/.hasna/scratchpad/scratch/bridge-ship-20260920/hasna-secrets-0.5.2.tgz","types":"./dist/sdk.d.ts","exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","test:postgres":"bun --no-env-file scripts/live-postgres-test.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"_resolved":"/Users/andreihasna/.hasna/scratchpad/scratch/bridge-ship-20260920/hasna-secrets-0.5.2.tgz","_integrity":"sha512-y6y39P5K+gHuAjYReDMXub28UKWZT1j6UE2zkOGEPXvZNK+nN0vG6EXlzwt+tzMro2ZTGuojcCnCbKb/AJqMRg==","repository":{"url":"git+https://github.com/hasna/apps.git","type":"git","directory":"apps/secrets"},"_npmVersion":"11.19.0","description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","directories":{},"_nodeVersion":"26.3.0","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@aws-sdk/client-kms":"3.1127.0","@aws-sdk/client-sts":"3.1127.0","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/secrets_0.5.2_1789920237020_0.41900774622895587","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"_id":"@hasna/secrets@0.5.3","bin":{"secrets":"dist/index.js","secrets-mcp":"dist/mcp-server.js","secrets-serve":"dist/server/index.js"},"bugs":{"url":"https://github.com/hasna/apps/issues"},"dist":{"shasum":"4e512b51be7f1ae08a7e2bd72b82e16d542753b0","tarball":"https://registry.npmjs.org/@hasna/secrets/-/secrets-0.5.3.tgz","fileCount":141,"integrity":"sha512-XMWWWedYf4u8heAhXOC/9QJbXOWow0tAIdTKR/cd9tKgwbwr6Smnj0muYkQl4mV0W/Tu5V9wztKk4xk910H34g==","signatures":[{"sig":"MEQCIGyXlbbVDOEzi1PCUU9AVM1XNT6UJBFtAjkdtq7t6geuAiB8lT1FNUTEBI1WwDUTiAvSsoIsPaEhBquPsRa3KLUclw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5f0XUiK1xbRsmdY6waCs1iMoXqWUCcLFJRbsI3wxHyAIgBdF38xjlDGQEjXDRFIE6GMHMIL/1jDE1fQro7Y5q7RM="}],"unpackedSize":1938223},"main":"./dist/sdk.js","name":"@hasna/secrets","type":"module","_from":"file:/Users/hasna/.hasna/scratchpad/scratch/01a06de6-f791-7fc2-87e7-047bd0a33f7d/secrets-release-base-refresh-20260921/candidate-artifact/hasna-secrets-0.5.3.tgz","types":"./dist/sdk.d.ts","author":{"name":"hasna"},"exports":{".":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./sdk":{"types":"./dist/sdk.d.ts","import":"./dist/sdk.js"},"./status":{"types":"./dist/status.d.ts","import":"./dist/status.js"},"./scanner":{"types":"./dist/scanner.d.ts","import":"./dist/scanner.js"},"./storage":{"types":"./dist/storage.d.ts","import":"./dist/storage.js"},"./security":{"types":"./dist/security.d.ts","import":"./dist/security.js"},"./redaction":{"types":"./dist/redaction.d.ts","import":"./dist/redaction.js"}},"license":"Apache-2.0","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/status.ts src/storage.ts src/security.ts src/scanner.ts src/redaction.ts src/loop-tasks.ts src/mcp-server.ts src/sdk.ts --root src --outdir dist --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun --format esm --external pg --external @aws-sdk/* --external @hasna/events --external @hasna/events/* --external @modelcontextprotocol/sdk && chmod +x dist/index.js dist/mcp-server.js dist/server/index.js && tsc --emitDeclarationOnly --outDir dist","prepack":"bun run build && bun run scan:artifact","test:pg":"bun scripts/pg-test-gate.ts","build:bin":"bun build src/index.ts --compile --outfile dist/secrets","typecheck":"tsc --noEmit","postinstall":"node postinstall.js","scan:artifact":"bun scripts/scan-artifact.ts","test:postgres":"bun --no-env-file scripts/live-postgres-test.ts","prepublishOnly":"bun run build"},"version":"0.5.3","_npmUser":{"name":"andreihasna2","email":"andrei@hasna.com"},"homepage":"https://github.com/hasna/apps/tree/main/apps/secrets#readme","keywords":["secrets","vault","credentials","agents","ai","cli"],"_resolved":"/Users/hasna/.hasna/scratchpad/scratch/01a06de6-f791-7fc2-87e7-047bd0a33f7d/secrets-release-base-refresh-20260921/candidate-artifact/hasna-secrets-0.5.3.tgz","_integrity":"sha512-XMWWWedYf4u8heAhXOC/9QJbXOWow0tAIdTKR/cd9tKgwbwr6Smnj0muYkQl4mV0W/Tu5V9wztKk4xk910H34g==","repository":{"url":"git+https://github.com/hasna/apps.git","type":"git","directory":"apps/secrets"},"_npmVersion":"11.19.0","description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","directories":{},"maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.20.0","zod":"3.25.76","commander":"^13.1.0","@smithy/core":"3.33.2","@hasna/events":"^0.1.16","@aws-sdk/client-kms":"3.1127.0","@aws-sdk/client-sts":"3.1127.0","@modelcontextprotocol/sdk":"^1.27.1","@aws-sdk/credential-providers":"^3.1008.0","@aws-sdk/client-secrets-manager":"^3.1008.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/pg":"^8.15.6","bun-types":"1.3.14","@types/bun":"1.3.14","typescript":"^5.7.3","@hasna/contracts":"1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/secrets_0.5.3_1789977680990_0.23748473516770274"}}},"time":{"created":"2026-03-14T10:23:47.795Z","modified":"2026-09-21T08:01:21.271Z","0.1.0":"2026-03-14T10:23:48.108Z","0.1.1":"2026-03-14T10:24:16.136Z","0.1.2":"2026-03-14T10:24:36.439Z","0.1.3":"2026-03-14T10:24:49.565Z","0.1.4":"2026-03-21T00:47:50.307Z","0.1.5":"2026-03-21T01:46:37.810Z","0.1.6":"2026-03-21T01:47:45.986Z","0.1.7":"2026-03-23T10:53:03.179Z","0.1.8":"2026-03-23T14:34:08.007Z","0.1.9":"2026-03-23T15:14:21.342Z","0.1.10":"2026-03-23T15:40:29.985Z","0.1.11":"2026-03-25T14:02:03.900Z","0.1.12":"2026-03-25T14:02:42.859Z","0.1.13":"2026-03-28T13:33:59.267Z","0.1.14":"2026-03-28T13:35:48.519Z","0.1.15":"2026-03-28T13:36:12.977Z","0.1.16":"2026-03-28T13:36:41.932Z","0.1.17":"2026-03-28T13:39:28.458Z","0.1.18":"2026-03-30T07:10:20.230Z","0.1.19":"2026-03-30T07:44:42.561Z","0.1.20":"2026-04-09T09:58:14.465Z","0.1.21":"2026-05-25T12:00:44.692Z","0.1.22":"2026-05-25T12:02:15.383Z","0.1.23":"2026-05-28T13:11:17.481Z","0.1.24":"2026-05-28T13:32:48.304Z","0.1.25":"2026-06-07T18:16:28.034Z","0.1.26":"2026-06-16T10:51:51.140Z","0.1.27":"2026-06-16T11:10:13.346Z","0.1.28":"2026-06-17T17:32:34.909Z","0.1.29":"2026-06-27T11:12:51.792Z","0.1.30":"2026-06-27T11:27:37.461Z","0.1.31":"2026-06-27T21:28:21.602Z","0.1.32":"2026-06-28T20:52:16.458Z","0.1.33":"2026-07-06T13:35:12.530Z","0.2.0":"2026-07-08T11:21:46.134Z","0.2.1":"2026-07-08T11:53:58.416Z","0.2.2":"2026-07-08T11:57:46.345Z","0.2.3":"2026-07-08T12:40:53.086Z","0.2.4":"2026-07-08T13:19:58.783Z","0.2.5":"2026-07-08T13:53:54.399Z","0.2.6":"2026-07-08T14:20:25.956Z","0.2.7":"2026-07-08T14:52:46.827Z","0.2.8":"2026-07-24T13:30:43.619Z","0.2.9":"2026-07-30T12:13:51.932Z","0.2.10":"2026-08-01T02:30:03.409Z","0.2.11":"2026-08-07T19:46:13.336Z","0.2.12":"2026-08-07T20:59:31.348Z","0.2.13":"2026-08-07T23:08:51.491Z","0.2.14":"2026-08-08T00:29:15.388Z","0.2.15":"2026-08-08T01:53:27.461Z","0.2.16":"2026-08-08T03:19:20.725Z","0.2.17":"2026-08-08T07:56:32.510Z","0.2.18":"2026-08-08T09:21:46.375Z","0.2.19":"2026-08-09T16:19:19.295Z","0.2.20":"2026-08-09T17:15:23.819Z","0.2.21":"2026-08-10T09:40:22.720Z","0.2.22":"2026-08-10T10:51:05.202Z","0.3.0":"2026-08-14T14:23:49.375Z","0.3.3":"2026-08-21T02:12:38.852Z","0.3.4":"2026-08-21T19:10:51.820Z","0.3.5":"2026-08-23T05:40:54.917Z","0.3.6":"2026-08-23T13:45:56.113Z","0.3.7":"2026-08-24T08:37:15.325Z","0.3.8":"2026-08-24T15:33:27.257Z","0.3.9":"2026-08-24T15:35:47.482Z","0.3.10":"2026-08-24T15:49:56.023Z","0.3.11":"2026-08-24T17:40:44.529Z","0.3.12":"2026-08-24T17:42:12.932Z","0.3.13":"2026-08-28T07:11:30.929Z","0.4.0":"2026-09-05T16:20:37.334Z","0.4.2":"2026-09-07T16:15:22.557Z","0.5.0":"2026-09-20T12:11:51.883Z","0.5.1":"2026-09-20T14:28:59.854Z","0.5.2":"2026-09-20T16:03:57.112Z","0.5.3":"2026-09-21T08:01:21.079Z"},"bugs":{"url":"https://github.com/hasna/apps/issues"},"author":{"name":"hasna"},"license":"Apache-2.0","homepage":"https://github.com/hasna/apps/tree/main/apps/secrets#readme","keywords":["secrets","vault","credentials","agents","ai","cli"],"repository":{"url":"git+https://github.com/hasna/apps.git","type":"git","directory":"apps/secrets"},"description":"Hosted-first secrets vault client for AI agents — CLI, MCP server and SDK against the Hasna secrets API (credentials via @hasna/contracts), with an explicit opt-in on-box encrypted vault","maintainers":[{"name":"andreihasna2","email":"andrei@hasna.com"}],"readme":"# @hasna/secrets\n\nA local encrypted secrets vault for AI agents, CLIs, and developer machines.\nStore API keys, passwords, tokens, and other credentials without committing them\nto source control.\n\n[![npm](https://img.shields.io/npm/v/@hasna/secrets)](https://www.npmjs.com/package/@hasna/secrets)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)\n\n## Install\n\n```bash\nbun install -g @hasna/secrets\n```\n\n## CLI Usage\n\n```bash\nsecrets --help\nsecrets docs\n```\n\n### Common Commands\n\nStore a secret:\n\n```bash\nsecrets set example/anthropic/test/api_key \"$ANTHROPIC_API_KEY\" \\\n  --type api_key \\\n  --label \"Anthropic API Key (test)\"\n```\n\nConsume a secret without ever printing it (the value only exists in the child\nprocess's environment):\n\n```bash\nsecrets exec example/anthropic/test/api_key --as ANTHROPIC_API_KEY -- my-tool sync\n```\n\nConsume an AWS Secrets Manager value from an account configured in the standard\nshared AWS profile files. `--env` names the child variable and its account-scoped\nsecret selector; the value is never printed or written into the local vault:\n\n```bash\nsecrets exec --provider your-source-profile --account <account-id> \\\n  --env EXAMPLE_NPM_TOKEN -- my-tool sync\n```\n\nThe account route must resolve to exactly one configured profile whose standard\nrole, SSO, or account fields match the requested provider and account. A literal\nremote secret name remains supported. Otherwise canonical names shaped as\n`<provider>/oss/<workload>/<key>` map to the normalized environment name\n`<PROVIDER>_<WORKLOAD>_<KEY>`. All metadata pages are considered, and missing,\nambiguous, non-current, or non-string selections fail before the child runs.\n\nUse `--secret-ref` to select one exact AWS Secrets Manager ARN independently of\nthe child variable. This performs one value request without listing secrets or\ntrying alternate names:\n\n```bash\nsecrets exec --provider your-source-profile --account \"$AWS_ACCOUNT_ID\" \\\n  --env SERVICE_CREDENTIAL --secret-ref \"$AWS_SECRET_REF\" -- my-tool sync\n```\n\nThe reference can be a full secret ARN or the native ECS form\n`<secret-arn>:<json-key>:<version-stage>:<version-id>`. Keep all three suffix\nseparators when selecting a JSON field or version; empty fields are allowed.\nSpecify a version stage or version ID, never both. With neither, the selected\nstage is `AWSCURRENT`. The ARN supplies the exact region and secret identity;\nthe suffix selects a top-level JSON field independently of the child `--env`.\nA selected field must contain a nonblank string. Its original whitespace is\npreserved. Missing fields, duplicate decoded object keys (including nested\nobjects), binary values and other JSON types are refused before the child runs.\nWhole-secret reads without a JSON selector keep their existing behavior.\n\nThe configured profile must unambiguously match the requested account. Its\nconfigured region, when present, must match the ARN. The command also checks\nthe caller's actual account before reading and verifies the returned ARN and\nversion selection. Errors omit provider messages and secret content. Existing\nprovider commands without `--secret-ref` keep their original selection rules.\n\n`exec` supplies one binding per invocation. Only run a trusted child: its output\nis inherited, and that child can read or print the injected value. Nested `exec`\ncommands also inherit earlier bindings in their intermediate processes.\n\nProve a secret exists or compare values without revealing them:\n\n```bash\nsecrets get example/anthropic/test/api_key --check   # prints length + sha256 only\n```\n\nCopy a secret to a new path without the value ever rendering anywhere (the\nvalue-safe migration primitive; works on non-TTY without `get --show`):\n\n```bash\n# carries type/label/expiry from the source and auto-records \"migrated from <old>\"\nsecrets copy example/anthropic/test/api_key anthropic/test/api_key\n# override metadata and demand an internal verify (length + sha256) in the same call\nsecrets copy example/anthropic/test/api_key anthropic/live/api_key \\\n  --type api_key --label \"Anthropic (live)\" --reason \"taxonomy 2026-08-20\" --verify\n```\n\nThe copy reads the source value in-process and writes the destination in the\nsame call; the value never touches stdout, stderr, a transcript, a log, or a\nchild environment. The source key is left intact (deletion is a separate\nexplicit operation), and `--verify` exits 0 only when the source and\ndestination values are internally equal.\n\nStore a value without putting it in argv (ps/shell-history safe):\n\n```bash\nsecrets set example/anthropic/test/api_key --stdin < value-file\n```\n\nExplicitly print a plaintext value (escape hatch — `get` is redacted by default\nand refuses captured, non-TTY output entirely):\n\n```bash\nsecrets get example/anthropic/test/api_key --show\n```\n\nList and search without printing secret values:\n\n```bash\nsecrets list\nsecrets list example/anthropic\nsecrets search anthropic\n```\n\nInspect audit history:\n\n```bash\nsecrets audit example/anthropic/test/api_key\n```\n\n#### What the `agent` column attributes\n\n`agent` is the **issued-to subject of the credential that made the call**, not\nthe process, session, host, or person behind it.\n\nWhen served by the hosted API the server derives it once per request from the\nverified API-key claims, and never from request input:\n\n```ts\nconst actor = decision.principal.agent ?? decision.principal.kid;\n```\n\nThat subject is fixed at issuance — `issue-key --agent <name>`, see\n[Hosted service](#hosted-service) — and is covered by the token\nsignature, so a caller can neither assert nor override it. No endpoint accepts an\nagent *identity* parameter: `/v1/secrets/get` takes `key` and nothing else, and\nan unknown `agent` query parameter or header is ignored rather than rejected.\n(`POST /v1/users` does take a `type` of `human` or `agent`; that is a user record\nkind, not the identity of the caller.) In the local vault the same column is\ninstead filled from `AGENT_ID ?? USER ?? hostname()`, which *is* self-asserted.\nThe two transports populate one column from two sources with different trust\nproperties; read which transport served the row before reading the value.\n\nThe consequence that matters when interpreting a row: **every caller sharing one\nkey collapses to one `agent` value.** A deployment in which many callers share a\nsingle API key records a single constant, and each row then attributes the access\nto that key rather than to whoever used it. Such a row is *key-attributed* — and\nwhere the key is shared, key-attributed means **unattributed**. It does not\nnarrow the access to a machine either, so it must not be described as\nmachine-attributed; that claims a narrowing the record does not contain.\n\nDistinct per-caller attribution therefore comes from distinct credentials, each\nissued with its own `--agent`. Against the hosted API it is not reachable by any\nclient-side change, because the client does not supply this value at all; in\nthe local vault the value is whatever the calling process asserts, which is a\ndifferent property and not a substitute for it.\n\nInspect metadata-only secret reference health:\n\n```bash\nsecrets status --json\n```\n\nThe status contract reports package version, redacted local data paths, env\noverride names, and aggregate counts only. It does not include secret values,\nsecret key names, raw env values, provider inventory, or private key material.\nFor a hosted run it also names WHERE the transport was resolved from, under\n`transport` — `api_url_source`, `api_key_source` and `api_key_tier` — as names\nonly (an env key name, a Keychain item reference such as\n`keychain:hasna.credentials.secrets.api-key@station03`, a credentials-file path\nwith the home folded to `~`, or `default` for the fleet gateway); a local-vault\nrun reports `transport: null`. Without a credential from any tier `status`\nfails closed exactly like every other verb: one actionable line on stderr and\nexit 1.\n\n```ts\nimport { getSecretReferenceStatus } from \"@hasna/secrets/status\";\n\nconst status = await getSecretReferenceStatus();\nconsole.log(status.counts.byType.api_key);\n```\n\n### Secret References For Automations\n\nDeterministic automations and action manifests must reference secrets by key,\nnot embed raw values. In `@hasna/actions` manifests this appears as\n`secrets[].ref`; the scoped resolver request below names it `secretRef`. A\nreference is the exact, case-sensitive, slash-delimited vault key. It has no URI\nscheme, query, fragment, embedded value, or authority of its own. Access comes\nfrom a separate resolver-side grant.\n\nThe persistable request contract is:\n\n```json\n{\n  \"contractVersion\": 1,\n  \"secretRef\": \"example/connectors/prod/github\",\n  \"grantId\": \"github-issue-writer-prod\",\n  \"automationId\": \"issue-triage\",\n  \"action\": \"issue.create\",\n  \"connector\": \"github\",\n  \"scopes\": [\"repo:issues:write\"],\n  \"reason\": \"Create a GitHub issue from an approved automation action\"\n}\n```\n\n`reason` is audit context, not authorization. `grantId` is a non-secret policy\nselector, not a bearer token. The grant itself is configured in the trusted\nresolver and must not be accepted from an automation payload:\n\n```json\n{\n  \"contractVersion\": 1,\n  \"grantId\": \"github-issue-writer-prod\",\n  \"policyRevision\": 3,\n  \"secretRef\": \"example/connectors/prod/github\",\n  \"automationId\": \"issue-triage\",\n  \"allowedBindings\": [\n    {\n      \"action\": \"issue.create\",\n      \"connector\": \"github\",\n      \"allowedScopes\": [\"repo:issues:write\"]\n    }\n  ],\n  \"allowedRuntimes\": [\n    {\"machine\": \"runner-prod-01\", \"profile\": \"production\"}\n  ],\n  \"notBefore\": \"2026-07-01T00:00:00Z\",\n  \"expiresAt\": \"2026-08-01T00:00:00Z\"\n}\n```\n\nThe resolver obtains `machine` from an authenticated workload or host identity\nand `profile` from trusted runner configuration. Those values are execution\ncontext and are never trusted when supplied by a queued action. Profile here\nmeans the named automation execution profile, not an AWS credential profile.\n\nBefore every invocation, the resolver must deny unless all of these checks pass:\n\n1. The contract version, grant ID, secret reference, and automation ID match.\n2. The action/connector pair exactly matches one `allowedBindings` entry, and the\n   authenticated machine/profile pair exactly matches one `allowedRuntimes`\n   entry. Keeping pairs intact prevents unintended cross-product permissions.\n3. Every requested scope is present in the matched binding's `allowedScopes`;\n   grants cannot be widened by a request.\n4. The current time is in the half-open grant interval\n   `notBefore <= now < expiresAt`. `expiresAt` is required; `notBefore` may be\n   omitted to make the grant valid immediately.\n5. The referenced secret exists and its own `expires_at`, if set, has not passed.\n\nTimestamps are RFC 3339 UTC instants. Invalid timestamps and unavailable runtime\nidentity are authorization failures. Comparisons are exact and case-sensitive.\nAll request fields except `reason` are required; `scopes` and all grant allowlists\nmust be non-empty. Omitted bindings and wildcard values deny. `policyRevision` is\na monotonically increasing, non-secret audit value and is not client-selected.\nThe resolver should audit the decision, grant ID, secret key, requested bindings,\nscopes, machine, profile, and policy revision, but never the decrypted value.\n\n#### Persistence and rotation\n\n- automation specs, action manifests, queued payloads, retries, todo comments,\n  and run evidence may persist the reference request, but never a decrypted\n  value or a raw value encoded into another field\n- grants persist bindings and metadata only; they never contain the raw secret\n- resolve immediately before connector invocation, inject the value directly\n  into that invocation, discard it afterwards, and never place it in a durable\n  cache, event, log, error, or audit record\n- re-resolve on every retry and replay; do not copy the historical value from an\n  earlier attempt\n- rotate a credential by atomically replacing the value under the same stable\n  `secretRef`; the next invocation receives the new value without changing the\n  automation or grant\n- secret expiry and grant expiry are independent and the earlier one wins; renew\n  a grant by issuing a new policy revision, and revoke a grant or secret to deny\n  all subsequent resolutions immediately\n- a resolver may return an opaque invocation handle instead of plaintext; if a\n  connector requires plaintext, it may exist only in invocation-scoped memory\n\nMinimum integration boundary for OpenAutomations and `@hasna/actions` consumers:\n\n- redaction must treat keys named `secretRef`, `secret`, `token`, `apiKey`,\n  `authorization`, and provider credential fields as sensitive\n- scoped consumers must use the resolver boundary rather than the generic\n  `get`/`get_secret` plaintext APIs\n- authorization failure must not reveal whether the reference exists or include\n  a value in its error\n\n#### Secret access audit event contract\n\nThe existing `get` / `set` / `delete` audit actions describe direct vault CRUD.\nThey do not prove that a scoped grant was checked or that a resolved value was\nactually handed to a consumer. A grant-aware resolver must append the following\nversioned events. Event names are past tense because audit records describe facts\nthat have already occurred.\n\n| `action` | Emit when | Required event metadata |\n| --- | --- | --- |\n| `secret.grant.created` | A grant is durably issued. | `grant_id`, `scopes`, `grant_expires_at`, `decision=allowed`, `reason_code=grant_created` |\n| `secret.grant.resolved` | The referenced secret exists and the grant, scope, and expiry checks pass. No value has crossed the vault boundary yet. | `grant_id`, `scopes`, `resolver_package`, `decision=allowed`, `reason_code=scope_allowed`, `secret_version` |\n| `secret.used` | The vault hands the value to the named resolver or connector. Emit once per hand-off, not once per downstream API call. | `grant_id`, `scopes`, `resolver_package`, `decision=allowed`, `reason_code=value_handed_off`, `secret_version` |\n| `secret.access.denied` | Resolution is rejected. Never emit `secret.used` for the same attempt. | Available identifiers, `decision=denied`, and a bounded `reason_code` |\n| `secret.grant.expired` | A sweeper or access attempt first transitions an issued grant to expired. | `grant_id`, `grant_expires_at`, `decision=denied`, `reason_code=grant_expired` |\n| `secret.rotated` | A new secret version is durably committed. | `decision=allowed`, `reason_code=secret_rotated`, `previous_secret_version`, `secret_version` |\n\nAll six actions use the following output contract. It extends the current flat\n`AuditEntry` shape so old readers can continue to display `id`, `action`, `key`,\n`agent`, and `timestamp`. Optional fields are omitted rather than filled with\nvalues copied from request context.\n\nThe `agent` field below describes the intended contract for these grant-aware\nevents. On the existing `get` / `set` / `delete` rows it is not a per-caller\nidentity but the identity resolved for the caller by the active transport — the\ncredential's issued-to subject against the hosted API, the process environment\nin the local vault — and it carries exactly the attribution that source\ncarries; see\n[What the `agent` column attributes](#what-the-agent-column-attributes).\nA resolver implementing these events inherits that limit: it cannot narrow an\naccess below the granularity of the identity available to it.\n\n```ts\ninterface SecretAccessAuditEventV1 {\n  id: number;\n  schema_version: 1;\n  action:\n    | \"secret.grant.created\"\n    | \"secret.grant.resolved\"\n    | \"secret.used\"\n    | \"secret.access.denied\"\n    | \"secret.grant.expired\"\n    | \"secret.rotated\";\n  key: string;                 // secretRef; metadata, never the secret value\n  agent: string;               // authenticated human or workload identifier\n  timestamp: string;           // UTC ISO 8601\n  correlation_id: string;      // joins events from one access attempt\n  grant_id?: string;           // opaque identifier, never a bearer grant/token\n  scopes?: string[];           // normalized, sorted requested scopes\n  resolver_package?: string;   // package/service name, not command arguments\n  resolver_version?: string;\n  decision: \"allowed\" | \"denied\";\n  reason_code: string;         // bounded enum; never free-form error text\n  grant_expires_at?: string;\n  secret_version?: string;     // opaque version id, not a value-derived hash\n  previous_secret_version?: string;\n}\n```\n\nDenials use a bounded reason code such as `grant_missing`, `grant_expired`,\n`scope_mismatch`, `secret_missing`, or `policy_denied`. Operator-facing clients\nmay collapse these to `access_denied` when revealing whether a key or grant\nexists would create an oracle. Stack traces and provider responses belong in a\nseparately protected diagnostic channel, not in the audit record.\n\nExample metadata-only output:\n\n```json\n{\n  \"id\": 184,\n  \"schema_version\": 1,\n  \"action\": \"secret.access.denied\",\n  \"key\": \"example/connectors/prod/github\",\n  \"agent\": \"automation:issue-sync\",\n  \"timestamp\": \"2026-01-15T12:00:00.000Z\",\n  \"correlation_id\": \"request-example-184\",\n  \"grant_id\": \"grant-example-12\",\n  \"scopes\": [\"repo:issues:write\"],\n  \"resolver_package\": \"@example/issue-connector\",\n  \"decision\": \"denied\",\n  \"reason_code\": \"scope_mismatch\"\n}\n```\n\nAudit serialization is an allowlist. It must never contain decrypted values,\nciphertext, value hashes or fingerprints, bearer grants, API keys, session\ntokens, authorization headers, environment values, command arguments, connector\nrequest/response bodies, raw authentication claims, or free-form reasons and\nexceptions. Implementations must not accept an arbitrary `metadata` object and\nmust not serialize request context with object spread. Identifiers and scope\nstrings are length-bounded and control characters are rejected before storage.\n\nEmission and storage rules:\n\n- grant creation and rotation commit their event in the same transaction as the\n  state change; `secret.rotated` links opaque version ids only\n- allowed resolution is followed by use under the same `correlation_id`; a\n  resolution may have no use, but a use may not exist without a resolution\n- an allowed path fails closed if its audit event cannot be persisted before the\n  value leaves the vault; a denial stays denied even if denial logging fails\n- expiry uses the grant state transition as its idempotency boundary, so a\n  sweeper and concurrent access attempt cannot create duplicate expiry events\n- audit rows are append-only, use server-side UTC timestamps, and are subject to\n  the same tenant authorization as the referenced secret\n\nImplementation plan:\n\n1. Extend `AuditEntry` and both audit tables with the explicit nullable columns\n   above; do not add an unbounded JSON metadata column. Keep legacy CRUD rows and\n   actions readable.\n2. Add one typed store operation that accepts only the six event variants. Make\n   local and cloud implementations validate fields and write parameterized SQL.\n3. Emit from the future grant/resolver boundaries described in the table. Do not\n   reinterpret the current raw `get` action as proof of `secret.used`.\n4. Make `/v1/audit`, the CLI, MCP, SDK, and OpenAPI return an explicitly selected\n   audit DTO rather than `SELECT *`, preserving the allowlist end to end.\n5. Test all six actions in local and cloud stores, lifecycle ordering, denied\n   access producing no use event, expiry idempotency, rotation version linkage,\n   migration of existing rows, and the absence of sentinel secret material from\n   every JSON and text output.\n\n### Redaction Before Persistence\n\nOpenLoops, OpenEvents, and OpenAutomations should create one redactor with all\nsecret values resolved for a run, then invoke the matching hook immediately\nbefore every durable write or event publish. The hooks copy their input and\ndeep-redact registered values, sensitive fields, credential-shaped text, error\nmessages/stacks, stdout, and stderr.\n\n```ts\nimport { createPersistenceRedactor } from \"@hasna/secrets/redaction\";\n\nconst redactor = createPersistenceRedactor({\n  secretValues: resolvedSecrets.map((secret) => secret.value),\n});\n\nawait runs.save(redactor.hooks.run({ stdout, stderr, error }));\nawait runOutput.append(redactor.hooks.stdout(stdoutChunk));\nawait audits.append(redactor.hooks.audit(auditEntry));\nawait events.publish(redactor.hooks.event(event));\n```\n\nPass registered raw values whenever possible: field-name and token-shape\nmatching are defense in depth, not substitutes for registering arbitrary secret\nvalues. Apply the hook at the final persistence boundary so later formatting or\nerror wrapping cannot reintroduce a raw value.\n\nExport redacted compact JSON for review:\n\n```bash\nsecrets export\n```\n\nExport plaintext only when a local restorable artifact is explicitly needed:\n\n```bash\nsecrets export --show --pretty > secrets-backup.json\n```\n\nScan the current working tree or full git history for exposed credentials. Each\nJSON response is bounded; when `nextCursor` is present, pass it back with\n`--cursor` to continue:\n\n```bash\nsecrets scan workspace --limit 50\nsecrets scan history --max-commits 200 --limit 50\nsecrets scan history --cursor \"$NEXT_CURSOR\" --limit 50\n```\n\nFindings contain deterministic `secret-exposure:` IDs, remediation metadata, and\n`evidencePath` locations suitable for task bodies. `detector`, `line` and\n`column` locate the finding; `preview` is a constant `***REDACTED***` marker and\ncarries no bytes from the scanned line — not the matched value, and not the\nsurrounding context. Read the coordinates rather than the content: a scan result\ncan be projected to reviewed metadata for a transcript, task, or channel.\n\nThe scanner and persistence redactor recognize HTTP(S) URLs with nonempty\nsignature or capability-token query parameters, and expiring Codesmith backend\nlinks (a nonempty `expires` parameter on the exact host `backend.blacksmith.sh`).\nDetection handles parameter ordering, encoded query names, HTML/JSON\nescaping, and wholly percent-encoded URLs. Findings use the\n`signed_capability_url` detector; persistence redaction removes the entire URL,\nincluding its path. Public PR links and unsigned links remain unchanged.\n\nScan captured stdout and stderr before displaying either, and still select only\nthe fields needed for the task. A clean scan is limited to the supported\ndetectors and inspected bytes; it does not make a full PR body or arbitrary tool\noutput safe to render. These package detectors do not change an independently\ninstalled Gitleaks binary or its configuration.\n\nCreate secure loop evidence and deduped Todos tasks for unsafe sensitive-file\npermissions:\n\n```bash\nsecrets security permissions \\\n  --report-dir ~/.hasna/loops/evidence/secret-file-permissions \\\n  --upsert-tasks \\\n  --todos-project ~/.hasna/loops \\\n  --task-list secret-file-permissions \\\n  --max-task-actions 20 \\\n  --json\n```\n\nThe permissions report is written with private file permissions and contains\npaths, modes, fingerprints, and task routing metadata only. It does not include\nsecret values.\n\nDelete a secret:\n\n```bash\nsecrets delete example/anthropic/test/api_key\n```\n\n### Key Format\n\nUse slash-delimited keys:\n\n```text\n<division>/<service>/<env>/<name>\n```\n\nExamples:\n\n```text\nexample/anthropic/test/api_key\nexample/local/dev-workstation/tool/exa-api-key\nexample-app/oauth/youtube_client_secret\n```\n\n### Hasna XYZ Canonical Keys\n\nGeneric keys still work as before. Keys under `hasna/xyz/` are validated so\nnew Hasna XYZ app resources follow the canonical migration shape:\n\n```text\nhasna/{division}/{app_type}/{app}/{env}/{component}\nhasna/{division}/infra/{resource_group}/{env}/{component}[/role]\n```\n\nAllowed app types are:\n\n```text\nopensource, internalapp, companywebsite, project\n```\n\n`infra` is reserved for shared infrastructure ownership. Deprecated migration\ntaxonomies such as `connector`, `website`, and `platform` are rejected under\n`hasna/xyz/`. App names should omit repo prefixes such as `open-`, `iapp-`,\n`cweb-`, and `project-`.\n\nExamples (illustrative placeholders only — substitute your own resource names;\nno real production resource names are shipped in this package):\n\n```text\nhasna/xyz/opensource/example-app/dev/api_key\nhasna/xyz/infra/example-group/dev/postgres/master\n```\n\n## AWS Secrets Manager Sync\n\n`secrets aws` can use the legacy static-key config written by\n`secrets aws configure`, or AWS profile/default-chain credentials. Supply your\nown AWS profile and secret paths — none are hardcoded:\n\n```bash\nAWS_PROFILE=your-aws-profile secrets aws sync --dry-run\nsecrets aws push example/app/prod/s3 --profile your-aws-profile --dry-run\nsecrets aws sync --credential-mode role --role-arn <iam-role-arn> --source-profile your-aws-profile --dry-run\n```\n\nCredential source precedence is command flags, `HASNA_SECRETS_AWS_*`\nenvironment variables, `~/.hasna/secrets/aws.json`, then the standard AWS\nprovider chain. If `aws.json` contains static keys and no explicit override is\nprovided, static-key behavior is preserved for compatibility.\n\nUse `--dry-run` or `--plan` before live sync. Plan output is metadata-only JSON:\nit reports names, regions, prefixes, credential source descriptors, and\nintended actions without printing secret values or writing AWS/local vault\nstate.\n\nFor a single-key push that replaces an existing AWS value, pass the reviewed\n`AWSCURRENT` version ID with `--expect-version <id>`. The push refuses a missing\nor stale expected version and guards promotion against concurrent changes.\nFor a pull, the same flag pins the read to that exact `AWSCURRENT` version and\nrefuses a different returned version. Single-key plans are offline: they show\nthe supplied version but do not discover or verify the remote current version.\n\n### Secret Types\n\nSupported types:\n\n```text\napi_key, password, token, credential, other\n```\n\n## Structured Vault Items\n\nThe generic key/value store remains supported. For browser autofill and\nLastPass-like records, use structured vault items. Item payloads are encrypted;\ntitles, domains, tags, and item kind are stored as searchable metadata.\n\nCreate a login item:\n\n```bash\nsecrets items add-login \\\n  --title \"GitHub\" \\\n  --url \"https://github.com\" \\\n  --username \"you@example.com\" \\\n  --password \"$GITHUB_PASSWORD\"\n```\n\nCreate an address item:\n\n```bash\nsecrets items add-address \\\n  --title \"Home\" \\\n  --name \"Example User\" \\\n  --line1 \"1 Main St\" \\\n  --city \"New York\" \\\n  --state \"NY\" \\\n  --postal-code \"10001\" \\\n  --country \"US\" \\\n  --email \"you@example.com\"\n```\n\nList, search, inspect, or delete items:\n\n```bash\nsecrets items list\nsecrets items list login\nsecrets items search github\nsecrets items get <id>        # redacted payload\nsecrets items get <id> --show # decrypted payload\nsecrets items delete <id>\n```\n\nSupported item kinds:\n\n```text\nlogin, address, identity, payment_card, secure_note, api_key, custom\n```\n\n## Chrome Extension\n\nThe `extension/` directory contains a Manifest V3 Chrome extension that can fill\nlogins, addresses, identities, and payment-card fields from structured vault\nitems. Legacy username/password pairs still work when stored as slash-delimited\nsecrets with a common prefix.\n\nRun the local bridge:\n\n```bash\nsecrets serve\n```\n\nThen load `extension/` from `chrome://extensions` with Developer Mode enabled,\nopen the extension settings, and paste the token from `secrets serve token`.\nThe extension talks only to `http://127.0.0.1:27462` and asks for decrypted item\npayloads only when you click Fill or Copy.\n\nOptional TTL values can be attached when setting a secret:\n\n```bash\nsecrets set temp/session \"$TOKEN\" --type token --ttl 24h\nsecrets gc\n```\n\n## MCP Usage\n\nInstall the MCP server into local AI agents:\n\n```bash\nsecrets mcp install --target codex\nsecrets mcp install --target claude\nsecrets mcp install --target gemini\n```\n\nAgents connect over stdio by running:\n\n```bash\nsecrets mcp\n```\n\n`secrets mcp` is the canonical MCP entry used by generated agent\nconfiguration. The package also exposes `secrets-mcp` as an explicit direct\nbinary; it uses stdio by default and accepts `--http --port 8848` for the\nStreamable HTTP transport.\n\nStart the shared Streamable HTTP MCP server explicitly:\n\n```bash\nsecrets mcp http --port 8848\n```\n\nThe MCP exposes these tools:\n\n```text\nlist_secrets(namespace?)\nsearch_secrets(query)\nget_secret(key)\nset_secret(key, value, type?, label?, ttl?)\ndelete_secret(key)\nlist_vault_items(kind?)\nsearch_vault_items(query)\nget_vault_item(id)\nset_vault_item(kind, title, data, id?, subtitle?, domains?, tags?, favorite?)\ndelete_vault_item(id)\naudit_log(key?, limit?)\nregister_user(id, name, type?)\nlist_users(type?)\nsend_feedback(message, email?, category?)\nscan_workspace_exposures(root?, cursor?, limit?, maxFileBytes?, maxFiles?, maxBytesScanned?, timeoutMs?)\nscan_history_exposures(root?, cursor?, limit?, maxCommits?, timeoutMs?)\n```\n\n`list_secrets` and `search_secrets` return metadata only and do not decrypt\nstored values. `get_secret` returns the raw value, so use it only when the agent\nneeds to pass the secret into a tool or command.\n\nThe scan tools return compact JSON with a stable schema, bounded redacted\nfindings, deterministic `secret-exposure:` ids, remediation metadata,\npath/line/commit references, and opaque chunk cursors. They do not return raw\nmatching values. MCP scan roots are constrained to the server working directory,\nand workspace scans include hard file, byte, and timeout bounds. The same\nscheduler-neutral contract is available programmatically:\n\n```ts\nimport { scanWorkspaceExposures } from \"@hasna/secrets/scanner\";\n\nconst result = scanWorkspaceExposures({ root: process.cwd(), limit: 50 });\n```\n\n## Shared storage and migration\n\nOrdinary CLI, MCP, and default library access use the authenticated API. Clients\nnever connect directly to PostgreSQL or select a local SQLite vault. The service\nowns its database and encryption configuration.\n\nFor an existing vault, use the explicit `migrate-vault --source ... --key-file ...`\nprotocol described in [lossless migration](docs/lossless-vault-migration.md). Keep the\nsource until destination verification and the separate retirement checks finish.\nThis command does not delete the source.\n\n## Data Directory\n\nOrdinary clients keep account credentials and necessary client configuration on\ndisk, but never create or copy `vault.db` or its journal/WAL/SHM sidecars. Browser\nserve tokens and AWS client configuration use a separate config-directory helper\nthat cannot migrate vault/key files.\n\nExplicit `LocalStore` construction remains a storage-library compatibility handle\nfor existing local fixtures and migration tooling. Its historical data/key path\nrules are not ordinary CLI/MCP selectors. `HASNA_SECRETS_LOCAL_VAULT`,\n`HASNA_SECRETS_DB_PATH`, and `OPEN_SECRETS_DB` are rejected by ordinary store\nresolution, including when API credentials are also configured. Use an explicit\nmigration source rather than deleting credentials to select a different vault.\nThe scanner reads explicitly requested files as bytes and does not initialize\nSQLite. The migration reader opens an existing file read-only without schema\nupgrades or implicit key creation.\n\n```bash\nsecrets key\n```\n\nThe vault database lives at `<data home>/vault.db`. Key material lives in\n`<data home>/vault.key` for local-key mode or `<data home>/vault.key.enc` for\nKMS envelope-encryption mode.\n\n### Credentials (five tiers)\n\nThe CLI, the MCP server and the SDK all resolve their credential and their API\nbase URL through the **`@hasna/contracts` client resolver** — one implementation,\nshared by every hosted Hasna app, re-read **fresh on every call** so a key\nrotation heals immediately in a shell that is older than the rotation.\n\nAn environment-built SDK client binds the service authority and credential\ntogether immediately before each request. Same-authority key rotations work\nwithout rebuilding it; changing the configured authority fails before sending\ncredentials and requires constructing a new client.\n\nPrecedence, highest first:\n\n| # | Tier | Where |\n| --- | --- | --- |\n| 1 | **argument** | an explicit `apiKey` / `profile` passed in code (`createSecretsClientFromEnv(env, { credentials: { apiKey } })`) |\n| 2 | **env pointer** | `HASNA_SECRETS_API_KEY_OVERRIDE` (a key you set on purpose), `HASNA_PROFILE` (selects `credentials-<profile>` on disk), `HASNA_SECRETS_API_KEY_REF` (a vault item key, resolved at request time) |\n| 3 | **macOS Keychain** (darwin only) | generic-password item `hasna.credentials.secrets.api-key`, account `HASNA_STATION`, else the short hostname, else `$USER` |\n| 4 | **disk** | `~/.hasna/secrets/config/credentials`, owner-only `0400`/`0600`. `HASNA_HOME` replaces `~/.hasna`; `HASNA_CONFIG_HOME` replaces the config root (`<HASNA_CONFIG_HOME>/secrets/credentials`). XDG is never consulted. |\n| 5 | **environment** | `HASNA_SECRETS_API_KEY` — a legitimate tier, not a deprecated one. It sits *below* disk so a rotated file beats a stale `export`. |\n\nA deliberate tier (1 and 2) never falls through to another identity: if the key\nit names is revoked, the run fails rather than silently authenticating as\nsomeone else.\n\n**API base URL** follows the same ladder — `HASNA_SECRETS_API_URL`, then the\nKeychain `api-url` item, then the credentials file — and otherwise **defaults to\nthe fleet gateway `https://api.hasna.com/secrets`** (the client appends `/v1`).\nA key from any tier is enough; URLs never need configuring. Configured\nauthorities must agree with each other.\n\n```bash\n# Store the key once, in the Keychain, and nothing else needs configuring:\nsecurity add-generic-password -U -a \"$(hostname -s)\" \\\n  -s hasna.credentials.secrets.api-key -w \"$KEY\"\nsecrets list                       # -> https://api.hasna.com/secrets/v1\n\n# Or a 0600 credentials file:\ninstall -m 700 -d ~/.hasna/secrets/config\nprintf 'HASNA_SECRETS_API_KEY=\"%s\"\\n' \"$KEY\" > ~/.hasna/secrets/config/credentials\nchmod 600 ~/.hasna/secrets/config/credentials\n```\n\n**Without an account credential, ordinary CLI and MCP data access fail closed.**\nConfigure the canonical API credentials or saved account credential tier. Local\nselection flags (`--local`, `--local-vault`, `--db`, `--db-path`, `--storage-mode`)\nare rejected. Utility help and explicitly sourced migration/scanning remain\nseparate from ordinary store resolution.\n\nRetired and inert, never read: `~/.hasna/fleet-env`, `~/.hasna/cloud`,\n`~/.config/hasna`, `$XDG_CONFIG_HOME`, and every `*_MODE` / `*_STORAGE_MODE`\nvariable — the transport is decided by the credential and the authority alone.\n`SECRETS_API_URL` / `SECRETS_API_KEY` remain accepted as a **silent alias for one\nrelease**; the canonical `HASNA_SECRETS_*` names are the supported spelling and\nno longer shadowed by them.\n\nMaintenance commands act on the active vault. API maintenance now verifies the configured runtime key and all four\npayload tables. `encrypt-vault` requires `secrets:migrate` and repairs plaintext\natomically; unreadable ciphertext fails closed. KMS backing is not attested,\nand KMS setup still requires a separate operator-managed capability. See\n[verified encryption maintenance](docs/ENCRYPTION_MAINTENANCE.md).\n\n## Safety Notes\n\n- `list`, `search`, `export`, and `scan` do not decrypt or print secret values\n  by default.\n- `export --show` and `export --plaintext` are explicit plaintext escape\n  hatches for local restorable backups.\n- CLI import refuses redacted export bundles so placeholders do not overwrite\n  real secrets by accident.\n- `get` and MCP `get_secret` return raw secret values.\n- Never paste secret values into commits, logs, issues, PRs, or chat messages.\n- Keep `.env`, `.env.local`, `.secrets/`, and `.connect/` out of git.\n\n## Running the tests\n\nA test process cannot reach a real vault. This is enforced by the code, not by\nconvention, because convention already failed: the suite wrote fixtures into a\nhosted production vault on four separate runs, because a machine's shell\nenvironment exports `HASNA_SECRETS_API_URL` / `_API_KEY` and `getStore()` reads\nthem. Since the package adopted the shared resolver there are two more AMBIENT\ntiers to neutralize — the macOS Keychain and `~/.hasna/secrets/config/credentials`\n— so the preload redirects both at a throwaway location rather than trusting\nthem to be absent.\n\n```bash\nbun test\n```\n\nWhat holds, and where:\n\n| Guarantee | Enforced in |\n| --- | --- |\n| A test process may only reach a **loopback** vault. Any other host throws `SecretsTestIsolationError`. | `src/test-isolation.ts`, applied at the one HTTP egress point (`createHasnaHttpTransport`) and at ambient-env store resolution (`getStore()`). |\n| A test that configures nothing still never opens the operator's `~/.hasna/secrets` vault or key. It gets a throwaway per-process one. | `src/db.ts`, `src/crypto.ts` |\n| The hosted-vault selectors are stripped from the environment, and the Keychain and disk credential tiers are redirected at a throwaway location (`HASNA_HOME`, `HASNA_CONFIG_HOME`, a `HASNA_STATION` account no item exists under), before any test file runs. | `bunfig.toml` → `tests/setup/isolate-vault.ts` |\n\nNotes:\n\n- The preload is a convenience, not the guarantee. Delete `bunfig.toml` and the\n  suite fails loudly with `SecretsTestIsolationError` rather than writing to a\n  hosted vault.\n- There is **no environment variable that turns the guard off**. The only env key\n  it reads, `HASNA_SECRETS_TEST_ISOLATION=1`, can force it on.\n- Test context is detected from the runner (the preload marker, `NODE_ENV=test`)\n  and from a `*.test.ts` entrypoint — never from something a test author must\n  remember to write.\n- Two thresholds, because the two guards fail differently:\n\n  | Signal | Loud guards — hosted-vault egress, explicit-path refusal | Silent guard — redirect vault files to a throwaway |\n  | --- | --- | --- |\n  | preload marker `HASNA_SECRETS_TEST_ISOLATION=1` | yes | yes |\n  | `*.test.ts` entrypoint (what `bun test` sets) | yes | yes |\n  | bare `NODE_ENV=test` | yes | **no** |\n\n  So running the shipped CLI with `NODE_ENV=test` in the environment — which every\n  JS test runner exports across its whole process tree — reads and writes your\n  **real local vault**, normally. It does not silently swap in an empty throwaway;\n  that would make `secrets get` report a live credential as missing and `secrets\n  set` print `✓ Stored` for a value it discarded, both at exit code 0. What\n  `NODE_ENV=test` *does* still do is bar the **hosted** vault: resolution throws\n  `SecretsTestIsolationError` and exits non-zero. Refusal, loudly, rather than a\n  quiet wrong answer.\n- A test that genuinely needs to exercise the hosted transport should inject a\n  fake `fetchImpl`, not point a real one at a remote host.\n\n## Hosted service\n\nBeyond the local vault, `@hasna/secrets` ships a deployable HTTP service and a\ntyped SDK. Four surfaces cover the same core:\n\n- **`secrets`** — the CLI.\n- **`secrets-mcp`** — the MCP server (stdio by default, `--http` for Streamable HTTP).\n- **`secrets-serve`** — the HTTP API. Unauthenticated probes `GET /health`,\n  `/ready`, `/version` (`{status, version, mode}`) and `GET /openapi.json`; a\n  versioned `/v1` surface (secrets + vault-item CRUD, search, audit, users)\n  behind **strict API-key auth** (`@hasna/contracts`). Scopes: `secrets:read`,\n  `secrets:write`.\n- **`@hasna/secrets`** — the typed, dependency-free SDK package root generated\n  from the serve OpenAPI. The compatibility subpath `@hasna/secrets/sdk`\n  exports the same API. The client resolves its credential and base URL through\n  the shared [`@hasna/contracts` resolver](#credentials-five-tiers) — never a DSN.\n\nStorage is **PURE REMOTE (Amendment A1)** on the hosted service: `secrets-serve` reads\nand writes the shared Postgres directly (no cache, no local mirror). Secret and\nvault-item values are **encrypted at rest** (AES-256-GCM) with a master key\ninjected via `HASNA_SECRETS_MASTER_KEY` — the service fails closed without it.\n\n```bash\n# migrate the cloud database (one-shot), then serve\nexport HASNA_SECRETS_DATABASE_URL=postgres://...          # or DATABASE_URL\nexport HASNA_SECRETS_API_SIGNING_KEY=$(openssl rand -hex 32)\nexport HASNA_SECRETS_MASTER_KEY=$(openssl rand -base64 32)\nsecrets-serve db migrate\nsecrets-serve                                             # listens on $PORT (default 8080)\n\n# issue an API key (@hasna/contracts issuer), then call the SDK\nbunx @hasna/contracts issue-key --app secrets --agent my-agent --scopes 'secrets:read,secrets:write'\n```\n\n`--agent` is the sole input that populates the `agent` column of every audit row\nwritten under that key, so issue one key per caller you intend to tell apart. A\nkey shared between callers makes their accesses indistinguishable in the audit\nlog, and no client-side setting recovers the difference — see\n[What the `agent` column attributes](#what-the-agent-column-attributes).\n\n```ts\nimport { createSecretsClientFromEnv, type SecretInput } from \"@hasna/secrets\";\n// Credential + base URL come from the five-tier resolver; throws if none resolves.\nconst client = createSecretsClientFromEnv();\nconst input: SecretInput = {\n  key: \"example/service/dev/api_key\",\n  value: process.env.EXAMPLE_SERVICE_API_KEY!,\n  type: \"api_key\",\n};\nawait client.putSecret(input);\nconst secret = await client.getSecret({ key: input.key });\n```\n\nThe client's `baseUrl` is the service authority — an origin\n(`https://secrets.your-deployment.example`) or the gateway prefix\n(`https://api.hasna.com/secrets`); a trailing `/v1` is accepted and means the\nsame thing. Data routes are sent under `<baseUrl>/v1/...` (`listSecrets()` →\n`https://api.hasna.com/secrets/v1/secrets`), and the public `health()` /\n`ready()` / `version()` probes at `<baseUrl>/health` etc., with no credential\n(the contract declares them public, and neither the serve nor the gateway\nanswers them under `/v1`).\n\nAn explicit `baseUrl` requires an explicit `apiKey`\n(`createSecretsClientFromEnv(env, { baseUrl, apiKey })`, or `new SecretsClient({ baseUrl, apiKey })`).\nThe ambient fleet credential — the Keychain item, the credentials file,\n`HASNA_SECRETS_API_KEY` — is pinned to the authority it resolved with and is\nnever attached to a caller-supplied one; naming an authority without a key\nthrows before any resolver tier is consulted (hasna/apps#1794).\n\nMigrations live in [`migrations/`](migrations) (canonical checksummed set in\n`src/server/cloud-migrations.ts`). Container image: `Dockerfile.package`\n(ARM64/bun); local stack: `docker-compose.yml`.\n\n## License\n\nApache-2.0 -- see [LICENSE](LICENSE)\n\nMigration protocol: [lossless vault migration](docs/lossless-vault-migration.md). This is separate from generic export/import and never deletes the source vault.\n\n### Shared expiry collection\n\n`secrets gc` calls `POST /v1/secrets/prune-expired` with `secrets:write`. The service compares expiration using its own clock, deletes only the authenticated tenant's expired rows and commits their audit records in the same transaction. A key renewed while collection waits for its row lock is rechecked and preserved. Invalid expiry data or audit failure aborts the transaction. This requires the updated service; clients do not fall back to deleting a stale metadata list. Secret version history and key ownership records remain preserved.\n\n### Required PostgreSQL acceptance tests\n\n`bun run test:postgres` executes all three dedicated PostgreSQL suites (lossless\nmigration, encryption maintenance, and expiry pruning) without skips. CI runs\nthis gate in `secrets live PostgreSQL`; missing suites, missing case output,\nfailures, and skips fail the gate. Repository branch protection must require the\n`secrets-live-postgres` job before this becomes a protected merge requirement.\n\nUse only a disposable PostgreSQL fixture with the `secrets_test` administrative\nuser and `secrets_test` database on literal `127.0.0.1` with an explicit port:\n`SECRETS_TEST_DATABASE_URL=\"$DISPOSABLE_POSTGRES_URL\" bun run test:postgres`.\nThe runner rejects other targets and clears ambient credentials. Each suite\ncreates and removes unique schemas and non-superuser/non-BYPASSRLS serving roles;\nthe administrative fixture role is used only for schema/role setup and inspection.\nNo production credentials or database resets are used. The older `test:pg`\nstore proof remains available independently.\n","readmeFilename":"README.md"}