autotel-devtools 23.0.0 → 24.0.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.
Files changed (33) hide show
  1. package/dist/cli.cjs +2 -2
  2. package/dist/cli.js +2 -2
  3. package/dist/{error-aggregator-DSwUvgFF.d.cts → error-aggregator-C0at0wzF.d.cts} +1 -1
  4. package/dist/{error-aggregator-B52JI8jL.d.ts → error-aggregator-C25_JiVI.d.ts} +1 -1
  5. package/dist/{exporter-C4uKgo7l.d.cts → exporter-AkgWRDpc.d.cts} +55 -2
  6. package/dist/{exporter-BrEcnzoT.d.ts → exporter-yo7lLDIs.d.ts} +55 -2
  7. package/dist/fullpage.global.js +37 -30
  8. package/dist/genai/index.d.cts +1 -1
  9. package/dist/genai/index.d.ts +1 -1
  10. package/dist/{grpc-CSWjMRiB.cjs → grpc-CSW1Evnt.cjs} +1 -1
  11. package/dist/{grpc-CZEDUYCM.js → grpc-D1tt8UPi.js} +1 -1
  12. package/dist/{http-Cqm_MAtc.cjs → http-CahjEnpE.cjs} +291 -5
  13. package/dist/{http-Dbd9TIYU.js → http-z8UbJsqk.js} +292 -6
  14. package/dist/index.cjs +1 -1
  15. package/dist/index.d.cts +4 -4
  16. package/dist/index.d.ts +4 -4
  17. package/dist/index.js +1 -1
  18. package/dist/server/exporter.d.cts +1 -1
  19. package/dist/server/exporter.d.ts +1 -1
  20. package/dist/server/index.cjs +2 -2
  21. package/dist/server/index.d.cts +4 -4
  22. package/dist/server/index.d.ts +4 -4
  23. package/dist/server/index.js +2 -2
  24. package/dist/types-B86Qkqg5.d.cts +120 -0
  25. package/dist/types-B86Qkqg5.d.ts +120 -0
  26. package/dist/{types-DM8y4A9Z.d.ts → types-BhbHVeiy.d.ts} +1 -1
  27. package/dist/{types-B0tjwFqj.d.cts → types-C-ORUrT2.d.cts} +1 -1
  28. package/dist/widget.global.js +14 -14
  29. package/dist/wire/index.d.cts +1 -1
  30. package/dist/wire/index.d.ts +1 -1
  31. package/package.json +2 -2
  32. package/dist/types-DHDvZnnn.d.cts +0 -47
  33. package/dist/types-DHDvZnnn.d.ts +0 -47
package/dist/cli.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- const require_http = require('./http-Cqm_MAtc.cjs');
2
+ const require_http = require('./http-CahjEnpE.cjs');
3
3
  const require_listen = require('./listen-l09RRHht.cjs');
4
- const require_grpc = require('./grpc-CSWjMRiB.cjs');
4
+ const require_grpc = require('./grpc-CSW1Evnt.cjs');
5
5
  let node_http = require("node:http");
6
6
  let node_fs = require("node:fs");
7
7
  let node_path = require("node:path");
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { a as probePortHolder, g as hostHeaderIsLoopback, l as DevtoolsServer, r as resolveSourceRoot, t as attachDevtoolsRoutes } from "./http-Dbd9TIYU.js";
2
+ import { a as probePortHolder, g as hostHeaderIsLoopback, l as DevtoolsServer, r as resolveSourceRoot, t as attachDevtoolsRoutes } from "./http-z8UbJsqk.js";
3
3
  import { t as listenLoopbackDualStack } from "./listen-D-lLgfro.js";
4
- import { t as startOtlpGrpcReceiver } from "./grpc-CZEDUYCM.js";
4
+ import { t as startOtlpGrpcReceiver } from "./grpc-D1tt8UPi.js";
5
5
  import { createServer } from "node:http";
6
6
  import { readFileSync } from "node:fs";
7
7
  import { dirname, resolve } from "node:path";
@@ -1,4 +1,4 @@
1
- import { n as ErrorGroup, o as TraceData, r as ErrorOccurrence } from "./types-B0tjwFqj.cjs";
1
+ import { n as ErrorGroup, o as TraceData, r as ErrorOccurrence } from "./types-C-ORUrT2.cjs";
2
2
  //#region src/server/error-aggregator.d.ts
3
3
  /** How many errors the aggregator is holding, and what they are. */
4
4
  interface ErrorStats {
@@ -1,4 +1,4 @@
1
- import { n as ErrorGroup, o as TraceData, r as ErrorOccurrence } from "./types-DM8y4A9Z.js";
1
+ import { n as ErrorGroup, o as TraceData, r as ErrorOccurrence } from "./types-BhbHVeiy.js";
2
2
  //#region src/server/error-aggregator.d.ts
3
3
  /** How many errors the aggregator is holding, and what they are. */
4
4
  interface ErrorStats {
@@ -1,6 +1,6 @@
1
1
  import { c as QueryError, r as SignalSchema } from "./compile-JDFHUCo5.cjs";
2
- import { n as SpanAttributes } from "./types-DHDvZnnn.cjs";
3
- import { i as LogData, n as ErrorGroup, o as TraceData, t as DevtoolsData } from "./types-B0tjwFqj.cjs";
2
+ import { i as WebMcpInventory, n as SpanAttributes } from "./types-B86Qkqg5.cjs";
3
+ import { i as LogData, n as ErrorGroup, o as TraceData, t as DevtoolsData } from "./types-C-ORUrT2.cjs";
4
4
  import { AgentRawEvent, OtelMetricRecord } from "autotel-agents";
5
5
  import { Server } from "node:http";
6
6
  import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
@@ -278,6 +278,31 @@ declare class DevtoolsStore {
278
278
  };
279
279
  /** Query fields currently present, for editor completion. */
280
280
  listQueryFields(signal: 'traces' | 'logs', limit?: number): string[];
281
+ /**
282
+ * Values of one attribute paired with another on the same entity.
283
+ *
284
+ * `searchAttributes` matches on value text, which cannot answer "what arms
285
+ * does this experiment have". Pairing two keys across the same span can, and
286
+ * that is what turns a pair of cohorts into something the viewer offers
287
+ * rather than something the reader has to type.
288
+ *
289
+ * Rows arrive grouped by `key`, each group's values commonest first, so a
290
+ * caller can build the groups in one pass and take the two commonest as a
291
+ * default pair.
292
+ *
293
+ * The join runs over `attribute_occurrences`, not the `attribute_values`
294
+ * dictionary: occurrences are deleted with their span, so retention prunes
295
+ * them, and they carry the entity a value was seen on, so an arm is only
296
+ * offered for the experiment it actually ran under. The dictionary can do
297
+ * neither — it counts values for the lifetime of the database and forgets
298
+ * which span each came from, which would offer arms belonging to a different
299
+ * experiment and experiments whose spans are long gone.
300
+ */
301
+ pairedAttributeValues(signal: 'traces' | 'logs', key: string, pairedKey: string, limit?: number): Array<{
302
+ value: unknown;
303
+ paired: unknown;
304
+ count: number;
305
+ }>;
281
306
  searchAttributes(signal: 'traces' | 'logs', value: string, limit?: number): Array<{
282
307
  key: string;
283
308
  value: unknown;
@@ -479,9 +504,37 @@ declare class DevtoolsServer {
479
504
  errors: ErrorGroup[];
480
505
  errors_parse?: QueryError[];
481
506
  };
507
+ /**
508
+ * Fold WebMCP lifecycle history through the window end into the tool surface
509
+ * an agent is offered, while counting executions only inside the window.
510
+ *
511
+ * Drains every page rather than folding the first one: an inventory built
512
+ * from a page of results does not fail, it *under-reports* — "2 tools dropped
513
+ * annotations" when the answer is 6 — and gets more wrong the more traffic
514
+ * there is, which is backwards for an observability answer.
515
+ *
516
+ * The span-name filter is composed here rather than accepted from the client:
517
+ * this endpoint answers one question, and a caller-supplied predicate could
518
+ * only narrow it into a wrong answer.
519
+ */
520
+ queryWebMcp(args: {
521
+ window?: {
522
+ start: number;
523
+ end: number;
524
+ };
525
+ limit?: number;
526
+ }): {
527
+ webmcp: WebMcpInventory;
528
+ errors_parse?: QueryError[];
529
+ };
482
530
  /** Run a log query against the durable store. */
483
531
  queryLogs(args: QueryLogsArgs): QueryLogsResult;
484
532
  listQueryFields(signal: 'traces' | 'logs'): string[];
533
+ pairedAttributeValues(signal: 'traces' | 'logs', key: string, pairedKey: string, limit?: number): {
534
+ value: unknown;
535
+ paired: unknown;
536
+ count: number;
537
+ }[];
485
538
  searchAttributes(signal: 'traces' | 'logs', value: string, limit?: number): {
486
539
  key: string;
487
540
  value: unknown;
@@ -1,6 +1,6 @@
1
1
  import { c as QueryError, r as SignalSchema } from "./compile-JDFHUCo5.js";
2
- import { n as SpanAttributes } from "./types-DHDvZnnn.js";
3
- import { i as LogData, n as ErrorGroup, o as TraceData, t as DevtoolsData } from "./types-DM8y4A9Z.js";
2
+ import { i as WebMcpInventory, n as SpanAttributes } from "./types-B86Qkqg5.js";
3
+ import { i as LogData, n as ErrorGroup, o as TraceData, t as DevtoolsData } from "./types-BhbHVeiy.js";
4
4
  import { Server } from "node:http";
5
5
  import { AgentRawEvent, OtelMetricRecord } from "autotel-agents";
6
6
  import { ExportResult } from "@opentelemetry/core";
@@ -278,6 +278,31 @@ declare class DevtoolsStore {
278
278
  };
279
279
  /** Query fields currently present, for editor completion. */
280
280
  listQueryFields(signal: 'traces' | 'logs', limit?: number): string[];
281
+ /**
282
+ * Values of one attribute paired with another on the same entity.
283
+ *
284
+ * `searchAttributes` matches on value text, which cannot answer "what arms
285
+ * does this experiment have". Pairing two keys across the same span can, and
286
+ * that is what turns a pair of cohorts into something the viewer offers
287
+ * rather than something the reader has to type.
288
+ *
289
+ * Rows arrive grouped by `key`, each group's values commonest first, so a
290
+ * caller can build the groups in one pass and take the two commonest as a
291
+ * default pair.
292
+ *
293
+ * The join runs over `attribute_occurrences`, not the `attribute_values`
294
+ * dictionary: occurrences are deleted with their span, so retention prunes
295
+ * them, and they carry the entity a value was seen on, so an arm is only
296
+ * offered for the experiment it actually ran under. The dictionary can do
297
+ * neither — it counts values for the lifetime of the database and forgets
298
+ * which span each came from, which would offer arms belonging to a different
299
+ * experiment and experiments whose spans are long gone.
300
+ */
301
+ pairedAttributeValues(signal: 'traces' | 'logs', key: string, pairedKey: string, limit?: number): Array<{
302
+ value: unknown;
303
+ paired: unknown;
304
+ count: number;
305
+ }>;
281
306
  searchAttributes(signal: 'traces' | 'logs', value: string, limit?: number): Array<{
282
307
  key: string;
283
308
  value: unknown;
@@ -479,9 +504,37 @@ declare class DevtoolsServer {
479
504
  errors: ErrorGroup[];
480
505
  errors_parse?: QueryError[];
481
506
  };
507
+ /**
508
+ * Fold WebMCP lifecycle history through the window end into the tool surface
509
+ * an agent is offered, while counting executions only inside the window.
510
+ *
511
+ * Drains every page rather than folding the first one: an inventory built
512
+ * from a page of results does not fail, it *under-reports* — "2 tools dropped
513
+ * annotations" when the answer is 6 — and gets more wrong the more traffic
514
+ * there is, which is backwards for an observability answer.
515
+ *
516
+ * The span-name filter is composed here rather than accepted from the client:
517
+ * this endpoint answers one question, and a caller-supplied predicate could
518
+ * only narrow it into a wrong answer.
519
+ */
520
+ queryWebMcp(args: {
521
+ window?: {
522
+ start: number;
523
+ end: number;
524
+ };
525
+ limit?: number;
526
+ }): {
527
+ webmcp: WebMcpInventory;
528
+ errors_parse?: QueryError[];
529
+ };
482
530
  /** Run a log query against the durable store. */
483
531
  queryLogs(args: QueryLogsArgs): QueryLogsResult;
484
532
  listQueryFields(signal: 'traces' | 'logs'): string[];
533
+ pairedAttributeValues(signal: 'traces' | 'logs', key: string, pairedKey: string, limit?: number): {
534
+ value: unknown;
535
+ paired: unknown;
536
+ count: number;
537
+ }[];
485
538
  searchAttributes(signal: 'traces' | 'logs', value: string, limit?: number): {
486
539
  key: string;
487
540
  value: unknown;