autotel-devtools 13.1.1 → 14.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.
- package/README.md +24 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/{error-aggregator-C8X-RQRi.d.ts → error-aggregator-BrgYNNoC.d.ts} +2 -3
- package/dist/{error-aggregator-7Q2H7htn.d.cts → error-aggregator-bZ-prq97.d.cts} +2 -3
- package/dist/{exporter-yqXiHw1Q.d.ts → exporter-BLqTs00O.d.ts} +1 -2
- package/dist/{exporter-kXTGDFoH.d.cts → exporter-BSIS3Qgy.d.cts} +1 -2
- package/dist/genai/index.cjs.map +1 -1
- package/dist/genai/index.d.cts +0 -1
- package/dist/genai/index.d.ts +0 -1
- package/dist/genai/index.js.map +1 -1
- package/dist/http-BUHnkhrC.cjs.map +1 -1
- package/dist/http-yIS667nX.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.js.map +1 -1
- package/dist/listen-DGzVi7DE.cjs.map +1 -1
- package/dist/listen-NVMbBWHw.js.map +1 -1
- package/dist/resource-utils-B4UVvfnH.js.map +1 -1
- package/dist/resource-utils-DjHJB6uc.cjs.map +1 -1
- package/dist/server/exporter.cjs.map +1 -1
- package/dist/server/exporter.d.cts +1 -1
- package/dist/server/exporter.d.ts +1 -1
- package/dist/server/exporter.js.map +1 -1
- package/dist/server/index.d.cts +2 -3
- package/dist/server/index.d.ts +2 -3
- package/dist/server/log-exporter.cjs.map +1 -1
- package/dist/server/log-exporter.d.cts +0 -1
- package/dist/server/log-exporter.d.ts +0 -1
- package/dist/server/log-exporter.js.map +1 -1
- package/dist/server/remote-exporter.d.cts +0 -1
- package/dist/server/remote-exporter.d.ts +0 -1
- package/dist/widget.global.js +14 -13
- package/package.json +27 -27
- package/skills/autotel-devtools/SKILL.md +48 -46
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autotel-devtools",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"description": "Standalone OTLP receiver with web UI for local development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -49,49 +49,49 @@
|
|
|
49
49
|
],
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"clsx": "^2.1.1",
|
|
52
|
-
"@lucide/svelte": "^1.
|
|
53
|
-
"protobufjs": "^8.7.
|
|
54
|
-
"svelte": "^5.56.
|
|
52
|
+
"@lucide/svelte": "^1.25.0",
|
|
53
|
+
"protobufjs": "^8.7.1",
|
|
54
|
+
"svelte": "^5.56.7",
|
|
55
55
|
"tailwind-merge": "^3.6.0",
|
|
56
|
-
"ws": "^8.21.
|
|
56
|
+
"ws": "^8.21.1",
|
|
57
57
|
"autotel-agents": "0.3.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@chromatic-com/storybook": "^5.2.1",
|
|
61
61
|
"@opentelemetry/api": "^1.9.1",
|
|
62
|
-
"@opentelemetry/core": "^2.
|
|
63
|
-
"@opentelemetry/otlp-transformer": "^0.
|
|
64
|
-
"@opentelemetry/sdk-logs": "^0.
|
|
65
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
66
|
-
"@storybook/addon-a11y": "^10.
|
|
67
|
-
"@storybook/addon-vitest": "^10.
|
|
68
|
-
"@storybook/svelte-vite": "^10.
|
|
62
|
+
"@opentelemetry/core": "^2.9.0",
|
|
63
|
+
"@opentelemetry/otlp-transformer": "^0.220.0",
|
|
64
|
+
"@opentelemetry/sdk-logs": "^0.220.0",
|
|
65
|
+
"@opentelemetry/sdk-trace-base": "^2.9.0",
|
|
66
|
+
"@storybook/addon-a11y": "^10.5.3",
|
|
67
|
+
"@storybook/addon-vitest": "^10.5.3",
|
|
68
|
+
"@storybook/svelte-vite": "^10.5.3",
|
|
69
69
|
"@sveltejs/vite-plugin-svelte": "^7.2.0",
|
|
70
|
-
"@tailwindcss/postcss": "^4.3.
|
|
71
|
-
"@tailwindcss/vite": "^4.3.
|
|
72
|
-
"@testing-library/jest-dom": "^
|
|
70
|
+
"@tailwindcss/postcss": "^4.3.3",
|
|
71
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
72
|
+
"@testing-library/jest-dom": "^7.0.0",
|
|
73
73
|
"@testing-library/svelte": "^5.4.2",
|
|
74
|
-
"@types/node": "^26.1.
|
|
74
|
+
"@types/node": "^26.1.1",
|
|
75
75
|
"@types/ws": "^8.18.1",
|
|
76
76
|
"@vitest/browser-playwright": "4.1.10",
|
|
77
77
|
"@vitest/coverage-v8": "4.1.10",
|
|
78
|
-
"eslint-plugin-storybook": "^10.
|
|
79
|
-
"eslint-plugin-svelte": "^3.
|
|
78
|
+
"eslint-plugin-storybook": "^10.5.3",
|
|
79
|
+
"eslint-plugin-svelte": "^3.22.0",
|
|
80
80
|
"jsdom": "^29.1.1",
|
|
81
81
|
"playwright": "^1.61.1",
|
|
82
|
-
"postcss": "^8.5.
|
|
83
|
-
"storybook": "^10.
|
|
84
|
-
"svelte-check": "^4.7.
|
|
85
|
-
"tailwindcss": "^4.3.
|
|
86
|
-
"tsdown": "^0.22.
|
|
82
|
+
"postcss": "^8.5.21",
|
|
83
|
+
"storybook": "^10.5.3",
|
|
84
|
+
"svelte-check": "^4.7.3",
|
|
85
|
+
"tailwindcss": "^4.3.3",
|
|
86
|
+
"tsdown": "^0.22.12",
|
|
87
87
|
"typescript": "^6.0.3",
|
|
88
|
-
"vite": "^8.1.
|
|
88
|
+
"vite": "^8.1.5",
|
|
89
89
|
"vitest": "^4.1.10",
|
|
90
|
-
"vitest-browser-svelte": "^
|
|
91
|
-
"vitest-mock-extended": "^
|
|
90
|
+
"vitest-browser-svelte": "^3.0.0",
|
|
91
|
+
"vitest-mock-extended": "^5.1.0"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
94
|
-
"autotel": "
|
|
94
|
+
"autotel": "5.0.0"
|
|
95
95
|
},
|
|
96
96
|
"peerDependenciesMeta": {
|
|
97
97
|
"autotel": {
|
|
@@ -6,9 +6,9 @@ description: >
|
|
|
6
6
|
|
|
7
7
|
# autotel-devtools
|
|
8
8
|
|
|
9
|
-
Local-dev OTLP receiver with a browser UI. Think TanStack Devtools for OpenTelemetry
|
|
9
|
+
Local-dev OTLP receiver with a browser UI. Think TanStack Devtools for OpenTelemetry. Runs as CLI or embeds as a Shadow-DOM-isolated widget in any web app.
|
|
10
10
|
|
|
11
|
-
## Quick Start
|
|
11
|
+
## Quick Start: pick an approach
|
|
12
12
|
|
|
13
13
|
### Standalone dashboard
|
|
14
14
|
|
|
@@ -36,12 +36,12 @@ OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 python app.py
|
|
|
36
36
|
<autotel-devtools></autotel-devtools>
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Shadow-DOM-isolated
|
|
39
|
+
Shadow-DOM-isolated. Never leaks styles into the host page.
|
|
40
40
|
|
|
41
41
|
### Programmatic (Node + autotel)
|
|
42
42
|
|
|
43
43
|
```typescript
|
|
44
|
-
import { init,
|
|
44
|
+
import { init, withTracing } from 'autotel';
|
|
45
45
|
import { createDevtools } from 'autotel-devtools';
|
|
46
46
|
|
|
47
47
|
const { exporter, close } = createDevtools({ port: 4318, verbose: true });
|
|
@@ -52,48 +52,50 @@ init({
|
|
|
52
52
|
spanProcessors: [exporter], // stream spans to the devtools UI
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
export const loadUser =
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
export const loadUser = withTracing({ name: 'user.load' })(
|
|
56
|
+
(ctx) => async (id: string) => {
|
|
57
|
+
// ... span shows up live in devtools
|
|
58
|
+
},
|
|
59
|
+
);
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
## Package Entry Points
|
|
61
63
|
|
|
62
|
-
| Import
|
|
63
|
-
|
|
|
64
|
-
| `autotel-devtools`
|
|
65
|
-
| `autotel-devtools/server`
|
|
66
|
-
| `autotel-devtools/exporter` | `DevtoolsSpanExporter` (standalone)
|
|
64
|
+
| Import | What |
|
|
65
|
+
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
66
|
+
| `autotel-devtools` | `createDevtools()`, `DevtoolsServer`, exporters, types |
|
|
67
|
+
| `autotel-devtools/server` | `DevtoolsServer`, OTLP parsing (`parseOtlpTraces`, `parseOtlpLogs`), HTTP routes (`attachDevtoolsRoutes`, `createDevtoolsHttpServer`), telemetry-limit helpers |
|
|
68
|
+
| `autotel-devtools/exporter` | `DevtoolsSpanExporter` (standalone) |
|
|
67
69
|
|
|
68
70
|
## Server Endpoints
|
|
69
71
|
|
|
70
|
-
| Route
|
|
71
|
-
|
|
|
72
|
-
| `POST /v1/traces` · `/v1/logs` · `/v1/metrics` | OTLP receivers
|
|
73
|
-
| `GET /`
|
|
74
|
-
| `GET /widget.js`
|
|
75
|
-
| `GET /healthz`
|
|
76
|
-
| `WS /ws`
|
|
72
|
+
| Route | What |
|
|
73
|
+
| ---------------------------------------------- | -------------------------------------------------------------------- |
|
|
74
|
+
| `POST /v1/traces` · `/v1/logs` · `/v1/metrics` | OTLP receivers: JSON or protobuf (`application/x-protobuf`) |
|
|
75
|
+
| `GET /` | Dashboard UI (traces, logs, metrics, errors, resources, service map) |
|
|
76
|
+
| `GET /widget.js` | Embeddable widget bundle (IIFE) |
|
|
77
|
+
| `GET /healthz` | Health check |
|
|
78
|
+
| `WS /ws` | WebSocket stream (history replay on connect) |
|
|
77
79
|
|
|
78
80
|
## Views in the UI
|
|
79
81
|
|
|
80
|
-
- **Traces
|
|
81
|
-
- **Logs
|
|
82
|
-
- **Metrics
|
|
83
|
-
- **Errors
|
|
84
|
-
- **Resources
|
|
85
|
-
- **Service map
|
|
82
|
+
- **Traces**: waterfall + flame graph, search with 300 ms debounce
|
|
83
|
+
- **Logs**: severity/resource filtering
|
|
84
|
+
- **Metrics**: per-metric time series
|
|
85
|
+
- **Errors**: aggregated and grouped by fingerprint
|
|
86
|
+
- **Resources**: derived from ingested telemetry
|
|
87
|
+
- **Service map**: visualises call graph
|
|
86
88
|
|
|
87
89
|
## Environment Variables
|
|
88
90
|
|
|
89
|
-
| Variable
|
|
90
|
-
|
|
|
91
|
-
| `AUTOTEL_DEVTOOLS_PORT`
|
|
92
|
-
| `AUTOTEL_DEVTOOLS_HOST`
|
|
93
|
-
| `AUTOTEL_DEVTOOLS_TITLE`
|
|
94
|
-
| `AUTOTEL_MAX_TRACE_COUNT`
|
|
95
|
-
| `AUTOTEL_MAX_LOG_COUNT`
|
|
96
|
-
| `AUTOTEL_MAX_METRIC_COUNT` | `100`
|
|
91
|
+
| Variable | Default | Purpose |
|
|
92
|
+
| -------------------------- | ----------- | ----------------------------- |
|
|
93
|
+
| `AUTOTEL_DEVTOOLS_PORT` | `4318` | Server port |
|
|
94
|
+
| `AUTOTEL_DEVTOOLS_HOST` | `127.0.0.1` | Bind host |
|
|
95
|
+
| `AUTOTEL_DEVTOOLS_TITLE` | — | Dashboard title |
|
|
96
|
+
| `AUTOTEL_MAX_TRACE_COUNT` | `100` | Max traces retained in memory |
|
|
97
|
+
| `AUTOTEL_MAX_LOG_COUNT` | `100` | Max logs retained |
|
|
98
|
+
| `AUTOTEL_MAX_METRIC_COUNT` | `100` | Max metric points retained |
|
|
97
99
|
|
|
98
100
|
## CLI
|
|
99
101
|
|
|
@@ -102,22 +104,22 @@ npx autotel-devtools 4319 # port as bare p
|
|
|
102
104
|
npx autotel-devtools --port 4319 --host 0.0.0.0 --title "My App"
|
|
103
105
|
```
|
|
104
106
|
|
|
105
|
-
| Arg / Flag | Short | Purpose
|
|
106
|
-
|
|
|
107
|
-
| `[port]`
|
|
108
|
-
| `--port`
|
|
109
|
-
| `--host`
|
|
110
|
-
| `--title`
|
|
107
|
+
| Arg / Flag | Short | Purpose |
|
|
108
|
+
| ---------- | ----- | ------------------------------------------------------------ |
|
|
109
|
+
| `[port]` | — | Listen port shorthand for `--port` (explicit `--port` wins) |
|
|
110
|
+
| `--port` | `-p` | Listen port (default 4318); walks to next free port if taken |
|
|
111
|
+
| `--host` | `-H` | Bind host (default 127.0.0.1) |
|
|
112
|
+
| `--title` | `-t` | Dashboard title |
|
|
111
113
|
|
|
112
114
|
## Works With
|
|
113
115
|
|
|
114
|
-
- **autotel
|
|
115
|
-
- **Standard OpenTelemetry SDK
|
|
116
|
-
- **Browser apps
|
|
116
|
+
- **autotel**: pass `exporter` into `spanProcessors` for live streaming
|
|
117
|
+
- **Standard OpenTelemetry SDK**: any OTLP exporter targeting `http://localhost:4318` works; autotel is not required
|
|
118
|
+
- **Browser apps**: the widget is a custom element with Shadow DOM, so drop it in without CSS conflicts
|
|
117
119
|
|
|
118
120
|
## Common Mistakes
|
|
119
121
|
|
|
120
|
-
- Do NOT use the widget in Node
|
|
121
|
-
- Do NOT set a production OTLP endpoint at `localhost:4318
|
|
122
|
-
- Do NOT embed the widget into pages served via strict CSP without allowing `http://localhost:4318
|
|
123
|
-
- Do NOT confuse the two builds
|
|
122
|
+
- Do NOT use the widget in Node: it's a browser-only IIFE bundle. Use `createDevtools()` server-side instead.
|
|
123
|
+
- Do NOT set a production OTLP endpoint at `localhost:4318`: devtools is in-memory only (no persistence, caps at 100 items per signal by default). Bump `AUTOTEL_MAX_*_COUNT` for longer local sessions.
|
|
124
|
+
- Do NOT embed the widget into pages served via strict CSP without allowing `http://localhost:4318`: the WebSocket connection and script load both need the devtools origin allowed.
|
|
125
|
+
- Do NOT confuse the two builds: the **server** uses tsup (Node ESM + CJS), the **widget** uses Vite's IIFE build. Don't import `autotel-devtools/server` into widget code; it pulls in Node APIs.
|