@adonis-agora/telescope 0.19.0 → 0.21.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 +100 -0
- package/README.md +1 -1
- package/dist/src/ai/index.d.ts +1 -1
- package/dist/src/ai/index.js +1 -1
- package/dist/src/alerts/exception_source.js +1 -1
- package/dist/src/alerts/exception_source.js.map +1 -1
- package/dist/src/alerts/index.d.ts +1 -1
- package/dist/src/alerts/index.js +1 -1
- package/dist/src/extension/types.d.ts +9 -7
- package/dist/src/extension/types.d.ts.map +1 -1
- package/dist/src/extension/types.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/index.d.ts +1 -1
- package/dist/src/mcp/index.js +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/metrics/metrics_service.d.ts +16 -2
- package/dist/src/metrics/metrics_service.d.ts.map +1 -1
- package/dist/src/metrics/metrics_service.js +35 -9
- package/dist/src/metrics/metrics_service.js.map +1 -1
- package/dist/src/metrics/pulse.js +1 -1
- package/dist/src/metrics/pulse.js.map +1 -1
- package/dist/src/profiling/index.d.ts +1 -1
- package/dist/src/profiling/index.js +1 -1
- package/dist/src/store.d.ts +20 -9
- package/dist/src/store.d.ts.map +1 -1
- package/dist/src/stores/lucid.d.ts +1 -1
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +11 -7
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/stores/memory.d.ts.map +1 -1
- package/dist/src/stores/memory.js +9 -6
- package/dist/src/stores/memory.js.map +1 -1
- package/dist/src/ui/api.d.ts +3 -2
- package/dist/src/ui/api.d.ts.map +1 -1
- package/dist/src/ui/api.js +31 -30
- package/dist/src/ui/api.js.map +1 -1
- package/dist/src/ui/define_config.d.ts +40 -4
- package/dist/src/ui/define_config.d.ts.map +1 -1
- package/dist/src/ui/define_config.js.map +1 -1
- package/dist/src/ui/ext_table.d.ts +8 -5
- package/dist/src/ui/ext_table.d.ts.map +1 -1
- package/dist/src/ui/ext_table.js +4 -4
- package/dist/src/ui/ext_table.js.map +1 -1
- package/dist/src/ui/guard.d.ts +13 -4
- package/dist/src/ui/guard.d.ts.map +1 -1
- package/dist/src/ui/guard.js +21 -6
- package/dist/src/ui/guard.js.map +1 -1
- package/dist/src/ui/index.d.ts +1 -1
- package/dist/src/ui/index.js +1 -1
- package/dist/src/ui/profiles_api.js +1 -1
- package/dist/src/ui/profiles_api.js.map +1 -1
- package/dist/src/ui/schedules_api.js +1 -1
- package/dist/src/ui/schedules_api.js.map +1 -1
- package/dist/src/watchers/index.d.ts +1 -1
- package/dist/src/watchers/index.js +1 -1
- package/package.json +11 -11
- package/skills/telescope-setup/SKILL.md +2 -2
- package/skills/telescope-storage-retention/SKILL.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/ui/define_config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/ui/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,21 +7,24 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* The provider payload for a `{ kind: 'table', paged: true }` panel — the shape
|
|
9
9
|
* a {@link DataProvider} MUST return when the panel opts into paging. `page` /
|
|
10
|
-
* `
|
|
10
|
+
* `size` normally echo the requested `query.page` / `query.size` (the ecosystem's
|
|
11
|
+
* `{ page, size }` pagination pair, mirroring `@adonis-agora/filter`); `total` is
|
|
11
12
|
* the full, unpaginated row count so the UI can render "page X of Y".
|
|
12
13
|
*/
|
|
13
14
|
export interface PagedTableData {
|
|
14
15
|
rows?: Array<Record<string, unknown>>;
|
|
15
16
|
total?: number;
|
|
17
|
+
/** 1-based page number. */
|
|
16
18
|
page?: number;
|
|
17
|
-
|
|
19
|
+
/** Page size. */
|
|
20
|
+
size?: number;
|
|
18
21
|
}
|
|
19
22
|
/** The pager state the UI renders from a {@link PagedTableData} payload. */
|
|
20
23
|
export interface TablePagination {
|
|
21
24
|
/** Current 1-based page (clamped to >= 1). */
|
|
22
25
|
page: number;
|
|
23
|
-
/**
|
|
24
|
-
|
|
26
|
+
/** Page size (rows-per-page) used to compute the page count. */
|
|
27
|
+
size: number;
|
|
25
28
|
/** Full unpaginated row count. */
|
|
26
29
|
total: number;
|
|
27
30
|
/** Number of pages (>= 1). */
|
|
@@ -33,7 +36,7 @@ export interface TablePagination {
|
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Normalize a paged provider payload into pager state: clamp `page` to >= 1,
|
|
36
|
-
* derive `
|
|
39
|
+
* derive `size`/`total` defensively (so a provider echoing only `rows` still
|
|
37
40
|
* renders one page), and compute `totalPages` + prev/next availability.
|
|
38
41
|
*/
|
|
39
42
|
export declare function tablePagination(data: PagedTableData): TablePagination;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ext_table.d.ts","sourceRoot":"","sources":["../../../src/ui/ext_table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"ext_table.d.ts","sourceRoot":"","sources":["../../../src/ui/ext_table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAcrE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAK/E"}
|
package/dist/src/ui/ext_table.js
CHANGED
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* Normalize a paged provider payload into pager state: clamp `page` to >= 1,
|
|
9
|
-
* derive `
|
|
9
|
+
* derive `size`/`total` defensively (so a provider echoing only `rows` still
|
|
10
10
|
* renders one page), and compute `totalPages` + prev/next availability.
|
|
11
11
|
*/
|
|
12
12
|
export function tablePagination(data) {
|
|
13
13
|
const rows = data.rows ?? [];
|
|
14
14
|
const page = Math.max(1, data.page ?? 1);
|
|
15
|
-
const
|
|
15
|
+
const size = data.size && data.size > 0 ? data.size : rows.length || 1;
|
|
16
16
|
const total = data.total ?? rows.length;
|
|
17
|
-
const totalPages = Math.max(1, Math.ceil(total /
|
|
17
|
+
const totalPages = Math.max(1, Math.ceil(total / size));
|
|
18
18
|
return {
|
|
19
19
|
page,
|
|
20
|
-
|
|
20
|
+
size,
|
|
21
21
|
total,
|
|
22
22
|
totalPages,
|
|
23
23
|
hasPrev: page > 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ext_table.js","sourceRoot":"","sources":["../../../src/ui/ext_table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"ext_table.js","sourceRoot":"","sources":["../../../src/ui/ext_table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkCH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAoB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,UAAU;QACV,OAAO,EAAE,IAAI,GAAG,CAAC;QACjB,OAAO,EAAE,IAAI,GAAG,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAA4B;IACrE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,kBAAkB,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/ui/guard.d.ts
CHANGED
|
@@ -15,10 +15,19 @@ export interface GuardResult {
|
|
|
15
15
|
* decision into a {@link GuardResult}. Framework-light: takes the same minimal
|
|
16
16
|
* HTTP context the handlers do, so it is unit-testable without a server.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* The hook may return a bare `boolean` OR an {@link AuthorizeDecision}
|
|
19
|
+
* (`{ allowed, reason? }`) — see that type for the full rationale. A denial's status is decided,
|
|
20
|
+
* in order:
|
|
21
|
+
* 1. An explicit `reason` on an {@link AuthorizeDecision} wins outright: `'unauthenticated'` → `401`,
|
|
22
|
+
* `'forbidden'` → `403`. This is the escape hatch for a hook that authenticates some way the guard
|
|
23
|
+
* cannot see by inspecting the request (a session cookie, most commonly — e.g.
|
|
24
|
+
* `@adonis-agora/authz`'s `authorizeByRoles`).
|
|
25
|
+
* 2. Otherwise (a bare `false`, or `{ allowed: false }` with no `reason`) the REQUEST-SHAPE heuristic
|
|
26
|
+
* this guard has always used runs: **401** when the request presented NO credential at all (an
|
|
27
|
+
* `Authorization` header is absent and no `?token`) — prompts the host/browser to authenticate;
|
|
28
|
+
* **403** when a credential WAS presented but rejected (wrong token/password). Built for this
|
|
29
|
+
* library's own `credentials: { token, basic }` gate, where "no credential in the request" and
|
|
30
|
+
* "not authenticated" are the same fact — a hook authenticating another way should prefer (1).
|
|
22
31
|
*
|
|
23
32
|
* Any error thrown by a custom `authorize` hook fails closed (403) rather than
|
|
24
33
|
* leaking the dashboard.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/ui/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/ui/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAWjG;AAED,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,YAAY,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACxD,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
|
package/dist/src/ui/guard.js
CHANGED
|
@@ -4,24 +4,39 @@ import { resolveAccessDeniedPage, } from './access_denied_page.js';
|
|
|
4
4
|
* decision into a {@link GuardResult}. Framework-light: takes the same minimal
|
|
5
5
|
* HTTP context the handlers do, so it is unit-testable without a server.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* The hook may return a bare `boolean` OR an {@link AuthorizeDecision}
|
|
8
|
+
* (`{ allowed, reason? }`) — see that type for the full rationale. A denial's status is decided,
|
|
9
|
+
* in order:
|
|
10
|
+
* 1. An explicit `reason` on an {@link AuthorizeDecision} wins outright: `'unauthenticated'` → `401`,
|
|
11
|
+
* `'forbidden'` → `403`. This is the escape hatch for a hook that authenticates some way the guard
|
|
12
|
+
* cannot see by inspecting the request (a session cookie, most commonly — e.g.
|
|
13
|
+
* `@adonis-agora/authz`'s `authorizeByRoles`).
|
|
14
|
+
* 2. Otherwise (a bare `false`, or `{ allowed: false }` with no `reason`) the REQUEST-SHAPE heuristic
|
|
15
|
+
* this guard has always used runs: **401** when the request presented NO credential at all (an
|
|
16
|
+
* `Authorization` header is absent and no `?token`) — prompts the host/browser to authenticate;
|
|
17
|
+
* **403** when a credential WAS presented but rejected (wrong token/password). Built for this
|
|
18
|
+
* library's own `credentials: { token, basic }` gate, where "no credential in the request" and
|
|
19
|
+
* "not authenticated" are the same fact — a hook authenticating another way should prefer (1).
|
|
11
20
|
*
|
|
12
21
|
* Any error thrown by a custom `authorize` hook fails closed (403) rather than
|
|
13
22
|
* leaking the dashboard.
|
|
14
23
|
*/
|
|
15
24
|
export async function runGuard(ctx, authorize) {
|
|
16
|
-
let
|
|
25
|
+
let result;
|
|
17
26
|
try {
|
|
18
|
-
|
|
27
|
+
result = await authorize(ctx);
|
|
19
28
|
}
|
|
20
29
|
catch {
|
|
21
30
|
return { allowed: false, status: 403, message: 'Forbidden' };
|
|
22
31
|
}
|
|
32
|
+
const allowed = typeof result === 'boolean' ? result : result.allowed;
|
|
23
33
|
if (allowed)
|
|
24
34
|
return { allowed: true };
|
|
35
|
+
const reason = typeof result === 'boolean' ? undefined : result.reason;
|
|
36
|
+
if (reason === 'unauthenticated')
|
|
37
|
+
return { allowed: false, status: 401, message: 'Unauthorized' };
|
|
38
|
+
if (reason === 'forbidden')
|
|
39
|
+
return { allowed: false, status: 403, message: 'Forbidden' };
|
|
25
40
|
const presentedCredential = ctx.request.header('authorization') !== undefined || typeof ctx.request.qs().token === 'string';
|
|
26
41
|
return presentedCredential
|
|
27
42
|
? { allowed: false, status: 403, message: 'Forbidden' }
|
package/dist/src/ui/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/ui/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAcjC
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/ui/guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAcjC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAkB,EAAE,SAAwB;IACzE,IAAI,MAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACtE,IAAI,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEtC,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACvE,IAAI,MAAM,KAAK,iBAAiB;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAClG,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAEzF,MAAM,mBAAmB,GACvB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC;IAElG,OAAO,mBAAmB;QACxB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE;QACvD,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB,EAAE,SAAwB;IAC7E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;IAC7E,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAqBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAkB,EAClB,SAAwB,EACxB,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACjD,MAAM,IAAI,GAAqB;QAC7B,MAAM;QACN,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEhC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAClD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;IAC7E,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;IAChE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;IAClE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAIpB,CAAC;IACF,OAAO,QAAQ,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;AAClG,CAAC"}
|
package/dist/src/ui/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.21.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';
|
package/dist/src/ui/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.
|
|
2
|
+
export const VERSION = '0.21.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 —
|
|
@@ -41,7 +41,7 @@ export class ProfilesApi {
|
|
|
41
41
|
return notConfigured(ctx);
|
|
42
42
|
const limitRaw = ctx.request.qs().limit;
|
|
43
43
|
const limit = typeof limitRaw === 'string' && Number.isFinite(Number(limitRaw)) ? Number(limitRaw) : 100;
|
|
44
|
-
const entries = await this.service.list({ type: EntryType.CpuProfile, limit });
|
|
44
|
+
const entries = await this.service.list({ type: EntryType.CpuProfile, size: limit });
|
|
45
45
|
const data = entries.map(toSummary);
|
|
46
46
|
return ctx.response
|
|
47
47
|
.status(200)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles_api.js","sourceRoot":"","sources":["../../../src/ui/profiles_api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,EAAqB,SAAS,EAAE,MAAM,UAAU,CAAC;AASxD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAW;IAEH,OAAO;IACP,QAAQ;IAF3B,YACmB,OAAyB,EACzB,QAAgC;uBADhC,OAAO;wBACP,QAAQ;IACxB,CAAC;IAEJ,4EAA4E;IAC5E,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED,oFAAoF;IACpF,MAAM,CAAC,GAAkB;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,IAAI,GAAmB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,GAAkB;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;QACxC,MAAM,KAAK,GACT,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles_api.js","sourceRoot":"","sources":["../../../src/ui/profiles_api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,EAAqB,SAAS,EAAE,MAAM,UAAU,CAAC;AASxD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAW;IAEH,OAAO;IACP,QAAQ;IAF3B,YACmB,OAAyB,EACzB,QAAgC;uBADhC,OAAO;wBACP,QAAQ;IACxB,CAAC;IAEJ,4EAA4E;IAC5E,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED,oFAAoF;IACpF,MAAM,CAAC,GAAkB;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,IAAI,GAAmB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,GAAkB;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;QACxC,MAAM,KAAK,GACT,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,MAAM,IAAI,GAAmB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,GAAG,CAAC,QAAQ;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,sGAAsG;IACtG,KAAK,CAAC,IAAI,CAAC,GAAkB,EAAE,EAAU;QACvC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1D,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,KAAiC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,GAAkB,EAAE,IAAoB;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnC,KAAK,EAAE,0EAA0E;aAClF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,SAAS,aAAa,CAAC,GAAkB;IACvC,OAAO,GAAG,CAAC,QAAQ;SAChB,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -27,7 +27,7 @@ export class SchedulesApi {
|
|
|
27
27
|
}
|
|
28
28
|
async withLastRun(reg) {
|
|
29
29
|
// Newest-first + familyHash exact match + limit 1 ⇒ the single most recent run of this task.
|
|
30
|
-
const [last] = await this.service.list({ familyHash: `schedule:${reg.name}`,
|
|
30
|
+
const [last] = await this.service.list({ familyHash: `schedule:${reg.name}`, size: 1 });
|
|
31
31
|
const content = last?.content;
|
|
32
32
|
return {
|
|
33
33
|
name: reg.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedules_api.js","sourceRoot":"","sources":["../../../src/ui/schedules_api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,iCAAiC,CAAC;AAyBnG;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IACM,OAAO;IAApC,YAA6B,OAAyB;uBAAzB,OAAO;IAAqB,CAAC;IAE1D,6FAA6F;IAC7F,KAAK,CAAC,IAAI,CAAC,GAAkB;QAC3B,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,QAAQ;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAuB;QAC/C,6FAA6F;QAC7F,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"schedules_api.js","sourceRoot":"","sources":["../../../src/ui/schedules_api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,iCAAiC,CAAC;AAyBnG;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IACM,OAAO;IAApC,YAA6B,OAAyB;uBAAzB,OAAO;IAAqB,CAAC;IAE1D,6FAA6F;IAC7F,KAAK,CAAC,IAAI,CAAC,GAAkB;QAC3B,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,QAAQ;aAChB,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAuB;QAC/C,6FAA6F;QAC7F,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,EAAE,OAA2C,CAAC;QAClE,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9C,cAAc,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI;YAC/D,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;SACpC,CAAC;IACJ,CAAC;CACF;AAED,SAAS,KAAK,CAAC,KAAoB;IACjC,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.21.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.
|
|
2
|
+
export const VERSION = '0.21.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.
|
|
3
|
+
"version": "0.21.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": {
|
|
@@ -160,24 +160,24 @@
|
|
|
160
160
|
}
|
|
161
161
|
},
|
|
162
162
|
"devDependencies": {
|
|
163
|
-
"@adonisjs/assembler": "8.5.
|
|
163
|
+
"@adonisjs/assembler": "8.5.1",
|
|
164
164
|
"@adonisjs/core": "7.5.0",
|
|
165
165
|
"@adonisjs/lucid": "22.4.2",
|
|
166
|
-
"@anthropic-ai/sdk": "0.
|
|
166
|
+
"@anthropic-ai/sdk": "0.124.0",
|
|
167
167
|
"@opentelemetry/api": "1.9.1",
|
|
168
|
-
"@opentelemetry/exporter-logs-otlp-http": "0.
|
|
169
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.
|
|
170
|
-
"@opentelemetry/resources": "2.
|
|
171
|
-
"@opentelemetry/sdk-logs": "0.
|
|
172
|
-
"@opentelemetry/sdk-trace-base": "2.
|
|
173
|
-
"@tanstack/intent": "^0.
|
|
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",
|
|
174
174
|
"@types/better-sqlite3": "9.6.0",
|
|
175
|
-
"@types/node": "26.4.
|
|
175
|
+
"@types/node": "26.4.1",
|
|
176
176
|
"better-sqlite3": "13.0.3",
|
|
177
177
|
"cron-parser": "5.10.0",
|
|
178
178
|
"luxon": "3.7.2",
|
|
179
179
|
"typescript": "7.0.2",
|
|
180
|
-
"vitest": "
|
|
180
|
+
"vitest": "5.0.0"
|
|
181
181
|
},
|
|
182
182
|
"engines": {
|
|
183
183
|
"node": ">=20.6.0"
|
|
@@ -65,7 +65,7 @@ import { TelescopeService } from '@adonis-agora/telescope'
|
|
|
65
65
|
|
|
66
66
|
const telescope = await app.container.make(TelescopeService)
|
|
67
67
|
|
|
68
|
-
await telescope.list({ type: 'request',
|
|
68
|
+
await telescope.list({ type: 'request', size: 50 }) // newest-first
|
|
69
69
|
await telescope.byTrace('abc123') // one request's whole story
|
|
70
70
|
await telescope.list({ tag: 'lib:billing', search: 'invoice' })
|
|
71
71
|
await telescope.topFamilies(10, 'diagnostic') // busiest lib:event pairs
|
|
@@ -89,7 +89,7 @@ export default class InspectorController {
|
|
|
89
89
|
constructor(private telescope: TelescopeService) {}
|
|
90
90
|
|
|
91
91
|
async index({ response }: HttpContext) {
|
|
92
|
-
return response.json(await this.telescope.list({
|
|
92
|
+
return response.json(await this.telescope.list({ size: 50 }))
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
```
|
|
@@ -70,7 +70,7 @@ newest-first.
|
|
|
70
70
|
import { TelescopeService } from '@adonis-agora/telescope'
|
|
71
71
|
|
|
72
72
|
const telescope = await app.container.make(TelescopeService)
|
|
73
|
-
await telescope.list({ type: 'query', search: 'users',
|
|
73
|
+
await telescope.list({ type: 'query', search: 'users', size: 50 })
|
|
74
74
|
await telescope.list({ tag: 'status:500', after: oneHourAgo })
|
|
75
75
|
await telescope.list({ familyHash: 'billing:invoice-paid' })
|
|
76
76
|
```
|