@adonis-agora/telescope 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @adonis-agora/telescope
2
2
 
3
+ ## 0.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#184](https://github.com/DavideCarvalho/adonis-agora-telescope/pull/184) [`01f7971`](https://github.com/DavideCarvalho/adonis-agora-telescope/commit/01f7971a23fe5f3ab0822e4377c89acb65cf10c2) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Drop Node.js 20 and 22: `engines.node` is now `>=24`. Node 20 reached end-of-life on 2026-04-30, and AdonisJS 7, which these packages require as a peer, needs Node 24 or later (`@adonisjs/core` declares `engines.node >=24.0.0`). The supported lines are the ones Node still maintains that AdonisJS 7 accepts: 24 and 26, both tested in CI.
8
+
9
+ ## 0.21.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`dce73c7`](https://github.com/DavideCarvalho/adonis-agora-telescope/commit/dce73c7475723ec9cedff9b0c35ac88396bc2a45) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Point the `DiagnosticEvent.durationMs` doc link at the OTel mapper's real path
14
+
15
+ The JSDoc on `DiagnosticEvent.durationMs` linked the OTel bridge as
16
+ `{@link ../otel/mapper.js}`. `diagnostics_registry.ts` sits in `packages/core/src/`,
17
+ so that path resolves to `packages/core/otel/mapper.js`, which does not exist — the
18
+ mapper is `packages/core/src/otel/mapper.ts`, one level down, not up. Now `./otel/mapper.js`.
19
+
3
20
  ## 0.21.0
4
21
 
5
22
  ### Minor Changes
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # `@adonis-agora/telescope`
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@adonis-agora/telescope)](https://www.npmjs.com/package/@adonis-agora/telescope) [![npm downloads](https://img.shields.io/npm/dm/@adonis-agora/telescope)](https://www.npmjs.com/package/@adonis-agora/telescope) [![CI](https://github.com/DavideCarvalho/adonis-agora-telescope/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/DavideCarvalho/adonis-agora-telescope/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/@adonis-agora/telescope)](https://www.npmjs.com/package/@adonis-agora/telescope)
4
+
3
5
  Laravel Telescope-style **headless** observability for AdonisJS — records every
4
6
  HTTP request and every `agora:<lib>:<event>` diagnostics publish as a queryable
5
7
  entry.
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export type { ResolvedTelescopeAiConfig, TelescopeAiConfig, } from './define_config.js';
4
4
  export { DEFAULT_MAX_TOKENS, DEFAULT_MODEL, defineConfig, resolveConfig, } from './define_config.js';
5
5
  export type { Diagnosis, DiagnosisConfidence, ExceptionEntryContent } from './diagnoser.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // — config —
4
4
  export { DEFAULT_MAX_TOKENS, DEFAULT_MODEL, defineConfig, resolveConfig, } from './define_config.js';
5
5
  // — diagnosis model + parsing —
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export type { AlertChannel, ChannelFetch, ConsoleSink } from './alert_channel.js';
4
4
  export { consoleChannel, customChannel, slackChannel, webhookChannel, } from './alert_channel.js';
5
5
  export type { AlertDiagnosis, AlertGeoLocation, AlertMetric, AlertPayload, AlertRule, ExceptionAlertContext, GeoLookup, ResolvedAlerts, } from './alert_rule.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // — channels —
4
4
  export { consoleChannel, customChannel, slackChannel, webhookChannel, } from './alert_channel.js';
5
5
  // — alerter (exception source → tracker → channels) —
@@ -60,7 +60,7 @@ export interface DiagnosticEvent<TPayload = unknown> {
60
60
  * when known — stamped by `@adonis-agora/diagnostics`'s `emit(..., { durationMs })`.
61
61
  * Absent on a point-in-time event with no associated duration, and on envelopes
62
62
  * from an `@adonis-agora/diagnostics` version that predates this field. Read by the
63
- * OTel bridge ({@link ../otel/mapper.js}) to decide span-vs-log; see its docs for
63
+ * OTel bridge ({@link ./otel/mapper.js}) to decide span-vs-log; see its docs for
64
64
  * the full mapping (including the `payload.durationMs` fallback some libs use).
65
65
  */
66
66
  durationMs?: number;
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export { configure } from '../configure.js';
4
4
  export type { DiagnoserLike, DiagnosisCoordinatorOptions, DiagnosisSummary, } from './ai/diagnosis_coordinator.js';
5
5
  export { DiagnosisCoordinator, formatDiagnosisMarkdown, } from './ai/diagnosis_coordinator.js';
package/dist/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // Re-export the configure hook from the package root so `node ace configure` finds it
4
4
  export { configure } from '../configure.js';
5
5
  // — AI diagnosis coordinator (wires the MCP tool + the alerter; SDK-free) —
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export type { McpToolName, ResolvedTelescopeMcpConfig, TelescopeMcpConfig, } from './define_config.js';
4
4
  export { defineConfig, MCP_TOOL_NAMES, resolveConfig } from './define_config.js';
5
5
  export type { DiagnoseExceptionHook, JsonRpcRequest, McpToolSpec, TelescopeMcpServerOptions, } from './server.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // — config —
4
4
  export { defineConfig, MCP_TOOL_NAMES, resolveConfig } from './define_config.js';
5
5
  // — server (plain, testable JSON-RPC surface) —
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export { aggregateCpuProfile } from './aggregate-profile.js';
4
4
  export type { CpuProfilerOptions, CpuProfilerResult, InspectorSessionLike, SessionFactory, } from './cpu-profiler.js';
5
5
  export { CpuProfiler, defaultSessionFactory } from './cpu-profiler.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  export { aggregateCpuProfile } from './aggregate-profile.js';
4
4
  export { CpuProfiler, defaultSessionFactory } from './cpu-profiler.js';
5
5
  export { defineConfig, resolveConfig } from './define_config.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export type { AccessDeniedInfo, AccessDeniedPageOptions, AccessDeniedReason, } from './access_denied_page.js';
4
4
  export { CONSOLE as ACCESS_DENIED_CONSOLE, escapeHtml, renderAccessDeniedPage, resolveAccessDeniedPage, } from './access_denied_page.js';
5
5
  export type { EntrySummary, RetentionInfo, RetentionOptions, RetentionPruneOptions, RetentionSamplingRate, } from './api.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // — the built-in "access denied" page (what a browser sees on a refused page navigation) —
4
4
  export { CONSOLE as ACCESS_DENIED_CONSOLE, escapeHtml, renderAccessDeniedPage, resolveAccessDeniedPage, } from './access_denied_page.js';
5
5
  // — JSON API —
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.21.0";
2
+ export declare const VERSION = "0.22.0";
3
3
  export type { CacheEntryContent, CacheEventLike, CacheOperation } from './cache_watcher.js';
4
4
  export { buildCacheEntry, CACHE_EVENTS, CacheWatcher } from './cache_watcher.js';
5
5
  export { nextCronRunMs } from './cron_next_run.js';
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.21.0';
2
+ export const VERSION = '0.22.0';
3
3
  // — cache watcher —
4
4
  export { buildCacheEntry, CACHE_EVENTS, CacheWatcher } from './cache_watcher.js';
5
5
  export { nextCronRunMs } from './cron_next_run.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/telescope",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Laravel Telescope-style headless observability for AdonisJS — records HTTP requests and every Agora diagnostics event as queryable entries, plus opt-in subpaths for per-technology watchers, a web dashboard, AI exception diagnosis, and alerting.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -8,6 +8,23 @@
8
8
  "url": "git+https://github.com/DavideCarvalho/adonis-agora-telescope.git",
9
9
  "directory": "packages/core"
10
10
  },
11
+ "homepage": "https://davidecarvalho.github.io/agora/docs/telescope",
12
+ "bugs": {
13
+ "url": "https://github.com/DavideCarvalho/adonis-agora-telescope/issues"
14
+ },
15
+ "keywords": [
16
+ "adonisjs",
17
+ "adonis",
18
+ "telescope",
19
+ "observability",
20
+ "diagnostics",
21
+ "tracing",
22
+ "agora",
23
+ "tanstack-intent",
24
+ "opentelemetry",
25
+ "otlp",
26
+ "grafana"
27
+ ],
11
28
  "author": "Davi Carvalho <davi@goflip.ai>",
12
29
  "type": "module",
13
30
  "main": "./dist/src/index.js",
@@ -160,41 +177,28 @@
160
177
  }
161
178
  },
162
179
  "devDependencies": {
163
- "@adonisjs/assembler": "8.5.1",
164
- "@adonisjs/core": "7.5.0",
180
+ "@adonisjs/assembler": "8.5.2",
181
+ "@adonisjs/core": "7.6.0",
165
182
  "@adonisjs/lucid": "22.4.2",
166
- "@anthropic-ai/sdk": "0.124.0",
183
+ "@anthropic-ai/sdk": "0.133.0",
167
184
  "@opentelemetry/api": "1.9.1",
168
- "@opentelemetry/exporter-logs-otlp-http": "0.222.0",
169
- "@opentelemetry/exporter-trace-otlp-http": "0.222.0",
170
- "@opentelemetry/resources": "2.11.0",
171
- "@opentelemetry/sdk-logs": "0.222.0",
172
- "@opentelemetry/sdk-trace-base": "2.11.0",
173
- "@tanstack/intent": "^0.4.0",
185
+ "@opentelemetry/exporter-logs-otlp-http": "0.223.0",
186
+ "@opentelemetry/exporter-trace-otlp-http": "0.223.0",
187
+ "@opentelemetry/resources": "2.12.0",
188
+ "@opentelemetry/sdk-logs": "0.223.0",
189
+ "@opentelemetry/sdk-trace-base": "2.12.0",
190
+ "@tanstack/intent": "0.5.5",
174
191
  "@types/better-sqlite3": "9.6.0",
175
- "@types/node": "26.4.1",
192
+ "@types/node": "26.6.5",
176
193
  "better-sqlite3": "13.0.3",
177
- "cron-parser": "5.10.0",
194
+ "cron-parser": "5.10.2",
178
195
  "luxon": "3.7.2",
179
196
  "typescript": "7.0.2",
180
- "vitest": "5.0.0"
197
+ "vitest": "5.0.4"
181
198
  },
182
199
  "engines": {
183
- "node": ">=20.6.0"
200
+ "node": ">=24"
184
201
  },
185
- "keywords": [
186
- "adonisjs",
187
- "adonis",
188
- "telescope",
189
- "observability",
190
- "diagnostics",
191
- "tracing",
192
- "agora",
193
- "tanstack-intent",
194
- "opentelemetry",
195
- "otlp",
196
- "grafana"
197
- ],
198
202
  "scripts": {
199
203
  "build": "tsc -p tsconfig.json && pnpm run copy:stubs",
200
204
  "copy:stubs": "mkdir -p dist/stubs && cp -R stubs/config dist/stubs/ && cp -R stubs/database dist/stubs/",