{"_id":"@dudousxd/adonis-telescope","_rev":"7-47083faae9314d98cb355ff154ab5a75","name":"@dudousxd/adonis-telescope","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@dudousxd/adonis-telescope","version":"0.1.0","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.1.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"6445973f4b605362d0f82cb0baf775bc3a55d3da","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.1.0.tgz","fileCount":64,"integrity":"sha512-eetY7r54vupodYC1TzNTo0icPUZD88rBa4965m3wltZ03SuFFrpNmTZ8jk7McxqbDtyyJZxGBey8h8MrsvQW+g==","signatures":[{"sig":"MEYCIQDP5iOVW8ZJOlfzeLAKOBsnGewupIRtMt4do1hwAvy6DAIhALX3/5vVpzmNX8mL5x+n4/zyR1fPIPMx5BmZAUaWzha3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243354},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"scripts":{"build":"tsc && node scripts/copy_assets.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~5.9.2","@types/node":"^24.0.0","@adonisjs/core":"7.3.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.1.0_1780759785265_0.27405629459555314","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dudousxd/adonis-telescope","version":"0.2.0","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.2.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"13caa6c9f229c275d0a45a624561243e562297ae","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.2.0.tgz","fileCount":68,"integrity":"sha512-QAvuZINnRD6g/ons5nlctUDUpNUSSIaq6vpM1F/HL0220ikB/ye1sEHhbzX5FYkJDR0E0KqVQSruQTBRnCXdjQ==","signatures":[{"sig":"MEQCIAORHDCXt26bM5J61A8zBQxa7eL4jA5MsHFhXH4V+CXjAiBhTvnqEMAwWl7vWP3hXFG+1lttwlQ8HrLdEwIVsEaPeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262077},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"gitHead":"1b7e8da4af8a613f55beb31b0abfebf8998667d3","scripts":{"build":"tsc && node scripts/copy_assets.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~5.9.2","@types/node":"^24.0.0","@adonisjs/core":"7.3.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.2.0_1780760297891_0.11255856229787709","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dudousxd/adonis-telescope","version":"0.3.0","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.3.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"f56eb4bd7704319f405cb12ba94c636a9e185ac2","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.3.0.tgz","fileCount":88,"integrity":"sha512-q5frKWEjTJHdiizPMOIOZdO8F1GP2n0/+xOKiGwT96ZUwVCu1S6GcjsG5Ls3oO0EQ9Sxcriv6yjze2D4Z+T2Ag==","signatures":[{"sig":"MEYCIQCr6lrwzvfbcj+ehwRex4kHYzRxllNtOt6vzV26tefhMAIhAKI/d6Bz/MrggSbYW8whCugib4MGL42Lvhf3SiCSauEU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345964},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"gitHead":"1b7e8da4af8a613f55beb31b0abfebf8998667d3","scripts":{"test":"node build/bin/test.js","build":"tsc && node scripts/copy_assets.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~5.9.2","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^4.5.0","ioredis-mock":"^8.13.1","@adonisjs/core":"7.3.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.3.0_1780765369896_0.023422877858117808","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dudousxd/adonis-telescope","version":"0.4.0","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.4.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"4ad26752038204828e5f2c3854c771949426e701","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.4.0.tgz","fileCount":93,"integrity":"sha512-Csvca/CHV5pSonvaowBomPGE54sA2AW9SBwqA9AGETmBjxBgkdeNYFFO0G0PFdAa5ilpPuEQtBZMFMuxhQzxUg==","signatures":[{"sig":"MEYCIQDSbHtwNykCEYWQr0+aVR3S+Ucw3S6cqNek0o8qYPqc9QIhAKD4k5kCXS1ORtCgrufw3YOPxg/SVyHtARHBTUR0V3MC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619310},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"gitHead":"f5a7216d6b7a91e7157dc50d2050bc3f2545f611","scripts":{"test":"node build/bin/test.js","build":"tsc && node scripts/copy_assets.mjs && pnpm --filter ui build && node scripts/copy_ui_dist.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~5.9.2","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^4.5.0","ioredis-mock":"^8.13.1","@adonisjs/core":"7.3.3","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.4.0_1780793661335_0.30272448211784875","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dudousxd/adonis-telescope","version":"0.5.0","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.5.0","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"cebeb49ae8c5bf0fafd71009384ccebd85dcb269","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.5.0.tgz","fileCount":97,"integrity":"sha512-QsG19NafvE81YaKAEPILoEjqq2fEBvZ9QvBqrTDeVOdYp4rZEWtOHWldAvk4SKD5K+a/iNiw0uoAc9dXIvhPUg==","signatures":[{"sig":"MEQCIAPFBWJDGlPyyHzTKiXfmgSv96of3RDaIKPvMJ9XUi+wAiBnee/no1bL4z26TX/HH/fc8pZtyHSqv5jRsuFYh0FcWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695980},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./otel":"./build/src/otel/span_processor.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"gitHead":"0724f071886247b13af839844474d1901cfdf5c9","scripts":{"test":"node build/bin/test.js","build":"tsc && node scripts/copy_assets.mjs && pnpm --filter ui build && node scripts/copy_ui_dist.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/node":"^25.9.2","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","ioredis-mock":"^8.13.1","@adonisjs/core":"^7.3.4","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.5.0_1780795169173_0.7083840476194783","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@dudousxd/adonis-telescope","version":"0.5.1","keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","_id":"@dudousxd/adonis-telescope@0.5.1","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"dist":{"shasum":"40616eef1c7880007ec54781f812267b6b30adb6","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.5.1.tgz","fileCount":97,"integrity":"sha512-RuZhn4kMnAxaqyuHou5lGovhFeBeE1BEZGsy10c/dVfhoFTiSjvIvVu9KKVUOFzIq/rlBYIOy49ZUHgboNSpnw==","signatures":[{"sig":"MEUCIHitA0a0A3yuIXklj289cNJse2JGKo//MbAC9XejizDvAiEA6GCx1vYsox5vNXWTCh0+FxPgH0Th4fn+u+bjN5EVAZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":699520},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":"./build/index.js","./otel":"./build/src/otel/span_processor.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./telescope_provider":"./build/providers/telescope_provider.js"},"gitHead":"402303a6a87f4e4047b05c7338c660ccd7d2e6a3","scripts":{"test":"node build/bin/test.js","build":"tsc && node scripts/copy_assets.mjs && pnpm --filter ui build && node scripts/copy_ui_dist.mjs","release":"pnpm build && pnpm changeset publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"repository":{"url":"git+https://github.com/DavideCarvalho/adonis-telescope.git","type":"git"},"_npmVersion":"11.6.2","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/node":"^25.9.2","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","ioredis-mock":"^8.13.1","@adonisjs/core":"^7.3.4","@changesets/cli":"^2.31.0"},"peerDependencies":{"ai":">=4.0.0","@adonisjs/core":">=6.12.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adonis-telescope_0.5.1_1780805133209_0.23369018967549593","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@dudousxd/adonis-telescope","version":"0.6.0","description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","type":"module","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./types":"./build/src/types.js","./otel":"./build/src/otel/span_processor.js","./telescope_provider":"./build/providers/telescope_provider.js","./services/main":"./build/services/main.js"},"adonisjs":{"providers":["@dudousxd/adonis-telescope/telescope_provider"]},"scripts":{"build":"tsc && node scripts/copy_assets.mjs && pnpm --filter ui build && node scripts/copy_ui_dist.mjs","typecheck":"tsc --noEmit","test":"node build/bin/test.js","release":"pnpm build && pnpm changeset publish"},"keywords":["adonisjs","telescope","debug","observability","devtools"],"author":{"name":"dudousxd"},"license":"MIT","engines":{"node":">=20"},"devDependencies":{"@adonisjs/core":"^7.3.4","@changesets/cli":"^2.31.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/node":"^25.9.2","ioredis-mock":"^8.13.1","typescript":"~6.0.3"},"peerDependencies":{"@adonisjs/core":">=6.12.0","@ai-sdk/anthropic":">=1.0.0","@ai-sdk/google":">=1.0.0","@ai-sdk/openai":">=1.0.0","@ai-sdk/openai-compatible":">=1.0.0","ai":">=4.0.0"},"peerDependenciesMeta":{"ai":{"optional":true},"@ai-sdk/anthropic":{"optional":true},"@ai-sdk/openai":{"optional":true},"@ai-sdk/google":{"optional":true},"@ai-sdk/openai-compatible":{"optional":true}},"repository":{"type":"git","url":"git+https://github.com/DavideCarvalho/adonis-telescope.git"},"gitHead":"3972c1ad3278d8c6361195be27db8fa85203bce3","_id":"@dudousxd/adonis-telescope@0.6.0","bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-kvqoMUW7JhKxfuDJBrm5hd/IIju+sO8Gd/jWNllptlb4JZ0ftkMSF5vUNiasu0E2ddb1oZIQx9bvd5xrp9gLpA==","shasum":"a317f08ccba949153dea2ced9550888236796fe8","tarball":"https://registry.npmjs.org/@dudousxd/adonis-telescope/-/adonis-telescope-0.6.0.tgz","fileCount":97,"unpackedSize":1063940,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDxdDaBrbv8r7HUf+qLGFNovRsa3UqqEpz1KJaNi5SRCwIhAJWl4Vq36t7W6G4NGXi6J1TqTq2x2F6kwJuTJrzzi0jE"}]},"_npmUser":{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"},"directories":{},"maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adonis-telescope_0.6.0_1780806193606_0.7185547906708782"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-06T15:29:45.094Z","modified":"2026-06-07T04:23:13.900Z","0.1.0":"2026-06-06T15:29:45.387Z","0.2.0":"2026-06-06T15:38:18.068Z","0.3.0":"2026-06-06T17:02:50.033Z","0.4.0":"2026-06-07T00:54:21.522Z","0.5.0":"2026-06-07T01:19:29.384Z","0.5.1":"2026-06-07T04:05:33.432Z","0.6.0":"2026-06-07T04:23:13.792Z"},"bugs":{"url":"https://github.com/DavideCarvalho/adonis-telescope/issues"},"author":{"name":"dudousxd"},"license":"MIT","homepage":"https://github.com/DavideCarvalho/adonis-telescope#readme","keywords":["adonisjs","telescope","debug","observability","devtools"],"repository":{"type":"git","url":"git+https://github.com/DavideCarvalho/adonis-telescope.git"},"description":"An elegant debug assistant for AdonisJS — requests, queries, exceptions, jobs, mail, events, logs and more. Zero config.","maintainers":[{"name":"dudousxd","email":"davi_carvalho96@hotmail.com"}],"readme":"# @dudousxd/adonis-telescope\n\nAn elegant debug assistant for AdonisJS — inspired by Laravel Telescope.\n\nRecords **requests, database queries, exceptions, validation failures,\nlogs, events, mail, queue jobs, model writes, authorization checks,\nTransmit broadcasts, outgoing HTTP calls, rate-limit hits, cache, Redis\nand browser errors** — and presents everything in a beautiful live\ndashboard at `/telescope`, with batch correlation (everything that\nhappened during one request, grouped with a waterfall view).\n\n**Zero configuration.** Install it, register the provider, done. Every\nofficial AdonisJS package is detected and instrumented automatically.\n\n## Installation\n\n```sh\nnode ace add @dudousxd/adonis-telescope\n```\n\nOr manually:\n\n```sh\npnpm add @dudousxd/adonis-telescope\n```\n\n```ts\n// adonisrc.ts\nproviders: [\n  // ...\n  () => import('@dudousxd/adonis-telescope/telescope_provider'),\n]\n```\n\nStart your server and open **`/telescope`**. That's it.\n\n## What gets captured (zero config)\n\n| Watcher | Source | Mechanism |\n|---|---|---|\n| Requests | `@adonisjs/http-server` | `adonisjs.http.request` tracing channel + `http:request_completed` event |\n| Queries | `@adonisjs/lucid` | `db:query` event (debug force-enabled per connection) |\n| Exceptions | exception handler | patched `report()` on your handler class |\n| Validation | `@vinejs/vine` | `E_VALIDATION_ERROR` reports, with the failed fields |\n| Throttle | `@adonisjs/limiter` | `E_TOO_MANY_REQUESTS` reports |\n| Logs | `@adonisjs/logger` | pino write hook (covers `ctx.logger` children) |\n| Events | `@adonisjs/events` | `emitter.onAny()` (framework noise filtered) |\n| Mail | `@adonisjs/mail` | `mail:sent` / `mail:queued` / `queued:mail:error` |\n| Jobs | `@adonisjs/queue` | `boringqueue.job.*` tracing channels |\n| Models | `@adonisjs/lucid` | model writes synthesized from `db:query`, with changed columns |\n| Authorization | `@adonisjs/bouncer` | `authorization:finished` event (ability, result, user) |\n| Broadcasts | `@adonisjs/transmit` | Transmit lifecycle hooks (broadcast/subscribe/unsubscribe) |\n| HTTP client | global `fetch` / undici | `undici:request:*` diagnostics channels |\n| Commands | ace | `console` batch per command execution |\n| Cache | `@adonisjs/cache` | `cache:*` events (no-op when not installed) |\n| Redis | `@adonisjs/redis` | instrumented `sendCommand` (no-op when not installed) |\n| Client errors | your frontend | public rate-limited ingestion endpoint |\n| Translations | `@adonisjs/i18n` | `i18n:missing:translation` event |\n| Locks | `@adonisjs/lock` | instrumented acquire/run/release with wait time (contention) |\n| Drive | `@adonisjs/drive` | instrumented disk operations with timing |\n| Renders | Edge / Inertia | template/component, duration, Inertia props size |\n\nEvery entry recorded during a request/job/command is correlated into a\n**batch** via `AsyncLocalStorage` — open any entry and see the full\ntimeline of what happened around it.\n\n## Dashboard\n\n- **Overview** — throughput chart, p50/p95/p99, slowest requests/queries,\n  **N+1 suspects** (same query shape repeated ≥5× inside one request),\n  failing validations, exception families, cache hit rate, telescope\n  health (recorded/dropped/storage/live viewers).\n- **Live tail** — new entries are pushed over SSE and flash in at the top\n  of the list (polling fallback included).\n- **Per-type lists** — full-text search, cursor pagination.\n- **Entry drawer** — type-specific details (SQL highlighting, stack traces\n  with app-frame emphasis, mail HTML preview, validation field errors,\n  model change diffs), raw JSON, batch waterfall.\n- **Routes page** — Pulse-style per-route table (requests, errors, avg,\n  p95) with drill-down into the matching requests.\n- **Query EXPLAIN** — one click runs `EXPLAIN` (read-only, never executes)\n  on the captured SQL and shows the plan.\n- **Copy as cURL / Replay** — reproduce any captured request instantly,\n  or replay it server-side with one click (tagged `replay`).\n- **HAR export** — download a batch as a `.har` file and open it in the\n  browser DevTools network panel.\n- **Filter chips, time range (1h/6h/24h), light theme, j/k keyboard\n  navigation.**\n- **Queues** — live queue depth per status from the `@adonisjs/queue`\n  database driver, with retry/remove for failed jobs.\n- **AI diagnosis** — see below.\n\n## MCP server — let your coding agent debug from real data\n\nTelescope exposes an MCP endpoint at **`/telescope/mcp`** (streamable\nHTTP, stateless) so Claude Code, Cursor and friends can query what\nactually happened: *\"why is POST /checkout slow?\"* → the agent pulls the\nbatch waterfall with every query.\n\n```sh\nclaude mcp add --transport http telescope http://localhost:3333/telescope/mcp\n```\n\nTools: `list_entries`, `get_entry` (with the full batch), `get_batch`,\n`get_stats`, `diagnose_exception`.\n\nAuth: `mcp: { token }` (falls back to `dashboard.token`) as a Bearer\ntoken; outside production it works without one. Disable with\n`mcp: false`.\n\n## Production-grade capture\n\n- **Sampling** — keep a fraction per type, but never lose the\n  interesting ones:\n\n  ```ts\n  sampling: {\n    cache: 0.1,\n    query: { rate: 0.5, keepSlowMs: 1000, keepErrors: true },\n  }\n  ```\n\n- **Overload guard** — recording auto-pauses when the event loop p99 lag\n  crosses 200ms (configurable via `overloadProtection`) and resumes when\n  the process recovers.\n- **Server vitals** — CPU, heap, RSS and event loop lag sampled every\n  10s, charted on the overview.\n- **Per-route aggregates** — Pulse-style table (requests, errors, avg,\n  p95 per route) with drill-down into the matching requests.\n\n## Distributed tracing\n\n**Every request, job and command is a trace.** Batches always carry a\nW3C trace id — inherited from an incoming `traceparent`, adopted from\nthe active OpenTelemetry span, or derived from the batch id. The\n**Traces** page lists every flow; the detail view is a **Jaeger-style\nwaterfall**: a hierarchical span tree on a shared time axis with\ncollapsible nodes, per-type colors and error highlighting.\n\nWith `tracePropagation` (on by default) outgoing `fetch` calls carry a\n`traceparent` header — two services running telescope (or anything\nOTel-compatible) join up into one trace, and downstream requests nest\nunder the `http_client` call that triggered them in the waterfall.\n\n### OpenTelemetry (`@adonisjs/otel`)\n\nRunning the first-party OTel package? Telescope batches automatically\nadopt the active span's trace id (zero config). And one line puts your\ncustom spans (`record()`, `@span`) into the waterfall with their real\notel parent/child ids:\n\n```ts\n// config/otel.ts\nimport { defineConfig } from '@adonisjs/otel'\nimport { telescopeSpanProcessor } from '@dudousxd/adonis-telescope/otel'\n\nexport default defineConfig({\n  spanProcessors: [telescopeSpanProcessor()],\n})\n```\n\nSDK instrumentation spans (http/lucid/redis) are skipped by default —\ntelescope's own watchers already cover those. Opt in with\n`telescopeSpanProcessor({ includeInstrumentationSpans: true })`.\n\n## AI exception diagnosis (Vercel AI SDK — provider agnostic)\n\nOne click on an exception sends the error + stack + the request and\nqueries from the same batch to an LLM and renders **probable cause /\nwhere to look / suggested fix**.\n\nPowered by the [Vercel AI SDK](https://sdk.vercel.ai) (optional peer).\nTelescope itself knows nothing about providers — pass **any** AI SDK\n`LanguageModel`:\n\n```sh\npnpm add ai @ai-sdk/anthropic   # or @ai-sdk/openai, @ai-sdk/google, ollama-ai-provider, …\n```\n\n```ts\nimport { anthropic } from '@ai-sdk/anthropic'\n// import { openai } from '@ai-sdk/openai'\n// import { google } from '@ai-sdk/google'\n\nexport default defineConfig({\n  ai: { model: anthropic('claude-sonnet-4-6') },\n  // ai: { model: openai('gpt-5') },\n  // ai: { model: google('gemini-2.5-flash') },\n  // ai: { model: 'anthropic/claude-sonnet-4-6' }, // AI Gateway model-id string\n})\n```\n\n- **Any gateway / local model**: a string `model` + `baseURL` hits any\n  OpenAI-compatible endpoint — OpenRouter, LiteLLM, Groq, LM Studio,\n  vLLM, a corporate proxy:\n\n  ```ts\n  ai: {\n    model: 'anthropic/claude-sonnet-4.6',\n    baseURL: 'https://openrouter.ai/api/v1',\n    apiKey: env.get('OPENROUTER_API_KEY'),\n  }\n  ```\n\n- **Zero config**: with no `model` set, telescope auto-detects whichever\n  credential the environment already carries — `ANTHROPIC_API_KEY`,\n  `OPENAI_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`, `OPENROUTER_API_KEY`\n  or `AI_GATEWAY_API_KEY` — and uses the matching installed `@ai-sdk/*`\n  package.\n- **No AI SDK at all**: bring your own function:\n\n  ```ts\n  ai: {\n    diagnose: async ({ exception, batch }) => '…markdown…',\n  }\n  ```\n\n## Dashboard auth\n\nBy default the dashboard is **enabled outside production and denied in\nproduction**. Three ways to open it up safely:\n\n**1. Custom authorizer (recommended — integrates with anything):**\n\n```ts\nexport default defineConfig({\n  enabled: true,\n  authorize: async (ctx) => {\n    const user = ctx.auth?.user\n    return user?.isAdmin === true\n  },\n})\n```\n\n**2. Redirect-based auth — e.g. `@dudousxd/adonis-authkit`:**\n\nReturn `{ redirectTo }` and browsers are sent to your login page while\nAPI calls get a 401:\n\n```ts\nimport { hasAccountSession, consoleLoginUrl } from '@dudousxd/adonis-authkit-server'\n\nexport default defineConfig({\n  enabled: true,\n  authorize: async (ctx) =>\n    hasAccountSession(ctx) ? true : { redirectTo: consoleLoginUrl('/telescope') },\n\n  /**\n   * Agents have no browser session — give the MCP endpoint its own\n   * Bearer token while humans go through the authkit login:\n   */\n  mcp: { token: env.get('TELESCOPE_TOKEN') },\n})\n```\n\n**3. Built-in token login** (zero wiring — great for staging):\n\n```ts\nexport default defineConfig({\n  enabled: true,\n  dashboard: { token: env.get('TELESCOPE_TOKEN') },\n})\n```\n\nVisitors get a login screen; the token is stored in an encrypted cookie\n(signed with your `appKey`, 8h TTL, `/telescope/logout` to clear).\n\n## Persistent storage (multi-process)\n\nThe default storage is an in-memory ring buffer. Switch to the database\nstorage to survive restarts and share entries between the web server and\nqueue workers:\n\n```ts\nexport default defineConfig({\n  storage: 'database', // creates the telescope_entries table automatically\n  database: { connection: 'postgres', table: 'telescope_entries' },\n  prune: { olderThanHours: 24 }, // retention, checked hourly\n})\n```\n\nOr **Redis** — uses your app's own `@adonisjs/redis` connection by\ndefault, or any ioredis-compatible client you pass:\n\n```ts\nexport default defineConfig({\n  storage: 'redis',\n  redis: { connection: 'main' },        // app's @adonisjs/redis\n  // redis: { client: myIoredis },      // …or bring your own client\n})\n```\n\nOr implement the `TelescopeStorage` interface for anything else.\n\n## Alerts\n\nFire a webhook the first time a **new exception family** shows up:\n\n```ts\nexport default defineConfig({\n  alerts: {\n    slack: env.get('SLACK_WEBHOOK_URL'),     // formatted Slack message\n    discord: env.get('DISCORD_WEBHOOK_URL'), // formatted Discord message\n    email: 'dev@empresa.com',                // via the app's own @adonisjs/mail\n    // or: webhook: 'https://…'              // raw JSON POST\n\n    /** Threshold rules, evaluated every minute with cooldowns: */\n    rules: {\n      errorRatePercent: 5,   // 5xx rate over the window\n      slowRouteMs: 2000,     // route average duration\n      jobsFailed: 3,         // failed jobs in the window\n      windowMinutes: 5,\n      cooldownMinutes: 15,\n    },\n  },\n})\n```\n\n## Export to Monocle (or any OTLP backend)\n\nTelescope is local-first, but everything it captures can be shipped to\n[Monocle](https://monocle.sh) — the AdonisJS observability platform — or\nany OTLP/HTTP-compatible backend, as proper OpenTelemetry traces + logs\n(requests/jobs become root spans, queries/HTTP calls become child spans,\neverything else becomes correlated log records).\n\n**Zero config**: set `MONOCLE_API_KEY` in the environment and entries\nstart flowing. Or tune it:\n\n```ts\nexport default defineConfig({\n  export: {\n    monocle: {\n      apiKey: env.get('MONOCLE_API_KEY'),\n      // endpoint: 'https://ingest.monocle.sh',  // any OTLP/HTTP backend\n    },\n    // …or ship batches anywhere yourself:\n    // sink: async (entries) => myPipeline.push(entries),\n  },\n})\n```\n\n## Browser (client) errors\n\nA public, rate-limited endpoint ingests frontend errors. Drop this in\nyour app shell:\n\n```ts\nwindow.addEventListener('error', (event) => {\n  const payload = {\n    message: event.message,\n    name: event.error?.name,\n    stack: event.error?.stack,\n    url: location.href,\n  }\n  navigator.sendBeacon?.(\n    '/telescope/client-errors?e=' +\n      btoa(JSON.stringify(payload)).replace(/\\+/g, '-').replace(/\\//g, '_')\n  )\n})\n```\n\nThey show up as `client_error` entries with stack traces.\n\n## telescope.dump()\n\nThe `dd()` of telescope — from anywhere in your code:\n\n```ts\nimport telescope from '@dudousxd/adonis-telescope/services/main'\n\ntelescope.dump({ cart, totals }, 'checkout-debug')\n```\n\nShows up on the dashboard, correlated to the active request.\n\n## Custom watchers\n\nAnything the built-ins don't cover can be captured with the same API the\nbuilt-in watchers use:\n\n```ts\nimport type { TelescopeWatcher, WatcherContext } from '@dudousxd/adonis-telescope/types'\n\nclass StripeWatcher implements TelescopeWatcher {\n  readonly type = 'stripe' // shows up automatically in the dashboard\n\n  async register(ctx: WatcherContext) {\n    const emitter = await ctx.app.container.make('emitter')\n    emitter.on('stripe:webhook', (payload) => {\n      ctx.record({\n        type: 'stripe',\n        content: { event: payload.type, id: payload.id },\n        tags: [`event:${payload.type}`],\n      })\n    })\n  }\n}\n\nexport default defineConfig({\n  custom: [new StripeWatcher()],\n})\n```\n\nThe `WatcherContext` also exposes `startBatch(origin)` / `runInBatch()`\nfor entry-point watchers (things that should group sub-entries, the way\nrequests and jobs do), and `currentBatch()` for correlation.\n\n## Configuration reference\n\nEverything works without a config file. Create `config/telescope.ts`\nonly when you want to tune things:\n\n```ts\nimport { defineConfig } from '@dudousxd/adonis-telescope'\n\nexport default defineConfig({\n  enabled: true,              // default: !app.inProduction\n  path: 'telescope',          // dashboard mount path\n  maxEntries: 10_000,         // in-memory ring buffer capacity\n  ignorePaths: ['/health'],   // never record these requests\n  redact: { keys: ['ssn'] },  // extra sensitive keys (merged with defaults)\n\n  watchers: {\n    queries: { slowMs: 150, nPlusOneThreshold: 5 },\n    logs: { minLevel: 'info' },\n    exceptions: { capture4xx: false },\n    requests: { recordResponse: true, slowMs: 1000 },\n    events: { ignore: [/^internal:/] },\n    // any watcher: false to disable\n    // validation / throttle / models / bouncer / transmit / commands: on by default\n  },\n\n  resolveUser: (ctx) => ctx.auth?.user,\n})\n```\n\n## Safety\n\n- Recording is exception-safe: a failing watcher can never break your app.\n- Telescope's own work (storage writes, webhooks, AI calls) is flagged\n  internally so it never records itself.\n- Sensitive keys (`password`, `authorization`, `cookie`, tokens, …) are\n  redacted before storage; payloads are size-bounded and detached from\n  live object graphs.\n- `EXPLAIN` never uses `ANALYZE` — captured queries are never re-executed.\n- The telescope routes themselves are never recorded.\n","readmeFilename":"README.md"}