@farmslot/protocol 0.76.0 → 0.77.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 +22 -0
- package/dist/client-cache/cache.d.ts.map +1 -1
- package/dist/client-cache/cache.js +174 -14
- package/dist/client-cache/cache.js.map +1 -1
- package/dist/client-cache/command-method.d.ts +1 -1
- package/dist/client-cache/command-method.d.ts.map +1 -1
- package/dist/client-cache/command-method.js +2 -0
- package/dist/client-cache/command-method.js.map +1 -1
- package/dist/client-cache/index.d.ts +1 -1
- package/dist/client-cache/index.d.ts.map +1 -1
- package/dist/client-cache/index.js +1 -1
- package/dist/client-cache/index.js.map +1 -1
- package/dist/client-cache/prefetch.d.ts +13 -1
- package/dist/client-cache/prefetch.d.ts.map +1 -1
- package/dist/client-cache/prefetch.js +88 -26
- package/dist/client-cache/prefetch.js.map +1 -1
- package/dist/client-cache/read-stored.d.ts +5 -1
- package/dist/client-cache/read-stored.d.ts.map +1 -1
- package/dist/client-cache/read-stored.js +64 -1
- package/dist/client-cache/read-stored.js.map +1 -1
- package/dist/client-cache/registry.d.ts +29 -1
- package/dist/client-cache/registry.d.ts.map +1 -1
- package/dist/client-cache/registry.js +55 -4
- package/dist/client-cache/registry.js.map +1 -1
- package/dist/client-cache/store.d.ts +2 -0
- package/dist/client-cache/store.d.ts.map +1 -1
- package/dist/client-cache/store.js +9 -1
- package/dist/client-cache/store.js.map +1 -1
- package/dist/client-cache/transport.d.ts +3 -1
- package/dist/client-cache/transport.d.ts.map +1 -1
- package/dist/client-cache/transport.js +2 -1
- package/dist/client-cache/transport.js.map +1 -1
- package/dist/client-cache/types.d.ts +8 -1
- package/dist/client-cache/types.d.ts.map +1 -1
- package/dist/contracts/agents.d.ts +5 -2
- package/dist/contracts/agents.d.ts.map +1 -1
- package/dist/contracts/agents.js.map +1 -1
- package/dist/contracts/config.d.ts +3 -0
- package/dist/contracts/config.d.ts.map +1 -1
- package/dist/contracts/config.js +5 -1
- package/dist/contracts/config.js.map +1 -1
- package/dist/contracts/family.d.ts +55 -3
- package/dist/contracts/family.d.ts.map +1 -1
- package/dist/contracts/family.js.map +1 -1
- package/dist/contracts/review-workspace.d.ts +23 -1
- package/dist/contracts/review-workspace.d.ts.map +1 -1
- package/dist/contracts/review-workspace.js +3 -0
- package/dist/contracts/review-workspace.js.map +1 -1
- package/dist/contracts/reviews.d.ts +1 -0
- package/dist/contracts/reviews.d.ts.map +1 -1
- package/dist/contracts/reviews.js.map +1 -1
- package/dist/contracts/runs.d.ts +45 -5
- package/dist/contracts/runs.d.ts.map +1 -1
- package/dist/contracts/runs.js.map +1 -1
- package/dist/contracts/runtime-capabilities.d.ts +9 -0
- package/dist/contracts/runtime-capabilities.d.ts.map +1 -1
- package/dist/contracts/runtime-capabilities.js.map +1 -1
- package/dist/contracts/slot-recovery.d.ts +2 -2
- package/dist/contracts/slot-recovery.d.ts.map +1 -1
- package/dist/contracts/slot-recovery.js +5 -3
- package/dist/contracts/slot-recovery.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/performance/client.d.ts +18 -0
- package/dist/performance/client.d.ts.map +1 -0
- package/dist/performance/client.js +66 -0
- package/dist/performance/client.js.map +1 -0
- package/dist/performance/histogram.d.ts +5 -0
- package/dist/performance/histogram.d.ts.map +1 -0
- package/dist/performance/histogram.js +38 -0
- package/dist/performance/histogram.js.map +1 -0
- package/dist/performance/index.d.ts +10 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +10 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/paint.d.ts +3 -0
- package/dist/performance/paint.d.ts.map +1 -0
- package/dist/performance/paint.js +14 -0
- package/dist/performance/paint.js.map +1 -0
- package/dist/performance/prometheus.d.ts +3 -0
- package/dist/performance/prometheus.d.ts.map +1 -0
- package/dist/performance/prometheus.js +53 -0
- package/dist/performance/prometheus.js.map +1 -0
- package/dist/performance/ranking.d.ts +26 -0
- package/dist/performance/ranking.d.ts.map +1 -0
- package/dist/performance/ranking.js +92 -0
- package/dist/performance/ranking.js.map +1 -0
- package/dist/performance/recorder.d.ts +43 -0
- package/dist/performance/recorder.d.ts.map +1 -0
- package/dist/performance/recorder.js +352 -0
- package/dist/performance/recorder.js.map +1 -0
- package/dist/performance/types.d.ts +93 -0
- package/dist/performance/types.d.ts.map +1 -0
- package/dist/performance/types.js +40 -0
- package/dist/performance/types.js.map +1 -0
- package/dist/performance/validation.d.ts +3 -0
- package/dist/performance/validation.d.ts.map +1 -0
- package/dist/performance/validation.js +55 -0
- package/dist/performance/validation.js.map +1 -0
- package/dist/recipes/step-io.d.ts +2 -0
- package/dist/recipes/step-io.d.ts.map +1 -1
- package/dist/recipes/step-io.js.map +1 -1
- package/dist/rpc/auth.d.ts +1 -0
- package/dist/rpc/auth.d.ts.map +1 -1
- package/dist/rpc/auth.js.map +1 -1
- package/dist/rpc/fs.d.ts +2 -0
- package/dist/rpc/fs.d.ts.map +1 -1
- package/dist/rpc/fs.js +2 -0
- package/dist/rpc/fs.js.map +1 -1
- package/dist/rpc/index.d.ts +1 -0
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +1 -0
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/performance.d.ts +6 -0
- package/dist/rpc/performance.d.ts.map +1 -0
- package/dist/rpc/performance.js +2 -0
- package/dist/rpc/performance.js.map +1 -0
- package/dist/rpc/registry.d.ts +2 -0
- package/dist/rpc/registry.d.ts.map +1 -1
- package/dist/rpc/registry.js +2 -0
- package/dist/rpc/registry.js.map +1 -1
- package/dist/rpc/run.d.ts +4 -0
- package/dist/rpc/run.d.ts.map +1 -1
- package/dist/rpc/runtime-capabilities.d.ts +6 -0
- package/dist/rpc/runtime-capabilities.d.ts.map +1 -1
- package/dist/rpc/runtime-capabilities.js.map +1 -1
- package/dist/rpc/slot.d.ts +2 -0
- package/dist/rpc/slot.d.ts.map +1 -1
- package/dist/rpc/tmux.d.ts +1 -1
- package/dist/rpc/tmux.d.ts.map +1 -1
- package/dist/runs/list-trim.d.ts.map +1 -1
- package/dist/runs/list-trim.js +1 -19
- package/dist/runs/list-trim.js.map +1 -1
- package/dist/surfaces/run-view-state.d.ts +22 -0
- package/dist/surfaces/run-view-state.d.ts.map +1 -0
- package/dist/surfaces/run-view-state.js +26 -0
- package/dist/surfaces/run-view-state.js.map +1 -0
- package/dist/surfaces/view-links.d.ts +1 -1
- package/dist/surfaces/view-links.d.ts.map +1 -1
- package/dist/surfaces/view-links.js +144 -16
- package/dist/surfaces/view-links.js.map +1 -1
- package/dist/surfaces/view-state.d.ts +50 -0
- package/dist/surfaces/view-state.d.ts.map +1 -0
- package/dist/surfaces/view-state.js +181 -0
- package/dist/surfaces/view-state.js.map +1 -0
- package/dist/transport/gateway-recovery.d.ts +39 -0
- package/dist/transport/gateway-recovery.d.ts.map +1 -0
- package/dist/transport/gateway-recovery.js +134 -0
- package/dist/transport/gateway-recovery.js.map +1 -0
- package/dist/utf8-byte-length.d.ts +2 -0
- package/dist/utf8-byte-length.d.ts.map +1 -0
- package/dist/utf8-byte-length.js +22 -0
- package/dist/utf8-byte-length.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -1
package/dist/index.js
CHANGED
|
@@ -55,9 +55,12 @@ export * from './sources/status-view.js';
|
|
|
55
55
|
export * from './sources/validation.js';
|
|
56
56
|
export * from './surfaces/account-session.js';
|
|
57
57
|
export * from './surfaces/command-center.js';
|
|
58
|
+
export * from './surfaces/run-view-state.js';
|
|
59
|
+
export * from './surfaces/view-state.js';
|
|
58
60
|
export * from './text-order.js';
|
|
59
61
|
export * from './transport/events.js';
|
|
60
62
|
export * from './transport/frames.js';
|
|
63
|
+
export * from './transport/gateway-recovery.js';
|
|
61
64
|
export * from './transport/gateway-tls.js';
|
|
62
65
|
export * from './transport/observations.js';
|
|
63
66
|
export * from './transport/signal.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PerformanceRecorder } from './recorder.js';
|
|
2
|
+
import type { ClientPerformanceReportResult, PerformanceActionClass } from './types.js';
|
|
3
|
+
export declare function performanceActionClass(method: string): PerformanceActionClass;
|
|
4
|
+
export declare function isPerformanceMethod(method: string): boolean;
|
|
5
|
+
export declare class PerformanceReporter {
|
|
6
|
+
private metrics;
|
|
7
|
+
private ready;
|
|
8
|
+
private send;
|
|
9
|
+
private timer;
|
|
10
|
+
private disposed;
|
|
11
|
+
private timerEpoch;
|
|
12
|
+
private readonly stopActivity;
|
|
13
|
+
constructor(metrics: PerformanceRecorder, ready: () => boolean, send: (report: unknown) => Promise<ClientPerformanceReportResult>);
|
|
14
|
+
schedule(): void;
|
|
15
|
+
private flush;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/performance/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAExF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAE7E;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI3D;AACD,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IAPd,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;gBAEhC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,OAAO,EACpB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,6BAA6B,CAAC;IAI3E,QAAQ,IAAI,IAAI;YAgBF,KAAK;IAgBnB,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { GATEWAY_COMMAND_METHODS } from '../client-cache/command-method.js';
|
|
2
|
+
import { Methods } from '../rpc/registry.js';
|
|
3
|
+
const commands = new Set(GATEWAY_COMMAND_METHODS);
|
|
4
|
+
export function performanceActionClass(method) {
|
|
5
|
+
return commands.has(method) ? 'gate-action' : 'interactive-read';
|
|
6
|
+
}
|
|
7
|
+
export function isPerformanceMethod(method) {
|
|
8
|
+
return (method === Methods.GATEWAY_PERFORMANCE_GET || method === Methods.GATEWAY_PERFORMANCE_REPORT);
|
|
9
|
+
}
|
|
10
|
+
export class PerformanceReporter {
|
|
11
|
+
constructor(metrics, ready, send) {
|
|
12
|
+
this.metrics = metrics;
|
|
13
|
+
this.ready = ready;
|
|
14
|
+
this.send = send;
|
|
15
|
+
this.disposed = false;
|
|
16
|
+
this.timerEpoch = 0;
|
|
17
|
+
this.stopActivity = metrics.onActivity(() => this.schedule());
|
|
18
|
+
}
|
|
19
|
+
schedule() {
|
|
20
|
+
if (this.timer && this.timerEpoch !== this.metrics.epoch) {
|
|
21
|
+
clearTimeout(this.timer);
|
|
22
|
+
this.timer = undefined;
|
|
23
|
+
}
|
|
24
|
+
if (this.disposed || this.timer || !this.ready())
|
|
25
|
+
return;
|
|
26
|
+
this.timerEpoch = this.metrics.epoch;
|
|
27
|
+
const epoch = this.metrics.epoch;
|
|
28
|
+
this.timer = setTimeout(() => {
|
|
29
|
+
this.timer = undefined;
|
|
30
|
+
if (!this.ready() || epoch !== this.metrics.epoch)
|
|
31
|
+
return;
|
|
32
|
+
void this.flush();
|
|
33
|
+
}, 30000);
|
|
34
|
+
// Node-based CLI/tests do not stay alive for a telemetry flush.
|
|
35
|
+
if (typeof this.timer === 'object' && 'unref' in this.timer)
|
|
36
|
+
this.timer.unref();
|
|
37
|
+
}
|
|
38
|
+
async flush() {
|
|
39
|
+
const epoch = this.metrics.epoch, report = this.metrics.beginReport();
|
|
40
|
+
if (!report)
|
|
41
|
+
return;
|
|
42
|
+
try {
|
|
43
|
+
const result = await this.send(report);
|
|
44
|
+
if (epoch !== this.metrics.epoch)
|
|
45
|
+
return;
|
|
46
|
+
if (result.accepted)
|
|
47
|
+
this.metrics.acknowledge(report.sequence);
|
|
48
|
+
else
|
|
49
|
+
this.metrics.expireReportSource();
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Preserve the identical chunk for an idempotent retry after a lost response.
|
|
53
|
+
if (epoch === this.metrics.epoch)
|
|
54
|
+
this.metrics.increment('farmslot_client_report_failures_total', {});
|
|
55
|
+
}
|
|
56
|
+
if (epoch === this.metrics.epoch)
|
|
57
|
+
this.schedule();
|
|
58
|
+
}
|
|
59
|
+
dispose() {
|
|
60
|
+
this.disposed = true;
|
|
61
|
+
this.stopActivity();
|
|
62
|
+
clearTimeout(this.timer);
|
|
63
|
+
this.timer = undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/performance/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type PerformanceBudgetVerdict, type PerformanceHistogram, type PerformanceSnapshot } from './types.js';
|
|
2
|
+
/** UI estimate only. Budget verdicts use the exact threshold bucket. */
|
|
3
|
+
export declare function histogramPercentile(histogram: PerformanceHistogram, quantile: number): number;
|
|
4
|
+
export declare function performanceBudgetVerdicts(snapshot: PerformanceSnapshot): PerformanceBudgetVerdict[];
|
|
5
|
+
//# sourceMappingURL=histogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../src/performance/histogram.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7F;AACD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,mBAAmB,GAC5B,wBAAwB,EAAE,CA+B5B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { HISTOGRAM_METRICS, PERFORMANCE_BUDGETS, } from './types.js';
|
|
2
|
+
/** UI estimate only. Budget verdicts use the exact threshold bucket. */
|
|
3
|
+
export function histogramPercentile(histogram, quantile) {
|
|
4
|
+
if (!histogram.count)
|
|
5
|
+
return 0;
|
|
6
|
+
const index = histogram.buckets.findIndex((count) => count >= Math.ceil(histogram.count * quantile));
|
|
7
|
+
return HISTOGRAM_METRICS[histogram.name][index] ?? histogram.max;
|
|
8
|
+
}
|
|
9
|
+
export function performanceBudgetVerdicts(snapshot) {
|
|
10
|
+
return snapshot.histograms.flatMap((histogram) => {
|
|
11
|
+
const actionClass = histogram.labels.action_class;
|
|
12
|
+
if (!actionClass ||
|
|
13
|
+
histogram.name.endsWith('_bytes') ||
|
|
14
|
+
histogram.name.endsWith('_age_seconds'))
|
|
15
|
+
return [];
|
|
16
|
+
const budgetSeconds = PERFORMANCE_BUDGETS[actionClass];
|
|
17
|
+
const index = HISTOGRAM_METRICS[histogram.name].findIndex((value) => value === budgetSeconds);
|
|
18
|
+
const withinBudget = histogram.buckets[index] ?? 0;
|
|
19
|
+
return [
|
|
20
|
+
{
|
|
21
|
+
metric: histogram.name,
|
|
22
|
+
cacheSource: histogram.labels.cache_source,
|
|
23
|
+
method: histogram.labels.method,
|
|
24
|
+
actionClass,
|
|
25
|
+
source: histogram.labels.side ?? 'unknown',
|
|
26
|
+
count: histogram.count,
|
|
27
|
+
withinBudget,
|
|
28
|
+
budgetSeconds,
|
|
29
|
+
status: histogram.count < 20 || snapshot.dropped > 0
|
|
30
|
+
? 'unmeasured'
|
|
31
|
+
: withinBudget * 20 >= histogram.count * 19
|
|
32
|
+
? 'pass'
|
|
33
|
+
: 'fail',
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=histogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../src/performance/histogram.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAIpB,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CAAC,SAA+B,EAAE,QAAgB;IACnF,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,CAC1D,CAAC;IACF,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;AACnE,CAAC;AACD,MAAM,UAAU,yBAAyB,CACvC,QAA6B;IAE7B,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;QAClD,IACE,CAAC,WAAW;YACZ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;YAEvC,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO;YACL;gBACE,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY;gBAC1C,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC/B,WAAW;gBACX,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;gBAC1C,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,YAAY;gBACZ,aAAa;gBACb,MAAM,EACJ,SAAS,CAAC,KAAK,GAAG,EAAE,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC;oBAC1C,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,YAAY,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,GAAG,EAAE;wBACzC,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,MAAM;aACf;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '../utf8-byte-length.js';
|
|
2
|
+
export * from './client.js';
|
|
3
|
+
export * from './histogram.js';
|
|
4
|
+
export * from './paint.js';
|
|
5
|
+
export * from './prometheus.js';
|
|
6
|
+
export * from './ranking.js';
|
|
7
|
+
export * from './recorder.js';
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export * from './validation.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '../utf8-byte-length.js';
|
|
2
|
+
export * from './client.js';
|
|
3
|
+
export * from './histogram.js';
|
|
4
|
+
export * from './paint.js';
|
|
5
|
+
export * from './prometheus.js';
|
|
6
|
+
export * from './ranking.js';
|
|
7
|
+
export * from './recorder.js';
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export * from './validation.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/performance/paint.ts"],"names":[],"mappings":"AAKA,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAcnF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Two frames allow the subscriber's queued render and its first data paint. */
|
|
2
|
+
export function afterForegroundPaint(callback) {
|
|
3
|
+
const host = globalThis;
|
|
4
|
+
if (!host.requestAnimationFrame ||
|
|
5
|
+
!host.cancelAnimationFrame ||
|
|
6
|
+
(host.document && host.document.visibilityState !== 'visible'))
|
|
7
|
+
return undefined;
|
|
8
|
+
const frame = host.requestAnimationFrame.bind(host), cancel = host.cancelAnimationFrame.bind(host);
|
|
9
|
+
let handle = frame(() => {
|
|
10
|
+
handle = frame(callback);
|
|
11
|
+
});
|
|
12
|
+
return () => cancel(handle);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=paint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/performance/paint.ts"],"names":[],"mappings":"AAKA,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,QAAoB;IACvD,MAAM,IAAI,GAAG,UAAuB,CAAC;IACrC,IACE,CAAC,IAAI,CAAC,qBAAqB;QAC3B,CAAC,IAAI,CAAC,oBAAoB;QAC1B,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC;QAE9D,OAAO,SAAS,CAAC;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjD,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;QACtB,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prometheus.d.ts","sourceRoot":"","sources":["../../src/performance/prometheus.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAcjG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA4CtE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { HISTOGRAM_METRICS } from './types.js';
|
|
2
|
+
function escapeLabel(value) {
|
|
3
|
+
return value.replaceAll('\\', '\\\\').replaceAll('\n', '\\n').replaceAll('"', '\\"');
|
|
4
|
+
}
|
|
5
|
+
function labels(value, bound) {
|
|
6
|
+
const pairs = Object.entries(value)
|
|
7
|
+
.filter(([, v]) => v !== undefined)
|
|
8
|
+
.map(([k, v]) => `${k}="${escapeLabel(String(v))}"`);
|
|
9
|
+
if (bound !== undefined)
|
|
10
|
+
pairs.push(`le="${bound}"`);
|
|
11
|
+
return pairs.length ? `{${pairs.join(',')}}` : '';
|
|
12
|
+
}
|
|
13
|
+
export function renderPrometheus(snapshot) {
|
|
14
|
+
const output = [];
|
|
15
|
+
const declared = new Set();
|
|
16
|
+
function type(name, kind) {
|
|
17
|
+
if (!declared.has(name)) {
|
|
18
|
+
declared.add(name);
|
|
19
|
+
output.push(`# TYPE ${name} ${kind}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const row of snapshot.histograms) {
|
|
23
|
+
type(row.name, 'histogram');
|
|
24
|
+
const bounds = HISTOGRAM_METRICS[row.name];
|
|
25
|
+
row.buckets.forEach((count, i) => output.push(`${row.name}_bucket${labels(row.labels, String(bounds[i] ?? '+Inf'))} ${count}`));
|
|
26
|
+
output.push(`${row.name}_count${labels(row.labels)} ${row.count}`, `${row.name}_sum${labels(row.labels)} ${row.sum}`);
|
|
27
|
+
type(`${row.name}_max`, 'gauge');
|
|
28
|
+
output.push(`${row.name}_max${labels(row.labels)} ${row.max}`);
|
|
29
|
+
}
|
|
30
|
+
for (const row of snapshot.counters) {
|
|
31
|
+
type(row.name, 'counter');
|
|
32
|
+
output.push(`${row.name}${labels(row.labels)} ${row.value}`);
|
|
33
|
+
}
|
|
34
|
+
for (const row of snapshot.gauges) {
|
|
35
|
+
type(row.name, 'gauge');
|
|
36
|
+
output.push(`${row.name}${labels(row.labels)} ${row.value}`);
|
|
37
|
+
}
|
|
38
|
+
for (const window of snapshot.clientWindows ?? []) {
|
|
39
|
+
const source = labels({ side: window.side, source: window.id });
|
|
40
|
+
for (const [name, value] of [
|
|
41
|
+
['farmslot_client_window_start_seconds', window.startedAtMs],
|
|
42
|
+
['farmslot_client_window_observed_seconds', window.observedAtMs],
|
|
43
|
+
['farmslot_client_window_received_seconds', window.receivedAtMs],
|
|
44
|
+
]) {
|
|
45
|
+
type(name, 'gauge');
|
|
46
|
+
output.push(`${name}${source} ${value / 1000}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
type('farmslot_metrics_dropped_total', 'counter');
|
|
50
|
+
output.push(`farmslot_metrics_dropped_total ${snapshot.dropped}`);
|
|
51
|
+
return output.join('\n') + '\n';
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=prometheus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prometheus.js","sourceRoot":"","sources":["../../src/performance/prometheus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PerformanceActionClass, PerformanceLabels, PerformanceSide, PerformanceSnapshot } from './types.js';
|
|
2
|
+
export interface SlowAction {
|
|
3
|
+
cacheSource?: PerformanceLabels['cache_source'];
|
|
4
|
+
phase: string;
|
|
5
|
+
bytesMeasured: boolean;
|
|
6
|
+
budgetSeconds?: number;
|
|
7
|
+
budgetStatus?: string;
|
|
8
|
+
processesMeasured: boolean;
|
|
9
|
+
method: string;
|
|
10
|
+
side: PerformanceSide;
|
|
11
|
+
actionClass?: PerformanceActionClass;
|
|
12
|
+
count: number;
|
|
13
|
+
p50: number;
|
|
14
|
+
p95: number;
|
|
15
|
+
max: number;
|
|
16
|
+
bytes: number;
|
|
17
|
+
execCount: number;
|
|
18
|
+
execSeconds: number;
|
|
19
|
+
nodeCount: number;
|
|
20
|
+
nodeSeconds: number;
|
|
21
|
+
nodeWaitSeconds: number;
|
|
22
|
+
loopLagSeconds: number;
|
|
23
|
+
causes: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function slowestActions(snapshot: PerformanceSnapshot): SlowAction[];
|
|
26
|
+
//# sourceMappingURL=ranking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranking.d.ts","sourceRoot":"","sources":["../../src/performance/ranking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,UAAU,EAAE,CAmG1E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { histogramPercentile, performanceBudgetVerdicts } from './histogram.js';
|
|
2
|
+
export function slowestActions(snapshot) {
|
|
3
|
+
const costs = new Map();
|
|
4
|
+
const responseBytes = new Map();
|
|
5
|
+
const identity = (labels) => `${labels.side ?? 'gateway'}|${labels.method ?? '_unknown'}`;
|
|
6
|
+
const responseIdentity = (labels) => `${identity(labels)}|${labels.action_class ?? ''}`;
|
|
7
|
+
const add = (labels, name, value, max = false) => {
|
|
8
|
+
const key = identity(labels);
|
|
9
|
+
let values = costs.get(key);
|
|
10
|
+
if (!values) {
|
|
11
|
+
values = new Map();
|
|
12
|
+
costs.set(key, values);
|
|
13
|
+
}
|
|
14
|
+
values.set(name, max ? Math.max(values.get(name) ?? 0, value) : (values.get(name) ?? 0) + value);
|
|
15
|
+
};
|
|
16
|
+
for (const counter of snapshot.counters)
|
|
17
|
+
add(counter.labels, counter.name, counter.value);
|
|
18
|
+
for (const histogram of snapshot.histograms) {
|
|
19
|
+
if (histogram.name === 'farmslot_rpc_response_bytes')
|
|
20
|
+
responseBytes.set(responseIdentity(histogram.labels), (responseBytes.get(responseIdentity(histogram.labels)) ?? 0) + histogram.sum);
|
|
21
|
+
if (histogram.name === 'farmslot_event_loop_lag_seconds')
|
|
22
|
+
add(histogram.labels, 'lag', histogram.max, true);
|
|
23
|
+
}
|
|
24
|
+
const phases = {
|
|
25
|
+
farmslot_rpc_duration_seconds: 'RPC',
|
|
26
|
+
farmslot_client_cached_paint_seconds: 'Cached paint',
|
|
27
|
+
farmslot_client_visible_read_seconds: 'Visible read',
|
|
28
|
+
farmslot_client_background_refresh_seconds: 'Background refresh',
|
|
29
|
+
farmslot_client_blocking_refresh_seconds: 'Blocking refresh',
|
|
30
|
+
};
|
|
31
|
+
const verdictKey = (name, labels) => [
|
|
32
|
+
name,
|
|
33
|
+
labels.side ?? 'gateway',
|
|
34
|
+
labels.method ?? '_unknown',
|
|
35
|
+
labels.action_class,
|
|
36
|
+
labels.cache_source,
|
|
37
|
+
].join('|');
|
|
38
|
+
const verdicts = new Map(performanceBudgetVerdicts(snapshot).map((v) => [
|
|
39
|
+
[v.metric, v.source, v.method ?? '_unknown', v.actionClass, v.cacheSource].join('|'),
|
|
40
|
+
v,
|
|
41
|
+
]));
|
|
42
|
+
return snapshot.histograms
|
|
43
|
+
.filter((r) => Object.hasOwn(phases, r.name))
|
|
44
|
+
.map((row) => {
|
|
45
|
+
const phase = phases[row.name];
|
|
46
|
+
const bytesMeasured = row.name === 'farmslot_rpc_duration_seconds' &&
|
|
47
|
+
responseBytes.has(responseIdentity(row.labels));
|
|
48
|
+
const verdict = verdicts.get(verdictKey(row.name, row.labels));
|
|
49
|
+
const { method = '_unknown', side = 'gateway', action_class } = row.labels;
|
|
50
|
+
const values = costs.get(identity(row.labels));
|
|
51
|
+
const value = (name) => values?.get(name) ?? 0;
|
|
52
|
+
const bytes = bytesMeasured ? (responseBytes.get(responseIdentity(row.labels)) ?? 0) : 0, execCount = value('farmslot_exec_calls_total'), execSeconds = value('farmslot_exec_seconds_total');
|
|
53
|
+
const nodeCount = value('farmslot_node_calls_total'), nodeSeconds = value('farmslot_node_seconds_total'), nodeWaitSeconds = value('farmslot_node_wait_seconds_total');
|
|
54
|
+
const loopLagSeconds = value('lag');
|
|
55
|
+
const causes = [];
|
|
56
|
+
if (bytes / row.count > 131072)
|
|
57
|
+
causes.push('payload');
|
|
58
|
+
if (execCount)
|
|
59
|
+
causes.push('spawned processes');
|
|
60
|
+
if (nodeSeconds || nodeWaitSeconds)
|
|
61
|
+
causes.push('node wait');
|
|
62
|
+
if (loopLagSeconds > 0.1)
|
|
63
|
+
causes.push('event-loop stall');
|
|
64
|
+
if (!causes.length)
|
|
65
|
+
causes.push(bytesMeasured ? 'inspect handler' : phase);
|
|
66
|
+
return {
|
|
67
|
+
cacheSource: row.labels.cache_source,
|
|
68
|
+
phase,
|
|
69
|
+
bytesMeasured,
|
|
70
|
+
budgetSeconds: verdict?.budgetSeconds,
|
|
71
|
+
budgetStatus: verdict?.status,
|
|
72
|
+
processesMeasured: side === 'gateway',
|
|
73
|
+
method,
|
|
74
|
+
side,
|
|
75
|
+
actionClass: action_class,
|
|
76
|
+
count: row.count,
|
|
77
|
+
p50: histogramPercentile(row, 0.5),
|
|
78
|
+
p95: histogramPercentile(row, 0.95),
|
|
79
|
+
max: row.max,
|
|
80
|
+
bytes,
|
|
81
|
+
execCount,
|
|
82
|
+
execSeconds,
|
|
83
|
+
nodeCount,
|
|
84
|
+
nodeSeconds,
|
|
85
|
+
nodeWaitSeconds,
|
|
86
|
+
loopLagSeconds,
|
|
87
|
+
causes,
|
|
88
|
+
};
|
|
89
|
+
})
|
|
90
|
+
.sort((a, b) => b.p95 - a.p95 || b.max - a.max);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ranking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranking.js","sourceRoot":"","sources":["../../src/performance/ranking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ClientPerformanceReport, type ClientPerformanceReportResult, type PerformanceActionClass, type PerformanceCounterName, type PerformanceHistogramName, type PerformanceLabels, type PerformanceSide, type PerformanceSnapshot } from './types.js';
|
|
2
|
+
interface RecorderOptions {
|
|
3
|
+
clock?: () => number;
|
|
4
|
+
methods?: ReadonlySet<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class PerformanceRecorder {
|
|
7
|
+
readonly side: PerformanceSide;
|
|
8
|
+
readonly clock: () => number;
|
|
9
|
+
private readonly activity;
|
|
10
|
+
onActivity(listener: () => void): () => void;
|
|
11
|
+
private changed;
|
|
12
|
+
private methods;
|
|
13
|
+
private startedAtMs;
|
|
14
|
+
private all;
|
|
15
|
+
private delta;
|
|
16
|
+
private sourceId;
|
|
17
|
+
private sequence;
|
|
18
|
+
private report?;
|
|
19
|
+
private reporters;
|
|
20
|
+
private reporterOrdinal;
|
|
21
|
+
private rates;
|
|
22
|
+
private queryOrdinal;
|
|
23
|
+
private queryIds;
|
|
24
|
+
private scopeVersion;
|
|
25
|
+
get epoch(): number;
|
|
26
|
+
resetScope(): void;
|
|
27
|
+
private reportedGauges;
|
|
28
|
+
constructor(side: PerformanceSide, options?: RecorderOptions);
|
|
29
|
+
private labels;
|
|
30
|
+
observe(name: PerformanceHistogramName, input: PerformanceLabels, value: number): void;
|
|
31
|
+
increment(name: PerformanceCounterName, input: PerformanceLabels, value?: number): void;
|
|
32
|
+
private rotate;
|
|
33
|
+
reread(method: string, identity: object): void;
|
|
34
|
+
private snapshotState;
|
|
35
|
+
snapshot(): PerformanceSnapshot;
|
|
36
|
+
beginReport(): ClientPerformanceReport | undefined;
|
|
37
|
+
acknowledge(sequence: number): void;
|
|
38
|
+
expireReportSource(): void;
|
|
39
|
+
mergeReport(authenticatedSource: string, report: ClientPerformanceReport): ClientPerformanceReportResult;
|
|
40
|
+
}
|
|
41
|
+
export declare function measureClientRequest<T>(metrics: PerformanceRecorder, method: string, actionClass: PerformanceActionClass, request: (received: (bytes: number) => void) => Promise<T>): Promise<T>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/performance/recorder.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAGlC,KAAK,sBAAsB,EAE3B,KAAK,sBAAsB,EAG3B,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAmBpB,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAKD,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAI5C,OAAO,CAAC,OAAO;IAGf,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAC,CAA0B;IACzC,OAAO,CAAC,SAAS,CAGb;IACJ,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,YAAY,CAAK;IACzB,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,UAAU,IAAI,IAAI;IAWlB,OAAO,CAAC,cAAc,CAAmE;gBAC7E,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,eAAoB;IAKhE,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAqCtF,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,SAAI,GAAG,IAAI;IAmBlF,OAAO,CAAC,MAAM;IAMd,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqB9C,OAAO,CAAC,aAAa;IAiCrB,QAAQ,IAAI,mBAAmB;IAG/B,WAAW,IAAI,uBAAuB,GAAG,SAAS;IA8BlD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAGnC,kBAAkB,IAAI,IAAI;IAU1B,WAAW,CACT,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,uBAAuB,GAC9B,6BAA6B;CA+FjC;AACD,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,sBAAsB,EACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
|