{"_id":"@floomhq/signaldash","_rev":"49-9fe22387791049f62e887ed2bde9cb1a","name":"@floomhq/signaldash","dist-tags":{"preview":"0.2.0","latest":"0.39.19"},"versions":{"0.1.0":{"name":"@floomhq/signaldash","version":"0.1.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.1.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"c52082c80b33859a14936f400f776b612a0b1196","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.1.0.tgz","fileCount":11,"integrity":"sha512-YomcVsQUb9H+TZdSTSOAXa6cBHhyDKFn8+UMQ0DCUUPrK2ikfvpIErX1huAXVebsEA/sfsjrBfgqUmK9h6vKPg==","signatures":[{"sig":"MEUCIQC15Y0TOE6/Av53cYyozrnsFZLQUc+FpGs7/SthLuj1qgIgPr3yPCTNjzIigQFOh02kERuYUwk2VwFhWLBlmijUVvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46881},"type":"module","engines":{"node":">=20"},"gitHead":"7f1a8b7d942e182f74f772fd3727b8a81a291d3f","scripts":{"test":"node --test","check":"node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.1.0_1784969971497_0.3861084572845337","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@floomhq/signaldash","version":"0.2.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.2.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"cd5d436db2105e57c174c56bab365b563d9c8759","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.2.0.tgz","fileCount":11,"integrity":"sha512-TE8ps2tG0guj5Tf7AJrWz+ffrqS6GI3zk7my7EjoJv0gQoxgkMDHWz8I4C9EdI/fUBRY7R2OiUMmaieCQaM/4w==","signatures":[{"sig":"MEYCIQDmqNnrIl99L074mpSOw8iWkGO+YgT0drquhKc9yeBfrgIhAJ25fF1lPQ9el7/fOXyROvnS34MapFbnGEpu8ipLlq4d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49130},"type":"module","engines":{"node":">=20"},"gitHead":"63a7d0384d6687aba280d62296709131e42540ec","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.2.0_1784986495561_0.3141074551081593","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@floomhq/signaldash","version":"0.3.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.3.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"c350774d9aacbfc8b39b526c4229e13f2febcfe6","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.3.0.tgz","fileCount":12,"integrity":"sha512-nPfd/xcu6NZq0SQBb5M76L5Msmo/jCB8uOAcis3rYqsIf7wxGsN0Cgcx0Fc21ZKbDRx+9ELRSK9+uu/ihxAGGg==","signatures":[{"sig":"MEUCIHSlu6Sd36gZUqsbo1jsTELu6A9Viapc6cqHWJQ+1JdmAiEA1+IKnOv//R/b4L5u8bKoDS68///N/IbujL7YdOS2XKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53235},"type":"module","engines":{"node":">=20"},"gitHead":"63a7d0384d6687aba280d62296709131e42540ec","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.3.0_1784987121314_0.7265875123959216","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@floomhq/signaldash","version":"0.4.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.4.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"1566117eccedc445e3ce4f92a61f162c9f181649","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.4.0.tgz","fileCount":12,"integrity":"sha512-fnQPu4giOw/PjBLgNh5C+Uvjdw3QxSCKBgUJRr10KZDwQrbAtndupxoVlVJhc5ZJOxl8a7d440HM+lY4VXOEQw==","signatures":[{"sig":"MEUCIQDNzqRCOgVDmHNsjPcqPdkpmLPP/ckjgZ93M2lRzRBwcQIgIEfN9QRradoWTX9+wPsiWryTsUqzp/ftJEPQK1b4v80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54835},"type":"module","engines":{"node":">=20"},"gitHead":"0122e4d8404fb3e7b6a696f452b004cc6dbe1f8e","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.4.0_1784987312708_0.08494040732223151","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@floomhq/signaldash","version":"0.5.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.5.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"0e420348c32e2474965392373989283dadcdda12","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.5.0.tgz","fileCount":12,"integrity":"sha512-flbBIDM2yP+r7Mi6SKwsAGu3M7V7CrzxL217AC00RsTXAo8uVvS/EF3qqEcU0/dePr37hCtYSSNY0zJlQ6V3SA==","signatures":[{"sig":"MEUCIQChGBq66E4VDeUSllRJ+xBIhwirvEVxSrQUIuBGOuA04QIgCRmtTJ8jxtMp7lfLZjJ8oHnmR2MDohvtatYhb4MbW/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56779},"type":"module","engines":{"node":">=20"},"gitHead":"d58d445ced74ba4c17848dddf05516c550bd7f66","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.5.0_1784990116969_0.5518486984658968","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@floomhq/signaldash","version":"0.6.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.6.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"489415f814a99ec8226d3ccb96ca4c9cf605742e","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.6.0.tgz","fileCount":12,"integrity":"sha512-hbRdElUjzY9AgsSFdy0jLdbqn62BhFHY3iBX58XSzz15DLtU6UCa60nQmUdKxSEnRSD+7279hUMS3lJ9+bIBmA==","signatures":[{"sig":"MEQCIBALOESQ3j5Bit2RUXwUxH9lurf0mnRHJjhKu4hbEBjeAiAnxW5krjRftHh2bMBIuL5E4OOst1ZeYZRGKGLrE9/8IA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57239},"type":"module","engines":{"node":">=20"},"gitHead":"1ca8342df301240e71e8668eef534a013acaa3ca","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.6.0_1784991063674_0.4583849505679327","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@floomhq/signaldash","version":"0.7.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.7.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"afa5ec76f6f8b0353a1d281d6747f43206926f24","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.7.0.tgz","fileCount":12,"integrity":"sha512-eIE32PDc/gKGKqMHG272tUPFR+2lduXHjyuNc0GnSp7c6JoO8sEGLya41ciHELGC7A280DShrda5TF8AgRxDGQ==","signatures":[{"sig":"MEYCIQClDs2ChzertshKyiXmkppvTutlAcWHSQzqR3U7B7X7sAIhAMwypkAiXCCzPXAOAo3QIEiSCQ4JtR5ehZgTEAnuCAxA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60947},"type":"module","engines":{"node":">=20"},"gitHead":"cb0656bc3bf9dbeec503ac94ff60192c42354c01","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.7.0_1784991953222_0.50996131067253","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@floomhq/signaldash","version":"0.8.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.8.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"2df7c86f4b4b4f4b7fed3b210f511236102b34fd","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.8.0.tgz","fileCount":12,"integrity":"sha512-KvkRdRLTMJxibkVjOsQ/SFJ/rmTLmkJ9zqQOhLmchAfOX9tFzUHULLlUAoAa39fgWFlXo86YVrVLxPf4eG8pFA==","signatures":[{"sig":"MEUCIGmSDaW0aA6/4Eo9TcYFZ3h01Pr/jDpGZTMIKALvCKMtAiEAplLaq5CnCCeF2zO1r77cQHAjgEgqnIClFCyH4pk7CPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61516},"type":"module","engines":{"node":">=20"},"gitHead":"2efcd9651673c36858dc6a28c0f5f38460300223","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.8.0_1784992160908_0.6379693268791451","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@floomhq/signaldash","version":"0.9.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.9.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"5702675949ec55f727376d18316b436a00c9546e","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.9.0.tgz","fileCount":12,"integrity":"sha512-EVNVbkpPDhbSpdwdjK5HgPCaxw2qXiZ9q6ZjftbOMo7sh44dBcen9nPhjB8BZ4mfJn3aHb3phHJhSajnzn3W7A==","signatures":[{"sig":"MEUCIQCIWOqm0Y9Qzn/C8N17qVRIqrRhpfQ8W/Qs3UBfvTnLSAIgXstGreBcbkJU6FZ2LsmkdS/JPdnQC9ZJKxfwMCvnego=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61317},"type":"module","engines":{"node":">=20"},"gitHead":"aa5162d05f325148d9f5fdc702a09946c0b3b102","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.9.0_1784994234155_0.06075311754317392","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@floomhq/signaldash","version":"0.10.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.10.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"4df2d7729124734f29c20e52f18f4a685ef06182","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.10.0.tgz","fileCount":12,"integrity":"sha512-A8Mbn6kTCtoGowaFIuC/YYvVFYkIPReSBY1Ip5bMx8rMmoAeVNOauz1P/xAq4l0MBNKXQX0IuIBU5iRz+FXi6w==","signatures":[{"sig":"MEYCIQCHO1jRN/iOaUOZXH1sa2qbfiyTWGp5Nl1jKsZvt+EQFAIhAPu89/b4XMN6qftYZwzpObj2mu3eJlqVdqEmi/AzQxX8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62092},"type":"module","engines":{"node":">=20"},"gitHead":"3a8944ecd8895a5a7299b4458c368869f1898c1b","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.10.0_1785001623798_0.08111654998070184","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@floomhq/signaldash","version":"0.10.1","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.10.1","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"6e10a86193e029c2174a91006d3b16250556dada","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.10.1.tgz","fileCount":12,"integrity":"sha512-laYBoXSfybdnJMgMUPlR4D/5ZohuXLM+mC1GVJAsSu+t+Rqk9UgJJccVyvV2GfuWnf36E715oMt0M0hCBY//mg==","signatures":[{"sig":"MEYCIQDK1CuuyMIwWdlocL79/xUbwQgbrO9x6ZQhuMcicuOwjAIhAKudXqeMpSG9/Kt7vYSaPn6mgESVVScJTo1DNoU91vMF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62102},"type":"module","engines":{"node":">=20"},"gitHead":"3a8944ecd8895a5a7299b4458c368869f1898c1b","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.10.1_1785001658283_0.027420091468604024","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@floomhq/signaldash","version":"0.11.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.11.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"8e3a6ca8a160cef37dd92820ca9d26c694161e7b","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.11.0.tgz","fileCount":12,"integrity":"sha512-q8mhADJYsK2J6XgI+6eIb9lnQphkUg1BaItsYBzdxF6vtIN3GKY41Vvzo3ul18wcqp2Mxy/iReJP/V+04oNCXQ==","signatures":[{"sig":"MEUCIDsBVhlf3kdtC6KZQsOozoCtKfibq0ciuiWznT2YMinRAiEAvmQJWw5DV8d+H1PBzVhYPgmmXX2JKmhM+KKdLp9mXCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66460},"type":"module","engines":{"node":">=20"},"gitHead":"f00abeeaa0b6535401165efe5440d12d87a06c25","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.11.0_1785015442982_0.13590664462053748","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@floomhq/signaldash","version":"0.11.1","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.11.1","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"45ba78dd06086e55685e318eb41af8d33d1e75aa","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.11.1.tgz","fileCount":12,"integrity":"sha512-3gpsOGksDgKP8SEnXbAtaXMWQ96fCQnrwkP5crH1luobNlKOUi1bHnP1XqW0HWXGInvopMLIbVSregJfSZWgHQ==","signatures":[{"sig":"MEUCIQCDSJ+Ai2Wa/IbAS1/aUizRih5781+EzZ5cWWYL5C194AIgX6eG5/+aAiRDAqL05RiMsIK5ff5lb69lbm2ZfC17tSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66838},"type":"module","engines":{"node":">=20"},"gitHead":"f00abeeaa0b6535401165efe5440d12d87a06c25","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.11.1_1785016181140_0.4608144537607397","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@floomhq/signaldash","version":"0.11.2","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.11.2","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"577a1d61de2eba076db502a447ad5c22c1697a7a","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.11.2.tgz","fileCount":12,"integrity":"sha512-ou3V/+INeasfGJpgYY8mRhmU4ZYk9s0gcCn1gci3+ocvlCrIAPn62IOp2346xk9lyqxvDqoDDksMt141xomJOg==","signatures":[{"sig":"MEQCICSuMFNNivCXnCgkXDyjBWf7h7cv3seKj95IfvTUyGdwAiBZWOobNcH/eglP+4P++NwtKaD8C9L4gCC8LAu1xriIhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66838},"type":"module","engines":{"node":">=20"},"gitHead":"fcc1d5bbbb5d21c2b3515b79089ce3b3a33927d7","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.11.2_1785016277935_0.017138927987216723","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@floomhq/signaldash","version":"0.12.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.12.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"410aea70bc592bc4aa8fd1d6368c40f0fb4d3e35","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.12.0.tgz","fileCount":12,"integrity":"sha512-SWhQ8Mr1+1ZDAubn9KpLklRQfYNJ7i2x+y00cDRKgJMN6d8l8YfIvX48mm/8rmU9o/guYtUrj+Y2g+00tsfZ+g==","signatures":[{"sig":"MEQCIG4StjyvHDuq2P5ocpSyu9E6VAawrZy5+XOlFvYf+h9ZAiBvBR1oTWTGvjKQnJNHdj9DsUTtu31wpn+dRG++ECZlQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68400},"type":"module","engines":{"node":">=20"},"gitHead":"fcc1d5bbbb5d21c2b3515b79089ce3b3a33927d7","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn and WhatsApp MCP access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.12.0_1785016813348_0.9613381320482661","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@floomhq/signaldash","version":"0.13.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.13.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"340cc4520d45a1a40c925586076d901bd404a3a3","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.13.0.tgz","fileCount":12,"integrity":"sha512-8/KPWgQnwqpePhfwkkp8N76in4dUsq+0HFGCjFLl4f/5BjkfNeGrlH0dDKBWdGisEKCWtfbbbtBdLWIsVOzzuQ==","signatures":[{"sig":"MEUCIQCsvwVwU5tdad9alQ8yAOeFYlH/oTCKpB1Ym0QGezEsUAIgeZ2vilk5eS4WNWs3XKfgyspgIuqXYYugdd9ozL4L3BM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89127},"type":"module","engines":{"node":">=20"},"gitHead":"fcc1d5bbbb5d21c2b3515b79089ce3b3a33927d7","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.13.0_1785067609592_0.12475311742398532","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@floomhq/signaldash","version":"0.22.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.22.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"b211d3511f887d2e285bb8bc8932054fa2c0a64f","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.22.0.tgz","fileCount":13,"integrity":"sha512-aRJjL6Tt0cMGqGHIRCS2T6vX6aA6wjbPeZH2zjN+jyxv3JW8keABpq/fdxHxqeDzrx6lKIupwTHRlPS3Ra3raw==","signatures":[{"sig":"MEUCIA9ARo0dpMxScb0qIxN+EpP93Fz7paPGfl+5hZO8fe+3AiEAiyCS1Gg8dpGrU/ZszkBC7SgbENqk+dg/+7pjo+OyYVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149413},"type":"module","engines":{"node":">=20"},"gitHead":"30b181be54e4a5ce237d9ddb4a952aef6ab09925","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/write-control.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.22.0_1785412635079_0.43669523273173017","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@floomhq/signaldash","version":"0.27.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.27.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"28ad7228e726d4431cea42a8c3b5ba9a85f6ba06","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.27.0.tgz","fileCount":13,"integrity":"sha512-NKPiGNOqc6Lj6wICXb+u8UHKiQ9I7J5Mot4TJpGt3S7SlaScpa0ygbLhvAKc+ZuiGSvpcbn4wljTFQpx/ZKJxA==","signatures":[{"sig":"MEUCIQDuyMCYSgsl/hc+1V5S9KlYu8pySU6nYlLQghGNtuPOagIgKlOAiuKdvP4tQ0AL+RmmPgPj3VUHJVMr5GHDx2D5caI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220074},"type":"module","engines":{"node":">=20"},"gitHead":"6738817187218bd0861d287fc05e6d5498699471","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"11.18.0","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"26.6.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.27.0_1786209324881_0.1775893658397032","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@floomhq/signaldash","version":"0.28.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.28.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"0653ce83ffeb079f1874a39072e8908dd9246c82","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.28.0.tgz","fileCount":14,"integrity":"sha512-GQ5N1uDJlzDsIAcJD9SM8XJcZhyk21WR4B7O+QdjyrmoGd7NlKeebJiYD9oGOfSbbr+kW/qaFz1buLTTsa/HjA==","signatures":[{"sig":"MEUCIQCIxCYV5QR/x9A83DWv868GZzDdKkONGsakj6yhik9pmgIgYpODoQrAymjJvzLmimk199vAwWydPHNmP9BjUzwPlnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245572},"type":"module","engines":{"node":">=20"},"gitHead":"685b51eb520ec9a51d3528a433b3febb65e9df92","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.28.0_1787235725139_0.836694573623521","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@floomhq/signaldash","version":"0.29.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.29.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"d0722863166161b24a72ab769890877ae086bb91","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.29.0.tgz","fileCount":14,"integrity":"sha512-3RLDl7YYDCribzBorOiWS8sUjKXUSXdxIapW2trPnd6PCBG/FuzRST4ce5BC2e95gxNuF2vt/u0knQ1WQ8zbSw==","signatures":[{"sig":"MEUCIGStk538HXTvBEG/sZg72GgpkXbn03va3FnIPWwlPfC0AiEA/uUyCtL/QlARmuceVUdozdcbZv5FSaJtyT+/f/GCfEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245817},"type":"module","engines":{"node":">=20"},"gitHead":"8e48574a2d4ad44b72fba3d529594ada86a263b3","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.29.0_1787241319122_0.5921067814695407","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"@floomhq/signaldash","version":"0.30.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.30.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"5efeb411dd53eeab37fc600acd57ad592a425bd5","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.30.0.tgz","fileCount":14,"integrity":"sha512-V6YhHovyt+0qj5mDnC6FbEfAM38Zvlmn03eDd/kNgAX8f3b1RO1a1BTliAvr2ey2MQQH58OXtT9tXn0PBbKu/g==","signatures":[{"sig":"MEQCIFWdpukMVi5l6WcUUTm2/tkQKsLJiXN7BEKdbnIOzoIKAiBBga08h0vX7ScHktWhc6n3a6hQ6L7KUdSwByGWI1SlDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247722},"type":"module","engines":{"node":">=20"},"gitHead":"8e48574a2d4ad44b72fba3d529594ada86a263b3","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.30.0_1787249878867_0.7594421116435317","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@floomhq/signaldash","version":"0.31.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.31.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"8ce97fbef2ff10ac703ee70a7fdb20860e057697","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.31.0.tgz","fileCount":14,"integrity":"sha512-I7PZH5rogaejKwRXfdE7Za+6jNDNNw/3fwza2nirv0XasLBd+RZFjEUxZTB+rBKOUMiEo9CNnmUOiLdg7G8Gjw==","signatures":[{"sig":"MEYCIQDS6TPjboYU1012Hh89/oVua0JHA3xauW3wKTr9pW5fyAIhAME3msgm3imlOK4XT5bp0eEWb3L4wi+U9adr+PYWQsgH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247736},"type":"module","engines":{"node":">=20"},"gitHead":"ca1f1226e5cf66fe0b0d3617780599b9aa63e31f","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.31.0_1787261562409_0.33055982041919507","host":"s3://npm-registry-packages-npm-production"}},"0.32.2":{"name":"@floomhq/signaldash","version":"0.32.2","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.32.2","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"f0c2c57249639d4f3dea91bb14760477415ed5ef","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.32.2.tgz","fileCount":15,"integrity":"sha512-jSbN/4qewsvttdyeeqxPV46li3pgS4rMySLVQy0KGsIUH7jFMJGG4ZMBrkXBbnFHoMfDmZubXFvzQ08re04ulg==","signatures":[{"sig":"MEUCICLtighM1s84Z6KD6DPTTHj7hxe8/HsU71xq3FNySNrpAiEAs9ZhBUGbsMDXi2Ug8c3jfYYB32dDRvZilnKRyQLTf/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271567},"type":"module","_from":"file:floomhq-signaldash-0.32.2.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.32.2.tgz","_integrity":"sha512-jSbN/4qewsvttdyeeqxPV46li3pgS4rMySLVQy0KGsIUH7jFMJGG4ZMBrkXBbnFHoMfDmZubXFvzQ08re04ulg==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.32.2_1787657522415_0.9989065227430651","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@floomhq/signaldash","version":"0.33.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.33.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"b1c8c29e2e9c847eb70fb6e9ea4e8d8853ccdd9b","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.33.0.tgz","fileCount":15,"integrity":"sha512-mAfJIcCXTFSW3pqojuORtQFtDcJrQ1bZl9K55UhT6bDCoDfJ40n8Hs4OJ+swVYCRDX484pxWeqgkV+YhLrn71Q==","signatures":[{"sig":"MEUCICPbN5y7hiG9ZymIN9XPZbNylCUH6ABCfAHvxuNyWNhdAiEAtTq4dvvMJ7/0vLpH3i+Rx8vAf6ObaoM6TqiaxmuEP9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273704},"type":"module","_from":"file:floomhq-signaldash-0.33.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.33.0.tgz","_integrity":"sha512-mAfJIcCXTFSW3pqojuORtQFtDcJrQ1bZl9K55UhT6bDCoDfJ40n8Hs4OJ+swVYCRDX484pxWeqgkV+YhLrn71Q==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.33.0_1787683634007_0.022003229487157272","host":"s3://npm-registry-packages-npm-production"}},"0.33.1":{"name":"@floomhq/signaldash","version":"0.33.1","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.33.1","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"4c68aaada61222f3b82b5846613498eda19b82a4","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.33.1.tgz","fileCount":15,"integrity":"sha512-0m/cY3+K97wRGlR3l7hBgwOOi2uisjdRWX3RqBuRKifo+3I02Om5SyG8Lq9Kh0STZ9Ue6XIyvRhISO+pv6+wng==","signatures":[{"sig":"MEQCIAIhy/uWTJoCL/ITwHIPkjJFE8VrdHrOm/MJ0lsS1pYKAiBtRJo31TW6d4unsrGPM74d+q+ksQzgCtpVWaESesSgZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273704},"type":"module","_from":"file:floomhq-signaldash-0.33.1.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.33.1.tgz","_integrity":"sha512-0m/cY3+K97wRGlR3l7hBgwOOi2uisjdRWX3RqBuRKifo+3I02Om5SyG8Lq9Kh0STZ9Ue6XIyvRhISO+pv6+wng==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.33.1_1787684380390_0.0013444602114258686","host":"s3://npm-registry-packages-npm-production"}},"0.33.2":{"name":"@floomhq/signaldash","version":"0.33.2","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.33.2","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"dc0040d74ac5dc4b7bc27b42874b1018545e89b9","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.33.2.tgz","fileCount":15,"integrity":"sha512-mdWS1Vk2qsWnJcJz0FDKK/sYEbses3qlgZNL4jkbHA4Bii6Un87DDB/kAp9YUCdYZ7o0BQjSYlXw5JmoY4aOuQ==","signatures":[{"sig":"MEYCIQCjXYniFargv907q+sHm6Junm0+H1iMsqaNtQT/dKY66wIhAJ+Q0qMn9koBHwuKBeTD1YvstVEYu85MSZ7S0Eo33fI9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273704},"type":"module","_from":"file:floomhq-signaldash-0.33.2.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.33.2.tgz","_integrity":"sha512-mdWS1Vk2qsWnJcJz0FDKK/sYEbses3qlgZNL4jkbHA4Bii6Un87DDB/kAp9YUCdYZ7o0BQjSYlXw5JmoY4aOuQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.33.2_1787685595712_0.7141024578934616","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"@floomhq/signaldash","version":"0.34.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.34.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"842ab2c5785d2419d0564b72ef8e7cdc4db8fcd0","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.34.0.tgz","fileCount":15,"integrity":"sha512-OVk142+qgmJPAtVPBP5ihNmbXGRGERbKSFdoNOO8p0gnIZhIeuIjG27aK9gqm1w/d3k9NFkuq2U/U02mwNxn+g==","signatures":[{"sig":"MEYCIQCjSK/RKgvIL+f8E+6IHINsI7gMmmnRMtjKIavnYnDGmgIhAKPFy6EN8lJby7PaazlDYaNHXySQR4hXM79olr9wRGq+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281338},"type":"module","_from":"file:floomhq-signaldash-0.34.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.34.0.tgz","_integrity":"sha512-OVk142+qgmJPAtVPBP5ihNmbXGRGERbKSFdoNOO8p0gnIZhIeuIjG27aK9gqm1w/d3k9NFkuq2U/U02mwNxn+g==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.34.0_1787697014200_0.5041089047898906","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"@floomhq/signaldash","version":"0.35.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.35.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"4b3c18baee6bda42333b934f91a1b8d397f7aafe","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.35.0.tgz","fileCount":15,"integrity":"sha512-IZZflAM90dIvIAFEO3ax63ly8oCmbKywJXyNkkWKBlnS7ytcIAvZtC2RUZs67VzNJzhKWlASh0dPIr3s778wdA==","signatures":[{"sig":"MEQCICTkw3iJIYCie/3V2NoE8jwxOW/YFP8FPv4RcZl7s1N7AiAhc9SSIbXqRGGhguhhbv7gYcFJBxg3CcWv0iv5CPYgJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284051},"type":"module","_from":"file:floomhq-signaldash-0.35.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.35.0.tgz","_integrity":"sha512-IZZflAM90dIvIAFEO3ax63ly8oCmbKywJXyNkkWKBlnS7ytcIAvZtC2RUZs67VzNJzhKWlASh0dPIr3s778wdA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.35.0_1787699451249_0.20490635093718046","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"@floomhq/signaldash","version":"0.36.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.36.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"67221c6ef9ca781d5809c64ca0fc1c2d1ed3a3d8","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.36.0.tgz","fileCount":15,"integrity":"sha512-2VXQfgNtl7x7w3F6EiNzw//KoglwUJnlAXpTNp7l7XLTuod3qmfMmMu7b5TuGsQVsi0NdK5AE0K1J8mAm0hDzw==","signatures":[{"sig":"MEYCIQDe2mcDr2XGEWRChTwqhT8wLn3IBNi+gws++RlkA/yiGQIhALkHC+LFTWyUmMKQQVAvMGWlj8AWG0cvF/BQV9UMjue3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284932},"type":"module","_from":"file:floomhq-signaldash-0.36.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.36.0.tgz","_integrity":"sha512-2VXQfgNtl7x7w3F6EiNzw//KoglwUJnlAXpTNp7l7XLTuod3qmfMmMu7b5TuGsQVsi0NdK5AE0K1J8mAm0hDzw==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.36.0_1787704195474_0.31068942385608134","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"@floomhq/signaldash","version":"0.37.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.37.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"009f672037bc0c59f9647a5ac23abf996fecf6a0","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.37.0.tgz","fileCount":15,"integrity":"sha512-TbgxEff2Ox7qXz9uD9pDSuvzwI8V8NSv9Xj3/6D+lXaOAThmmTL7i8vdI56Zgd387lyy56EyN39ItsgGTkzdTQ==","signatures":[{"sig":"MEYCIQCwPwzZdu0W5kulk/5cMmAgPpqsCEeFaaQEI6RxD0MVigIhAMt6Vs7S/qksju1WeTDR2JgJHTvq87Mrl8fZYLDmp9OI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288719},"type":"module","_from":"file:floomhq-signaldash-0.37.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.37.0.tgz","_integrity":"sha512-TbgxEff2Ox7qXz9uD9pDSuvzwI8V8NSv9Xj3/6D+lXaOAThmmTL7i8vdI56Zgd387lyy56EyN39ItsgGTkzdTQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.37.0_1787711755474_0.6828001780706825","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"@floomhq/signaldash","version":"0.38.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.38.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"90349ad4ec723f9b20e499dc11afd2a5a170a684","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.38.0.tgz","fileCount":15,"integrity":"sha512-8i6WnR5RfVXGDxsvm1Luju6cp7A7TOk3RbWjil7qKVVLQ9KmL9jrEkEms+DHfJuE8BEOivh9Xx+Y/i+6v0Jfyg==","signatures":[{"sig":"MEUCIQC2OpM/i3Ur/GUshud/kByKuGixBr+x+6tF6nQe9g0mLAIgEMRX7yEy9lu5PB0uxCgiHszLnskVac7ChY0s9rxJ3r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294615},"type":"module","_from":"file:floomhq-signaldash-0.38.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.38.0.tgz","_integrity":"sha512-8i6WnR5RfVXGDxsvm1Luju6cp7A7TOk3RbWjil7qKVVLQ9KmL9jrEkEms+DHfJuE8BEOivh9Xx+Y/i+6v0Jfyg==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.38.0_1787715487817_0.06413569220789839","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"name":"@floomhq/signaldash","version":"0.39.0","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.0","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"60c945bd5ad76f2f7c486610a7d9b2d492e9cb5f","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.0.tgz","fileCount":16,"integrity":"sha512-zzv7aLSDhFpUuXNd1VfP90KY7WUd7rsdZ7y8kLacCi5tS4qW1OW2mS1DcEOlXX1t+CHz6UxWX2NPl3Ac9bOvKQ==","signatures":[{"sig":"MEUCIQCU61Qy/2t4NWFOF8vTd9eVQTQU/Zr6eXXwwjEsW3nxOgIgUIlT/B/yGTireGpJ18o54b264WvOOSRjTeWjxjwnid8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305940},"type":"module","_from":"file:floomhq-signaldash-0.39.0.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.0.tgz","_integrity":"sha512-zzv7aLSDhFpUuXNd1VfP90KY7WUd7rsdZ7y8kLacCi5tS4qW1OW2mS1DcEOlXX1t+CHz6UxWX2NPl3Ac9bOvKQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.0_1787721083736_0.5893861567796117","host":"s3://npm-registry-packages-npm-production"}},"0.39.1":{"name":"@floomhq/signaldash","version":"0.39.1","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.1","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"b47723b37f92aee4db4f5cbed99fe6b791175bd3","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.1.tgz","fileCount":16,"integrity":"sha512-vg/l+SUS6OpSqx6FVyQd3Fb4KDmp1ksh5jC67XIObQxk7PZkApjxT4kYqM3Xl2c2T4wowgrEgddgpkooaI5LXQ==","signatures":[{"sig":"MEQCIB4lmFUG5PWkxOt7pwfsJqPWf0I71fU+S+1fHJev76xhAiAeKtM8bPJpxSPMhdbLxvwh7crssjOx7+OYLZMd5qKA4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325026},"type":"module","_from":"file:floomhq-signaldash-0.39.1.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/tmp/signaldash-publish-039/floomhq-signaldash-0.39.1.tgz","_integrity":"sha512-vg/l+SUS6OpSqx6FVyQd3Fb4KDmp1ksh5jC67XIObQxk7PZkApjxT4kYqM3Xl2c2T4wowgrEgddgpkooaI5LXQ==","_npmVersion":"10.9.4","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.1_1787882623884_0.5130713056423968","host":"s3://npm-registry-packages-npm-production"}},"0.39.2":{"name":"@floomhq/signaldash","version":"0.39.2","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.2","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"10b2e5856967cf34ebdbc4f411565c8047f47f1c","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.2.tgz","fileCount":16,"integrity":"sha512-lHdf3m7FWR6Zj71tOA1CI+tHlrWllTQgl1PdRhk84jX3XZN3zmJl9tJ0bv1JlavUqh9gzNMxhnqLM1Nn1qiItw==","signatures":[{"sig":"MEQCIH4FahvF4KQt0g3MfPDfqflwOumRHWj1a6lhj0/jygVnAiAiTLOyyqvQ7fsxoSGB6H1hmOBAcd59x5E9LMB4Z/IuLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":326580},"type":"module","_from":"file:floomhq-signaldash-0.39.2.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.2.tgz","_integrity":"sha512-lHdf3m7FWR6Zj71tOA1CI+tHlrWllTQgl1PdRhk84jX3XZN3zmJl9tJ0bv1JlavUqh9gzNMxhnqLM1Nn1qiItw==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.2_1787939762219_0.3309408596378789","host":"s3://npm-registry-packages-npm-production"}},"0.39.3":{"name":"@floomhq/signaldash","version":"0.39.3","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.3","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"8638cd02f0b11b674de801ffe11343918a2b4344","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.3.tgz","fileCount":16,"integrity":"sha512-qkHZaiX7ic56t1FeyXJuS8MtBZc3QEBXM1YxqCLqoGHJb+F4L4jQUy15a3jRd5i5bTizsljU8rUrCx3X+IYOuA==","signatures":[{"sig":"MEUCIFKQHwhgEc/x3p9ZRSLTvyfHrfxnP/LAad35BkNT/J3dAiEAv+lU8q2S7R2pg2almGAflSrtNkPXS7mhz/HK3zu4j6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331085},"type":"module","_from":"file:floomhq-signaldash-0.39.3.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.3.tgz","_integrity":"sha512-qkHZaiX7ic56t1FeyXJuS8MtBZc3QEBXM1YxqCLqoGHJb+F4L4jQUy15a3jRd5i5bTizsljU8rUrCx3X+IYOuA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.3_1787967144799_0.9520600703908955","host":"s3://npm-registry-packages-npm-production"}},"0.39.4":{"name":"@floomhq/signaldash","version":"0.39.4","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.4","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"357c5ad07d04b08651d6a4c9dce67150b14ab686","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.4.tgz","fileCount":16,"integrity":"sha512-YmvKtcINeFyEhGaEkM+j/vpVRXNbK6Vt8+j4ZlLrIKeT/rZ+Msu+ZvU8OFFqsPbLb8F3MRz7P6U6xCtuDMmL5A==","signatures":[{"sig":"MEQCIF7fDo4mSiIu339oFfB9KWjYAvur532OdCsvxQz7NkHpAiAvYBaSkLODCW3Ba0sUsXQaN3YsdZ2FLDydUN+rqACbFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331460},"type":"module","_from":"file:floomhq-signaldash-0.39.4.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.4.tgz","_integrity":"sha512-YmvKtcINeFyEhGaEkM+j/vpVRXNbK6Vt8+j4ZlLrIKeT/rZ+Msu+ZvU8OFFqsPbLb8F3MRz7P6U6xCtuDMmL5A==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.4_1787968536413_0.9382880309539687","host":"s3://npm-registry-packages-npm-production"}},"0.39.5":{"name":"@floomhq/signaldash","version":"0.39.5","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.5","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"a8485acda4b51804d586aea95d07e0e8164dd991","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.5.tgz","fileCount":16,"integrity":"sha512-fkdTpcEfEMkBp2Migfcf4/F8xTzy8CYtIQxk5fwE6X9UhXzCW0PplhMJzbqSQFdmc6Ul9kjfwhbnx9VfKn3eZg==","signatures":[{"sig":"MEYCIQDjqxJ5e54szwl75/D7xlwQ47gYnckd4CNRJpWAIHytWQIhAOMzZO5OIkchemqiPlAXe7nHpbIFnP4RJh2LpMJLqX7H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331635},"type":"module","_from":"file:floomhq-signaldash-0.39.5.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.5.tgz","_integrity":"sha512-fkdTpcEfEMkBp2Migfcf4/F8xTzy8CYtIQxk5fwE6X9UhXzCW0PplhMJzbqSQFdmc6Ul9kjfwhbnx9VfKn3eZg==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.5_1787969993843_0.1133229745149722","host":"s3://npm-registry-packages-npm-production"}},"0.39.6":{"name":"@floomhq/signaldash","version":"0.39.6","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.6","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"bb35730582fba2251c3f18360f0bcd8033cdd028","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.6.tgz","fileCount":16,"integrity":"sha512-zNwGk3VN6MciNKTvks4e937tkMKawFjafBg+RJzP3n4GuHosWYtO+5d7UWLB8uZ1b9XF96Z8N/nZewC0ZDnZGQ==","signatures":[{"sig":"MEUCIBYMYBguAjgsmXirPW3TiIPfoli+RuCmwDPtVEqMnjEUAiEAlZOZs11cXTjbb8d+e2gG4Zxyt3kXNTGrYMLqbVZbbdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331977},"type":"module","_from":"file:floomhq-signaldash-0.39.6.tgz","engines":{"node":">=20"},"gitHead":"2dfc5630f191b2a81d801b855fd1986e0cbb6605","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.6.tgz","_integrity":"sha512-zNwGk3VN6MciNKTvks4e937tkMKawFjafBg+RJzP3n4GuHosWYtO+5d7UWLB8uZ1b9XF96Z8N/nZewC0ZDnZGQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.6_1787979612532_0.42916589272020356","host":"s3://npm-registry-packages-npm-production"}},"0.39.7":{"name":"@floomhq/signaldash","version":"0.39.7","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.7","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"6f01066fcdb3ae64ca2c132d484c7a858cd58ef9","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.7.tgz","fileCount":16,"integrity":"sha512-e79wvcMWOgK/GjTYlBsibAiT7lrb4uGHuVvN/R21WuVOndJXBzTW9ky8czwjyQtdEpsTa6Slp6RaMLvQ94QjhQ==","signatures":[{"sig":"MEUCIQDGCQkI5Of1LXmrQGxdJP8JKlhy61hOh/ja1ALXaPE49QIgQl4J4otsBt8QPn/gNQwi9JkI0cggxxCfgOqJ91mOVjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":333275},"type":"module","_from":"file:floomhq-signaldash-0.39.7.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.7.tgz","_integrity":"sha512-e79wvcMWOgK/GjTYlBsibAiT7lrb4uGHuVvN/R21WuVOndJXBzTW9ky8czwjyQtdEpsTa6Slp6RaMLvQ94QjhQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.7_1788314564222_0.22025640332758112","host":"s3://npm-registry-packages-npm-production"}},"0.39.9":{"name":"@floomhq/signaldash","version":"0.39.9","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.9","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"33d9bd1ef2d317f8e65be8dc8d014aef671f48a3","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.9.tgz","fileCount":16,"integrity":"sha512-Z5IjJzVPceI7SDeblNl5nidH5JPjxu99OPpEoJ4s9DHVgvfn6q1AfG697neDC39mtSbeyhcZI3f/Gk/5BiHfhA==","signatures":[{"sig":"MEYCIQDVZ6vnJF/sAvJBOnhYKdIyw3aXqGh19PSGjrQOfujx0gIhANrTbYv7B157efj+1SZ4R84PI/AtDmMD9/PywXDIxDPj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352427},"type":"module","_from":"file:floomhq-signaldash-0.39.9.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.9.tgz","_integrity":"sha512-Z5IjJzVPceI7SDeblNl5nidH5JPjxu99OPpEoJ4s9DHVgvfn6q1AfG697neDC39mtSbeyhcZI3f/Gk/5BiHfhA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.9_1788378722752_0.21314438338607378","host":"s3://npm-registry-packages-npm-production"}},"0.39.10":{"name":"@floomhq/signaldash","version":"0.39.10","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.10","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"87a5df70ef94d6dcd441130a7fb3b830af208c78","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.10.tgz","fileCount":16,"integrity":"sha512-gG7mB87NGsQ1LkuMQXQClCMj0gL8222ta8CSv5JQvLa624RP+dP5opBqMhLzk2Fe5USkfocpdxQYfQBEGhFPIw==","signatures":[{"sig":"MEUCIHvzM0ZrAm+3Frk0Ji6LPCDx/2o3187DojOklLZWUibuAiEAvzYlGqUZcEkJDnK05E/49lTiMrIjczV/KrQrtAJeOSk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353209},"type":"module","_from":"file:floomhq-signaldash-0.39.10.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.10.tgz","_integrity":"sha512-gG7mB87NGsQ1LkuMQXQClCMj0gL8222ta8CSv5JQvLa624RP+dP5opBqMhLzk2Fe5USkfocpdxQYfQBEGhFPIw==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.10_1788383068313_0.10774395002130333","host":"s3://npm-registry-packages-npm-production"}},"0.39.11":{"name":"@floomhq/signaldash","version":"0.39.11","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.11","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"a0ec8e625b342d736dce953084e73ac98c6bd871","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.11.tgz","fileCount":16,"integrity":"sha512-lZyvxJ+BEl1v8uhUP4S18RHaL083c80vBQCs87bgkpYzZ9ZtRqaF2fHJpn9xWl+grho5nD/bboOVO2pMvO+wxA==","signatures":[{"sig":"MEQCIHxyc77i+r8Takc2E3OuK2jFC81u7DvL9IfSUgFsvkFNAiAzHdw2JBktyk/O+YpepZC57bvoDIVlMoz71rB64Yp+SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353956},"type":"module","_from":"file:floomhq-signaldash-0.39.11.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.11.tgz","_integrity":"sha512-lZyvxJ+BEl1v8uhUP4S18RHaL083c80vBQCs87bgkpYzZ9ZtRqaF2fHJpn9xWl+grho5nD/bboOVO2pMvO+wxA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.11_1788387267043_0.46418759740991167","host":"s3://npm-registry-packages-npm-production"}},"0.39.12":{"name":"@floomhq/signaldash","version":"0.39.12","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.12","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"57396504f1affdcdd20ba9a1e86d8140060598d2","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.12.tgz","fileCount":16,"integrity":"sha512-C4ZvKZSrvWy3qX/dS2VNy0+VHQhvnauiPM8CubT2AWqZhIjTerQdbt82+O1U9BiBEqY5g9m798BfCRfGvXmv7Q==","signatures":[{"sig":"MEUCIQDJ5o+BeEuU4AyTCZjokYD9nsnrK6ND7fUQhKJgyxl0KQIgWxXzzmRQE3vnqxdtT2qMkB9AnekKdLR7B8hy1aW4Llw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353956},"type":"module","_from":"file:floomhq-signaldash-0.39.12.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.12.tgz","_integrity":"sha512-C4ZvKZSrvWy3qX/dS2VNy0+VHQhvnauiPM8CubT2AWqZhIjTerQdbt82+O1U9BiBEqY5g9m798BfCRfGvXmv7Q==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.12_1788391677263_0.5041251745259774","host":"s3://npm-registry-packages-npm-production"}},"0.39.13":{"name":"@floomhq/signaldash","version":"0.39.13","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.13","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"3cb287430556ea14f831e03c0268490bf76656db","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.13.tgz","fileCount":16,"integrity":"sha512-7hyubhAi7as3dm0b3lcVhjuLpnxZWBARviW6VgN7pAHIVs1Gi6lZmhwrAb6IPeMKPJdW8Qo0Tz1YRsnKolxavw==","signatures":[{"sig":"MEQCIG2o4RGgQQyEZmt/kBXUAioPC51RmBIKtI2kz8OTjYpbAiBxIYTHMHDN3+huS+yiAfx2s5ABrHpcUycPKfNSDSMwaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354118},"type":"module","_from":"file:floomhq-signaldash-0.39.13.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.13.tgz","_integrity":"sha512-7hyubhAi7as3dm0b3lcVhjuLpnxZWBARviW6VgN7pAHIVs1Gi6lZmhwrAb6IPeMKPJdW8Qo0Tz1YRsnKolxavw==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.13_1788394297422_0.7010175567519095","host":"s3://npm-registry-packages-npm-production"}},"0.39.14":{"name":"@floomhq/signaldash","version":"0.39.14","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.14","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"f3d983d1fff6de1f9272ff393025959c5e75ac3f","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.14.tgz","fileCount":16,"integrity":"sha512-UWdwrKlAKd5VW/nXRnRT2OGox5HIrfTNmnxFv4/OqVveWqV30+ZQp38agBWn/bwiWzh5Fwz2VfT3EKsK69cHfQ==","signatures":[{"sig":"MEYCIQDXkYuKLQPurhohfaYjs2tom/qCGVXGKBF3RxvNY1k19QIhAOPQkK8x/V3ckaQu1JrdVwt0iWDUuYBpbnY10ERIKxd6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354599},"type":"module","_from":"file:floomhq-signaldash-0.39.14.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.14.tgz","_integrity":"sha512-UWdwrKlAKd5VW/nXRnRT2OGox5HIrfTNmnxFv4/OqVveWqV30+ZQp38agBWn/bwiWzh5Fwz2VfT3EKsK69cHfQ==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.14_1788396886544_0.006789024568152557","host":"s3://npm-registry-packages-npm-production"}},"0.39.17":{"name":"@floomhq/signaldash","version":"0.39.17","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.17","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"e4feacd66335fb7e5ac3658febcd10304ed78cf3","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.17.tgz","fileCount":16,"integrity":"sha512-baE44dqXJ0NDhJR6TqDEA3GH+YPHejqT/DeDh2KRp7onUqnE6OYr76FZ+rtCwTfewaPb6Hlv2G14n/ZctnpqLA==","signatures":[{"sig":"MEYCIQCskd+hSMWrHU76UaOHaEu3uI0xJ/kr3qZhtiGAly7O1wIhAPePJd6vSoXj/2s/YtCeeX6gFRFHFW3Gi2w8pqB8agGw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357327},"type":"module","_from":"file:floomhq-signaldash-0.39.17.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/draft-rewrite-worker.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.17.tgz","_integrity":"sha512-baE44dqXJ0NDhJR6TqDEA3GH+YPHejqT/DeDh2KRp7onUqnE6OYr76FZ+rtCwTfewaPb6Hlv2G14n/ZctnpqLA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.17_1788506758604_0.05160756887757212","host":"s3://npm-registry-packages-npm-production"}},"0.39.18":{"name":"@floomhq/signaldash","version":"0.39.18","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","_id":"@floomhq/signaldash@0.39.18","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"bin":{"signaldash":"bin/sd.mjs"},"dist":{"shasum":"942ca9cc37c4a12d34c59f53eb3d319bfa8ea2bb","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.18.tgz","fileCount":16,"integrity":"sha512-Z36U22Vj/JTAJaVkNADOui3eawUJphseBGbXA5qEUD+UnP2qr/zVyo0AGCjTB1nI+sea6QFZu1e7vbhkm6hFkA==","signatures":[{"sig":"MEYCIQDPX+AYGqwRNerD5eTneVdLV1sufMHal72+ryJ6w5hv4gIhAI00brK+PRbBgLKVCVDnOjkuVUo/L2n7s4Ixs+DnaIfZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358582},"type":"module","_from":"file:floomhq-signaldash-0.39.18.tgz","engines":{"node":">=20"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/draft-rewrite-worker.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.18.tgz","_integrity":"sha512-Z36U22Vj/JTAJaVkNADOui3eawUJphseBGbXA5qEUD+UnP2qr/zVyo0AGCjTB1nI+sea6QFZu1e7vbhkm6hFkA==","_npmVersion":"12.0.2","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ora":"8.0.1","open":"10.1.0","chalk":"5.3.0","prompts":"2.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/signaldash_0.39.18_1788511210658_0.3416741949811657","host":"s3://npm-registry-packages-npm-production"}},"0.39.19":{"name":"@floomhq/signaldash","version":"0.39.19","description":"Secure LinkedIn, WhatsApp, and email access for AI agents","type":"module","bin":{"signaldash":"bin/sd.mjs"},"engines":{"node":">=20"},"scripts":{"test":"node --test","check":"node --check bin/sd.mjs && node --check server/server.cjs && node --check server/content-pipeline.cjs && node --check server/buffer-calendar.cjs && node --check server/composio-email.cjs && node --check server/attachments.cjs && node --check server/write-control.cjs && node --check server/secretary-store.cjs && node --check server/secretary-collector.cjs && node --check server/secretary-latest.cjs && node --check server/secretary-approvals.cjs && node --check server/secretary-push.cjs && node --check server/secretary-rules.cjs && node --check server/secretary-shadow-gate.cjs && node --check server/secretary-vault-importer.cjs && node --check server/secretary-inspiration.cjs && node --check server/linkedin-archive-importer.cjs && node --check server/voice-profile.cjs && node --check server/campaign-store.cjs && node --check server/campaign-runner.cjs && node --check server/withdrawal-store.cjs && node --check server/post-scheduler.cjs && node --check server/draft-rewrite-worker.cjs && node --check server/message-scheduler.cjs && node --check scripts/import-linkedin-archive.mjs && node --check scripts/import-secretary-vault-snapshot.mjs && node --check scripts/rebuild-secretary-actors.mjs && node --check scripts/extract-conversation-inspiration.mjs && node --check scripts/render-content-board.mjs && node --check bin/signaldash.js && node --check lib/cli.js && node --check lib/config-file.js && node --check lib/mcp.js && node --check lib/rate-guard.js && node --check lib/secrets.js && node --check lib/unipile.js"},"keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"license":"MIT","dependencies":{"chalk":"5.3.0","prompts":"2.4.2","ora":"8.0.1","open":"10.1.0"},"gitHead":"7daab979163a5159b99804e659a8bce24224caf0","_id":"@floomhq/signaldash@0.39.19","_integrity":"sha512-CCzawgyXoNkeCm12igHXCgNPe88g0RCcIZ3pqVfyM91ch61V2YgIjbnjBKP6eBeGy+BtizdpPj8qAxd3oDf/iw==","_resolved":"/opt/actions-runner/signaldash/_work/signaldash/signaldash/floomhq-signaldash-0.39.19.tgz","_from":"file:floomhq-signaldash-0.39.19.tgz","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-CCzawgyXoNkeCm12igHXCgNPe88g0RCcIZ3pqVfyM91ch61V2YgIjbnjBKP6eBeGy+BtizdpPj8qAxd3oDf/iw==","shasum":"1dfb87b1c3d58d447b5589359443ef2aee062570","tarball":"https://registry.npmjs.org/@floomhq/signaldash/-/signaldash-0.39.19.tgz","fileCount":16,"unpackedSize":361159,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDE0iIbXo9lVMyvP+HTQntTva86IRuAnobmDCmCkxTI6gIhAORcmwP0EZbIcH5pEifVM1Eixt6c/wBKJeeTeAZTmlgR"}]},"_npmUser":{"name":"federicodeponte","email":"depontefede@gmail.com"},"directories":{},"maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signaldash_0.39.19_1788743932943_0.3381051534218513"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T08:59:31.235Z","modified":"2026-09-07T01:18:53.285Z","0.1.0":"2026-07-25T08:59:31.640Z","0.2.0":"2026-07-25T13:34:55.701Z","0.3.0":"2026-07-25T13:45:21.460Z","0.4.0":"2026-07-25T13:48:32.858Z","0.5.0":"2026-07-25T14:35:17.127Z","0.6.0":"2026-07-25T14:51:03.805Z","0.7.0":"2026-07-25T15:05:53.370Z","0.8.0":"2026-07-25T15:09:21.051Z","0.9.0":"2026-07-25T15:43:54.282Z","0.10.0":"2026-07-25T17:47:03.966Z","0.10.1":"2026-07-25T17:47:38.445Z","0.11.0":"2026-07-25T21:37:23.123Z","0.11.1":"2026-07-25T21:49:41.273Z","0.11.2":"2026-07-25T21:51:18.061Z","0.12.0":"2026-07-25T22:00:13.491Z","0.13.0":"2026-07-26T12:06:49.722Z","0.22.0":"2026-07-30T11:57:15.213Z","0.27.0":"2026-08-08T17:15:25.054Z","0.28.0":"2026-08-20T14:22:05.283Z","0.29.0":"2026-08-20T15:55:19.287Z","0.30.0":"2026-08-20T18:17:59.042Z","0.31.0":"2026-08-20T21:32:42.589Z","0.32.2":"2026-08-25T11:32:02.549Z","0.33.0":"2026-08-25T18:47:14.197Z","0.33.1":"2026-08-25T18:59:40.559Z","0.33.2":"2026-08-25T19:19:55.910Z","0.34.0":"2026-08-25T22:30:14.367Z","0.35.0":"2026-08-25T23:10:51.424Z","0.36.0":"2026-08-26T00:29:55.620Z","0.37.0":"2026-08-26T02:35:55.653Z","0.38.0":"2026-08-26T03:38:07.987Z","0.39.0":"2026-08-26T05:11:23.946Z","0.39.1":"2026-08-28T02:03:44.036Z","0.39.2":"2026-08-28T17:56:02.399Z","0.39.3":"2026-08-29T01:32:24.972Z","0.39.4":"2026-08-29T01:55:36.568Z","0.39.5":"2026-08-29T02:19:54.013Z","0.39.6":"2026-08-29T05:00:12.925Z","0.39.7":"2026-09-02T02:02:44.390Z","0.39.9":"2026-09-02T19:52:02.939Z","0.39.10":"2026-09-02T21:04:28.454Z","0.39.11":"2026-09-02T22:14:27.222Z","0.39.12":"2026-09-02T23:27:57.415Z","0.39.13":"2026-09-03T00:11:37.608Z","0.39.14":"2026-09-03T00:54:46.707Z","0.39.17":"2026-09-04T07:25:58.752Z","0.39.18":"2026-09-04T08:40:10.826Z","0.39.19":"2026-09-07T01:18:53.086Z"},"license":"MIT","keywords":["mcp","linkedin","whatsapp","unipile","ai-agent"],"description":"Secure LinkedIn, WhatsApp, and email access for AI agents","maintainers":[{"name":"vbsrao1","email":"vbellala@asu.edu"},{"name":"federicodeponte","email":"depontefede@gmail.com"}],"readme":"# SignalDash\n\nSecure LinkedIn, WhatsApp, and email access for AI agents.\n\n`@floomhq/signaldash` connects your accounts through the hosted SignalDash\nservice and exposes account-scoped MCP tools. The CLI never receives or stores\nthe server's Unipile access key.\n\n## Quickstart\n\nYou need Node.js 20 or newer and a single-use SignalDash invite code. Ask the\nSignalDash administrator for an invite code, then run:\n\n```bash\nnpx -y @floomhq/signaldash <invite-code>\n```\n\nThis agent-first setup logs in, installs the bundled operating skill, registers\nthe MCP server with Claude Code when available, and prints hosted-auth links for\nthe human to complete. The equivalent manual sequence is:\n\n```bash\nnpx -y @floomhq/signaldash login <invite-code>\nnpx -y @floomhq/signaldash connect linkedin\nnpx -y @floomhq/signaldash connect whatsapp\nnpx -y @floomhq/signaldash connect email\n```\n\nEach connect command prints a short-lived hosted-auth URL and waits for the\nconnection to finish. Open the LinkedIn URL and sign in, or open the WhatsApp\nURL and scan the live QR code. The email link offers Google, Outlook, and IMAP\nwhen those providers are enabled on the Unipile account. The CLI prints\n`Connected <provider>` when the account is ready.\n\nWhen the CLI runs without a TTY, it requests a session-bound browser handoff\ninstead. `POST /connect/<provider>/handoff` returns a short-lived `/c/<token>`\nlink on `https://signaldash.dev` for the human to open; only the token hash is persisted, and requesting a\nnew link for the same provider invalidates the previous one. The default\n15-minute account-connection lifetime can be configured with\n`SIGNALDASH_CONNECT_HANDOFF_TTL_MS`. Opening the link creates no SignalDash\nsession and binds the completed provider account only to the bearer session\nthat requested it.\n\nThe invite code is single-use. Login stores a SignalDash user token in\n`~/.signaldash/config.json`; the Unipile access key remains on the SignalDash\nserver. Set `SIGNALDASH_HOME` to keep the local config in another directory.\nSessions expire after 90 days by default. Run `npx -y @floomhq/signaldash logout`\nto revoke the current session and remove its local token.\n\nIf automatic account detection times out, the CLI prints the manual claim\ncommand for the provider:\n\n```bash\nnpx -y @floomhq/signaldash connect linkedin claim <account_id>\n```\n\n## Add SignalDash to your agent\n\n### Claude Code\n\nPaste this command into a terminal:\n\n```bash\nclaude mcp add signaldash -s user -- npx -y @floomhq/signaldash mcp\n```\n\n### Cursor\n\nCreate or update `.cursor/mcp.json` in the project. Merge the `signaldash`\nentry into an existing `mcpServers` object when the file already contains\nother servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"signaldash\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@floomhq/signaldash\", \"mcp\"]\n    }\n  }\n}\n```\n\nBoth registrations start the same stdio server:\n\n```bash\nnpx -y @floomhq/signaldash mcp\n```\n\nThe MCP server uses the user token created by `login`. It cannot access a\nLinkedIn, WhatsApp, or email account until that channel has been connected for\nthe same logged-in user.\n\n## Without an MCP client\n\nIf the agent session cannot load the MCP tools (server connected, tools not\nin the roster) the CLI reaches the exact same tool catalog through the exact\nsame backend routes and guards, no MCP transport required:\n\n```bash\nnpx -y @floomhq/signaldash tools                          # full catalog: name, description, inputSchema\nnpx -y @floomhq/signaldash call li_list_chats '{\"limit\":5}'  # dispatch one tool directly\n```\n\n`call` prints one JSON line to stdout and exits `0` on an HTTP 2xx, `1`\notherwise (including local argument validation failures, which never reach\nthe backend). It is not a fallback that skips anything: it is the same\ndispatcher the MCP `tools/call` handler uses, so the write-control ledger,\nper-account budgets, read-before-send, pacing, provider-warning lock, and\naudit trail all run identically.\n\n## Operating skill distribution\n\nThe canonical [`signaldash` skill](skills/signaldash/SKILL.md) teaches an agent\nwhen to use SignalDash, how to persist the skill, complete setup, interpret\nconnection state, operate every tool, handle server guards, and run safe worked\nflows. The thin [`secretary` skill](skills/secretary/SKILL.md) renders the\nstored `latest` result as one table and has no write authority. The one-command\nsetup installs both from the same pinned npm package\nthe human chose to execute:\n\n```bash\nnpx -y @floomhq/signaldash@0.39.19 <invite-code>\n```\n\nRun that command in a terminal, not in an agent chat. Do not ask an agent to\nfetch a remote `SKILL.md` and install it as trusted instructions. The public\n`https://signaldash.dev/SKILL.md` endpoint remains available for transparent\nhuman review only.\n\nOther clients can install the reviewed bundled file from the package into their\ndocumented skill directory and reload skill discovery. The narrower\n[`signaldash-safe-usage` skill](skills/signaldash-safe-usage/SKILL.md) remains\navailable for clients that separate operating and send-safety instructions.\n\n## MCP tools\n\nSignalDash exposes:\n\n- `sd_version()`\n- `sd_secretary_latest(limit?, continuation?, ack_token?)`\n- `sd_secretary_push_set(enabled, confirm)`\n- `sd_inspiration_list(limit?, status?, content_kind?)`\n- `sd_inspiration_status(id, status, resulting_post_urn?, confirm)`\n- `sd_inspiration_import(source, source_author?, federico_note?, purpose?, content_kind?, credit_required?, credit_note?, format_description?)`\n- `sd_inspiration_channel_configure(chat_id, provider_id, chat_name, confirm)`\n- `sd_inspiration_channel_set(capture_enabled, confirm)`\n- `sd_secretary_approve(disposition_id, payload_hash, confirm)`\n- `sd_secretary_reject(disposition_id, confirm)`\n- `li_list_chats`\n- `li_read_messages(chat_id)`\n- `li_mark_read(chat_id)`\n- `li_start_chat(member_ids, text, confirm?, approval_hash?, dry_run?)`\n- `li_send_message(chat_id?, text?, expected_watermark?, mark_read?, secretary_receipt_id?)`\n- `li_send_invitation(provider_id, note?, confirm?)`\n- `li_invitations_received(limit?, cursor?)`\n- `li_accept_invitation(invitation_id, confirm)`\n- `li_invitations_sent(limit?, cursor?)`\n- `li_withdraw_invitation(invitation_id, confirm)`\n- `sd_contact_state(channel, identifiers, action?, reason?, confirm?)`\n- `sd_budget_status()`\n- `sd_settings_get()`\n- `sd_settings_set(auto_accept_linkedin, auto_accept_linkedin_filters?, confirm)`\n- `sd_auto_accept_status()`\n- `sd_voice_profile(channel, force_recompute?)`\n- `li_search_connections(query, filters?, limit?)`\n- `li_discover_people(query, filters?, limit?, confirm?)`\n- `li_create_invitation_batch(source_label, time_zone, targets)`\n- `li_get_invitation_batch(batch_id)`\n- `li_cancel_invitation_batch(batch_id, approval_view_hash, confirm)`\n- `sd_campaign_create(source_label, time_zone, messages?, target_source?, targets?, engagers?, invite_ttl_days?)`\n- `sd_campaign_preview(campaign_id)`\n- `sd_campaign_approve(campaign_id, confirm_token)`\n- `sd_campaign_status(campaign_id)`\n- `sd_campaign_cancel(campaign_id, approval_view_hash, confirm)`\n- `sd_withdrawal_batch_create(account, exclude, time_zone, older_than_days?, limit?, source_label?, allow_unmatched_exclusions?)`\n- `sd_withdrawal_batch_status(withdrawal_batch_id)`\n- `sd_withdrawal_batch_approve(withdrawal_batch_id, confirm_token)`\n- `sd_withdrawal_batch_cancel(withdrawal_batch_id, approval_view_hash, confirm)`\n- `wa_list_chats`\n- `wa_read_messages(chat_id)`\n- `wa_mark_read(chat_id)`\n- `wa_get_attachment(chat_id, message_id, attachment_id)`\n- `wa_transcribe_voice(chat_id, message_id, attachment_id)`\n- `wa_start_chat(member_ids, text, confirm?, approval_hash?, dry_run?)`\n- `wa_send_message(chat_id, text?, attachments?, expected_watermark?, mark_read?)`\n- `wa_delete_message(chat_id, message_id)`\n- `wa_delete_messages(messages)`\n- `email_list(limit)`\n- `email_read(thread_id, limit)`\n- `email_send(to, subject, body)`\n- `li_my_posts(limit, member_id)`\n- `li_post_reactions(post_id, limit, cursor?)`\n- `li_post_comments(post_id, comment_id?, resolve_reply_state?, limit, cursor?)`\n- `li_reply_to_comment(post_id?, parent_comment_id?, trigger_comment_id?, text?, mentions?, expected_watermark?, secretary_receipt_id?)`\n- `li_like_comment(post_id, parent_comment_id, comment_id, expected_watermark?)`\n- `li_delete_message(chat_id, message_id, confirm)`\n- `li_delete_comment(post_id, comment_id, confirm)`\n- `li_draft_post(text, publish, scheduled_at?, content_pipeline_id?, content_pipeline_override?, mentions?, attachments?, first_comment?)`\n- `li_set_scheduled_post_first_comment(id, first_comment, confirm)`\n- `li_save_post_draft(text, mentions?, attachments?, first_comment?, source_key?, metadata?)`\n- `li_post_drafts()`\n- `li_update_post_draft(id, text, expected_version, mentions?, attachments?, first_comment?)`\n- `li_delete_post_draft(id, expected_version, confirm)`\n- `li_post_draft_preview(id)`\n- `li_scheduled_posts()`\n- `li_scheduled_post_preview(id)`\n- `li_scheduled_post_attachment(id, index)`\n- `li_edit_scheduled_post(id, text, scheduled_at, mentions?, attachments?, first_comment?, confirm?, approval_hash?, expected_version?, expected_updated_at?)`\n- `li_cancel_scheduled_post(id, confirm)`\n- `sd_schedule_message(channel, chat_id, text, scheduled_at, confirm)`\n- `sd_scheduled_messages(state?, channel?)`\n- `sd_cancel_scheduled_message(id, confirm)`\n\nEvery operation runs through the hosted SignalDash backend. Agents never\nreceive the Unipile access key.\n\nWhen a user's content pipeline is enabled, a future post normally requires its\nexact approved `content_pipeline_id`. A deliberate exception uses\n`content_pipeline_override:{reason}` on the preview call, then repeats the\nidentical post, time, mentions, image bytes, first comment, and reason with\n`confirm:true` plus the returned single-use `approval_hash`. The override never\ndisables the pipeline. Its reason, preview identity, and approval time are\nstored atomically with the scheduled post and returned by\n`li_scheduled_posts`. Override-approved payloads are immutable; their first\ncomment cannot be changed after scheduling.\n\n`li_start_chat` and `wa_start_chat` are separate tools because LinkedIn and\nWhatsApp expose different stable member-ID formats and spend different budget\nlanes. Both use the same safety contract. A first call previews 1 to 10 exact\nmember IDs and the exact first message. A confirmed call requires the\npayload-bound approval hash, resolves every member live, rejects protected or\nsuppressed contacts, and checks attendee-scoped provider evidence for an exact\nexisting member set. An existing match is returned without creating a chat or\nsending the text. A new chat costs one action, independent of member count,\nbecause the provider performs one irreversible conversation-and-message write.\nSuccess requires readback of exactly one matching chat and exactly one own first\nmessage. `dry_run:true` repeats the live preflight and stops before the provider\nwrite, without consuming approval or budget. Database capability flags\n`linkedin_chat_start` and `whatsapp_chat_start` disable the paths immediately.\nWhen WhatsApp resolves an `@lid` alias to a canonical member ID, the first\npreview returns `member_alias_requires_exact_id` and `resolved_member_id`.\nPreview again with that exact ID before approval. SignalDash never substitutes\nan unapproved member identity inside a confirmed write.\n\nThe inspiration library also extracts LinkedIn post references already stored\ninside conversation `signals`. This path scans SQLite only and makes zero\nLinkedIn or Unipile calls. Feed URLs and post slugs become canonical activity\nURNs; `lnkd.in` is contacted with redirects disabled, and the redirect location\nis parsed without requesting `linkedin.com`. An unresolved short link remains\nan `offen` library row with its raw URL. `conversation_sources` preserves each\nsharing signal, thread, time, direction, and exact or unresolved sharer identity\neven when several signals deduplicate to one library URN. The dedicated database\nflag can disable extraction without a deployment.\n\nThe hourly Secretary push reuses the existing LinkedIn collector cycle and\nadds no second inbox poll. It sends only when a new tracked-thread reply,\nown-post comment or reaction, or approval-ready draft was stored after push was\nenabled. No change means no WhatsApp provider call and no notification. Every\npush resolves the exact configured Secretary group from the connected account\nand live chat list, reads before sending, and requires an exact one-message\nreadback. `sd_secretary_push_set` is the database kill switch; enabling starts\nfrom that instant so old rows do not create a backlog. The self-chat is never a\nfallback.\n\nA top-level `li_post_comments` page reports each comment's `reply_counter` but\nno reply objects, which left \"did I already answer this?\" unanswerable and kept\nthe comment loop switched off. `resolve_reply_state:true` reads each comment's\nreply thread and attaches a `reply_state`. Presence and absence are proved to\ndifferent standards on purpose. Seeing an own reply proves `replied_by_me:true`\nwhatever the page's completeness, because presence on an incomplete page is\nstill presence. `replied_by_me:false` is emitted only when the reply set is\nprovably whole, every reply carries a resolvable `author_details.id`, ids are\nunique, every reply belongs to this thread, and no reply is the account\nowner's. Two proofs are accepted: the provider reporting the reply page\ncomplete, or a zero `reply_counter` together with a reply read that came back\nempty, which is the same pair the reply preflight already requires.\n`replies_read === reply_counter` is deliberately NOT a proof; both numbers are\nreturned so a caller can see the corroboration, but SignalDash will not convert\nit into a boolean, because a wrong `false` makes an agent talk over the account\nowner in public. Everything else is `replied_by_me:null` with an explicit\nreason. The flag is off by default and unresolved comments still carry\n`reply_state.state = \"unknown\"`, so a miss is never mistaken for a proven\nabsence. Resolution is bounded per request by\n`SIGNALDASH_REPLY_STATE_MAX_READS` (default 25); that bound is not a daily read\ncap and does not claim to be one. A provider warning, 403 or 429 stops the\nsweep at once and the whole call returns non-2xx carrying the partial evidence,\nso a safety condition is never downgraded into a 200.\n\n`li_reply_to_comment` acts only on an inbound comment on the authenticated\nsender's own post. A preceding `li_post_comments` read records an exact\nper-comment watermark. Immediately before the write, SignalDash re-proves the\npost owner, sender generation, trigger author, unchanged trigger, parent\nthread, absence of an own duplicate, action budget and sender health. A\nprovider 2xx remains `outcome_unknown` until bounded readback finds exactly one\nown reply with the returned reply ID, expected parent and exact text.\n\nLinkedIn deletion is remediation after exposure, not rollback. It never\nrelaxes a send or Secretary gate. `li_delete_message` is limited to the first\n60 minutes after the provider send timestamp and proves exact account, chat,\nmessage and own authorship before using a separate remediation budget. It\nmarks success only after a readback proves the message absent. The v2\n`li_delete_comment` wrapper is installed behind the database capability flag\n`linkedin_comment_delete`, whose migration default is `untested`. It is not an\navailable live capability until an exact removable comment on Federico's own\npost passes compatibility testing and the flag is separately enabled.\n\nA WhatsApp message can carry files. `wa_send_message` takes up to 4 exact\n`{filename, content_type, content_base64}` attachments, at most 16 MiB per file\nand 16 MiB per message, and accepts PNG, JPEG, WebP, GIF, PDF, CSV, plain text,\nJSON, xlsx and zip. `text` is the caption and may be omitted when a file is\nattached, but a call carrying neither text nor an attachment is refused rather\nthan sent as an empty message. There is no attachment lane: a send with a file\nruns the same ownership check, the same read-before-send guard, the same\nduplicate guard and the same daily budget as a text send, and is recorded the\nsame way. Files are validated before anything is reserved, so a malformed or\noversized attachment costs no send budget and never reaches the provider, and\nevery refusal names the exact rule and the exact file that tripped it. Nothing\nis ever truncated or dropped silently. LinkedIn messages carry text only, and\n`li_send_message` refuses an `attachments` argument instead of ignoring it.\nFor a Secretary draft, `sd_secretary_approve` creates one 15-minute receipt\nbound to the exact stored sender generation, recipient, thread, and text.\n`li_send_message` then accepts that receipt ID alone, derives the payload from\nstorage, refuses caller-supplied overrides, and consumes the receipt atomically\nwith the action reservation. Rejection records a new human disposition and\nsends nothing.\n\nA recent read is no longer sufficient on its own. A message send re-reads the\nthread immediately before sending. A counterparty message or a mutation after\nthe read refuses with `409 thread_changed`; an addition consisting only of this\naccount's own outbound messages does not invalidate the draft. The 409 includes\n`new_messages`, `changed_kind`, and `current_watermark`, and both send tools\naccept optional `expected_watermark` to bind a retry to the exact state the\ncaller reviewed. A 30-minute read window is satisfied just as comfortably by a\nconversation that moved 29 minutes ago as by one nobody has touched, and a\nreply that arrived in between is precisely when a draft stops being the right\nthing to send. A chat whose most recent read predates this guard carries no hash\nand is refused with `428 read_before_send_required` until it is read again,\nrather than waved through on a timestamp that cannot answer the question. If the\nre-read itself fails, the send is refused with\n`502 thread_preflight_unavailable`: whether the thread changed is then unknown,\nand unknown is not permission. All three refusals happen before anything is\nreserved, so none of them costs send budget.\n\nA provider answer this process cannot read counts as a re-read that failed, not\nas an empty conversation. Only the two documented list envelopes are hashed;\nanything else yields no hash at all, so a read that hits a drifted shape records\nno authorization (the next send is refused at `428`) and a re-read that hits one\nrefuses at `502` rather than being compared. That distinction is the whole\nguard: hashing an unrecognised answer to the hash of an empty thread would let a\nread and a re-read that had both seen nothing agree with each other and satisfy\nthe requirement that a human looked at the conversation.\n\nA send is not idempotent, so an unconfirmed one is not silently retryable. If\nthe provider times out, fails with a 5xx, or answers 2xx with a body that will\nnot parse, the message may well have been delivered: SignalDash records the\nattempt before the request leaves and refuses an identical retry with\n`409 send_outcome_unknown`. Read the chat again, and only if the message is\ngenuinely absent, resend the identical payload with `confirm_resend:true`. That\nre-read is enforced rather than merely instructed: a resend whose most recent\nread of the chat predates the failed attempt is refused with\n`428 reread_after_failed_send_required`, since a read taken beforehand cannot\nshow whether the message arrived. Time does not\nclear that record, because waiting does not turn a delivered message into an\nundelivered one; only the caller confirming what the thread actually shows\ndoes. A provider that answers with a 4xx refused the message outright, so that\nrecord is cleared and the send stays retryable. Two 4xx answers are excepted,\nas a judgement call rather than on documented provider semantics: `408` and\n`429` can both arrive after a message was already accepted and forwarded, so\nthey are treated as unknown outcomes too.\nOverride the ceilings with `SIGNALDASH_MESSAGE_ATTACHMENT_MAX_BYTES` and\n`SIGNALDASH_MESSAGE_ATTACHMENT_MAX_TOTAL_BYTES`; raising either also needs\n`SIGNALDASH_MESSAGE_SEND_MAX_BODY_BYTES` raised to match, because base64 costs a\nthird on top of the bytes and a body over that cap is refused with\n`413 request_too_large` before it is parsed.\n\nFuture LinkedIn posts are persisted by the backend only after the exact text,\noffset-qualified publish time, mentions, image attachments, and optional first\ncomment have human approval. The stored image bytes and comment text cannot\ndrift after approval. The scheduler publishes the comment through the same\nconnected LinkedIn account immediately after the post. It persists the post ID\nbefore attempting the comment, so a comment failure never republishes the post.\nThe scheduler\nuses the same sender binding, action ledger, duplicate guard, daily budget, and\nprovider-warning lock as immediate publishing. An interrupted or ambiguous\nexecution fails closed and is never retried automatically.\n\nArbitrary saved LinkedIn drafts use a separate durable store and never enter\nthe scheduling or publishing worker. `li_save_post_draft` stores exact text,\nup to 25 mentions, up to 20 ordered images, and an optional first comment.\nEach image is limited to 5 MiB and one draft to 12 MiB; each tenant is limited\nto 1,000 drafts and 100 MiB of decoded attachment bytes. Ordinary duplicate\ndrafts remain distinct records. Imports may instead supply a tenant-scoped\n`source_key`: an identical replay returns the existing draft, while a replay\nwith different content is refused. Bounded structured `metadata` preserves the\nsource, title, storyline, readiness, hold gates, editorial notes, visual notes,\nand revision without placing those fields in the publishable post text. List\nresponses expose image metadata rather than base64.\n`li_update_post_draft` is a complete compare-and-swap replacement: pass the\ncurrent `expected_version`, and omission clears optional mentions, images, or\nfirst comment. `li_delete_post_draft` requires the current version and\n`confirm:true`. None of these operations calls LinkedIn, Unipile, Buffer, or an\naction-budget lane.\n\n`li_post_draft_preview` returns a one-use\n`https://signaldash.dev/d/<token>` link for one exact saved draft. POSTing its\nconfirmation creates a review-duration cookie restricted to `/drafts`; the page and\nits `/drafts/:id/attachments/:index` media route remain bound to that tenant,\ndraft, and originating live SignalDash session. Media is served byte-for-byte\nwith `private, no-store`, MIME allowlisting, `nosniff`, and a restrictive CSP.\nThe shared calendar displays unscheduled SignalDash and Buffer drafts with the\nsame cards as scheduled posts, marked by a visible `DRAFT` tag and an\n`Unscheduled` time label. Saved SignalDash media uses separate protected\n`/calendar/drafts/...` URLs. Each saved SignalDash draft also exposes an\nauthenticated edit-and-feedback form. Its CSRF token is bound to the live\ncalendar review session, draft UUID, and current version. Copy edits,\nfeedback, and up to four private feedback images use one atomic\ncompare-and-swap. Inline saves keep the active filter and scroll position;\nthe server-rendered fallback returns to the same card. Uploaded images are\nstored as private review evidence and served only through the tenant-scoped\ncalendar session. A reviewer can explicitly replace the current post images\nwith the same uploads; without that choice, the post media remains unchanged.\nReviews preserve the first comment and append bounded editorial metadata.\nSaving non-empty feedback or reference-only feedback images also creates one durable,\ntenant- and draft-version-bound\nCodex rewrite job in the same SQLite transaction. A separate\n`signaldash-draft-rewrite.service` worker leases those jobs with bounded retries\nand timeouts. It runs Codex ephemerally with user configuration, repository\nrules, shell, apps, browser, and web search disabled; the child receives only a\nsanitized environment and a private temporary directory containing the output\nschema and that review's images. Structured output can update only the draft\ntext and editorial revision state. A newer human edit supersedes stale model\noutput. An explicit image replacement without feedback keeps the copy unchanged,\nwhile notes, feedback images, mentions, post attachments, first comment,\nhold gates, and source metadata remain unchanged after the review transaction.\nCards show `queued`,\n`rewriting`, `ready`, `failed`, or `superseded`; no rewrite approves, schedules,\npublishes, or calls a social provider. Each SignalDash draft card\nalso names its exact version and the next verified free 08:00 UTC publishing\nslot. `Approve & schedule` re-reads the complete SignalDash and Buffer calendar,\nthen atomically creates the scheduled post, preserves its copy, mentions,\nordered images, and first comment, records the approval, and removes the source\ndraft. Stale versions, reused approvals, foreign sessions, incomplete Buffer\nreads, and newly occupied days fail closed without calling a provider.\nDrafts never enter the `items` returned by\n`li_scheduled_posts`, preserving its existing calendar contract.\n\nOn AX41, install the tracked worker unit without loading `sd.env`. The worker\nruns as `federicodeponte`. Its privileged `ExecStartPre` grants that account\nwrite access only to the SQLite database and current WAL/SHM, adds write/search\nwithout directory listing, and retains the sticky bit so it cannot replace\nroot-owned files. No default ACL is used; the API environment/state files stay\ninaccessible via the unit's `InaccessiblePaths` even if a legacy deployment\nhas broader mode bits.\nThe exact-release deployment overrides `ExecStart` to the merged release path,\nthen verifies `systemd-analyze security`, the service log, and `/sd_version`.\nCodex login is maintained in `/home/federicodeponte/.codex`; deployment enables\nthe worker only after a real ephemeral read-only Codex sentinel succeeds.\n\n`li_scheduled_posts` is the shared planning read across posts stored by\nSignalDash and the configured Buffer LinkedIn channel. Every item names its\nsource, and the response reports independent completeness for SignalDash,\nBuffer, and native LinkedIn. Unipile has no documented endpoint for posts or\ndrafts scheduled natively in LinkedIn, so that source is always explicit as\n`unavailable`. SignalDash does not call undocumented Voyager routes or automate\nlinkedin.com to fill the gap. An empty item list therefore means only that the\nvisible SignalDash and Buffer sources are empty, never that the native LinkedIn\ncalendar is empty.\n\nThe read-only calendar page renders each stored SignalDash image through a\ncalendar-session-protected, tenant-scoped media route. Buffer image assets and\nvideo or document thumbnails use a separate authenticated proxy that accepts\nonly the provider's validated HTTPS media hosts and never exposes a provider\nURL in browser HTML. Calendar media is no-store and becomes unavailable when\nthe session expires or the originating user is revoked.\n\n`li_scheduled_post_preview` returns a single-use browser handoff\nfor one exact active SignalDash post owned by the authenticated user. The page\nshows only that post, including its stored image attachments. Preview sessions\nand media routes remain account- and post-scoped, expire independently, and\nare revoked on logout. New exact-post links use\n`https://signaldash.dev/p/<token>` and calendar links use\n`https://signaldash.dev/c/<token>`. Each new compact token is 8 base64url\ncharacters generated from 6 random bytes. Calendar, scheduled-post preview,\nand draft-preview handoffs default to a 60-minute unopened-link and browser-session\nlifetime. Pass `review_ttl_hours:24` to any of the four review-link tools for an\nexact 24-hour handoff and resulting session. Only `1` and `24` are accepted;\nthe persistence boundary caps both at 24 hours. The default remains configurable\nwith `SIGNALDASH_CALENDAR_HANDOFF_TTL_MS`. Their 48 bits of entropy\nare bounded by one-use consumption and a durable five-attempt\nper-client throttle. Already-issued 24-character compact tokens and 48-character\n`/scheduled-post/h/<token>` or `/calendar/h/<token>` links remain valid until\ntheir normal expiry.\n\n`li_scheduled_post_attachment` is the agent-side path to the same stored bytes\nthe preview page renders, without a browser session: it returns one attachment\nof one active post as `content_base64` with its `filename` and its stored\n`content_type` verbatim. It is scoped by the same `data_ref` and the same\ndraft/scheduled/executing filter as `li_scheduled_post_preview`, so a cancelled\nor published post, a foreign post, and a missing index are one indistinguishable\n404. The bytes are deliberately not part of the preview response, which reports\nonly `attachment_count`, because one image is easily hundreds of kilobytes of\nbase64 and the preview is usually read for the text and the time.\n\nThe shared calendar preserves validated Buffer LinkedIn tag ranges and URLs in\nthe post body and also keeps the separate tag audit pills. Valid provider\nannotations render as clickable LinkedIn links in both places. SignalDash\nmentions derive inline ranges only when the named occurrence is unique, and\nderive a LinkedIn company link only from a validated numeric provider ID.\nAmbiguous names or unsafe URLs remain plain text. Buffer image assets and\nvideo/document thumbnails render through the same authenticated, no-store\nmedia surface as SignalDash attachments; provider asset URLs are never placed\nin the browser HTML.\n\n`li_edit_scheduled_post` replaces one complete scheduled-post payload in place.\nThe preview call takes the exact UUID, text, offset-qualified time, mentions,\nimage bytes, and optional first comment. Confirmation repeats that identical\npayload with the single-use approval hash and exact source version and\n`updated_at`. One atomic compare-and-swap preserves the UUID, `created_at`,\nprovider account, and content-pipeline audit fields. A changed, executing,\npublished, cancelled, failed, foreign, expired, or replayed target is refused,\nand the edit path never contacts LinkedIn or Unipile. Omitting `mentions`,\n`attachments`, or `first_comment` in the replacement clears that field.\nScheduled-post duplicate identity covers the complete normalized payload:\ntext, time, mentions, exact attachment bytes, and first comment. Only active\n`scheduled` or `executing` rows participate, so a cancelled, published, or\nfailed historical row never blocks a legitimate new schedule.\n\n`sd_schedule_message` puts one exact message into one exact chat at one exact\ntime, on WhatsApp or LinkedIn, text only. It enqueues; it never sends. The\nattachment bytes a WhatsApp send accepts are refused here rather than held on\ndisk for days. The worker sends,\nthrough `sendWhatsAppMessage` and through the LinkedIn preflight and write path,\nso a scheduled message clears every guard a live send clears, including the\ndaily budget and the duplicate guard, at the moment it fires rather than at the\nmoment it was written. Scheduling is refused with\n`428 read_before_send_required` unless this session has already read that exact\nchat, at `limit` 10 or more on LinkedIn, because the row has to carry a hash of\nthe conversation it was written against. That hash is read from the recorded\nread and cannot be supplied by the caller: `watermark` and `item_limit` are\nrefused by name rather than accepted and overwritten, since a caller that\nbelieves it set them believes something false. At fire time the worker re-reads\nthe thread and compares. Anything other than \"unchanged\" parks the row in\n`needs_review` with a reason and sends nothing, because a conversation that\nmoved is a question for a human and not a failure of the message.\n`sd_scheduled_messages` lists the caller's own rows with those reasons, and\ncounts the `needs_review` ones outside whatever filter was asked for, so a\nfiltered listing cannot hide a message waiting on a person.\n`sd_cancel_scheduled_message` cancels a row that has not fired.\nA row belonging to another account is refused in exactly the same words as an id\nthat never existed, so the refusal cannot be used to prove somebody else's\nmessage is real. A row that already sent is refused with the plain statement\nthat cancelling cannot unsend it.\n\nA campaign is one connection request per approved person, then the approved\nmessage once a fresh profile read proves that person accepted, then an optional\nfollow-up that stops the moment they reply. A pending invitation that merely\ndisappeared is never treated as an acceptance. Campaign writes consume the same\nper-sender daily budget as manual sends, obey the Monday-Friday 09:00-17:00\nsender-local window and the 90-180 second pacing interval, and cannot start\nwithout a human approval recorded on the authenticated approval page. An agent\ncan present that page and carry back the one-time code it mints, but can never\napprove on its own.\n\nA withdrawal sweep clears a backlog of old pending SENT invitations. It uses the\nsame object as an invitation batch with the arrow reversed: freeze the exact\ninvitation ids now, one human approval bound to the rendered view, then one\nwithdrawal per tick. Two things it will never claim, because both contradict\nLinkedIn's own documentation: withdrawing does **not** lift an active sending\nrestriction, so this buys no sending capacity; and after withdrawing, that\nmember cannot be re-invited for up to three weeks. The exclusion list is a\nrequired field rather than an option, so protecting nobody is a deliberate\nchoice and not a default. LinkedIn exposes invitation age as a bucket (\"sent 4\nmonths ago\"), never a date, so the filter selects only when the whole bucket\nclears the threshold and the review page reports what that conservatism held\nback. The sweep runs on its own daily allowance and never consumes the send\nbudget, and any 403, 429, provider warning, or account status change stops it\nentirely.\n\nLinkedIn invitation auto-accept is off for every user until that user\nexplicitly enables it with `confirm:true`. The optional filters are an exact\npublic-identifier allowlist and description-keyword matches; when both groups\nare configured, both must match. The single backend worker reads one bounded\nreceived-invitation page, accepts at most five invitations per run and ten per\nUTC day by default, jitters every action, and also consumes the invitation\ndaily lane and aggregate LinkedIn brake. Three consecutive parse or provider\nerrors disable the setting. `sd_auto_accept_status` exposes accepted counts\ntoday and this week,\nfailed attempts today, remaining capacity, the stop reason, and sanitized\nrecords for invitations whose provider shape could not be parsed. Both the current nested\n`specifics.shared_secret` and legacy top-level shape are supported; secrets are\nnever returned or logged.\n\n`li_search_connections` is the zero-cost, zero-provider-risk list-building\npath. It searches only the authenticated user's stored connection snapshot by\nname, headline, or company, supports company/headline-keyword/date filters, and\njoins exact local contact state. It never calls LinkedIn, Unipile, or a paid\ndiscovery API. When no snapshot exists, it points to the paced sync below\nwithout starting provider work.\n\n`li_discover_people` is the capped paid fallback for people beyond a completed\nstored network. SignalDash runs the same role/company intent against the local\nsnapshot first and returns local matches without spending. With no local\nmatches, the first call returns an exact paid preview. An identical\n`confirm:true` call can make one serialized HarvestAPI profile-search request.\nThat reservation consumes the preview atomically, so every later paid request\nrequires a fresh preview and approval.\nDurable per-user pacing, per-user and tenant request caps, and a tenant-wide\nmicro-dollar cap are reserved atomically before the request. Hidden cards,\nmalformed identities, exact stored connections, and exact contact-state rows\nalready marked connected are excluded. Results are read-only planning evidence\nand cannot become invitation-batch targets automatically.\n\nInvitation batches are the narrow executable campaign boundary. An agent turns\nthe human's request into 1–10 exact canonical LinkedIn Classic profile URLs,\ninclusion reasons, and optional notes, then creates an immutable durable\npreview. The agent can inspect or cancel the batch but cannot approve it. A\nhuman opens the returned absolute review URL, reauthenticates with the SignalDash\ninvite credential, selects unchecked eligible targets, and approves the exact\nstored payload for up to 24 hours. Five failed credential attempts block that\nbatch's authentication surface for 15 minutes. The single backend worker\nrechecks sender binding, exact identity, contact state, prior actions, chats,\ninvitations, daily/weekly budgets, weekday work window, pacing, and the tenant\nbreaker before each at-most-once write. A tenant provider-authentication\nfailure opens the persisted breaker immediately; an open breaker rejects new\nbatches and stops queued preview work before provider reads.\n\nThis is not a general campaign engine. It has no pause/resume, priority,\nfuture start, recurring schedule, acceptance polling, automatic message,\nfollow-up, discovery-to-send bridge, or runtime target/text generation.\n\nThe CLI also provides a paced, resumable LinkedIn connections export:\n\n```bash\nnpx -y @floomhq/signaldash connections linkedin-connections.csv\n```\n\n## Safety limits\n\nSignalDash enforces daily write caps. The operating skill adds the human\nworkflow around that runtime control:\n\n- Every successful LinkedIn write includes aggregate `rate_limit` data and its\n  applicable `lane_rate_limit` when classified. `rate_limit.limit`, `used`,\n  `remaining`, and `resets_at` retain their stable response shape. A lane\n  refusal returns HTTP\n  429 with an exact invitation, message, or engagement code and\n  `rate_limit_lane`; the aggregate brake retains\n  `code: \"rate_limit_exceeded\"`. Every 429 includes `Retry-After`.\n  Counters are persisted server-side and reset at midnight UTC.\n- LinkedIn uses three per-sender lanes: 20 invitation actions, 30 messages in\n  existing threads, and 50 replies or reactions on own posts per UTC day by\n  default. Publishing and first comments count with own-post engagement. A\n  separate aggregate cap of 75 is the emergency brake across the lanes. Sent\n  invitations retain the unchanged 100-attempt UTC-week policy.\n- WhatsApp and email sends together, and message deletes, retain their own\n  independent budgets. A `429` names\n  the cap it hit; it is never a statement about another lane. Two caveats worth\n  knowing: on the day a deployment first upgrades past the lane split, that\n  day's existing count is still read on the LinkedIn side (it is ambiguous, and\n  the conservative reading is the safe one) and clears at the next UTC midnight;\n  LinkedIn, WhatsApp/email, and delete ledgers are keyed to the stable logical\n  user or sender rather than multiplied by live bearer sessions.\n- Read the exact thread before every send.\n- Preview an exact invitation target and note before sending it.\n- List the exact received or sent invitation before accepting or withdrawing it.\n- Email sends accept one recipient at a time and require a recent\n  `email_read` containing that address.\n- Never infer a recipient from a partial name.\n- Never send a duplicate or retry an ambiguous timeout without re-reading.\n- Invitation auto-accept remains off until explicitly enabled, consumes both\n  its dedicated daily cap, the invitation lane, and the aggregate LinkedIn\n  brake, and disables\n  itself after three consecutive parse or provider errors.\n- Do not parallelize sends or work around a rate limit.\n- Do not bypass paid-discovery previews, pacing, request caps, or cost caps.\n- Stop on a provider warning, checkpoint, restriction, HTTP 403, or HTTP 429.\n- Avoid bulk profile reads, copied message bursts, cold-account automation,\n  and unsolicited WhatsApp messaging.\n\nLinkedIn invitation writes are single-object actions. SignalDash serializes\nthem with other LinkedIn writes, requires an exact preview or list read,\napplies the invitation daily lane and aggregate brake, and enforces a separate\n100-attempt weekly policy by default. For a new invitation, jitter completes before the final\npreflight and action reservation; that preflight verifies relationship state,\npending invitations in both directions, and absence of an existing one-to-one\nchat. Provider timeouts become non-retryable `outcome_unknown` locks.\n\nThe first campaign time boundary is intentionally narrower than scheduled\nmessaging. Campaign invitations require a valid sender IANA timezone, run only\nMonday through Friday from 09:00 to 17:00 sender-local time, and reserve a new\n90–180 second per-sender pacing interval atomically with every attempted\naction. Timing is checked before final provider preflight and again during the\nwrite reservation. Downtime never creates a catch-up burst. A campaign can be\nconnect-only or carry an exact human-approved acceptance-triggered sequence.\nUser-selected future start dates and recurring schedules are not exposed.\n\nDeleting a WhatsApp message is a write, and an irreversible one, so it is\ntreated as such. SignalDash proves the chat belongs to the connected account,\nproves the message sits in that exact chat, and proves the account wrote it,\nbefore anything is removed; someone else's message is refused with `403\nmessage_not_own`. Every attempt is appended to that user's own durable audit\ntrail with the chat, the message, the outcome and the timestamp, including the\nattempts that fail and the ones whose outcome the network left unknown. A\ndelete already recorded for the same chat and message is refused with `409\nduplicate_delete` rather than replayed. Deletes spend a separate daily budget\n(`SIGNALDASH_DAILY_DELETE_LIMIT`, default 200) so a cleanup can never consume\nthe sending capacity it exists to repair. `wa_delete_messages` runs at most 200\nentries strictly one at a time, pauses `SIGNALDASH_WA_DELETE_PACE_MS` between\nthem, and stops at `SIGNALDASH_WA_DELETE_BATCH_DEADLINE_MS`, returning the\nuntouched remainder as `skipped` with `code: batch_deadline` so the caller can\nresume exactly those. WhatsApp applies its own time and role limits to deleting\nfor everyone and can answer successfully without removing anything. SignalDash\ntherefore re-reads the canonical provider message and returns success only when\n`deleted: 1` or a genuine `404` proves it gone. A present row or failed\nreadback returns `502 deleted_unconfirmed`, records an unknown outcome, and is\nnot retryable.\n\n## Deploying server changes\n\nA server change is not landed when only the files on disk changed. After the\nchange is merged to `main`, update the production checkout, restart the\nlong-running backend, and compare the live MCP result with the checked-out\ncommit:\n\n```bash\ngit pull --ff-only origin main\ngit rev-parse HEAD\nsudo systemctl restart signaldash-api.service\nsudo systemctl is-active signaldash-api.service\n```\n\nThen call `sd_version({})` from an authenticated MCP session. Its `commit_sha`\nmust equal `git rev-parse HEAD`, and its `process_started_at` must be later than\nthe restart. The startup journal contains the same snapshot under the\n`[signaldash] startup` prefix. A mismatch means the deployment is stale and the\nserver change is not shipped. `dirty_at_start` includes tracked changes,\nuntracked files, and submodule state present when the process started.\n\n`SIGNALDASH_VERSION_ENABLED=0` removes the version route at runtime after a\nservice restart. It defaults to enabled and exposes no credential, account, or\nmessage data.\n\n## Releasing\n\nA release is a tag push. `.github/workflows/release.yml` runs `./release.sh` on\nthe AX41 self-hosted runner, and that script is the same one a laptop runs, so\nthere is no second code path to keep honest:\n\n```bash\ngit tag v0.28.0 && git push origin v0.28.0\n```\n\n`release.sh` refuses to publish if the packed files have uncommitted changes or\nif the version in `package.json` is already on the registry, then runs the\nsyntax check, the tests, `npm pack`, and the prepublish smoke gate against the\ntarball it just built. That gate installs the tarball into a scratch HOME and\ndrives the real CLI, so a package that unpacks but cannot run never ships. Any\nother branch or a `workflow_dispatch` run does all of that and stops one command\nshort, at `./release.sh --dry-run`.\n\n**The credential is the `NPM_TOKEN` secret**, an npm granular access token\nscoped to `@floomhq/signaldash` with write access:\n\n```bash\ngh secret set NPM_TOKEN -R floomhq/signaldash\n```\n\nTrusted publishing (OIDC) is not an option here, so do not spend time on it:\nnpm does not accept self-hosted runners yet, and this repo is on a self-hosted\nrunner because GitHub-hosted minutes are unavailable. The workflow asks the\nregistry directly on every run (`scripts/oidc-check.mjs`) and prints the answer,\nbecause npm's own OIDC helper is written never to throw and turns a refusal into\nan ordinary auth error.\n\nTo exercise the publish itself without touching npmjs, run it against a\nthrowaway registry:\n\n```bash\nscripts/publish-rehearsal.sh\n```\n\nThat starts verdaccio in a container, mints an account on it, and runs the real\n`./release.sh` with no `--dry-run`, then prints what the registry received. It\nis the only way to test the publish command and the tarball a client actually\ndownloads before a version number is spent.\n\n## Development\n\n```bash\nnpm test\nnpm run check\nnpm pack --dry-run\n```\n\n### Offline LinkedIn archive import\n\nThe server-side importer reads LinkedIn export directories or ZIP files without\nmaking provider requests. Preview the exact file fingerprints and row counts,\nthen apply the same archive to one bound LinkedIn sender generation:\n\n```bash\nnode scripts/import-linkedin-archive.mjs \\\n  --archive /path/to/Complete_LinkedInDataExport \\\n  --database server/sd-state-control.sqlite3 \\\n  --sender-account <exact-sender-account-id> \\\n  --owner-profile-url https://www.linkedin.com/in/<exact-owner-public-id>/ \\\n  --dry-run\n\nnode scripts/import-linkedin-archive.mjs \\\n  --archive /path/to/Complete_LinkedInDataExport \\\n  --database server/sd-state-control.sqlite3 \\\n  --sender-account <exact-sender-account-id> \\\n  --owner-profile-url https://www.linkedin.com/in/<exact-owner-public-id>/ \\\n  --apply\n```\n\nThe owner profile URL is required when `messages.csv` is present. It is the\ntyped identity used to classify inbound and outbound rows. A display name is\nnever used for that decision.\n\n`wa_transcribe_voice` runs on the SignalDash host and has two backends. The\ndefault, `gemini`, sends the audio to Vertex AI using that host's own\ncredentials; it is the one that survives German speech with English technical\nterms mixed into it, and being network-bound it does not compete with the\ngateway for CPU. The fallback, `whisper`, needs `python3` with `faster-whisper`\ninstalled on the host and runs the `small` CPU int8 model, which is much weaker\non that kind of code-switching. Every response therefore names the engine that\nproduced the text in `backend`, and a `gemini` request that had to fall back\nalso explains why in `fallback_reason`.\n\nPick the engine per request with the optional `backend` argument (`gemini` or\n`whisper`), or set the default with `SIGNALDASH_TRANSCRIBE_BACKEND`. Override\nthe rest with `SIGNALDASH_TRANSCRIBE_PYTHON`, `SIGNALDASH_TRANSCRIBE_MODEL`\n(local model), `SIGNALDASH_TRANSCRIBE_GEMINI_MODEL`,\n`SIGNALDASH_TRANSCRIBE_GEMINI_PROJECT`,\n`SIGNALDASH_TRANSCRIBE_GEMINI_LOCATION`,\n`SIGNALDASH_TRANSCRIBE_GEMINI_TIMEOUT_S` (total budget for the Vertex call\nincluding retries, default 240s, and it has to stay under\n`SIGNALDASH_TRANSCRIBE_TIMEOUT_MS`, default 420000, so the local fallback still\nfits underneath), `SIGNALDASH_TRANSCRIBE_GEMINI_MAX_BYTES`,\n`SIGNALDASH_TRANSCRIBE_GEMINI_MAX_OUTPUT_TOKENS`, or\n`SIGNALDASH_ATTACHMENT_MAX_BYTES`.\n\nThe Gemini backend authenticates with the credentials already on the host: the\naudio never leaves it with a SignalDash key attached, and the transcriber\nresolves those credentials itself, in the child process, from the file named by\n`SIGNALDASH_TRANSCRIBE_AWS_ENV_FILE`. The gateway process forwards only\nconfiguration, never a secret. That backend reports `language` as `null`: it is\nasked for the transcript text and nothing else.\n","readmeFilename":"README.md"}