Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"bullmq",
"dashboard",
"debugging",
"mikro-orm",
"monitoring",
"nestjs",
"observability",
"telescope",
"typescript"
],
"is_fork": false,
"size_kb": 6259,
"has_wiki": true,
"homepage": "https://davidecarvalho.github.io/aviary/docs/telescope",
"languages": {
"CSS": 11754,
"MDX": 230875,
"HTML": 300,
"JavaScript": 595,
"TypeScript": 2233937
},
"pushed_at": "2026-07-18T16:40:21Z",
"created_at": "2026-06-02T23:09:32Z",
"owner_type": "User",
"updated_at": "2026-07-18T16:40:25Z",
"description": "Laravel Telescope-style observability dashboard for NestJS — requests, queries, exceptions, jobs, cache, mail; Horizon-style live queue console; Pulse-style health. Express & Fastify.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": null,
"name": "Davi de Carvalho",
"type": "User",
"login": "DavideCarvalho",
"company": "Mobly",
"location": "Santos, São Paulo",
"followers": 66,
"avatar_url": "https://avatars.githubusercontent.com/u/15630886?v=4",
"created_at": "2015-11-03T12:54:23Z",
"is_verified": null,
"public_repos": 112,
"account_age_days": 3914
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "@dudousxd/nestjs-telescope@1.22.0",
"kind": "other",
"published_at": "2026-07-17T19:05:05Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.21.0",
"kind": "other",
"published_at": "2026-07-16T20:22:30Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.20.1",
"kind": "other",
"published_at": "2026-07-16T19:15:30Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.20.0",
"kind": "other",
"published_at": "2026-07-16T16:35:32Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.19.1",
"kind": "other",
"published_at": "2026-07-13T13:34:58Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.16.1",
"kind": "other",
"published_at": "2026-07-13T13:34:55Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.16.0",
"kind": "other",
"published_at": "2026-07-13T10:14:20Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.19.0",
"kind": "other",
"published_at": "2026-07-13T10:14:17Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.18.1",
"kind": "other",
"published_at": "2026-07-12T17:49:32Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.14.2",
"kind": "other",
"published_at": "2026-07-12T12:54:04Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.15.0",
"kind": "other",
"published_at": "2026-07-12T04:34:21Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.18.0",
"kind": "other",
"published_at": "2026-07-12T04:34:18Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.17.0",
"kind": "other",
"published_at": "2026-07-12T02:06:57Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.16.1",
"kind": "other",
"published_at": "2026-07-11T17:32:46Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.13.1",
"kind": "other",
"published_at": "2026-07-10T18:29:25Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.14.1",
"kind": "other",
"published_at": "2026-07-10T18:24:04Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.13.0",
"kind": "other",
"published_at": "2026-07-10T18:08:10Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.14.0",
"kind": "other",
"published_at": "2026-07-10T18:08:07Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.16.0",
"kind": "other",
"published_at": "2026-07-10T18:08:04Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.15.1",
"kind": "other",
"published_at": "2026-07-08T11:54:54Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.13.0",
"kind": "other",
"published_at": "2026-06-30T10:17:31Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.12.0",
"kind": "other",
"published_at": "2026-06-27T11:32:54Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.14.0",
"kind": "other",
"published_at": "2026-06-27T11:32:51Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.15.0",
"kind": "other",
"published_at": "2026-06-27T11:32:48Z"
},
{
"tag": "@dudousxd/nestjs-telescope-schedule@1.12.0",
"kind": "other",
"published_at": "2026-06-27T10:20:50Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.14.0",
"kind": "other",
"published_at": "2026-06-27T10:20:47Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.13.0",
"kind": "other",
"published_at": "2026-06-27T10:20:44Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.13.1",
"kind": "other",
"published_at": "2026-06-26T11:59:28Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.12.1",
"kind": "other",
"published_at": "2026-06-26T11:59:25Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.13.0",
"kind": "other",
"published_at": "2026-06-25T22:17:29Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.12.0",
"kind": "other",
"published_at": "2026-06-23T15:11:07Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.11.1",
"kind": "other",
"published_at": "2026-06-23T03:00:52Z"
},
{
"tag": "@dudousxd/nestjs-telescope-otel@1.13.0",
"kind": "other",
"published_at": "2026-06-20T19:24:30Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm-watcher@1.12.0",
"kind": "other",
"published_at": "2026-06-20T19:24:27Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.12.0",
"kind": "other",
"published_at": "2026-06-20T12:28:57Z"
},
{
"tag": "@dudousxd/nestjs-telescope-otel@1.12.0",
"kind": "other",
"published_at": "2026-06-20T12:28:54Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.12.0",
"kind": "other",
"published_at": "2026-06-19T23:34:27Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis@1.11.1",
"kind": "other",
"published_at": "2026-06-19T19:46:58Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.11.1",
"kind": "other",
"published_at": "2026-06-19T19:46:55Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.11.2",
"kind": "other",
"published_at": "2026-06-19T19:46:52Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.11.1",
"kind": "other",
"published_at": "2026-06-18T18:12:53Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:15Z"
},
{
"tag": "@dudousxd/nestjs-telescope-logs@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:12Z"
},
{
"tag": "@dudousxd/nestjs-telescope-bullmq@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:09Z"
},
{
"tag": "@dudousxd/nestjs-telescope-testing@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:06Z"
},
{
"tag": "@dudousxd/nestjs-telescope-otel@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:03Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:41:00Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:57Z"
},
{
"tag": "@dudousxd/nestjs-telescope-typeorm@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:54Z"
},
{
"tag": "@dudousxd/nestjs-telescope-prisma@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:51Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:48Z"
},
{
"tag": "@dudousxd/nestjs-telescope-events@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:45Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ai@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:42Z"
},
{
"tag": "@dudousxd/nestjs-telescope-sqs@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:39Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis-watcher@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:36Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:33Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mail@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:30Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm-watcher@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:27Z"
},
{
"tag": "@dudousxd/nestjs-telescope-schedule@1.11.0",
"kind": "other",
"published_at": "2026-06-18T15:40:24Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm-watcher@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:46Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:43Z"
},
{
"tag": "@dudousxd/nestjs-telescope-logs@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:40Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:37Z"
},
{
"tag": "@dudousxd/nestjs-telescope-events@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:34Z"
},
{
"tag": "@dudousxd/nestjs-telescope-prisma@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:31Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:28Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis-watcher@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:25Z"
},
{
"tag": "@dudousxd/nestjs-telescope-schedule@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:22Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:19Z"
},
{
"tag": "@dudousxd/nestjs-telescope-sqs@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:16Z"
},
{
"tag": "@dudousxd/nestjs-telescope-otel@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:13Z"
},
{
"tag": "@dudousxd/nestjs-telescope-testing@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:10Z"
},
{
"tag": "@dudousxd/nestjs-telescope-typeorm@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:07Z"
},
{
"tag": "@dudousxd/nestjs-telescope-bullmq@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:04Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mail@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:42:01Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ai@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:41:58Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.10.0",
"kind": "other",
"published_at": "2026-06-18T01:41:55Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm-watcher@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:51Z"
},
{
"tag": "@dudousxd/nestjs-telescope-schedule@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:48Z"
},
{
"tag": "@dudousxd/nestjs-telescope-bullmq@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:45Z"
},
{
"tag": "@dudousxd/nestjs-telescope-otel@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:42Z"
},
{
"tag": "@dudousxd/nestjs-telescope-events@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:39Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mikro-orm@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:36Z"
},
{
"tag": "@dudousxd/nestjs-telescope-typeorm@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:33Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis-watcher@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:30Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ui@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:27Z"
},
{
"tag": "@dudousxd/nestjs-telescope-prisma@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:24Z"
},
{
"tag": "@dudousxd/nestjs-telescope-mail@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:21Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:18Z"
},
{
"tag": "@dudousxd/nestjs-telescope-testing@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:15Z"
},
{
"tag": "@dudousxd/nestjs-telescope-logs@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:12Z"
},
{
"tag": "@dudousxd/nestjs-telescope-sqs@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:09Z"
},
{
"tag": "@dudousxd/nestjs-telescope@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:06Z"
},
{
"tag": "@dudousxd/nestjs-telescope-cache@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:03Z"
},
{
"tag": "@dudousxd/nestjs-telescope-ai@1.9.1",
"kind": "other",
"published_at": "2026-06-17T19:56:00Z"
},
{
"tag": "@dudousxd/nestjs-telescope-prisma@1.9.0",
"kind": "other",
"published_at": "2026-06-17T15:48:16Z"
},
{
"tag": "@dudousxd/nestjs-telescope-logs@1.9.0",
"kind": "other",
"published_at": "2026-06-17T15:48:13Z"
},
{
"tag": "@dudousxd/nestjs-telescope-redis@1.9.0",
"kind": "other",
"published_at": "2026-06-17T15:48:10Z"
},
{
"tag": "@dudousxd/nestjs-telescope-testing@1.9.0",
"kind": "other",
"published_at": "2026-06-17T15:48:07Z"
},
{
"tag": "@dudousxd/nestjs-telescope-schedule@1.9.0",
"kind": "other",
"published_at": "2026-06-17T15:48:04Z"
}
],
"recent_commits": [
{
"oid": "009f1962bbc123ee222e5dd6e75d6e23df5c8d27",
"body": "Describe the current silent-capture behavior without the since-version\npointer; user docs describe behavior and public API, not release history.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(telescope): drop version-history framing from silent-capture note",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-18T16:40:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4f900f263a1917ff041b138fdea6b5efc287a678",
"body": "…he docs loader\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(site): resolve sidebar icons — wire lucide icon() handler into t…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-18T15:12:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "92b856500d1278c157281a5ed770eb2652ab48a5",
"body": "- Add concepts/profiling.mdx documenting the V8 CPU flamegraph feature:\n ProfilingOptions, the profiler subsystem (arm/sampled modes, headless\n /profiles API), the dashboard flamegraph view, and cpu_profile storage.\n- reference/configuration.mdx: add `profiling` row + detail subsection;\n add `sta\n[…]\nl sink-emit path) in the Logs section.\n- Sweep: add `icon` (Lucide) to every doc page frontmatter and every\n subfolder meta.json.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: CPU profiling page, programmatic log API, config gaps, icon sweep",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-18T15:03:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8bdc091255c06c7f1030ac210726181fdda6c9f1",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#56)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-17T19:04:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "579ac069a42345866333216626556eae2cbd0e22",
"body": "Client-exception Slack alerts silently lost Client IP (hence Location),\nURL, User agent and Extra on exactly the errors with the largest React\ncomponentStacks. The Recorder's content-byte budget (redact.maxContentBytes)\nwalks content keys in insertion order and drops every key once the budget\nis spe\n[…]\nenrichment survives a huge\ncomponentStack under a tight budget; perType raises the client_exception\nbudget) and a minor changeset.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(client-errors): keep IP/geo/URL/UA enrichment; add redact.perType",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-17T18:56:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5b76440a60014de0ba62865553bcb176905d3954",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#55)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T20:21:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "356539f1a2fa5fb5fb743809ed74d8b1d509350f",
"body": "* feat(alerts): add isNew to exception context + New/Recurring header badge\n\nException alerts now carry isNew (occurrences === 1 — the family's first\noccurrence in the window). The Slack card badges the header 🆕 New vs\n🔁 Recurring so on-call can gauge urgency at a glance.\n\n* style: biome format the new badge spec\n\n---------\n\nCo-authored-by: Davi de Carvalho <davi.carvalho96@gmail.com>",
"is_bot": false,
"headline": "feat(alerts): New/Recurring badge on exception alerts (isNew) (#54)",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-16T20:20:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca25d97cb9b4eb33f9ae2c14349283630759428c",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#53)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T19:14:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95e4ca67ebc5ee090f515d9602d902705cfdca9a",
"body": "…s at 10) (#52)\n\nA fully-enriched exception alert (instance + observed + error + route + UA +\nreferer + duration + user + client IP + location + occurrences = 11 fields)\noverflowed a single section's 10-field cap, so Slack rejected the entire\nmessage with 400 invalid_blocks and no alert posted. Chunk the context fields\ninto section blocks of at most 10.\n\nCo-authored-by: Davi de Carvalho <davi.carvalho96@gmail.com>",
"is_bot": false,
"headline": "fix(alerts): spread exception Slack fields across sections (Slack cap…",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-16T19:13:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55c08ce4d9f9d8e0907135e73d431c2e98e50853",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#51)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T16:34:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d11295dbe5dfa15c246773e2819f43c2e1b5b3f8",
"body": "…A/componentStack/extra, and an every-exception rule (#50)\n\nThe `new-exception` alert dropped the client IP even though the entry stored\nit, and frontend-originated errors carried even less context than server ones.\nThis closes that gap and makes the native alert a viable replacement for a\nhand-roll\n[…]\nr) included; alerts specs extended and a new slack-format spec added.\n\nCo-authored-by: Davi de Carvalho <davi.carvalho96@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(alerts): enrich exception alerts with client IP + geo, referer/U…",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-16T16:32:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "322c4b3552bb63198687d594bb310e370162db71",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#49)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-13T13:32:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c07d42a756e77b54ec92db4249ec060d9556e21c",
"body": "…n dashboardAuth login\n\nNothing in the login path blocks an empty password: the AuthScreen input has\nno HTML `required`, the client posts credentials verbatim, and the controller\nonly checks the password is a string (not non-empty) before calling the host\n`login` hook. Adds regression tests locking that in, plus a docs sentence on\nthe dashboardAuth reference clarifying the hook owns the policy.",
"is_bot": false,
"headline": "test(core,ui): verify + regression-test empty password pass-through i…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-13T13:22:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f504fb36ea59574d6b4dcbde32dd007debd9c255",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#48)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-13T10:13:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46f6bd491c962f694ed41066f47da4da29671c3f",
"body": "Add guards (Array<Type<CanActivate> | CanActivate>) and imports options to\nTelescopeModule.forRoot/forRootAsync and TelescopeUiModule.forRoot/forRootAsync,\nmirroring @dudousxd/nestjs-agent's dashboard module. Hosts with header-only auth\ncan't gate a full-page navigation to the dashboard (browsers se\n[…]\necuring the console with your own guards\" docs section (dashboard/auth\nguide) with a realistic cookie-session guard example, cross-linked from the\nconfiguration reference and the core/ui package docs.",
"is_bot": false,
"headline": "feat(core,ui): first-class guards + imports for the console",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-13T01:46:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b7cf87cf715ddd7f40506a6807b936e1de5b925",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#47)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-12T17:48:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "126a280ada269c306371e2b621942d53b5951761",
"body": null,
"is_bot": false,
"headline": "fix(core): label diagnostics spans as lib:event in the trace waterfall",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-12T17:46:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "735aaaefb5c29f6c755b8399c3c0288ced78417f",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#46)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-12T12:53:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3243d8c8f3196fc1fe8de0a79076b67a74b5b090",
"body": null,
"is_bot": false,
"headline": "fix(mikro-orm): widen trace_id column to 64 chars for UUID trace ids",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-12T12:39:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "780206cdc8abd4d61835e3c2c5636e7570b669fa",
"body": "- capture: requestCapture body gates (maxBodyBytes / skipBodyContentTypes /\n skipBody + marker payloads) and the traceId precedence story — explicit\n RecordInput.traceId wins over ambient OTel/context stamping, which is how\n lib-emitted diagnostics spans land in the TRACES waterfall\n- extensions \n[…]\nfiguration: telescopeMountPaths() for\n setGlobalPrefix excludes; requestCapture row; scheduleManagers /\n queueManagers auto-collection from watchers (SPI structural detection,\n deduped by identity)",
"is_bot": false,
"headline": "docs: catch website docs up to core 1.16-1.18",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-12T11:55:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d8eb9ba1740bbb2b5771ccdabc4f3f1ebd87f40",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#45)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-12T04:33:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbaf8d2c00c08bc03c8df874cabc0c48741d712f",
"body": "…iew #/traces/{id})",
"is_bot": false,
"headline": "feat: paged ext-dashboard tables + LinkSpec href conventions (trace v…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-12T04:32:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca17fa60ef1039e33816383a793debffc0f62fb3",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#44)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-12T02:05:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd60ad9073f02b0a9cc13fa3a396f1dfb7769772",
"body": "…ping\n\nIntegrations that know their correlation (diagnostics span envelopes)\nstate it; OTel/context-accessor remain the default when absent. Unblocks\nnon-OTel span pipelines in the TRACES waterfall.",
"is_bot": false,
"headline": "feat(core): explicit RecordInput.traceId wins over ambient trace stam…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-12T02:04:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13bac0c0b627ed5e42898fd17a06560d6b16d001",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #43 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-11T17:31:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe1c6d1950b6aa3982eb0e0386b231b48fa20fce",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-10T22:28:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8af44ccc5aa1c189929406d2382319f02b6ce591",
"body": "An extension shipping a watcher whose type equals its declared entry-type id\n(durable/agent/diagnostics) landed in the /meta watcher list twice — from both\nregistered and extensionTypes — rendering a duplicate dashboard nav tab and\ndouble-counting in the boot log. Wrap the list in a Set (first-seen order kept).",
"is_bot": false,
"headline": "fix(core): de-dupe extension watcher type in /meta list",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-10T22:28:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9f7f93d5c795fbf361603c7efa8f9af4d6f6940",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #42 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:28:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "558c56817db1897a2ad71b62f460414be2e4ae30",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-10T18:27:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd8d12cca40d99c553be35931b2ac2c445a70407",
"body": "…ility\n\nfix(cache): BentoCacheEmitterLike accepts Node's generic EventEmitter",
"is_bot": false,
"headline": "Merge pull request #41 from DavideCarvalho/fix/bento-emitter-assignab…",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:27:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80b7648610debcf327abaee154b5f48048f16e70",
"body": "The (payload: never) listener shape rejected EventEmitter<any> under strict\nconsumers; the interface now mirrors Node's own listener signature.",
"is_bot": false,
"headline": "fix(cache): BentoCacheEmitterLike accepts Node's generic EventEmitter",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-10T18:27:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92fa0320cc0f52b28449cfea16005ac5f5ec9ae7",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #40 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:22:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75fe0fe109044dd4ab5e5ef7bc94d942d78ddf18",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-10T18:22:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a3f0200c2e5e65a81f1fa33c5de0bf90bbf0837",
"body": "fix(mikro-orm): telescopeMikroOrmLogger accepts options as the first argument",
"is_bot": false,
"headline": "Merge pull request #39 from DavideCarvalho/fix/logger-options-first",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:22:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58f5d727244441c21f4db4ce2cc55609ac6dd11c",
"body": "…argument\n\nThe zero-config path forced an undefined placeholder to reach the options bag\n(telescopeMikroOrmLogger(undefined, { slowMs })). Overload: a non-function\nfirst arg is the options; explicit-sink callers are unchanged.",
"is_bot": false,
"headline": "fix(mikro-orm): telescopeMikroOrmLogger accepts options as the first …",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-10T18:22:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "accc51ba94ad774236d11ebc54c2b62e8b9a86a2",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #38 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:06:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ec342babef63dda1bad197e2945f47dc67a0b98",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-10T18:06:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ea3494717534977d917b080d959328c07015a99",
"body": "feat: request capture gates, deferred record sink, manager auto-collect, bentoCacheSource, managedTables",
"is_bot": false,
"headline": "Merge pull request #37 from DavideCarvalho/feat/consumer-friction-wave",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-10T18:05:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3969c338dd6c360fb08bb68e6b279f06cdf7ab77",
"body": "…ct, bentoCacheSource, managedTables\n\n- core: requestCapture option (size/content-type/predicate gates, on by\n default) runs BEFORE the synchronous redaction walk — the entry survives\n with a marker payload; telescopeRequestCapture(service, options) accepts\n the same config on the manual setGloba\n[…]\n receive a typed TelescopeHttpRequest instead of unknown\n- cache: bentoCacheSource(emitter) maps BentoCache events to CacheEventInput\n- mikro-orm: telescopeManagedTables() derived from entity metadata",
"is_bot": false,
"headline": "feat: request capture gates, deferred record sink, manager auto-colle…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-10T18:02:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7a995ace335394db56e8fd19b988019f1f1537dd",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #36 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-07-08T11:53:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "960887448c070744912a8f582be5da64a9e27b26",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-08T11:50:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd002418cd265e91037f441a63f256296f1f4a59",
"body": null,
"is_bot": false,
"headline": "style(core): biome format redact binary-blob test",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-08T11:50:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5a282ebc240a30ea2ee2a62059fe538ba73da83",
"body": "A Buffer is typeof 'object' and not an Array, so it fell into the plain-object\nbranch where Object.entries() eagerly materializes one [index, byte] pair per\nbyte BEFORE the node/byte budgets are consulted. On a multi-MB request body (a\nraw file-upload chunk captured as an entry payload) that was sec\n[…]\nCPU + hundreds of MB on the event loop, stalling every concurrent\nrequest on the pod. Binary values (Buffer/TypedArray/DataView/ArrayBuffer) are\nnow summarized as an O(1) marker and flagged truncated.",
"is_bot": false,
"headline": "fix(core): bound binary blobs in redact() instead of walking their bytes",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-07-08T11:46:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "78b885d85663e43beb2f7e63585dec6c2048f0ca",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#35)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-30T10:16:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df101cba5aa5402cb87425c567412b3a9503e3af",
"body": "…rint\n\ninit() previously ran schema.update({ safe: true }) on every boot, diffing the\nwhole database information_schema against telescope's entities (~1.5-3s of\nround-trips on a remote DB) to emit zero DDL in steady state.\n\nAdd an inline fingerprint gate: ensureDatabase first (fresh-DB ordering for \n[…]\nhema.update entirely; only a fresh\nDB, entity change, or SCHEMA_REVISION bump heals (under a best-effort MySQL/PG\nadvisory lock with a re-check) and re-caches the marker. Caller behavior is\nunchanged.",
"is_bot": false,
"headline": "feat(mikro-orm): gate boot schema reconcile behind a metadata fingerp…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-30T10:15:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "77814f02ac909b8b30c7d74380f631d191a5b75a",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #34 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-27T11:31:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee454ec6978b5dc6d2f91c054e373bc55104e71e",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-27T11:31:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6f2d640df58a3a1070de27ba4e8bfed4db1ce79",
"body": "Make cache watcher cache-agnostic + richer (store/tier/stale/ttl, delete/clear)",
"is_bot": false,
"headline": "Merge pull request #33 from DavideCarvalho/telescope-cache-generalize",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-27T11:31:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "996c9d442eb16f581acf67aca9ead84ce3bbc6c1",
"body": "…/clear ops",
"is_bot": false,
"headline": "feat(cache): generic cache dimensions (store/tier/stale/ttl) + delete…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-27T11:30:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e50a816ddf79acba18a31fff532fac724c81cc9a",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #32 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-27T10:19:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fbb750dcb1e6574f7be26a6b251b6b967a05f15a",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-27T10:19:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c68a6ce05223e7134c16f80d952736f7182709b7",
"body": "Fix empty extension/schedule dashboards; add Prunes + Exports + cross-links",
"is_bot": false,
"headline": "Merge pull request #31 from DavideCarvalho/telescope-dashboards-fixes",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-27T10:18:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e66ec355487c488c8290a13acb99b619895f28d",
"body": "…/CSV) screens\n\nAlso uncap biome diagnostics in the lint script so suppression accounting stays\ncorrect as the file set grows (biome 1.9.4 false-positives 'unused suppression'\nonce the default 20-diagnostic cap is hit).",
"is_bot": false,
"headline": "feat: Prunes (prune-run history + /prunes endpoint) and Exports (JSON…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-27T10:04:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53c944f8dd66540813c1ea45fa751b192a0946b3",
"body": "…pty states",
"is_bot": false,
"headline": "feat(ui): related cross-links on entry detail + explicit extension em…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-27T10:03:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdc21987bc90eae6fc95995c99d3de46f0f4fc89",
"body": "…e cron active/stopped state",
"is_bot": false,
"headline": "fix(core): forward dashboard sections in meta; feat(schedule): surfac…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-27T03:02:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb70565414debf123dcd0a257957b066915edf38",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #30 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-26T11:58:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db784740e5c2a4a1dd8b35ddcad98fb72290fcea",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-26T11:56:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4903bcb7ac30999b491a908c475b22faf02f955b",
"body": "TanStack Intent: agent skills + doc/code fixes",
"is_bot": false,
"headline": "Merge pull request #29 from DavideCarvalho/intent-skills",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-26T11:54:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22657ef7bcde53dd7b3cffcda8306b2b63ae9140",
"body": "…ase CI)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: add @tanstack/intent to lockfile (fixes frozen-install in rele…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-26T11:20:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0ba84cf029489da9f2cc85a15249e78fab2282ca",
"body": "…olding\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: fix incorrect examples/defaults found during intent skill scaff…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-25T23:06:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a79c3fa6f77c8d02a4150325f082d66d9fdc9227",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add TanStack Intent agent skills",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-25T22:38:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a6a06113cb67bc989001b3f452df90f3b0a13fdc",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #28 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-25T22:16:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33eacd9da0936b907bca32d395834334858a8bba",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-25T22:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ea9b032427a375ef7cf36bca831c5de00a1386a",
"body": "The overload guard armed at onModuleInit and read its first lag window\nafter the synchronous bootstrap stall (DI wiring, migrations, codegen),\nso a one-off ~1s bootstrap block tripped overload protection on a\ntransient — pausing capture and logging a scary WARN right at startup.\n\nDiscard the leading measurement windows after arming and only judge live\nload once the loop settles. Configurable via\noverloadProtection.startupGraceMs (default ~5000ms; 0 arms immediately).",
"is_bot": false,
"headline": "feat(core): startup grace for overload guard",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-25T22:14:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75dd63eaab6d973ed4e51774e968b94692a747c1",
"body": "…tion model capture\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(telescope): document optional cache-manager peer & flush/transac…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-23T22:22:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e0dd411c50304b08fd8dd0ddea0f74b37c35e7c6",
"body": "Show how to capture queries into Telescope without echoing them to stdout\n(`{ silent: true }`, shipped in @dudousxd/nestjs-telescope-mikro-orm@1.12.0).\n\nCo-authored-by: Davi de Carvalho <davi.carvalho96@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(mikro-orm): document the `silent` logger option (#27)",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-23T15:15:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b86694dbe5d8af68234fd9fbc2ccb77362580ead",
"body": "Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore: version packages (#26)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-23T15:09:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8b6dcd3bb2fc29d6c287b00d4d75c0a149a4b56",
"body": "MikroORM only calls the logger while `debug` is enabled, but `debug` also\nechoes every query to stdout — drowning local debugging once Telescope is\nwired in. `{ silent: true }` swaps MikroORM's writer for a no-op so queries\nstill flow into Telescope (ALS-correlated, slow-tagged, N+1-hashed) while\nno\n[…]\nng is printed. Defaults to false, preserving tee-to-console behavior.\n\nCo-authored-by: Davi de Carvalho <davi.carvalho96@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(mikro-orm): add `silent` option to telescopeMikroOrmLogger (#25)",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-23T15:08:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3b298f1175b715a23c195291a13e95f0ff5beadb",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #24 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-23T02:59:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2dc6abed8fd67012a5155f37d8cccbe24f33a16",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-23T02:59:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d72bdf70bece2f01637e48bba222e4a6ab114ff5",
"body": "@nestjs/cache-manager is an optional peer dependency, but cache.watcher\ndid a top-level static import of CACHE_MANAGER. Merely loading the module\ncrashed any app without @nestjs/cache-manager installed (ERR_MODULE_NOT_FOUND),\nbreaking Bento-only hosts that use only the { instrument } path.\n\nMove the\n[…]\n only\nbranch that needs it. Keep the token as an erased import type. The\n{ instrument } (Bento) and explicit-cache paths never load it now.\nregister() returns Promise<void> on the auto-discovery path.",
"is_bot": false,
"headline": "fix(cache): lazy-import @nestjs/cache-manager for Bento-only consumers",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-23T02:58:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "560498117c7b65ce9e2a8b2be6ac9f4d92d3484d",
"body": null,
"is_bot": false,
"headline": "docs: idiomatic NestJS examples (DI in services/modules)",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T20:44:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98e459d093557225d0cd5bb7b53d4b6340f24256",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #23 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-20T19:23:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d498caa0d20e6c507d86dc91890f61687a1eebe2",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-20T19:23:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fd5b30cb4f90551b3a5f830f3cb588fb14ecd46",
"body": null,
"is_bot": false,
"headline": "chore: changeset for mikroorm flush/txn + diagnostic duration histograms",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T19:21:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe1e6057c81f694e132acaba16c1057171be1432",
"body": "The subscriber is registered on the shared EventManager, so concurrent flushes\nfrom different forked EMs interleave their begin/end hooks. Replace the single\nshared timing slot with a WeakMap keyed by the per-operation em, so each end\ncorrelates to its own start instead of racing.",
"is_bot": false,
"headline": "fix(mikro-orm-watcher): key flush/txn timing by em (concurrency-safe)",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T19:20:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08a8a30bb1b739969c9304529a97c445c0ebed92",
"body": "…h durations and map to metrics\n\nPart 1 — MikroOrmModelWatcher now hooks onFlush/afterFlush and\nbeforeTransactionStart/afterTransactionCommit/afterTransactionRollback to\nrecord model entries with durationMs. Entity change entries gain a\nkind: 'entity' discriminator; new flush entries carry kind: 'fl\n[…]\ntransaction_duration_ms\n - 'diagnostic' with durationMs → also sets durationMetric: telescope_diagnostic_duration_ms\n7 new unit tests added.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(mikro-orm-watcher,otel): capture flush/transaction lifecycle wit…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T19:20:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "51dee17a94d70f48f25a2e2d31d23b7866562e66",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #22 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-20T12:27:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ad952163070a0f60598bb51d3548f2f8ebe08c5",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-20T12:26:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5ca5e2efa3b6473092c63286176ecb7737797ac",
"body": null,
"is_bot": false,
"headline": "fix(otel): satisfy biome noVoidTypeReturn + useTemplate in MetricStore",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T12:24:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19833476ccc6c4173dbb1acb6935ff4b39132535",
"body": "… (unblocks release)",
"is_bot": false,
"headline": "fix(otel): use dot access in mapInput to satisfy biome useLiteralKeys…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T12:20:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d1f7ae2afe6b308b407eabc781f0a308a260d85",
"body": null,
"is_bot": false,
"headline": "chore: add changesets for OTel export hub (core + otel minor)",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T12:11:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65963e64b8b8fe05d2df8d67cfe6b85e65a2e674",
"body": "- Sort+copy caller buckets in MetricStore ctor (Prometheus rejects non-monotonic\n le; copy keeps the exported default immutable) + test with out-of-order buckets.\n- Escape newlines in label values (Prometheus text-format conformance).\n- Clarify dropped-series counter HELP: it counts dropped SAMPLES\n[…]\nunded); comment the per-name independent caps.\n- Meter-spy now asserts the OTLP histogram boundaries equal the Prometheus buckets.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(otel): harden histogram exposition per review",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T04:06:53Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2b66d862baa3b3bf1dccdc09927ee7a2f601081b",
"body": "- MetricStore caps distinct series per metric (default 2000); new label\n combinations past the cap are dropped and surfaced as\n telescope_metrics_dropped_series_total{metric} instead of leaking memory.\n- Durations now export as Prometheus histograms (# TYPE/# HELP + cumulative\n _bucket{le} + _sum\n[…]\nng the OTLP counter/histogram write path; span attribute\n value-asserts (duration_ms/batch_id); histogram + cap exposition tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(otel): bound metric cardinality + real Prometheus histograms",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T04:03:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "eac3640286492303edaba30907e06b04c70456ea",
"body": null,
"is_bot": false,
"headline": "Merge branch 'feat/otel-export-hub'",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T03:29:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c23e4edc89a6c8c3ee529dbc78ee254d743d6fcb",
"body": "…arden span test cleanup\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(otel): declare @nestjs/core peer, document diagnostics prereqs, h…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-20T00:13:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ad80c84d55a7168d95c1904f2064b7e1698985f7",
"body": "Expose the full public surface in index.ts (TelescopeOtelExporter,\nTelescopeOtelMetricsModule, TELESCOPE_OTEL_EXPORTER, mapInput/MetricStore/\nMetricSample, entryToSpan/SpanShape). Append export wiring guide to README.\nCreate docs/observability.md with emit() onboarding story. Fix pre-existing\nexactOptionalPropertyTypes error in instrument-map.ts that blocked the build.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(otel): document metrics/trace export + emit() onboarding",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:36:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ef357dc22fb3675e04f934e3829184d5a79c24bd",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #21 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-19T23:33:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28b7ede8ee5a5774318e37727972c835321a2735",
"body": "Adds entryToSpan() pure mapping (entry-to-span.ts) and TelescopeOtelExporter.observeFlush()\nthat starts/ends one OTel span per entry using @opentelemetry/api (no-op without an SDK).\nAdds @opentelemetry/sdk-trace-base@^2.8.0 as devDep for the in-memory span-emission test.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(otel): export Telescope flushes as sampled OTel spans",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:32:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8ed0cf4af2bb623b7acdcb626215f38acda4d1e0",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-19T23:27:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f9bb193c19d810dc57bbe98853f67c39c51f626",
"body": "Add TelescopeOtelMetricsController and TelescopeOtelMetricsModule.forExporter()\nto expose the exporter's Prometheus text at GET /metrics with the correct\nContent-Type header. @nestjs/common added as peerDep (optional) + devDep.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(otel): serve /metrics Prometheus scrape",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:26:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "74a6563557521edec413b0691a011f9568e140cc",
"body": "Add Prepend and Rescued prop rows, a Once-cache section (cache key → prop,\nwith expiry), a Scroll section (infinite-scroll cursor + reset), and\nexcept-once chips on the partial-reload panel. Fields are read defensively\nso older diagnostic payloads still render.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ui): surface Inertia v3 render metadata in entry detail",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:26:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "49bce03f30f1e7a13c7aeecb872f7b1bd38e61ab",
"body": "…ter)\n\nImplements mapInput() pure function mapping RecordInput to MetricSample,\nMetricStore for dependency-free Prometheus text exposition, and\nTelescopeOtelExporter (TelescopeExtension) that feeds both stores on\nobserveRecord() and mirrors into the global OTel Meter for OTLP push.",
"is_bot": false,
"headline": "feat(otel): export Telescope records as metrics (prometheus + OTel me…",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:21:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3331b69f9b10c525c382170d17ac086054642885",
"body": "Wire ExtensionRegistry.notifyRecord into onRecorded and\nnotifyFlush into onFlushStored (via Promise.all with the existing\nalerter path) so registered extensions receive every record (pre-\nsampling) and every stored flush batch.",
"is_bot": false,
"headline": "feat(core): fan recorder taps out to extension observers",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:17:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5add83206701d60ea848c785a431725fe8ce8db7",
"body": null,
"is_bot": false,
"headline": "feat(core): add observeRecord/observeFlush extension hooks",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:13:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62dd9caf2961090c19956e544f71f4ff6e9460c2",
"body": null,
"is_bot": false,
"headline": "feat(core): add complete-count onRecorded tap to Recorder",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:10:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3269557738ecf821419180b9663800cd51587f67",
"body": null,
"is_bot": false,
"headline": "docs: add OTel export hub implementation plan",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T23:08:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a8c7ce2186454c79792cdf92c419b3e8518a49e",
"body": "chore: version packages",
"is_bot": false,
"headline": "Merge pull request #20 from DavideCarvalho/changeset-release/main",
"author_name": "Davi de Carvalho",
"author_login": "DavideCarvalho",
"committed_at": "2026-06-19T19:45:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8755b94409415f142eb981df40cdf4c80f45911",
"body": null,
"is_bot": true,
"headline": "chore: version packages",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-19T19:44:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba64ffb13437661f6cf6e2432608a6651210dce1",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(changeset): patch bump for the merged refactors/fixes",
"author_name": "Davi de Carvalho",
"author_login": null,
"committed_at": "2026-06-19T19:44:10Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 100,
"commits_last_year": 474,
"latest_release_at": "2026-07-17T19:05:05Z",
"latest_release_tag": "@dudousxd/nestjs-telescope@1.22.0",
"releases_from_tags": false,
"days_since_last_push": 4,
"active_weeks_last_year": 8,
"days_since_latest_release": 5,
"mean_days_between_releases": 0.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "@dudousxd/nestjs-telescope-ai",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"ai",
"diagnosis",
"vercel-ai-sdk",
"exception",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-ai",
"is_deprecated": false,
"latest_version": "1.11.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 10,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 138,
"first_published_at": "2026-06-05T20:33:50.664000Z",
"latest_published_at": "2026-06-18T15:40:17.590000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 34
},
{
"name": "@dudousxd/nestjs-telescope-ui",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"dashboard",
"ui",
"observability",
"react",
"tanstack-intent"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-ui",
"is_deprecated": false,
"latest_version": "1.16.1",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 23,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2026,
"first_published_at": "2026-06-04T16:57:48.714000Z",
"latest_published_at": "2026-07-13T13:34:53.643000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 9
},
{
"name": "@dudousxd/nestjs-telescope-sqs",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"sqs",
"queue",
"dlq",
"redrive",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-sqs",
"is_deprecated": false,
"latest_version": "1.11.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 16,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 542,
"first_published_at": "2026-06-04T16:57:41.364000Z",
"latest_published_at": "2026-06-18T15:40:19.942000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 34
},
{
"name": "@dudousxd/nestjs-telescope",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"observability",
"debugging",
"apm",
"tracing",
"tanstack-intent"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope",
"is_deprecated": false,
"latest_version": "1.22.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 35,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 3983,
"first_published_at": "2026-06-04T16:57:16.128000Z",
"latest_published_at": "2026-07-17T19:05:03.635000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "@dudousxd/nestjs-telescope-logs",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"logger",
"logs",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-logs",
"is_deprecated": false,
"latest_version": "1.11.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 16,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 961,
"first_published_at": "2026-06-04T16:57:22.236000Z",
"latest_published_at": "2026-06-18T15:40:17.116000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 34
},
{
"name": "@dudousxd/nestjs-telescope-mail",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"mail",
"nodemailer",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-mail",
"is_deprecated": false,
"latest_version": "1.11.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 16,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 1009,
"first_published_at": "2026-06-04T16:57:24.142000Z",
"latest_published_at": "2026-06-18T15:40:17.199000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 34
},
{
"name": "@dudousxd/nestjs-telescope-otel",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"opentelemetry",
"otel",
"tracing",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-otel",
"is_deprecated": false,
"latest_version": "1.13.0",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 18,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 1040,
"first_published_at": "2026-06-04T16:57:30.827000Z",
"latest_published_at": "2026-06-20T19:24:25.717000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 32
},
{
"name": "@dudousxd/nestjs-telescope-cache",
"exists": true,
"license": "MIT",
"keywords": [
"nestjs",
"telescope",
"cache",
"cache-manager",
"observability"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@dudousxd/nestjs-telescope-cache",
"is_deprecated": false,
"latest_version": "1.13.1",
"repository_url": "https://github.com/DavideCarvalho/nestjs-telescope",
"versions_count": 20,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 1903,
"first_published_at": "2026-06-04T16:57:18.144000Z",
"latest_published_at": "2026-07-10T18:29:22.739000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 12
}
]
},
"popularity": {
"forks": 0,
"stars": 3,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples",
"recipes"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"examples/basic-app/tsconfig.json",
"integration/memory-soak/tsconfig.json",
"packages/ai/tsconfig.json",
"packages/bullmq/tsconfig.json",
"packages/cache/tsconfig.json",
"packages/core/tsconfig.json",
"packages/events/tsconfig.json",
"packages/logs/tsconfig.json",
"packages/mail/tsconfig.json",
"packages/mikro-orm-watcher/tsconfig.json",
"packages/mikro-orm/tsconfig.json",
"packages/otel/tsconfig.json",
"packages/prisma/tsconfig.json",
"packages/redis-watcher/tsconfig.json",
"packages/redis/tsconfig.json",
"packages/schedule/tsconfig.json",
"packages/sqs/tsconfig.json",
"packages/testing/tsconfig.json",
"packages/typeorm/tsconfig.json",
"packages/ui/tsconfig.json",
"website/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 39340,
"source_files_sampled": 495,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json",
"website/package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@orama/orama",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^3.1.18"
},
{
"name": "fumadocs-core",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^16.9.3"
},
{
"name": "fumadocs-mdx",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^15.0.10"
},
{
"name": "fumadocs-ui",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^16.9.3"
},
{
"name": "lucide-react",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^1.17.0"
},
{
"name": "next",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^16.2.7"
},
{
"name": "react",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.6"
},
{
"name": "react-dom",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.6"
},
{
"name": "tailwind-merge",
"manifest": "website/package.json",
"ecosystem": "npm",
"version_constraint": "^3.6.0"
},
{
"name": "@dudousxd/nestjs-telescope",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "workspace:*"
},
{
"name": "@dudousxd/nestjs-telescope-cache",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "workspace:*"
},
{
"name": "@nestjs/common",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "@nestjs/core",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "@nestjs/platform-express",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "reflect-metadata",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "^0.2.2"
},
{
"name": "rxjs",
"manifest": "integration/memory-soak/package.json",
"ecosystem": "npm",
"version_constraint": "^7.8.1"
},
{
"name": "better-sqlite3",
"manifest": "packages/core/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "uuid",
"manifest": "packages/core/package.json",
"ecosystem": "npm",
"version_constraint": "^11.0.0"
},
{
"name": "zod",
"manifest": "packages/core/package.json",
"ecosystem": "npm",
"version_constraint": "^3.23.0"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 56,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "DavideCarvalho",
"commits": 94,
"avatar_url": "https://avatars.githubusercontent.com/u/15630886?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"aviary-redeploy.yml",
"check-skills.yml",
"ci.yml",
"docs.yml",
"release.yml"
],
"has_docs_dir": true,
"linter_configs": [
"biome.json"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 2,
"reason": "4 out of 16 merged PRs checked by a CI test -- score normalized to 2",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/16 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "44 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "009f1962bbc123ee222e5dd6e75d6e23df5c8d27",
"ran_at": "2026-07-23T01:29:19Z",
"aggregate_score": 2.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-18T16:41:24Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-17T19:04:10Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/DavideCarvalho/nestjs-telescope",
"host": "github.com",
"name": "nestjs-telescope",
"owner": "DavideCarvalho"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"security": 23,
"vitality": 76,
"community": 36,
"governance": 57,
"engineering": 81
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 76,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"commits_last_year": 474,
"human_commit_share": 0.74,
"days_since_last_push": 4,
"active_weeks_last_year": 8
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "8/52 weeks with commits",
"points": 5.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 8
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "474 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 474
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 100,
"latest_release_tag": "@dudousxd/nestjs-telescope@1.22.0",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 0.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 36,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 5,
"inputs": {
"forks": 0,
"stars": 3,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "3 stars",
"points": 4.9,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 3
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 68,
"inputs": {
"packages": [
"@dudousxd/nestjs-telescope-ai",
"@dudousxd/nestjs-telescope-ui",
"@dudousxd/nestjs-telescope-sqs",
"@dudousxd/nestjs-telescope",
"@dudousxd/nestjs-telescope-logs",
"@dudousxd/nestjs-telescope-mail",
"@dudousxd/nestjs-telescope-otel",
"@dudousxd/nestjs-telescope-cache"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 11602
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "11,602 downloads/month across npm",
"points": 54.2,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 11602,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 57,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 56,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "56/56 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 56,
"decided": 56
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/16 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"inputs": {
"followers": 66,
"owner_type": "User",
"is_verified": null,
"owner_login": "DavideCarvalho",
"public_repos": 112,
"account_age_days": 3914
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "66 followers of DavideCarvalho",
"points": 13.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 66,
"login": "DavideCarvalho"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "112 public repos, account ~10 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 112
}
},
{
"code": "account_age_years",
"params": {
"years": 10
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"@dudousxd/nestjs-telescope-ai",
"@dudousxd/nestjs-telescope-ui",
"@dudousxd/nestjs-telescope-sqs",
"@dudousxd/nestjs-telescope",
"@dudousxd/nestjs-telescope-logs",
"@dudousxd/nestjs-telescope-mail",
"@dudousxd/nestjs-telescope-otel",
"@dudousxd/nestjs-telescope-cache"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "8 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 8,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "35 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 35
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 81,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "biome.json",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "biome.json"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "4 out of 16 merged PRs checked by a CI test -- score normalized to 2",
"points": 4,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"bullmq",
"dashboard",
"debugging",
"mikro-orm",
"monitoring",
"nestjs",
"observability",
"telescope",
"typescript"
],
"has_wiki": true,
"homepage": "https://davidecarvalho.github.io/aviary/docs/telescope",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://davidecarvalho.github.io/aviary/docs/telescope",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "critical",
"name": "Security",
"value": 23,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 23,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 2.3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 16 merged PRs checked by a CI test -- score normalized to 2",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/16 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "44 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 59,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.986,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "73 of 74 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 73,
"sampled": 74
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"pnpm-lock.yaml"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"examples/basic-app/tsconfig.json",
"integration/memory-soak/tsconfig.json",
"packages/ai/tsconfig.json",
"packages/bullmq/tsconfig.json",
"packages/cache/tsconfig.json",
"packages/core/tsconfig.json",
"packages/events/tsconfig.json",
"packages/logs/tsconfig.json",
"packages/mail/tsconfig.json",
"packages/mikro-orm-watcher/tsconfig.json",
"packages/mikro-orm/tsconfig.json",
"packages/otel/tsconfig.json",
"packages/prisma/tsconfig.json",
"packages/redis-watcher/tsconfig.json",
"packages/redis/tsconfig.json",
"packages/schedule/tsconfig.json",
"packages/sqs/tsconfig.json",
"packages/testing/tsconfig.json",
"packages/typeorm/tsconfig.json",
"packages/ui/tsconfig.json",
"website/tsconfig.json"
],
"agent_commit_share": 0.2,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "biome.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "biome.json"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "examples/basic-app/tsconfig.json, integration/memory-soak/tsconfig.json, packages/ai/tsconfig.json, packages/bullmq/tsconfig.json, packages/cache/tsconfig.json, packages/core/tsconfig.json, packages/events/tsconfig.json, packages/logs/tsconfig.json, packages/mail/tsconfig.json, packages/mikro-orm-watcher/tsconfig.json, packages/mikro-orm/tsconfig.json, packages/otel/tsconfig.json, packages/prisma/tsconfig.json, packages/redis-watcher/tsconfig.json, packages/redis/tsconfig.json, packages/schedule/tsconfig.json, packages/sqs/tsconfig.json, packages/testing/tsconfig.json, packages/typeorm/tsconfig.json, packages/ui/tsconfig.json, website/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples/basic-app/tsconfig.json, integration/memory-soak/tsconfig.json, packages/ai/tsconfig.json, packages/bullmq/tsconfig.json, packages/cache/tsconfig.json, packages/core/tsconfig.json, packages/events/tsconfig.json, packages/logs/tsconfig.json, packages/mail/tsconfig.json, packages/mikro-orm-watcher/tsconfig.json, packages/mikro-orm/tsconfig.json, packages/otel/tsconfig.json, packages/prisma/tsconfig.json, packages/redis-watcher/tsconfig.json, packages/redis/tsconfig.json, packages/schedule/tsconfig.json, packages/sqs/tsconfig.json, packages/testing/tsconfig.json, packages/typeorm/tsconfig.json, packages/ui/tsconfig.json, website/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "20 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 20,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 39340,
"source_files_sampled": 495,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/495 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 495,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples",
"recipes"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples, recipes",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples, recipes"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"deps.dev does not index npm:@dudousxd/nestjs-telescope@1.22.0; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-23T01:29:30.741073Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/DavideCarvalho/nestjs-telescope.svg",
"full_name": "DavideCarvalho/nestjs-telescope",
"license_state": "standard",
"license_spdx": "MIT"
}