{"_id":"vessels-sdk","_rev":"37-7b7da90a73cc8eaa804015bfc06ddcb9","name":"vessels-sdk","dist-tags":{"latest":"0.30.0"},"versions":{"0.1.0":{"name":"vessels-sdk","version":"0.1.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.1.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"14c064e9fae46f1b8195be5177c0984d4a06a9e4","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.1.0.tgz","fileCount":6,"integrity":"sha512-CmHpz0WmzBZpRaTvWRVC/QVHVIdHr4EkN3ZXo7rFFamWqxBzgnstrjMPP15KBjtOt6bUh4RDPr4jUP+bDNmqgQ==","signatures":[{"sig":"MEQCIEd/MPL8YF/iA4CFemJ4enSJeu7B5lhGYFB0v+HTcBwHAiAWrNgZyEK9uXJ90eXt8BwYcZBrXOU8xzI7MzzbYOUJfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18562},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2a404e056e90c328c6f6103a8127014d60097998","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.1.0_1775615141562_0.7142874097943448","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"vessels-sdk","version":"0.1.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.1.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"1b82b4d4d118dbf124e6c8a7dfe3d6e5c19ee7ad","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.1.1.tgz","fileCount":6,"integrity":"sha512-t0mrJ56kmT+axmz4KuoYo8bD2cVrryrXDhc1wJNZtozgPj8figes+vgvgdj8nNOevdz9WX6rTfbdJDDc4IwyvA==","signatures":[{"sig":"MEQCIETemLRr8jwklB2fKNMEzqRKUKx5XJDRF+AS7Qj/4tdUAiA12Bx8i9oDL9rUoPctsYr8mQJDLY9ifCgV/OHSGJwdHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18901},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2d60ee560cd369a679f919b8d26e3bfebb22433e","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22","@vessels/types":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.1.1_1775621944504_0.5464305187075345","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"vessels-sdk","version":"0.1.2","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.1.2","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"84d877598dc0e7f32a4f223c2687f34061b14605","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.1.2.tgz","fileCount":6,"integrity":"sha512-tIXv2bRUEZQKJ8nWKN60dB673a3unzgNYEAQWevRvl0i8hzJNAIXgqusnKfMf7R0mWnJQYv1D9sjrrhrFNsMrg==","signatures":[{"sig":"MEUCIQCQuo2wHjrn43b1QzK7gAqCImCsEeKG85dyoKvD47PsVwIgUjCfPJblSQX5aPFdw+H9qbmLnTiA8gt+MVDlVWu0GzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18901},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"74791c90e4c2084d0f16efee97f4a6188144f65c","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.1.2_1775622197213_0.1017521850584433","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"vessels-sdk","version":"0.1.3","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.1.3","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"e38a6a24ce4aebdd8c0c53191857a5c37c2a2486","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.1.3.tgz","fileCount":6,"integrity":"sha512-4mQbTs7YTxp0ziV4+aoyoiiHwZClgs9jCaVxbxepSLK9XvcWPYe/ow+TqyJvX5S0FkMZUq6/o5gcLa2OWWJ2oA==","signatures":[{"sig":"MEUCIQDZ6C+wVKvuZlOA8HquKvathXcYHymnXspwSBIba1F0SgIgIvw7SaFSUaacmlHSzapLWl0Q1Xv0Xgfwm4CRL45gPS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19581},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"938d28aa0438af262f0c02fe106bc13bdce8c35d","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.1.3_1775624594454_0.7384986525160975","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"vessels-sdk","version":"0.1.4","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.1.4","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"f1c0fafeee76641f3dedb94473c2ff81ca615696","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.1.4.tgz","fileCount":6,"integrity":"sha512-aWKAb0m2p7Li8Un2QhReh71JR+CIiU8yt63A6/lfdYtSFwoinZadoD2gKezGRSMQjWPk9g8xjuVeKgY4qsfo0Q==","signatures":[{"sig":"MEUCIQDdVi2pj5X7wwTlxtl4STfS8l4NsQ6Mi3R6gebIrJWkqQIgc1oF2wx5MA4TvUg66qs7HAejJQ2rbOzvaKVsAYTTIGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19705},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"bc8f22f1c23294cdc4975c533b922839a53dba6f","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.1.4_1775626895347_0.9525402705982533","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"vessels-sdk","version":"0.2.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.2.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"3ee77263c1251e6ec55b41414bbfd1262823308c","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.2.0.tgz","fileCount":6,"integrity":"sha512-Iw5aK+HqwKOOwlezFS5X8z8e4mcHAdncwUNDfi6P2Mh+xU6teER6HMthsdVkPDu862EqffNkjvixBT4q0BOtow==","signatures":[{"sig":"MEUCIQDYbmvpSsK+MVyrlC2shh73ni8VXDseeva6iUuucqnE1AIgMOBrtkNlwq/NTiq/3lBlGM6rMFYSmqxfUfS7WsWytXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24019},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0143ed453309756f57e8a5a3bef987bb313e7f01","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.2.0_1775700902855_0.4958188770821508","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"vessels-sdk","version":"0.3.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.3.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"8777468c7e9a2cb4cafb16346c1a9a378bc72ff6","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.3.0.tgz","fileCount":6,"integrity":"sha512-viyMtlrYYx4PxA/zIxg8cZ6D6zmyUc7kguilKVOcgvHhWVrum2mch7MHB7PFuuhZ/htdJQUWayZRNiCpgUVQ/w==","signatures":[{"sig":"MEYCIQCG1yQ/V78/uNit2lBQVz8Pnirg8MFGpf0p6WyVRCHXxgIhANrnUgaK4cAInlKjsK9AAdPl7jn9D6ulzj5LhMxSs402","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39444},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"85d2dd114878f7d6b9579f0e22d3297101b4b65d","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.3.0_1777005892641_0.832594133648682","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"vessels-sdk","version":"0.4.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.4.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"e8f7e64822446e20821017c1cc8adc006d38bc44","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.4.0.tgz","fileCount":6,"integrity":"sha512-l6r3z7bjySF7V43VdWDtnmYDOGDcTrtcSvfmmNnSMh6cjgGGRnTVd+t8/61WDrO6UaX9gQiQHQc+00ciWzfLkw==","signatures":[{"sig":"MEQCIAmSKOsTyIZAbA4Nv2157P1aqWIAO7M+cnPcTFJ21h1oAiAVVm6S7S+iajXzuL01/jHnmldbZV5IxWELPqYAQgHkfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40010},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"08ee193acbbc2ccbea1d78ce5c6b574f1e9a8f03","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.4.0_1777012078028_0.6871418321442031","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"vessels-sdk","version":"0.4.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.4.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"3b643c53f8806569427a19aa77ee403b2253c63c","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.4.1.tgz","fileCount":6,"integrity":"sha512-NtcJ9wTJjVVBOntXCVXIRE6ziZH8oQ6NaQSOHMb7Sp3fuGQH9s/GFJyOoKfht5IcUH44IYQG5UfNccE2gjrSrw==","signatures":[{"sig":"MEYCIQDA6s8BraMcPsu2+VlMobZaZzS1E5zwdUx+KAv96UpiggIhAJqJ7wYQswmrVhgd/WK//zv467GCJr0z/DKWK2wqfBBb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39911},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6ccbd5b41aad9a3a609f64a2277885246216c2b9","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.4.1_1777577415060_0.6640578277226756","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"vessels-sdk","version":"0.5.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.5.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"62617b5adf6c16857705b7dc6011d2480853746f","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.5.0.tgz","fileCount":6,"integrity":"sha512-jDP2uM2VK66mgW2juGRljDqoKs12mSJSN6+L+PANZgF7ePCFNREkZ5jIPoS/wyp5Vr2/DBAoYYsHPHu/uSbYLg==","signatures":[{"sig":"MEYCIQDL+NZUK/39dKUxDxeijVZ0zBoFpQxUZwMlR5pbRoqCuAIhAIJ3AmvEgqpLSM2td4qlICMXkobm7Ur0tum0LFbKtqXW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43863},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ec86cc31d2d038e277ead462a737619c4ee4265b","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.5.0_1778210818512_0.6016838379130987","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"vessels-sdk","version":"0.5.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.5.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"2aa3ba471f8ac247b66070fd9430bb8ff18b3dfb","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.5.1.tgz","fileCount":6,"integrity":"sha512-EkZ9wkPubJwM+FT4v4jUMlaq4GhRAdolDWdU2hUnHXHLtvC5mRBvOWIjkt8RndLVhuiIhnQjOBncYpurpQx/zg==","signatures":[{"sig":"MEQCIBgRt3waCzfTk3mqWKnSvr3hNDO9gbpH6xjXmOqdLA0qAiA/Pbjxt/lGwb9jxnpsXXwBi8+20hXQym0SHglSO8AWpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58467},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1524c1133b10125337a7d35ed79b803dfdc706a8","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.5.1_1778211302744_0.014601332827281155","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"vessels-sdk","version":"0.6.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.6.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"ce09054622e0988eaa29af53434e70fc757afcec","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.6.0.tgz","fileCount":6,"integrity":"sha512-FSSbnaIX6ZuoYiMZA5tKXkGniHA4FcvTXntqPoYGwer9jViNBYEx6au/b+UOzgOQ/Yb3S3lFl3sjlM4ujX2DgA==","signatures":[{"sig":"MEUCIQDajNthqkNfH9x+lpGTDxG2SzFG3uzIElmU0+4wUfhNbQIgeOmSH752hT1ksThRlvwqvObaSR/qKuE2DKHZ2jlDoJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67355},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1a9aa6acc5540af17c88dde740a6d9c33afde2ff","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.6.0_1780491191223_0.15896129960977134","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"vessels-sdk","version":"0.8.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.8.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"b112a6c9d3905a4936dccada10c9eb62d657e59d","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.8.0.tgz","fileCount":6,"integrity":"sha512-xWp9UvEWhwFZqaNVVmecCSGt84KuScWC/22InBp0lEvht/rLxLyZgPpQ8xvUwtPoVz0RUI9ZNilkN1lDI7XeyQ==","signatures":[{"sig":"MEYCIQDkKWWEvF5j+m6RXR8Q/oCEXnfRiDl62pkD/4OO70D8JAIhAI9RRwxg49T3AycyEnuNlZ4M7V4u5kokgx21HW7frpGF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73658},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b28963302c372bee329fce578ba1180cd9b22001","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.8.0_1780493060882_0.6859633375201892","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"vessels-sdk","version":"0.9.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.9.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"2eed42db0ee0499f199a24372cbcb8381ba6ba96","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.9.0.tgz","fileCount":6,"integrity":"sha512-EAya9QtB7lf6pLWp8lHTLAInpSzw3IMBEICyEcXXLGadmeVmwivukUIVB88UCebF6M2GM5TctWaQjWGvURTzyQ==","signatures":[{"sig":"MEUCIQDFVN5lcfTYkD866WP7WPUuZSmi/WeM6WWnmeQ6JL+YsAIgfIldOfaIKKXhwjlfVymb9KsfjTdFYHaOXNSKk3tsnSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76016},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b9e7a673914115c928b9ebb03e65a620615742f6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.9.0_1780527415205_0.9652912763419341","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"vessels-sdk","version":"0.11.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.11.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"4c94c090aacf71934893a3df0cc9973921cc5c5d","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.11.0.tgz","fileCount":6,"integrity":"sha512-z6dU6JJUU1LUF2Y7L/obddKrCEy8ppfdL+n+6BafcRvpli/S1z1kUSvfpz2Op7yRV+KaSi0FcWXTYmBnx+x2mw==","signatures":[{"sig":"MEYCIQCYz9kaa1sMyyAdexjhuq1omuj259JOEBZNVeoRngymGgIhAM7ULCZnYIMK/P7Am+IZVDxJ/ahZ3CeMbpNGoVQ3jq6G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90543},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4a95639bc4067631f86a9a764b5717e61c81b563","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.11.0_1780618731222_0.783163231708828","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"vessels-sdk","version":"0.12.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.12.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"eac903528c8c4193126c94f31c18d50caeccd773","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.12.0.tgz","fileCount":6,"integrity":"sha512-tbEVoET5tgp+WZzWXOf78P/Ognbj/4LVLZCdyQR7hSJfz1WC9XKNbqtCd0j7FnhaskjJNJUiX6qhWQr4ouNDXA==","signatures":[{"sig":"MEUCIDflrdUW7MItVaxayslLzGS0Lhm4hOGq7RqHXOwJapZcAiEAi6qpTXaYiYVqCfnqG3b0ut18onwrvRpJ0NjkjgZMouM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98819},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"218f5474e5cc35491495c37de02230c742fd48a8","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.12.0_1780628375824_0.3030425942225581","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"vessels-sdk","version":"0.13.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.13.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"90dc9dc692c2cc955d33172e2cf621502e9b0e92","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.13.0.tgz","fileCount":6,"integrity":"sha512-qWOk599DKPeIKJy7eH9GYWMYIzPmw+sMIkrU94klmulr7b9Jm5tJHpKVuKIgb4p/zzoE/Ie9tiA/kkpPD8CzIQ==","signatures":[{"sig":"MEYCIQCyVbhKEkmYDgrCDnoX2xtz/aJbrJwXL8GGp3hhErdEswIhAJGAOPV1sl+fej2bg4Q31gW9uTr2oywErtk+v6ULgxAJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106769},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f9b503747e6f0d95c87244bafe8dccab1c54c06e","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.13.0_1780655787111_0.9263653909812422","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"vessels-sdk","version":"0.14.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.14.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"9c774254580b07058c3dc8b8534945443afcffcc","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.14.0.tgz","fileCount":6,"integrity":"sha512-kLs4BtN9wNRZbES7AF/PCoFVKmAxw2WTMRLbC0cCc4aZMkFRWFSDHH8Cqm+JxcdokdNU9ssJNO57HNNm0MzXaA==","signatures":[{"sig":"MEUCIQD2VrBmaDKBK5RTLtbMIzk494HHDdkjvx8FD2TTmbiQOAIgBA9vOvBHZz+72Jb6q6xo48+AZiIYbNxpsJiuPOWoid0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109178},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"52c81203c1fec8823bd5867e3cf46c178608f50c","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.14.0_1780658848495_0.30263423792327737","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"vessels-sdk","version":"0.15.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.15.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"1c1b3178349ffc489025e8af9e0c766d61b104e9","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.15.0.tgz","fileCount":6,"integrity":"sha512-viUyHALhVZWYzGOVEK3JwM9xpkFh+yEPSDGjK+UX1G2cxAESN2CIptZ8DNHAcigAZ4LxNY5pkJrD3ugyxNV7yg==","signatures":[{"sig":"MEUCICQUyh1agqXqsw25B6q8GIQ+X8+KJFvo97Bia2V0Niv6AiEAvBAOmByF/P3ZzROtdug3F1fzq4czg65jl52GK5qljqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116408},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"45a66c4cb465d7e0537ad94f286be7618156b8c9","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.15.0_1780707200414_0.3044301452949505","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"vessels-sdk","version":"0.16.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.16.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"17419992f5bf79ca7bede9c12c80b8cde1f7b478","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.16.0.tgz","fileCount":6,"integrity":"sha512-xk3gSSO6Pl9NxQUzmFoExIk/yE5I9gziByefpsKhhFe0n6ML70nGBXfAMl0QZAeWU3ojKxU/jTDl0Vxa3pgeQg==","signatures":[{"sig":"MEYCIQDhsi39ksPJH/iTQyGwG67KxatafJU5YAO1lM7PSzC5wgIhAL3jfQLyMz1vKiBRzuYd8xGX1hNZ+ELfJ0mbW42Nao7r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123453},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"641fdc95b4eff31a9c3230d121298aae1bb4d1f4","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.16.0_1780733966530_0.2454621852519927","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"vessels-sdk","version":"0.17.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.17.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"5bdcbe9b6147b61865deaad8fc9aba14abf78ae8","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.17.0.tgz","fileCount":6,"integrity":"sha512-6Fe1upttEJ+I12xfTw3SSwLviG2sk5cE3t5WBfHIl3sHVOixZ+GhpOYOTUT+I7eU7TbifCqBkbgQXVd9CDP6UQ==","signatures":[{"sig":"MEQCIH0JAMgSr6IUtrCwnM/k1EfIdc8NMV7WlZLjD/0XlMwWAiBc+Tx8Slrh+M6sL9UcObVzgnwAnKf6VtQs0N5pDTrAYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125243},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"62530f285774feacf08a803edb2822fb986747d6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.17.0_1780747988249_0.2967699994056108","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"vessels-sdk","version":"0.18.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.18.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"52163b9bf7475c49a266e7b334a5686490ea2202","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.18.0.tgz","fileCount":7,"integrity":"sha512-MJxDAK8Kq2GR/aM7jJ3UQuSuePSp7CT2JGSAmyv5Kcl5dJ+hWhjYjSYH6NEkFJ0JbEkgT//5o0wQti8VWDV29w==","signatures":[{"sig":"MEUCIQChAcg53nLJM1BF6rAPbjl2JHhas6vKGkyPuRxmD6DhdwIgMlFWzmFjEKeFmR53L5eXmNwCo9soW0Dky7GlA+iYjEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141632},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0a86ebf239a0ea5a00e0f84f15566997a93437f1","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.18.0_1780750265844_0.703588034687135","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"vessels-sdk","version":"0.19.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.19.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"a162ffcf7aa61def2d8b7e13ae80f5c9300e9554","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.19.0.tgz","fileCount":7,"integrity":"sha512-8iljy5gvrgkCnRB+9M9xyfJD3an/Eij8wILciQY/QsVs7k1S0hnapM/+1jAfWkXGBV9bzLxJi7N+NVViQjhlog==","signatures":[{"sig":"MEQCIGHQHvvZ6rhiCzOFS0sheqqkicIHShEVAZ1GrchMlGpmAiB4+MCSBjap9QFASnwEOshM9aY6WqWZFH5dEHdNgfJ5tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160332},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4799fb1498916222056efb4d463e5ad6d6b6fbc4","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.19.0_1780800862231_0.24395584309585616","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"vessels-sdk","version":"0.20.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.20.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"82833862768ec21a18765b084eb858fdfdb2ed55","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.20.0.tgz","fileCount":7,"integrity":"sha512-66XepwRL8gO8U2qSNObRE9S+NqqNWLNYCgg0tJBENdWM/UWHj/9/omgjVPXE+nSAG9TwbdYpL6h3GC10bv0xgQ==","signatures":[{"sig":"MEQCIG24rwH/H4tJxE0UssNPnSfYaWJBd7/OtOMvCfEN/OFjAiAEJZylDkGXR2Eo8nFT99C3JOxx4dYEry+EL9mBwAUGnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169492},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2c47f621034c4e0b5c24ac480dc3eb31557c17f6","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.20.0_1780802404584_0.4953873540108098","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"vessels-sdk","version":"0.20.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.20.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"979487f6148e966f222c5faa6a6a1ce72c3d5c58","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.20.1.tgz","fileCount":7,"integrity":"sha512-rTGRAda6lQ7lsFmwfwtNL6fYCXz4mW8V02dqEqTrW0xLYcNJjXL1EbZ5+bopT0z7aP4KiIUs+9btPgwdxkO7Rw==","signatures":[{"sig":"MEUCIAnlHqWfDEN5osOTBUM2Yf3pxjd5M32TFwUPLfOZDnzQAiEAxjLLCFpWBW7yh5vYm7aKS9pQ+14h78mf08QsoMJbURc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":169530},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"54772b04c4df84c79a3f6f5a6ec035bdd6fdd29e","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.20.1_1780806310402_0.006915821487286422","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"vessels-sdk","version":"0.21.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.21.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"19d89790ef89ad6cec36faeaf5d4ad9e9498da98","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.21.0.tgz","fileCount":7,"integrity":"sha512-TE0rEWaHpmehCPzwKKvu28JOwr8dr5hlhmhFpTbV27hxT5oWghTRq5vmUtapivc3/Z/VSyZcrtz3MgL9WYOuuw==","signatures":[{"sig":"MEQCH00NQJVzhpyBnDoq6J7aDg4kIQVl1OC+G5f/+S38+FACIQD+4HWIBiOfZ/sRdUz3fAHugHb9ro0an/s/0BcAKs36/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181498},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.21.0_1780827225084_0.7680587923037561","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"vessels-sdk","version":"0.22.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.22.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"d0862cab88ef3cfda7365fd41d964db828da8833","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.22.0.tgz","fileCount":7,"integrity":"sha512-eFgMcrGWyaey5zV9HoA8SZmXvvjK0uQlP3Ir04zajMHsDaUFpPpxFPPvMaRAqldAJOIAaVoJiYoVX35UK+6EwQ==","signatures":[{"sig":"MEQCIGD8Yc+71sOtknZpZ08KIhS8fFHADMb5UodD4pLG6+EMAiA+iZn4YZju5xTyuULkw3zBCWhAWNw+t6/zuzsGwvc+jA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181962},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8cda3b9275153f3cf89217ea4d947f4fb7753c48","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.22.0_1780880985943_0.5817565103957338","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"vessels-sdk","version":"0.23.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.23.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"e266d27163c7358fa087b3d3820002bdf01eb12e","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.23.0.tgz","fileCount":7,"integrity":"sha512-u72CMXfvhqjrUHZkmost6vwkqTmreDE0WlmXxj9BIu5nLOiQ/tGOh2Vh/CYkmarUUCk3LCOCgAi+Mv4x66mzIg==","signatures":[{"sig":"MEYCIQDoFewXRs/DSSwy9J0f+XN/fIFn6+Ihd0sUzQrAl8ADuAIhALLeSrXvLCFa/+nRHsEP9gkVXgJ5K92iqCbdUX4ElVPt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190502},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.23.0_1780890358153_0.8097563555138565","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"vessels-sdk","version":"0.23.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.23.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"53ccbc2357c467c529cfdd17fad3acd3b0eae3ba","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.23.1.tgz","fileCount":7,"integrity":"sha512-mBBzuIZRR3mFiGEd5ZrEC5vl4lVu/pUjvVZ4Lp+tzFt4D6mTruDacUpd41enL11pTcKNqWiy8FJLk7LVRm3ZOg==","signatures":[{"sig":"MEQCIDYXAjuMVnr0yrhuuWlthLx4p/BI3iyznIUg0z74nKRVAiA5s2Yd4e5BS1TpIovVv3zUybT+YrJDQUcE7FXRttCOIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193360},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a2e8a2c939744b5b81520266134f2a2105d40a22","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.23.1_1780960698606_0.41414236494189205","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"vessels-sdk","version":"0.24.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.24.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"173f95d2518ce6578ef247d8e8ac13e52479339d","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.24.0.tgz","fileCount":7,"integrity":"sha512-k8KUsbnRPV/QfOH+V+SNu18rTeYKypUmP+Xi1YcXJZ8ohDFzvGDh/xnN6nUR9D+ksoBKXUaugow49b/yH8/HTg==","signatures":[{"sig":"MEUCIQDjGE7h6p0j8pTK1fug/r4Ad5LHGwuMS01bFsXwLLmvBwIgEb2PH/19Cn0kmKcSiKm4Ncbg77CIfHZkw2jPRk/jReA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205282},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.24.0_1780968786245_0.5965316127505587","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"vessels-sdk","version":"0.24.1","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.24.1","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"cb79e4083c529112205f3bfaba2dc8f7d22ceb85","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.24.1.tgz","fileCount":7,"integrity":"sha512-JpAhMdSKgdLotOWRL1kJnHbR2hycIsPDpj/9Uo9tK78wt4Qv8WVAO7yUn5THa2VsDBukOXCDeOV2p7YnQ3twMg==","signatures":[{"sig":"MEUCID/4s7QWj2owKezxhslFVqx8jF8zMzfvNbnBSPG97PJsAiEAuY0qsyNyQEcSbgqPBgFDi3AWuBT62ksxPfL09UH0b2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204626},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d07bd190a5f05b4716b4c2329751ba269eb46cf3","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.24.1_1780998218567_0.40945860707720216","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"vessels-sdk","version":"0.25.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.25.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"243ce3b8ae6e0922b02cca124ee868ee3845e9ea","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.25.0.tgz","fileCount":7,"integrity":"sha512-lllR5EkBvkLrOGvy0YEI2WnV9j4A0PBCHL1h5vbvo9kIGU5H4LA1rSCEH9ydXTboniCwhzk25obClyjIycKTzA==","signatures":[{"sig":"MEQCIHHN3izKuQLQaJTsJjEAUr5LQlBdTMIF3CBIDhA60WGdAiBU73im5RfsnA9yetMAzEHLc5UkS1JjKE40HD4zIKwUPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213701},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"af70b11eaad7fc68fd0de35faf3df0a1b8333f59","scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.25.0_1781501559149_0.776733787989816","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"vessels-sdk","version":"0.26.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.26.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"2e696ac2e3835f11ba54434d739bdb8ee60cb050","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.26.0.tgz","fileCount":7,"integrity":"sha512-IQvSPLNr0SVYljGvdbhFPEhDq0Fjtt+UeZVbAPecfHgdIcGZnNgyuooNce1rnh7d86o5FdbEffmRkMLQGCo8zA==","signatures":[{"sig":"MEUCIADlX+lRmX9FqFGm6nabEoI0LIp3f2tpJWtWlfCbcvicAiEA1pVSnJdjtWmzWNC5iq5BBOYYbhrcMrR/HMS+0tj9bN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223945},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.26.0_1781827597499_0.5664466191466186","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"vessels-sdk","version":"0.27.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.27.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"2d843c9de45697206fa48431e47d29f11ba7b452","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.27.0.tgz","fileCount":7,"integrity":"sha512-cNDUWdrPyDZj5GqsU8qu6Vgkbq7jiyUxPDLB2Vk7zLGuEtHvgQwHR9nGU9v2D97fdiaeSFY73Z+HgJoIV3PEfQ==","signatures":[{"sig":"MEYCIQCZ5ZjsLE6+dA3Sb3tgkudJWoo4zbmUkB4YxEp3o2fR7AIhAI6k9+saJHL/J3fI85Xfs21MwPG0wr/0L2w+xpSLS6HN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226005},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.27.0_1781920240683_0.4012441476893691","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"vessels-sdk","version":"0.28.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.28.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"f0b35b4a908772958f43499d5df49817523c03b5","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.28.0.tgz","fileCount":7,"integrity":"sha512-coEcs2SCpjmykxZrd0hG3tecbpAoQuOHTCWNTjxEh1Cx2ic73yPf0mbgRSAD2nEpFWHwTOtdBqfZ8YFc1pNr+g==","signatures":[{"sig":"MEUCIDQjHh8/Fm9/bcrqlaLbWXkzS23gOHwddbvI2hhfKebTAiEApuEqaYHzqeZOJn0Xewc6WWR10SeOolSPn3hsmHa5sv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232819},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.28.0_1781989668088_0.08471752821793577","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"vessels-sdk","version":"0.29.0","keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","_id":"vessels-sdk@0.29.0","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"dist":{"shasum":"e828e83754b0f6dae707f6dfb003576b5e83e62e","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.29.0.tgz","fileCount":7,"integrity":"sha512-ad5ee2TsAtR/sO8rDtgubCTGPR6KQtTjUd/1lWKzHU8kunjrQ9PIVv9XXeGTnQGVV9LZJNne1hOvU5CO7SVXhg==","signatures":[{"sig":"MEQCIAxa8J8syfniIyyfgQy0DfBlZt4gQZaG/fuM/t9dTChHAiB9VwdAtkMPonoxgpTrZkhaMFt0Jgtt0Dj+QcA5upSqbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248660},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsup --watch","build":"tsup"},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"_npmVersion":"10.9.3","description":"Let your agent reach you. Official Vessels SDK.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.22"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5","@types/node":"^25.5.2","@vessels/types":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/vessels-sdk_0.29.0_1782178308802_0.17220797821601752","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"vessels-sdk","version":"0.30.0","description":"Let your agent reach you. Official Vessels SDK.","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch"},"keywords":["ai","agents","vessels","llm","notifications"],"license":"MIT","dependencies":{"zod":"^3.22"},"devDependencies":{"@types/node":"^25.5.2","@vessels/types":"workspace:*","tsup":"^8.5.1","typescript":"^5"},"_id":"vessels-sdk@0.30.0","gitHead":"b0c80fb673519efd67e0846b653ba988c3309954","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-/llUmqNqBzUTLgs5vsIQXIBubAf0Vf3ajYdfFDc0NCTtnSrSK0jNFgc+nYWhissczDE6QZUKb/S+0e6N8zfFKw==","shasum":"27b26f7a2d6cabe194d444952a2f1f7183a92cde","tarball":"https://registry.npmjs.org/vessels-sdk/-/vessels-sdk-0.30.0.tgz","fileCount":7,"unpackedSize":256802,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCGaxwrKxZCLmrUF096UypHCLnyvyVIHLa9MerY1Vn7XAIgMVE2NyAfly+9JO/rH0QMBxokgjeYSDu2mJOnVAgcHLE="}]},"_npmUser":{"name":"liamdesic","email":"me@liamdesic.co"},"directories":{},"maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vessels-sdk_0.30.0_1784249741854_0.8201131473478633"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-08T02:25:41.561Z","modified":"2026-07-17T00:55:42.164Z","0.1.0":"2026-04-08T02:25:41.709Z","0.1.1":"2026-04-08T04:19:04.638Z","0.1.2":"2026-04-08T04:23:17.356Z","0.1.3":"2026-04-08T05:03:14.610Z","0.1.4":"2026-04-08T05:41:35.492Z","0.2.0":"2026-04-09T02:15:02.986Z","0.3.0":"2026-04-24T04:44:52.773Z","0.4.0":"2026-04-24T06:27:58.157Z","0.4.1":"2026-04-30T19:30:15.219Z","0.5.0":"2026-05-08T03:26:58.635Z","0.5.1":"2026-05-08T03:35:02.907Z","0.6.0":"2026-06-03T12:53:11.357Z","0.8.0":"2026-06-03T13:24:21.034Z","0.9.0":"2026-06-03T22:56:55.345Z","0.11.0":"2026-06-05T00:18:51.369Z","0.12.0":"2026-06-05T02:59:35.957Z","0.13.0":"2026-06-05T10:36:27.250Z","0.14.0":"2026-06-05T11:27:28.636Z","0.15.0":"2026-06-06T00:53:20.552Z","0.16.0":"2026-06-06T08:19:26.761Z","0.17.0":"2026-06-06T12:13:08.392Z","0.18.0":"2026-06-06T12:51:05.976Z","0.19.0":"2026-06-07T02:54:22.370Z","0.20.0":"2026-06-07T03:20:04.733Z","0.20.1":"2026-06-07T04:25:10.558Z","0.21.0":"2026-06-07T10:13:45.336Z","0.22.0":"2026-06-08T01:09:46.100Z","0.23.0":"2026-06-08T03:45:58.284Z","0.23.1":"2026-06-08T23:18:18.755Z","0.24.0":"2026-06-09T01:33:06.411Z","0.24.1":"2026-06-09T09:43:38.719Z","0.25.0":"2026-06-15T05:32:39.309Z","0.26.0":"2026-06-19T00:06:37.656Z","0.27.0":"2026-06-20T01:50:40.826Z","0.28.0":"2026-06-20T21:07:48.273Z","0.29.0":"2026-06-23T01:31:48.940Z","0.30.0":"2026-07-17T00:55:42.011Z"},"license":"MIT","keywords":["ai","agents","vessels","llm","notifications"],"description":"Let your agent reach you. Official Vessels SDK.","maintainers":[{"name":"liamdesic","email":"me@liamdesic.co"}],"readme":"# vessels-sdk\n\nNode.js SDK for [Vessels](https://vessels.app) — let your agent reach you.\n\nVessels is the communication layer between AI agents and their human operators. Your agent pushes structured messages to a vessel; the human responds via the web or mobile app; your agent receives the answer via polling or webhooks.\n\n## Installation\n\n```bash\nnpm install vessels-sdk\n```\n\n## Quick start\n\nGet an API key (Claude Code / AI assistants — fully non-interactive):\n\n```bash\nnpm install -g vessels\nvessels init --email me@example.com                 # sends a 6-digit OTP\nvessels init --email me@example.com --otp 847293    # prints VESSELS_API_KEY=vsl_xxx\n```\n\nOr sign in at [vessels.app](https://vessels.app) → Settings → API Keys.\n\n```typescript\nimport { Vessels } from 'vessels-sdk';\nconst vessels = new Vessels({ apiKey: process.env.VESSELS_API_KEY! });\n```\n\n### 1. Send a message\n\nThe simplest case — a chat bubble in a vessel (created on first push):\n\n```ts\nawait vessels.push({ vessel: 'booking-123', vesselTitle: 'Sarah — Saturday', message: 'New booking request.' });\n```\n\n### 2. Do real work → the activity harness *(the recommended pattern)*\n\nFor anything beyond a one-liner, open a **working card** and drive it with a plan + steps. The human watches progress fill in live; the card seals when you finish. This is the SDK's headline feature.\n\n```ts\nimport { Vessels, type AgentActivityType } from 'vessels-sdk';\n\n// Open the card with a plan (todos default to `pending`)\nconst { messageId } = await vessels.push({\n  vessel: 'booking-123',\n  message: 'Checking availability…',\n  agentActivity: { todos: [\n    { label: 'Look up the customer' },\n    { label: 'Check the calendar' },\n    { label: 'Draft a reply' },\n  ]},\n});\n\nconst act = vessels.activity(messageId);          // a live handle for that card\nawait act.start('Look up the customer');          // mark a todo in-progress\nawait act.step('tool_use', 'Queried CRM');        // a step, filed under the active todo\nawait act.complete('Look up the customer');        // finish it\n// …start/step/complete each remaining todo…\nawait act.done();                                  // seal the card\n```\n\n`act.awaitInput()` pauses the card on the human mid-plan (push an `interaction`, then resume with another `start`/`step`/`complete`). `step()`'s first arg is a typed `AgentActivityType` — `'thinking' | 'searching' | 'tool_use' | 'browsing' | 'processing'` (or use the exported `AgentActivityTypes` constant for autocomplete).\n\n### 3. Surfaces — artifacts vs chat bubbles\n\n`surface()` is a full-width artifact (a draft, quote, report, diff) — a title, block-markdown body (headings/lists/tables/quotes), an optional glance-card, and an action bar. Use it when the human is *reviewing* something, not chatting.\n\n```ts\nawait vessels.surface({\n  vessel: 'booking-123',\n  title: 'Draft reply to Sarah',\n  body: '## Hi Sarah\\n\\nSaturday 2 PM is open — shall I lock it in?\\n\\n| Slot | Status |\\n|---|---|\\n| Sat 2 PM | open |',\n  interaction: vessels.approval({ prompt: 'Send this reply?' }),\n});\n```\n\n### 4. Live token streaming\n\nStream model output into a card in real time (a monospace window that clears when sealed):\n\n```ts\nconst { messageId } = await vessels.push({ vessel: 'booking-123', message: 'Drafting…' });\nconst stream = vessels.stream(messageId);\nfor await (const chunk of llm) stream.write(chunk);   // throttled PATCHes under the hood\nawait stream.done('Here is the drafted reply.');       // flush + seal, set final content\n```\n\n### 5. Ask a structured question\n\nFive interaction types — `approval`, `choice`, `checklist`, `textInput`, and `questions` (a small multi-question form). Attach one to any `push`/`surface`:\n\n```ts\ninteraction: vessels.questions({\n  prompt: 'A few details to finalise',\n  questions: [\n    { id: 'date', header: 'Date', question: 'Which day?', options: [{ id: 'sat', label: 'Sat' }, { id: 'sun', label: 'Sun' }] },\n  ],\n})\n```\n\n### 6. Manage vessels (no message posted)\n\n```ts\nawait vessels.listVessels({ status: 'waiting' });                       // inventory\nawait vessels.updateVessel('booking-123', { labels: ['urgent'], title: 'Renamed' });\nawait vessels.archiveVessel('booking-123');                             // reversible\nawait vessels.deleteVessel('booking-123');                              // permanent — messages cascade\n```\n\n### 7. Clear messages — rewind a feed (no agent context cleared)\n\n```ts\nawait vessels.clearMessages('booking-123', { afterMessageId: msgId });  // \"rewind to here\" (anchor kept)\nawait vessels.clearMessages('booking-123', { before: '2026-06-07T00:00:00Z' }); // trim old history\nawait vessels.clearMessages('booking-123', { afterMessageId: msgId, dryRun: true }); // → { deleted } count, no-op\nawait vessels.deleteMessage(msgId);                                      // one message\n```\n\nPass **one** anchor — `afterMessageId`/`after` (delete strictly newer) or `beforeMessageId`/`before` (older); the anchor row stays. `source` scopes it: `'agent'` (default, = agent+system), `'user'`, or `'all'`. Hard delete — interaction responses cascade. This trims the **human-visible feed only**; your agent's context lives in your own system.\n\nThen receive the human's responses via **webhook** (`parseWebhookEvent`) or **`poll()`** — see below.\n\n> `Vessels.isConfigured()` is a static guard (`true` when `VESSELS_API_KEY` is set) so you can no-op cleanly when not wired up. And **don't set `vesselStatus`** — it's deprecated; waiting/active is derived from whether a message carries a live interaction.\n\n---\n\n## API reference\n\n### `new Vessels(config)`\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `apiKey` | `string` | required | Your `vsl_` prefixed API key |\n| `baseUrl` | `string` | `https://vessels.app` | Override for local dev or self-hosted |\n\n---\n\n### `vessels.push(payload)`\n\nPush a message to a vessel. Creates the vessel if it doesn't exist yet.\n\nReturns `{ ok: true, messageId: string, vesselId: string, createdAt: string }`.\n\n**Full payload:**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `message` | `string` | **Required.** The message text. |\n| `vessel` | `string` | Your external ID for this vessel (e.g. `booking-123`). Creates the vessel on first use. |\n| `vesselTitle` | `string` | Human-readable name shown in the vessel list. Set on creation; updates on subsequent pushes. |\n| `vesselStatus` | `'active' \\| 'waiting' \\| 'resolved'` | Status badge shown in the vessel list. `waiting` = amber, `resolved` = green. |\n| `labels` | `string[]` | Tags for filtering in the dashboard. Max 10, 50 chars each. Replaces the existing set on every push — send all labels you want, not just new ones. |\n| `metadata` | `object` | Arbitrary JSON stored on the vessel, passed through in webhook callbacks. |\n| `card` | `Card` | Structured key-value info attached to this message. `{ title: string, fields: [{ label, value }] }` |\n| `interaction` | `Interaction` | Interactive prompt for the human (one of 4 types — see helpers below). Max one per message; immutable after the human responds. |\n| `details` | `Details \\| null` | The vessel's persistent reference/identity record — CRM-style facts about who/what the vessel is about (client name, phone, email, links into your own admin). Shown in the open-vessel top bar; values can be `copyable`. NOT status (status lives in `labels`). Replaces wholesale on every write. `{ fields: [{ label, value, url?, tone?, copyable? }] }`. Pass `null` to clear. |\n| `attachments` | `Attachment[]` | Images or files to show in the message. Max 10. You host the files; Vessels renders them. `[{ type: 'image' \\| 'file', url: string, filename?: string }]` |\n| `suggestions` | `string[]` | Quick-reply chips shown below the message. Max 5. Tapping fills the text input. Disappear after the user sends any message. |\n| `previewUrl` | `string` | A single URL rendered as a tappable link card below the message. Presentation only — no response. Compose with any interaction. |\n| `notify` | `boolean` | Whether to send a push notification. Default `true`. |\n\n```typescript\nawait vessels.push({\n  vessel: 'booking-123',\n  vesselTitle: 'Sarah Martinez',\n  message: 'Ready for review.',\n  vesselStatus: 'waiting',\n  labels: ['golf', 'vip'],\n  metadata: { bookingRef: 'BK-001' },\n  card: {\n    title: 'Booking',\n    fields: [{ label: 'Date', value: 'Saturday 14 June' }],\n  },\n  details: {\n    fields: [\n      { label: 'Phone', value: '+61 400 000 000', copyable: true },\n      { label: 'Admin', value: 'Open in CRM', url: 'https://crm.example.com/clients/123' },\n    ],\n  },\n  attachments: [\n    { type: 'image', url: 'https://example.com/photo.jpg' },\n    { type: 'file', url: 'https://example.com/report.pdf', filename: 'Report.pdf' },\n  ],\n  suggestions: ['Looks good', 'Need changes'],\n  interaction: vessels.approval({ prompt: 'Approve?' }),\n});\n```\n\n---\n\n### `vessels.pushMany(payload)`\n\nPush the same message to multiple vessels at once. Max 100 vessels per call. Each vessel gets its own independent copy — interactions are responded to individually.\n\nReturns `{ ok: true, results: Array<{ vessel, messageId, vesselId, error? }> }`.\n\n```typescript\nconst { results } = await vessels.pushMany({\n  vessels: ['booking-101', 'booking-102', 'booking-103'],\n  message: 'The Windmill Course is closed this Saturday due to maintenance.',\n  interaction: vessels.approval({\n    prompt: 'Send cancellation email to this client?',\n    approveLabel: 'Send',\n    rejectLabel: 'Skip',\n  }),\n  vesselStatus: 'waiting',\n});\n\nfor (const r of results) {\n  if (r.error) console.error(`Failed for ${r.vessel}:`, r.error);\n  else console.log(`Pushed to ${r.vessel} — message ${r.messageId}`);\n}\n```\n\n`pushMany` accepts the same fields as `push`, except `vessel` and `vesselTitle` are replaced by `vessels` (an array of external IDs). Vessel titles are not settable via `pushMany` — use per-vessel `push` calls for that.\n\n---\n\n### `vessels.validatePush(payload)` / `vessels.validatePushMany(payload)`\n\nCheck that a payload complies with the required syntax **without sending anything**. Useful for confirming an agent's message is well-formed in a test or dry run before it reaches a human. This runs the **same schema the server enforces**, so a payload that passes here is exactly one the API will accept.\n\nReturns `{ valid: boolean, errors: string[], details? }` — `errors` is a list of readable `field.path: message` lines; `details` is Zod's `flatten()` output (`{ formErrors, fieldErrors }`).\n\n```typescript\nconst check = vessels.validatePush({\n  vessel: 'booking-123',\n  message: 'New booking',\n  interaction: { type: 'approval', prompt: 'Confirm?' },\n});\n\nif (!check.valid) {\n  console.error(check.errors);\n  // e.g. ['suggestions: Array must contain at most 5 element(s)']\n}\n```\n\nYou don't have to call this explicitly: `push()` and `pushMany()` run the same check internally and throw a `VesselsValidationError` **before** the network request, so a malformed payload fails fast without burning an API call. Call `validatePush` directly when you want a result object instead of an exception.\n\n---\n\n### `vessels.editMessage(messageId, patch)`\n\nEdit an existing agent-sent message in place. The message re-renders via Supabase Realtime without reloading.\n\nUpdatable fields: `content`, `card`, `attachments`, `suggestions`. Interactions are immutable — create a new message to re-ask.\n\nOnly agent-sourced messages can be edited. Returns `{ ok: true }`.\n\n```typescript\nconst { messageId } = await vessels.push({\n  vessel: 'batch-job-1',\n  message: 'Processing bookings... 0 of 50 complete',\n  card: { title: 'Progress', fields: [{ label: 'Progress', value: '0 / 50' }] },\n});\n\n// Update as work proceeds:\nawait vessels.editMessage(messageId, {\n  content: 'Processing bookings... 24 of 50 complete',\n  card: { title: 'Progress', fields: [{ label: 'Progress', value: '24 / 50' }] },\n});\n\n// Final update:\nawait vessels.editMessage(messageId, {\n  content: 'All 50 bookings processed.',\n  card: {\n    title: 'Batch Complete',\n    fields: [{ label: 'Processed', value: '50' }, { label: 'Errors', value: '0' }],\n  },\n});\n```\n\n---\n\n### `vessels.clearMessages(externalId, opts)` / `vessels.deleteMessage(messageId)`\n\nBulk-trim a vessel's feed back to a point — the durable primitive behind an agent's `/rewind`. A vessel is the human's **live, editable** view, so trimming it is a legitimate edit; it does **not** clear your agent's context (that lives in your own system).\n\nPass **exactly one** anchor; the anchor row is always kept (strict compare):\n\n| Anchor | Effect |\n|--------|--------|\n| `afterMessageId` / `after` (ISO) | delete everything strictly **newer** — \"rewind to here\" |\n| `beforeMessageId` / `before` (ISO) | delete everything strictly **older** — trim history |\n\n`source` scopes what may go: `'agent'` (default, agent + system), `'user'` (only the human's), `'all'`. `dryRun: true` returns `{ deleted }` as the would-delete count and deletes nothing. Hard delete — interaction responses cascade; **irreversible**. Returns `{ deleted, dryRun }`.\n\n```typescript\n// Rewind: drop everything after a known message\nconst { deleted } = await vessels.clearMessages('booking-123', { afterMessageId: msgId });\n\n// Preview a time-based trim without deleting\nawait vessels.clearMessages('booking-123', { before: '2026-06-07T00:00:00Z', dryRun: true });\n\n// Delete a single message\nawait vessels.deleteMessage(msgId);\n```\n\n---\n\n### Interaction helpers\n\nAll five helpers return a typed interaction object to pass as `payload.interaction`. There is a fixed set of five types — no custom types.\n\n#### `vessels.approval(opts)`\n\nA yes/no decision. Optionally require a reason on rejection.\n\n```typescript\nvessels.approval({\n  prompt: 'Send the invoice?',\n  approveLabel: 'Send',          // default: 'Approve'\n  rejectLabel: 'Cancel',         // default: 'Reject'\n  reasonRequired: false,         // if true, rejection requires a reason\n  metadata: { invoiceId: '42' }, // returned in poll event and webhook\n})\n```\n\nResponse shape: `{ action: 'approved' | 'rejected', reason?: string }`\n\n#### `vessels.choice(opts)`\n\nPick one option from a list. Optionally allow a free-text custom value.\n\n```typescript\nvessels.choice({\n  prompt: 'Which time slot works?',\n  options: [\n    { id: '9am',  label: '9:00 AM' },\n    { id: '2pm',  label: '2:00 PM' },\n    { id: '5pm',  label: '5:00 PM' },\n  ],\n  allowCustom: true,\n  customPlaceholder: 'Type a different time...',\n})\n```\n\nResponse shape: `{ selected: string, customValue?: string | null }`\n\n#### `vessels.checklist(opts)`\n\nPick one or more items from a list.\n\n```typescript\nvessels.checklist({\n  prompt: 'Which documents are needed?',\n  options: [\n    { id: 'id',       label: 'Photo ID',         checked: true },\n    { id: 'proof',    label: 'Proof of address' },\n    { id: 'contract', label: 'Signed contract' },\n  ],\n  minSelections: 1,\n  submitLabel: 'Confirm selection',\n})\n```\n\nResponse shape: `{ selected: string[] }` — array of selected option IDs.\n\n#### `vessels.textInput(opts)`\n\nFree-form text from the human.\n\n```typescript\nvessels.textInput({\n  prompt: 'Why is the booking being cancelled?',\n  placeholder: 'Enter reason...',\n  multiline: true,\n  submitLabel: 'Submit',\n})\n```\n\nResponse shape: `{ text: string }`\n\n#### Review-and-decide (the old `confirmPreview`)\n\nThere is no separate preview interaction. To have the human review something then decide,\nattach a [`previewUrl`](#push) (a link card) to the message and use `approval`:\n\n```typescript\nawait vessels.push({\n  vessel: 'draft-123',\n  message: 'Draft email ready for review.',\n  previewUrl: 'https://your-app.com/drafts/123',\n  interaction: vessels.approval({ prompt: 'Send this email?', approveLabel: 'Send', rejectLabel: 'Edit' }),\n});\n```\n\nResponse shape: `{ action: 'approved' | 'rejected', reason?: string }`\n\n---\n\n### `vessels.poll(options?)`\n\nFetch pending events. Uses a server-side cursor per API key — each call returns only new events since the last acknowledged poll.\n\nReturns `{ ok: true, events: PollEvent[], hasMore: boolean }`.\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `ack` | `boolean` | `true` | Advance the cursor so these events aren't returned again |\n| `limit` | `number` | `50` | Max events per call |\n| `since` | `string` | — | ISO timestamp — overrides the cursor for this call only |\n\nPoll events are normalised to camelCase by the SDK.\n\n```typescript\nconst { events, hasMore } = await vessels.poll({ ack: true });\n\nfor (const event of events) {\n  if (event.type === 'interaction.response') {\n    // event.interactionType      — 'approval' | 'choice' | 'checklist' | 'text_input'\n    // event.response             — response shape depends on interactionType (see above)\n    // event.interactionMetadata  — metadata object you passed when creating the interaction, or null\n    // event.messageId            — UUID of the message containing the interaction\n    // event.vessel.externalId    — your original vessel string ('booking-123')\n    // event.vessel.id            — vessel UUID\n    // event.vessel.labels        — string[] of tags on this vessel\n    // event.user                 — { id, email } of the responding user, or null\n\n    if (event.interactionType === 'approval' && event.response.action === 'approved') {\n      await confirmBooking(event.vessel.externalId);\n    }\n  }\n\n  if (event.type === 'message.user') {\n    // event.message.content      — what the human typed\n    // event.vessel.externalId    — your original vessel string\n    const reply = await generateReply(event.message.content);\n    await vessels.push({ vessel: event.vessel.externalId, message: reply });\n  }\n}\n\n// For high volume, page through all pending events\nif (hasMore) {\n  // Call poll() again immediately\n}\n```\n\nPolling is a complete alternative to webhooks. Use it to get started, or when you can't receive inbound HTTP.\n\n---\n\n### `vessels.verifyWebhook(body, signature, webhookSecret)`\n\nVerify the `X-Vessels-Signature` header on incoming webhook requests. Uses constant-time HMAC comparison.\n\n- `body` — raw request body as a string, **before** `JSON.parse`\n- `signature` — the `X-Vessels-Signature` header value (format: `sha256=<hex>`)\n- `webhookSecret` — the per-endpoint secret shown when you created the webhook in Settings → Webhooks. **Not the same as your API key.**\n\nReturns `true` if the signature is valid, `false` otherwise.\n\n```typescript\nimport express from 'express';\nimport { Vessels } from 'vessels-sdk';\n\nconst vessels = new Vessels({ apiKey: process.env.VESSELS_API_KEY! });\nconst app = express();\n\napp.post(\n  '/webhooks/vessels',\n  express.raw({ type: 'application/json' }),\n  async (req, res) => {\n    const body = req.body.toString('utf8');\n    const signature = req.headers['x-vessels-signature'] as string;\n\n    const valid = vessels.verifyWebhook(body, signature, process.env.VESSELS_WEBHOOK_SECRET!);\n    if (!valid) return res.status(401).json({ error: 'Invalid signature' });\n\n    const payload = JSON.parse(body);\n    // payload.event — 'interaction.response' | 'message.user'\n    // Webhook bodies use snake_case (vessel_id, external_id, interaction_type)\n\n    if (payload.event === 'interaction.response') {\n      const { interaction_type, response, vessel, metadata } = payload.data;\n      // vessel.external_id — your original vessel string\n      if (interaction_type === 'approval' && response.action === 'approved') {\n        await confirmBooking(vessel.external_id);\n      }\n    }\n\n    if (payload.event === 'message.user') {\n      const { content, vessel, context } = payload.data;\n      // context — last 10 messages in the vessel, oldest first (convenience, not canonical state)\n      const reply = await generateReply(content, context);\n      await vessels.push({ vessel: vessel.external_id, message: reply });\n    }\n\n    res.json({ ok: true });\n  },\n);\n```\n\n**Webhook payload shapes** (snake_case — raw HTTP/JSON layer):\n\n```json\n// interaction.response\n{\n  \"event\": \"interaction.response\",\n  \"vessel_id\": \"uuid\",\n  \"workspace_id\": \"uuid\",\n  \"data\": {\n    \"message_id\": \"uuid\",\n    \"interaction_type\": \"approval\",\n    \"response\": { \"action\": \"approved\" },\n    \"response_id\": \"uuid\",\n    \"metadata\": { \"invoiceId\": \"42\" },\n    \"vessel\": { \"id\": \"uuid\", \"external_id\": \"booking-123\", \"title\": \"Sarah Martinez\", \"metadata\": {} }\n  },\n  \"timestamp\": \"2024-01-01T00:00:00.000Z\"\n}\n\n// message.user\n{\n  \"event\": \"message.user\",\n  \"vessel_id\": \"uuid\",\n  \"workspace_id\": \"uuid\",\n  \"data\": {\n    \"message_id\": \"uuid\",\n    \"content\": \"I want to reschedule\",\n    \"vessel\": { \"id\": \"uuid\", \"external_id\": \"booking-123\", \"title\": \"Sarah Martinez\", \"metadata\": {} },\n    \"context\": [{ \"source\": \"agent\", \"content\": \"...\", \"created_at\": \"...\" }]\n  },\n  \"timestamp\": \"2024-01-01T00:00:00.000Z\"\n}\n```\n\nRetries: 3× on failure with backoff (1s, 10s, 60s). All deliveries logged in Settings → Logs.\n\n---\n\n## Error handling\n\nThree typed error classes are exported alongside `Vessels`:\n\n| Class | HTTP status | Description |\n|-------|-------------|-------------|\n| `VesselsAuthError` | 401 | Invalid or revoked API key |\n| `VesselsValidationError` | 400 | Bad request payload. Also thrown **locally, before the request** by `push()`/`pushMany()` when the payload fails client-side validation. Check `.details` for field-level errors. |\n| `VesselsRateLimitError` | 429 | Rate limit exceeded. Check `.retryAfter` (seconds) before retrying. |\n\n```typescript\nimport { Vessels, VesselsAuthError, VesselsRateLimitError, VesselsValidationError } from 'vessels-sdk';\n\ntry {\n  await vessels.push({ vessel: 'booking-123', message: 'hello' });\n} catch (err) {\n  if (err instanceof VesselsAuthError) {\n    console.error('Check your API key — it may be revoked');\n  } else if (err instanceof VesselsRateLimitError) {\n    console.error(`Rate limited — retry after ${err.retryAfter}s`);\n  } else if (err instanceof VesselsValidationError) {\n    console.error('Bad payload:', err.details);\n  } else {\n    throw err;\n  }\n}\n```\n\n---\n\n## Naming conventions\n\nThe SDK and push payload use **camelCase** (JavaScript convention): `vesselTitle`, `vesselStatus`, `details`, `vesselId`, `messageId`.\n\nWebhook POST bodies use **snake_case** (raw HTTP/JSON layer): `vessel_id`, `external_id`, `interaction_type`.\n\nPoll events are normalised to **camelCase** by the SDK: `event.vessel.externalId`, `event.interactionType`, `event.messageId`.\n\nRule of thumb: anything you **write** (push calls, SDK methods) is camelCase. Anything you **read** from a raw webhook POST body is snake_case.\n\n---\n\n## TypeScript types\n\nAll types used by the SDK are exported directly from `vessels-sdk`:\n\n```typescript\nimport type {\n  PushPayload,\n  PushManyPayload,\n  MessagePatch,\n  Attachment,\n  Interaction,\n  Card,\n  ApprovalInteraction,\n  ChoiceInteraction,\n  ChecklistInteraction,\n  TextInputInteraction,\n} from 'vessels-sdk';\n```\n\n---\n\n## Links\n\n- Dashboard: [https://vessels.app](https://vessels.app)\n- Full integration reference: [https://vessels.app/docs](https://vessels.app/docs)\n- CLI: `npm install -g vessels`\n- npm: [https://www.npmjs.com/package/vessels-sdk](https://www.npmjs.com/package/vessels-sdk)\n","readmeFilename":"README.md"}